首页 > 解决方案 > 使用列而不是行复制/遍历范围

问题描述

我正在尝试将单元格值从范围复制到另一个工作表中。下面是我要复制的数据。

TableA TableB TableC
Col1   Col1   Col1
Col2   Col2
       Col3

下面是我想要的输出(复制后)。我需要两列中的数据 - 表名和列名。

TableA Col1
TableA Col2
TableB Col1
TableB Col2
TableB Col3
TableC Col1

下面是我的代码。这将按每一行而不是每一列遍历范围。如何将其更改为逐列?

Sub Copy_Columns()

Dim c As Range
For Each c In Sheets("Sheet1").Range("A1:HJ185")
    If Not IsEmpty(c.Value) Then
        Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1).Value = c.Value
    End If
Next c

End Sub

标签: excelvba

解决方案


Sub Copy_Columns()

Dim col as range, c As Range
For Each col In Sheets("Sheet1").Range("A2:HJ185").Columns
    For each c in col.cells
        If Not IsEmpty(c.Value) Then
             With Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp)
                 .value = c.entirecolumn.cells(1).value
                 .Offset(1).Value = c.Value
             End with
        End If
    Next c
Next c

End Sub

推荐阅读