Excel'de sütunu / satırı diziye dönüştürme: WRAPCOLS & WRAPROWS işlevleri

  • Bunu Paylaş
Michael Brown

Bir sütun veya değer satırını iki boyutlu bir diziye dönüştürmenin en hızlı yolu WRAPCOLS veya WRAPROWS işlevini kullanmaktır.

Excel'in ilk günlerinden beri sayıları hesaplama ve analiz etmede çok başarılı olmuştur. Ancak dizileri manipüle etmek geleneksel olarak bir zorluk olmuştur. Dinamik dizilerin tanıtılması, dizi formüllerinin kullanımını çok daha kolay hale getirdi. Ve şimdi, Microsoft dizileri manipüle etmek ve yeniden şekillendirmek için bir dizi yeni dinamik dizi işlevi yayınlıyor. Bu eğitim size bu tür iki işlevi nasıl kullanacağınızı öğretecektir,WRAPCOLS ve WRAPROWS, bir sütunu veya satırı anında 2D bir diziye dönüştürmek için.

    Excel WRAPCOLS işlevi

    Excel'deki WRAPCOLS işlevi, bir değer satırını veya sütununu, satır başına belirtilen değer sayısına göre iki boyutlu bir diziye dönüştürür.

    Sözdizimi aşağıdaki argümanlara sahiptir:

    WRAPCOLS(vector, wrap_count, [pad_with])

    Nerede?

    • vektör (gerekli) - kaynak tek boyutlu dizi veya aralık.
    • wrap_count (gerekli) - sütun başına maksimum değer sayısı.
    • pad_with (isteğe bağlı) - doldurmak için yeterli öğe yoksa son sütunla doldurulacak değer. Atlanırsa, eksik değerler #N/A (varsayılan) ile doldurulur.

    Örneğin, B5:B24 aralığını sütun başına 5 değer içeren 2 boyutlu bir diziye dönüştürmek için formül şöyledir:

    =WRAPROWS(B5:B24, 5)

    Formülü herhangi bir hücreye girdiğinizde, formül otomatik olarak gerektiği kadar hücreye yayılır. WRAPCOLS çıktısında, değerler dikey olarak yukarıdan aşağıya doğru wrap_count Sayıma ulaşıldıktan sonra yeni bir sütun başlatılır.

    Excel WRAPROWS işlevi

    Excel'deki WRAPROWS işlevi, belirttiğiniz satır başına değer sayısına bağlı olarak bir değer satırını veya sütununu iki boyutlu bir diziye dönüştürür.

    Sözdizimi aşağıdaki gibidir:

    WRAPROWS(vector, wrap_count, [pad_with])

    Nerede?

    • vektör (gerekli) - kaynak tek boyutlu dizi veya aralık.
    • wrap_count (gerekli) - satır başına maksimum değer sayısı.
    • pad_with (isteğe bağlı) - doldurmak için yeterli öğe yoksa son satırla doldurulacak değer. Varsayılan değer #N/A'dır.

    Örneğin, B5:B24 aralığını her satırında 5 değer bulunan bir 2B diziye dönüştürmek için formül şöyledir:

    =WRAPROWS(B5:B24, 5)

    Formülü dökülme aralığının sol üst hücresine girdiğinizde diğer tüm hücreler otomatik olarak doldurulur. WRAPROWS işlevi, değerleri soldan sağa doğru yatay olarak düzenler ve wrap_count Sayıma ulaştıktan sonra yeni bir satır başlatır.

    WRAPCOLS ve WRAPROWS kullanılabilirliği

    Her iki işlev de yalnızca Microsoft 365 için Excel (Windows ve Mac) ve Web için Excel'de kullanılabilir.

    Önceki sürümlerde, sütundan diziye ve satırdan diziye dönüşümler gerçekleştirmek için geleneksel daha karmaşık formüller kullanabilirsiniz. Bu eğitimin ilerleyen bölümlerinde, alternatif çözümleri ayrıntılı olarak tartışacağız.

    İpucu: Ters bir işlem yapmak için, yani 2 boyutlu bir diziyi tek bir sütuna veya satıra dönüştürmek için, sırasıyla TOCOL veya TOROW işlevini kullanın.

    Excel'de sütun / satırı aralığa dönüştürme - örnekler

    Artık temel kullanımı kavradığınıza göre, birkaç özel duruma daha yakından bakalım.

    Sütun veya satır başına maksimum değer sayısını ayarlama

    Orijinal verilerinizin yapısına bağlı olarak, sütunlara (WRAPCOLS) veya satırlara (WRAPROWS) yeniden düzenlenmesini uygun bulabilirsiniz. Hangi işlevi kullanırsanız kullanın, bu wrap_count her sütundaki/satırdaki maksimum değer sayısını belirleyen argüman.

    Örneğin, B4:B23 aralığını her sütunda en fazla 10 değer olacak şekilde 2B diziye dönüştürmek için şu formülü kullanın:

    =WRAPCOLS(B4:B23, 10)

    Aynı aralığı her satırda en fazla 4 değer olacak şekilde satıra göre yeniden düzenlemek için formül şu şekildedir:

    =WRAPROWS(B4:B23, 4)

    Aşağıdaki resim bunun nasıl göründüğünü göstermektedir:

    Ortaya çıkan dizideki eksik değerleri doldurun

    Elde edilen aralığın tüm sütunlarını/satırlarını doldurmak için yeterli değer olmaması durumunda, WRAPROWS ve WRAPCOLS, 2B dizinin yapısını korumak için #N/A hatalarını döndürür.

    Varsayılan davranışı değiştirmek için isteğe bağlı olarak özel bir değer sağlayabilirsiniz pad_with Tartışma.

    Örneğin, B4:B21 aralığını en fazla 5 değer genişliğinde bir 2B diziye dönüştürmek ve doldurmak için yeterli veri yoksa son satırı tire işaretleriyle doldurmak için bu formülü kullanın:

    =WRAPROWS(B4:B21, 5, "-")

    Eksik değerleri sıfır uzunluklu dizelerle (boşluklar) değiştirmek için formül şöyledir:

    =WRAPROWS(B4:B21, 5, "")

    Lütfen sonuçları varsayılan davranışla (D5'teki formül) karşılaştırın; burada pad_with atlanmıştır:

    Birden çok satırı 2B aralıkta birleştirme

    Birkaç ayrı satırı tek bir 2B dizide birleştirmek için, önce HSTACK işlevini kullanarak satırları yatay olarak istiflersiniz ve ardından WRAPROWS veya WRAPCOLS kullanarak değerleri sararsınız.

    Örneğin, 3 satırdaki (B5:J5, B7:G7 ve B9:F9) değerleri birleştirmek ve her biri 10 değer içeren sütunlara sarmak için formül şöyledir:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Birden çok satırdaki değerleri, her satırın 5 değer içerdiği bir 2B aralıkta birleştirmek için formül şu biçimi alır:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    Birden çok sütunu 2B dizide birleştirme

    Birkaç sütunu 2B aralıkta birleştirmek için, önce VSTACK işlevini kullanarak bunları dikey olarak yığınlarsınız ve ardından değerleri satırlara (WRAPROWS) veya sütunlara (WRAPCOLS) sararsınız.

    Örneğin, 3 sütundaki (B5:J5, B7:G7 ve B9:F9) değerleri, her sütunun 10 değer içerdiği bir 2B aralıkta birleştirmek için formül şöyledir:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Aynı sütunları, her satırın 5 değer içerdiği bir 2B aralıkta birleştirmek için bu formülü kullanın:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    Diziyi sarın ve sıralayın

    Çıktının sıralanmasını isterken kaynak aralığının rastgele sırada değerlere sahip olduğu durumlarda, bu şekilde ilerleyin:

    1. SORT fonksiyonunu kullanarak ilk diziyi istediğiniz şekilde sıralayın.
    2. WRAPCOLS veya WRAPROWS için sıralanmış diziyi sağlayın.

    Örneğin, B4:B23 aralığını her birinde 4 değer olacak şekilde satırlara sarmak ve elde edilen aralığı A'dan Z'ye sıralamak için aşağıdaki gibi bir formül oluşturun:

    =WRAPROWS(SORT(B4:B23), 4)

    Aynı aralığı her birinde 10 değer olacak şekilde sütunlara ayırmak ve çıktıyı alfabetik olarak sıralamak için formül şöyledir:

    =WRAPCOLS(SORT(B4:B23), 10)

    Sonuçlar aşağıdaki gibidir:

    İpucu. Elde edilen dizideki değerleri düzenlemek için azalan sıra , üçüncü argümanı ( sort_order ) değerini -1 olarak ayarlar.

    Excel 365 - 2010 için WRAPCOLS alternatifi

    WRAPCOLS işlevinin desteklenmediği eski Excel sürümlerinde, tek boyutlu bir dizideki değerleri sütunlara sarmak için kendi formülünüzü oluşturabilirsiniz. Bu, 5 farklı işlevi birlikte kullanarak yapılabilir.

    Bir satırı 2B aralığa dönüştürmek için WRAPCOLS alternatifi:

    IFERROR(IF(ROW(A1)> n , "", INDEX( row_range , , SATIR(A1) + (SÜTUN(A1)-1)* n )), "")

    Bir sütunu 2B aralığa dönüştürmek için WRAPCOLS alternatifi:

    IFERROR(IF(ROW(A1)> n , "", INDEX( column_range , SATIR(A1) + (SÜTUN(A1)-1)* n )), "")

    Nerede n sütun başına maksimum değer sayısıdır.

    Aşağıdaki resimde, bir satırlık bir aralığı (D4:J4) üç satırlık bir diziye dönüştürmek için aşağıdaki formülü kullanıyoruz.

    =IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")

    Ve bu formül tek sütunlu bir aralığı (B4:B20) beş satırlı bir diziye dönüştürür:

    =IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")

    Yukarıdaki çözümler, benzer WRAPCOLS formüllerini taklit eder ve aynı sonuçları üretir:

    =WRAPCOLS(D4:J4, 3, "")

    ve

    =WRAPCOLS(B4:B20, 5, "")

    Dinamik dizi WRAPCOLS işlevinin aksine, geleneksel formüllerin tek formül-tek hücre yaklaşımını izlediğini lütfen unutmayın. Dolayısıyla, ilk formülümüz D8'e girilir ve 3 satır aşağı ve 3 sütun sağa kopyalanır. İkinci formül D14'e girilir ve 5 satır aşağı ve 4 sütun sağa kopyalanır.

    Bu formüller nasıl çalışır?

    Her iki formülün merkezinde, satır ve sütun numarasına göre verilen diziden bir değer döndüren INDEX işlevini kullanırız:

    INDEX(array, row_num, [column_num])

    Tek sıralı bir dizi ile uğraştığımız için row_num argümanı, bu yüzden varsayılan olarak 1'dir. col_num formülün kopyalandığı her hücre için otomatik olarak hesaplanır. Bunu şu şekilde yaparız:

    SATIR(A1)+(SÜTUN(A1)-1)*3)

    ROW fonksiyonu A1 referansının 1 olan satır numarasını döndürür.

    COLUMN fonksiyonu A1 referansının sütun numarasını döndürür ve bu da 1'dir. 1 çıkarıldığında sıfır olur. 0'ı 3 ile çarptığınızda 0 elde edilir.

    Ardından, ROW tarafından döndürülen 1 ile COLUMN tarafından döndürülen 0'ı toplar ve sonuç olarak 1 elde edersiniz.

    Bu şekilde, hedef aralığın (D8) sol üst hücresindeki INDEX formülü bu dönüşüme uğrar:

    INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))

    değişiklikleri

    INDEX($D$4:$J$4, ,1)

    ve belirtilen dizinin 1. sütunundaki değeri döndürür, bu da D4'teki "Apples" değeridir.

    Formül D9 hücresine kopyalandığında, mutlak aralık başvurusu değişmeden kalırken göreli hücre başvuruları satırların ve sütunların göreli konumuna göre değişir:

    INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))

    dönüşür:

    INDEX($D$4:$J$4,, 2+(1-1)*3))

    olur:

    INDEX($D$4:$J$4,, 2))

    ve belirtilen dizinin 2. sütunundaki değeri, yani E4'teki "Kayısılar" değerini döndürür.

    IF işlevi satır numarasını kontrol eder ve belirttiğiniz satır sayısından büyükse (bizim durumumuzda 3) boş bir dize ("") döndürür, aksi takdirde INDEX işlevinin sonucunu döndürür:

    IF(ROW(A1)>3, "", INDEX(...))

    Son olarak, IFERROR işlevi, formül gerçekten gerekenden daha fazla hücreye kopyalandığında ortaya çıkan #REF! hatasını düzeltir.

    Bir sütunu 2D aralığına dönüştüren ikinci formül de aynı mantıkla çalışır. Aradaki fark, SATIR + SÜTUN kombinasyonunu kullanarak row_num INDEX için argüman. col_num parametresine bu durumda gerek yoktur, çünkü kaynak dizide yalnızca bir sütun vardır.

    Excel 365 - 2010 için WRAPROWS alternatifi

    Excel 2019 ve önceki sürümlerde tek boyutlu bir dizideki değerleri satırlara sarmak için WRAPROWS işlevine aşağıdaki alternatifleri kullanabilirsiniz.

    Bir satırı 2B aralığa dönüştürün:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , SÜTUN(A1)+(SATIR(A1)-1)* n )), "")

    Bir sütunu 2D aralığına değiştirin:

    IFERROR(IF(COLUMN(A1)> n , "", INDEX( column_range , SÜTUN(A1)+(SATIR(A1)-1)* n )), "")

    Nerede n satır başına maksimum değer sayısıdır.

    Örnek veri setimizde, tek satırlık bir aralığı (D4:J4) üç sütunlu bir aralığa dönüştürmek için aşağıdaki formülü kullanırız. Formül D8 hücresine gelir ve ardından 3 sütun ve 3 satır boyunca kopyalanır.

    =IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")

    1 sütunlu bir aralığı (B4:B20) 5 sütunlu bir aralık olarak yeniden şekillendirmek için, aşağıdaki formülü D14'e girin ve 5 sütun ve 4 satır boyunca sürükleyin.

    =IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")

    Excel 365'te, eşdeğer WRAPCOLS formülleri ile aynı sonuçlar elde edilebilir:

    =WRAPROWS(D4:J4, 3, "")

    ve

    =WRAPROWS(B4:B20, 5, "")

    Bu formüller nasıl çalışır?

    Esasen, bu formüller önceki örnekte olduğu gibi çalışır. Aradaki fark, aşağıdaki değerleri nasıl belirlediğinizdir row_num ve col_num INDEX işlevi için koordinatlar:

    INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))

    Hedef aralıktaki (D8) sol üst hücrenin sütun numarasını almak için bu ifadeyi kullanırsınız:

    SÜTUN(A1)+(SATIR(A1)-1)*3)

    olarak değişir:

    1+(1-1)*3

    ve 1'i verir.

    Sonuç olarak, aşağıdaki formül belirtilen dizinin ilk sütunundan "Apples" değerini döndürür:

    INDEX($D$4:$J$4,, 1)

    Buraya kadar sonuç önceki örnektekiyle aynı. Ancak diğer hücrelerde ne olacağını görelim...

    D9 hücresinde, göreli hücre referansları aşağıdaki gibi değişir:

    INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))

    Böylece formül şu şekle dönüşür:

    INDEX($D$4:$J$4,, 1+(2-1)*3))

    olur:

    INDEX($D$4:$J$4,, 4))

    ve belirtilen dizinin 4. sütunundaki değeri, yani G4'teki "Cherries" değerini döndürür.

    IF işlevi sütun numarasını kontrol eder ve belirttiğiniz sütun sayısından büyükse boş bir dize (""), aksi takdirde INDEX işlevinin sonucunu döndürür:

    IF(COLUMN(A1)>3, "", INDEX(...))

    Son bir dokunuş olarak IFERROR, formülü gerçekte gerekenden daha fazla hücreye kopyalarsanız #REF! hatalarının "fazladan" hücrelerde görünmesini engeller.

    WRAPCOLS veya WRAPROWS işlevi çalışmıyor

    "Sarma" işlevleri Excel'inizde mevcut değilse veya bir hatayla sonuçlanıyorsa, büyük olasılıkla aşağıdaki nedenlerden biri olabilir.

    #İSİM? hata

    Excel 365'te, işlevin adını yanlış yazdığınız için #NAME? hatası oluşabilir. Diğer sürümlerde, işlevlerin desteklenmediğini gösterir. Geçici çözüm olarak, WRAPCOLS alternatifini veya WRAPROWS alternatifini kullanabilirsiniz.

    #DEĞER! hata

    Eğer #VALUE hatası oluşursa vektör bağımsız değişkeni tek boyutlu bir dizi değildir.

    #NUM! hatası

    Eğer #NUM hatası oluşursa wrap_count değeri 0 veya negatif sayıdır.

    #SPILL! hata

    Çoğu zaman, #SPILL hatası sonuçları dökmek için yeterli boş hücre olmadığını gösterir. Komşu hücreleri temizlediğinizde hata ortadan kalkacaktır. Hata devam ederse, #SPILL'in Excel'de ne anlama geldiğini ve nasıl düzeltileceğini kontrol edin.

    Excel'de tek boyutlu bir aralığı iki boyutlu bir diziye dönüştürmek için WRAPCOLS ve WRAPROWS işlevlerini nasıl kullanacağınızı öğrendiniz. Okuduğunuz için teşekkür eder, gelecek hafta blogumuzda görüşmek dileğiyle!

    İndirmek için pratik çalışma kitabı

    WRAPCOLS ve WRAPROWS fonksiyonları - örnekler (.xlsx dosyası)

    Michael Brown, yazılım araçlarını kullanarak karmaşık süreçleri basitleştirme tutkusuna sahip, kendini adamış bir teknoloji meraklısıdır. Teknoloji endüstrisinde on yılı aşkın deneyimiyle Microsoft Excel ve Outlook'un yanı sıra Google E-Tablolar ve Dokümanlar'daki becerilerini geliştirdi. Michael'ın blogu, bilgisini ve uzmanlığını başkalarıyla paylaşmaya, üretkenliği ve verimliliği artırmaya yönelik takip etmesi kolay ipuçları ve eğitimler sağlamaya adamıştır. İster deneyimli bir profesyonel, ister yeni başlayan olun, Michael'ın blogu, bu temel yazılım araçlarından en iyi şekilde yararlanmak için değerli bilgiler ve pratik tavsiyeler sunar.