Excel devrik ve organize


2

Masaya dönüştürmek istediğim bir sürü satırım var.

Excel'de, her birinde dört satır bulunan, dört satırdan her birinin dört sütundan birine yerleştirildiği bir grup girdiyi dönüştürmenin bir yolu var mı?

Temelde bu:

a
b
c
d

a
b
c
d

için

 a b c d
 a b c d

Yanıtlar:


4

Başımdan 'başımdan' hepsi için yapmanın bir yolunu biliyorum ama bu şekilde yapıştırabilirsiniz ...

  • bir abcd seti seçin
  • hücreleri kopyala
  • düzenle -> özel yapıştır
  • [x] altındaki transpoze düğmesi

Bunu a / b / c / d kümesi için yapacak. Bunun tam bir cevap olmadığını biliyorum, ama bunlardan çok fazla yoksa, işe yarayabilir.

İsterseniz, sizin için devrik yapacak hızlı bir makro. Her şeyi "A" sütununa koymanız yeterlidir ve hepsini B1, C1, D1, vb. Öğelerine koyacaktır. Satırlar boşluklarla tanımlanmıştır ve satırda iki boşluk "dur" anlamına gelir.

Sabit, şimdi 255 sütun için tamam çalışması gerekir. ve evet, Transpo ayarını pastespecial işlevinde vba'da kullanabilirsiniz, ancak bu kodu aynı sonuç için daha karmaşık hale getirir, bu yüzden basit tutdum

Sub Macro1()
    lastBlank = False
    col = 2 'B
    row = 1
    For Each cell In Range("A:A")
        v = Trim(CStr(cell))
        If v = "" Then
            If lastBlank = True Then Exit For
            lastBlank = True
            col = 2 'B
            row = row + 1
        Else
            Cells(row, col) = v
            col = col + 1
            lastBlank = False
        End If
    Next
End Sub
  • Araçlar-> Makrolar-> Visual Basic Düzenleyicisi
  • [menu] Ekle -> Modül
  • Makroyu içeri yapıştırın ('Module1' içinde olmalıdır)
  • Koş (yeşil ok). Veya ... Kapat ve araçlar-> Makro-> Makrolar -> [Çalıştır]

1

Eğer kimse bu blog makalesini hala okuyorsa, bunu yapmanın başka bir yolu var (ilk veri satırının FirstRow sabitini kullanarak hangi satırda olduğunu ayarlayın ve sonra onu serbest bırakın).

Sub TransposeRowsFourAtATime()  
  Dim X As Long, LastRow As Long, OffSetCounter As Long  
  Const FirstRow As Long = 2  
  LastRow = Cells(Rows.Count, "A").End(xlUp).Row  
  For X = FirstRow To LastRow Step 5  
    Cells(FirstRow, "A").Offset(OffSetCounter).Resize(1, 4) = _  
       WorksheetFunction.Transpose(Cells(X, "A").Resize(4))  
  OffSetCounter = OffSetCounter + 1  
  Next  
  Range(Cells(FirstRow + OffSetCounter, "A"), Cells(LastRow, "A")).Clear  
End Sub  

Rick Rothstein (MVP - Excel)


0

Bir excel devrik işlevi vardır. Fonksiyonu, transpozisyonun başlamasını istediğiniz hücreye yazın, ardından fonksiyonu yana doğru kopyalamak için düzenleme-> dolgu fonksiyonlarını kullanın (ve gerekirse aşağı).

ADDRESSİşlevi kullanarak satır dizin oluşturmayı düzeltmek için bir yol olmalıdır (boşlukları hesaba katarak) .


0

Bu formülleri (verilerinizin A1'de başladığını varsayarsak) girebilir ve ihtiyacınız olanı doldurabilirsiniz

B1            =IF(ISBLANK(A5),A1,"")
C1            =IF(ISBLANK(A5),A2,"")
D1            =IF(ISBLANK(A5),A3,"")
E1            =IF(ISBLANK(A5),A4,"")

Ardından Özel Değerleri Kopyala ve Yapıştır. Sonra boş satırları kaldırmak için sıralayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.