【发布时间】:2017-11-07 16:29:51
【问题描述】:
我是 VBA 的新手,尝试寻找现有的解决方案,但没有一个能完全满足我的要求:
我的初始列表有孔(空白),我需要将结果列出为没有这些空白字段的转置
A 列有文件 #,然后是 5 列价格,但有些只有一个价格,其他 2 个,其他 3 个等,但价格不超过 3 个。而且这些内容每个月都在变化,有上百行。
我的第一次试验没有成功,因为我找不到预期的总数。 我的初始代码如下,但它没有捕获最后 2 列,因为它们之间有空白字段:
Dim LR As Long, Rw As Long, Col As Long, LastCol As Long, CurRw As Long
Application.ScreenUpdating = False
LR = Range("A" & Rows.Count).End(xlUp).Row
Range("B:B").Insert xlShiftToRight
For Rw = LR To 2 Step -1
If Range("D" & Rw) <> "" Then
LastCol = Cells(Rw, Columns.Count).End(xlToLeft).Column
Rows(Rw + 1).Resize(LastCol - 3).Insert xlShiftDown
Range("A" & Rw).Resize(LastCol - 2) = Range("A" & Rw)
Range("B" & Rw).Resize(LastCol - 2).Value = Range("C" & Rw).Resize(LastCol + 5).Value
Range("C" & Rw).Resize(1, LastCol - 2).Copy
Range("B" & Rw).Resize(LastCol - 2).PasteSpecial xlPasteAll, Transpose:=True
Range("C1").Resize(1, LastCol - 2).Copy
Range("C" & Rw).PasteSpecial xlPasteAll, Transpose:=True
Else
Range("C" & Rw).Copy Range("B" & Rw)
Range("C1").Copy Range("C" & Rw)
End If
Next Rw"
感谢您的帮助。希望现在更容易理解和帮助;-)
【问题讨论】:
-
你的第一次尝试是什么>
-
无法在此处粘贴公式
-
将表格数据转换为列数据 '将第 1 行中的标题添加为新的值列
-
啊,现在清楚多了,谢谢。但我仍然不明白出了什么问题以及“但它没有捕获最后两列”是什么意思。您还可以添加代码实际结果的图像,以便我们查看它的实际作用吗?
-
是的,如果您逐步运行宏,您可以发现它跳过了例如 50 美元的金额。而且我无法理解确保考虑所有列的指令在哪里(Last Col 停止到每行的第一个 emtpy 字段。否?