我在Excel中有多個行和列有不同的數據,我希望所有的數據都在一個列上。我嘗試了移調功能,但它並沒有幫助我得到我想要的。多行和列到單列Excel
這就是我現在所擁有的:
而這正是我想:
誰能請你告訴我,我怎麼能做到這一點?任何內置的函數或宏都會有所幫助。謝謝。
我在Excel中有多個行和列有不同的數據,我希望所有的數據都在一個列上。我嘗試了移調功能,但它並沒有幫助我得到我想要的。多行和列到單列Excel
這就是我現在所擁有的:
而這正是我想:
誰能請你告訴我,我怎麼能做到這一點?任何內置的函數或宏都會有所幫助。謝謝。
試試這個代碼:
Sub RangetoColumn()
Dim LastRow As Long, LastColumn As Long
Dim CurrentSheet As Worksheet, TargetSheet As Worksheet
Dim i As Long, j As Long, Count As Long
Set CurrentSheet = ThisWorkbook.Worksheets("Sheet1")'-->change Sheet1 to your source sheet
Set TargetSheet = ThisWorkbook.Worksheets("Sheet2")'-->change Sheet2 to your target sheet
LastRow = CurrentSheet.Cells(Rows.Count, "A").End(xlUp).Row
Count = 1
For i = 1 To LastRow
LastColumn = CurrentSheet.Cells(i, Columns.Count).End(xlToLeft).Column
For j = 1 To LastColumn
TargetSheet.Range("A" & Count).Value = CurrentSheet.Cells(i, j).Value
Count = Count + 1
Next j
Next i
End Sub
代碼將從Sheet1
讀取範圍,將在Sheet2
創建列。
嘗試在兩個單元格中使用&
。嘗試像這樣A1&B1
合併單元格A1
和單元格B1
中的數據;複製和粘貼,然後享受。
這將有絨其列A中列出的所有當前片的細胞和清除所有其它相鄰列
Option Explicit
Sub RangeToOneColumn()
Dim lastRow As Long, i As Long, j As Long
Dim rng As Range
Dim myArr As Variant
With ThisWorkbook.Worksheets("Sheet1") '<== change it to your needs
lastRow = .Cells(.rows.Count, "A").End(xlUp).Row
ReDim myArr(0 To lastRow - 1)
For i = 1 To lastRow
Set rng = .Range(.Cells(i, 1), .Cells(i, .Columns.Count).End(xlToLeft))
myArr(i - 1) = Application.Transpose(Application.Transpose(rng))
Next i
.Cells(1, 1).CurrentRegion.ClearContents
j = 1
For i = LBound(myArr) To UBound(myArr)
.Cells(j, 1).Resize(UBound(myArr(i))) = Application.Transpose(myArr(i))
j = j + UBound(myArr(i))
Next i
End With
End Sub
,因爲它使用陣列,它的運行速度比迭代通過細胞應對&粘貼
非常感謝。它符合要求。 –
@TanvirSourov - 很高興我能幫助你。 – Mrig