【发布时间】:2017-07-26 19:33:08
【问题描述】:
我现在有一个宏,可以将不同工作表中的数据提取到新工作表中,然后将数据格式化为我可以使用的表格。我遇到的问题是,我从另一张表中提取的一些 PN 位于不同的单元格中,以便于查看。 (例如,顶层 PN 在单元格 C2 中,任何属于 C2 部分的部分都可以在 D3 中列出,以表明它是子部分。
我需要将不同列中的所有 PN 转换为单个列的代码。移动所有 PN 后,应删除其他列(D 到 F)。数据范围从 C 列到 F 列。根据宏从中提取数据的表,数据的长度会有所不同。宏需要能够处理这个问题。
下面是我的宏运行后工作表的示例:
我正在尝试检查 C 列是否有空行。如果说 C3 是空的,那么我想检查 D3 的文本。如果有文本,我希望 D3 中的文本移动到 C3。如果没有文本,请检查 E3。重复同样的过程。从我在网上找到的内容来看,到目前为止我有这段代码(但是,它在我的宏中不能正常运行)......
'Copy PNs that are out of line and paste them in the correct column
Dim N As Long, i As Long, j As Long
Set ws1 = Worksheets("KDLSA")
N = ws1.Cells(Rows.Count, "C").End(xlUp).Row
j = 4
For Each cell In Range("D2:F" & ws1.Cells(Rows.Count, "F").End(xlUp).Row)
If cell.Value = "" Then 'if cell C is blank, I want to shift the text to fill column C
ws1.Range("C" & j).Value = ws1.Range("D" & cell.Row).Value 'copy PN in column E to column D - this needs to be more robust to cover my range of columns rather than just D and E
j = j + 1
End If
Next cell
感谢任何帮助。
【问题讨论】:
-
您不需要 VBA。将以下公式插入 G2 并复制/粘贴到下面的单元格。
=INDEX(C2:F2,MATCH(TRUE,INDEX((C2:F2<>0),0),0))
标签: vba excel multiple-columns