我有一系列数据列,每行15行。 B列是我想按顺序移动下面所有其他列的列。因此,C列的内容会被剪切并移动到已经存在于B中的内容,依此类推。
到目前为止,我有;
'Select a column
ActiveSheet.Range("B1", ActiveSheet.Range("B1").End(xlDown)).Select
'Cut
Selection.Cut
'Select cell at bottom of A
ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select
'Paste
ActiveSheet.Paste
我需要循环使其工作,循环遍历从A到FN的所有列。
提前致谢。
答案 0 :(得分:1)
Dim col As Range
For Each col In Worksheets("Sheet1").Columns
If (col.Column > 1 And col.Column < 171) Then
Range(col.Rows(1), col.Rows(15)).Select
Selection.Cut
'Select cell at bottom of A
ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste 'Paste
End If
Next col
End Sub
答案 1 :(得分:0)
Dim LastCol As Integer, c As Integer, r As Long LastCol = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column For c = 2 To LastCol If Cells(1, c) <> "" Then ActiveSheet.Range(Chr$(64 + c) & "1", ActiveSheet.Range(Chr$(64 + c) & "1").End(xlDown)).Select Selection.Cut ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select ActiveSheet.Paste End If Next c
答案 2 :(得分:0)
Sub go() Dim LastCol As Integer, c As Integer, r As Long LastCol = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column For c = 2 To LastCol If Cells(1, c) "" Then ActiveSheet.Range(ColumnLetter(c) & "1", ActiveSheet.Range(ColumnLetter(c) & "1").End(xlDown)).Select Selection.Cut ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select ActiveSheet.Paste End If Next c End Sub Function ColumnLetter(ColumnNumber As Integer) As String If ColumnNumber > 26 Then ' 1st character: Subtract 1 to map the characters to 0-25, ' but you don't have to remap back to 1-26 ' after the 'Int' operation since columns ' 1-26 have no prefix letter ' 2nd character: Subtract 1 to map the characters to 0-25, ' but then must remap back to 1-26 after ' the 'Mod' operation by adding 1 back in ' (included in the '65') ColumnLetter = Chr(Int((ColumnNumber - 1) / 26) + 64) & _ Chr(((ColumnNumber - 1) Mod 26) + 65) Else ' Columns A-Z ColumnLetter = Chr(ColumnNumber + 64) End If End Function
另一种方法是直接使用数字,但我忘了怎么做...... 干杯!
-Stuart