【发布时间】:2016-09-15 07:58:00
【问题描述】:
我有几个工作簿,其中包含很多列(每次都有不同的列数)和很多行。我想将列范围内的所有值复制到 A 列和 B 列。这些值必须成对复制,并且可以包含空单元格甚至空行,也必须复制。
现在我有以下数据集的结构:
A B C D E F .......
red cat black dog yellow fox .......
red cat white dog yellow fox .......
grey cat black dog yellow fox .......
..........................................
连接后我的数据必须如下所示:
A B
red cat
red cat
grey cat
black dog
white dog
black dog
yellow fox
yellow fox
yellow fox
我在 stackoverflow 上找到了 this post,它工作正常,但它不保留我的数据的原始成对顺序并跳过空单元格。我很难弄清楚如何根据我的问题调整这段代码。
此外,我找到了another solution 并尝试对其进行修改,但我在第 8 行收到消息“运行时错误 1004”。
这是我修改后的解决方案:
Sub MoveColumnsUnderAB()
Dim ws As Worksheet
Dim lr As Long
Dim lc As Integer
Set ws = ThisWorkbook.Worksheets("Sheet1")
lc = ws.Range("XFD1").End(xlToLeft).column '' Find the last column
While lc <> 2 '' stop once it hits Column B
lr = ws.Cells(1, lc).End(xlDown).Row '' Find the last row for this block of 2
ws.Range(ws.Cells(1, lc).Offset(, -1), ws.Cells(lr, lc)).Copy ws.Range("A" & ws.Rows.Count).End(xlUp).Offset(1)
ws.Range(ws.Cells(1, lc).Offset(, -1), ws.Cells(lr, lc)).ClearContents '' Clear it out
lc = ws.Range("XFD1").End(xlToLeft).column '' Get the last column again for the While loop
Wend
End Sub
我将不胜感激。
【问题讨论】:
-
您的列标题是否会在整个工作表中保持一致?至少对于您要保持成对的两列。
-
@Lowpar 是的,每一对的第一列调用“属性”,第二列调用“类别”
标签: excel concatenation vba