1

我有一系列数据列,每列 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 的所有列。

提前致谢。

4

3 回答 3

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
于 2011-01-31T21:34:25.573 回答
0

我认为这将按照您的描述进行。如果没有,也许你可以解释得更清楚一点?

将 LastCol 调暗为整数,c 为整数,r 为长
LastCol = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column
对于 c = 2 到 LastCol
        如果 Cells(1, c) <> "" 那么
            ActiveSheet.Range(Chr$(64 + c) & "1", ActiveSheet.Range(Chr$(64 + c) & "1").End(xlDown)).Select
            选择.剪切
            ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select
            ActiveSheet.Paste
        万一
下一个 c

于 2011-01-31T21:17:07.097 回答
0
子 go()
将 LastCol 调暗为整数,c 为整数,r 为长
LastCol = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column
对于 c = 2 到 LastCol
        如果 Cells(1, c) "" 那么
            ActiveSheet.Range(ColumnLetter(c) & "1", ActiveSheet.Range(ColumnLetter(c) & "1").End(xlDown)).Select
            选择.剪切
            ActiveSheet.Range("a1").End(xlDown).Offset(1, 0).Select
            ActiveSheet.Paste
        万一
下一个 c

结束子

函数 ColumnLetter(ColumnNumber As Integer) As String
  如果 ColumnNumber > 26 则

    ' 第一个字符:减去 1 将字符映射到 0-25,
    ' 但您不必重新映射回 1-26
    ' 在 'Int' 操作之后,因为列
    ' 1-26 没有前缀字母

    ' 第 2 个字符:减 1 将字符映射到 0-25,
    ' 但之后必须重新映射回 1-26
    ' 'Mod' 操作通过加 1 回
    '(包含在'65'中)

    ColumnLetter = Chr(Int((ColumnNumber - 1) / 26) + 64) & _
                   Chr(((ColumnNumber - 1) Mod 26) + 65)
  别的
    ' 列 AZ
    ColumnLetter = Chr(ColumnNumber + 64)
  万一
结束功能

另一种方法是直接使用数字,但我忘记了如何做到这一点......干杯!

-斯图尔特

于 2011-01-31T21:42:30.947 回答