ฉันมีหลายแถวที่ฉันต้องการเปลี่ยนเป็นตาราง
มีวิธีใดใน Excel ที่จะแปลงรายการจำนวนมากแต่ละแถวมีสี่แถวลงในตารางที่แต่ละแถวสี่แถวใส่ในหนึ่งในสี่คอลัมน์
โดยทั่วไปสิ่งนี้:
a
b
c
d
a
b
c
d
ไปยัง
a b c d
a b c d
ฉันมีหลายแถวที่ฉันต้องการเปลี่ยนเป็นตาราง
มีวิธีใดใน Excel ที่จะแปลงรายการจำนวนมากแต่ละแถวมีสี่แถวลงในตารางที่แต่ละแถวสี่แถวใส่ในหนึ่งในสี่คอลัมน์
โดยทั่วไปสิ่งนี้:
a
b
c
d
a
b
c
d
ไปยัง
a b c d
a b c d
คำตอบ:
ฉันไม่ได้รู้ว่าจะทำอะไรให้พวกเขาทั้งหมด แต่คุณสามารถวางแบบนี้ ...
นั่นจะทำเพื่อชุด a / b / c / d ฉันรู้ว่ามันไม่ได้เป็นคำตอบที่สมบูรณ์ แต่ถ้าไม่มีสิ่งเหล่านี้มากเกินไปมันอาจใช้ได้
นี่คือมาโครด่วนที่จะทำการแปลงให้คุณหากคุณต้องการ เพียงแค่ใส่ทุกอย่างในคอลัมน์ "A" และมันจะใส่ไว้ใน B1, C1, D1 และอื่น ๆ แถวถูกคั่นด้วยช่องว่างและสองช่องในแถวหมายถึง "หยุด"
คงที่ควรใช้งานได้ถึง 255 คอลัมน์ในขณะนี้ และใช่คุณสามารถใช้การตั้งค่า Transpose ในฟังก์ชัน pastespecial ใน vba ได้ แต่นั่นทำให้รหัสมีความซับซ้อนมากขึ้นสำหรับผลลัพธ์เดียวกันดังนั้นฉันจึงเรียบง่าย
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
หากใครยังอ่านบทความในบล็อกต่อไปนี้เป็นอีกวิธีในการดำเนินการ (เพียงกำหนดแถวที่ส่วนแรกของข้อมูลที่ใช้ในค่าคงที่ FirstRow แล้วเปลี่ยนเป็นหลวม) ...
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)
มีฟังก์ชั่นexcel transpose พิมพ์ฟังก์ชันลงในเซลล์ที่คุณต้องการให้ transpose เริ่มต้นจากนั้นใช้ฟังก์ชัน edit-> fill เพื่อคัดลอกฟังก์ชันไปด้านข้าง (และลงหากจำเป็น)
ควรมีวิธีแก้ไขการจัดทำดัชนีแถว (ไปยังบัญชีสำหรับช่องว่าง) โดยใช้ADDRESS
ฟังก์ชัน
คุณสามารถป้อนสูตรเหล่านี้ (สมมติว่าข้อมูลของคุณเริ่มต้นใน A1) และเติมลงไปตามที่คุณต้องการ
B1 =IF(ISBLANK(A5),A1,"")
C1 =IF(ISBLANK(A5),A2,"")
D1 =IF(ISBLANK(A5),A3,"")
E1 =IF(ISBLANK(A5),A4,"")
จากนั้นคัดลอกและวางค่าพิเศษ จากนั้นเรียงลำดับเพื่อลบบรรทัดว่าง