【发布时间】:2017-02-07 10:30:19
【问题描述】:
我正在尝试分配您在此处ws4 的 E 和 F 列中看到的每个 ID...
...分别在我的wsOutput 的 K 列和 L 列中的相应 ID。
我的代码在没有错误的情况下运行,但没有任何反应。这是我的第一个项目之一,所以如果这是直截了当的问题,我深表歉意。
我也上网查了一下,发现:
但是,我无法让他们的方法奏效。
非常感谢任何帮助!
'Previous Code
'wsOutput -> Filter Sheet - Worksheet (TARGET) ; ws4 = Search Skills - Worksheet (SOURCE)
Dim separator As String, PreviousResultCG As String, NewResultCG As String, PreviousResultCategory As String, NewResultCategory As String
If separator = "" Then separator = " , "
'lRowInput = ws4.Range("A" & Rows.Count).End(xlUp).row - from above
lRowOutput = wsOutput.Range("A4:A" & Rows.Count).End(xlDown).row
With ws4
'For each ID on the Source-Worksheet
For Each ID In .Range("A2:A" & lRowInput)
'Find the respective ID on Target-Worksheet
Set FindID = wsOutput.Range("A4:A" & lRowOutput).Find(what:=ID, LookIn:=xlValues, lookat:=xlWhole)
'Get all CG ID's for the supplier and add them to previously found ID's of that supplier
If FindID = ID Then
PreviousResultCG = wsOutput.Range("K" & FindID.row).value
NewResultCG = PreviousResultCG & separator & .Range("E" & ID.row)
wsOutput.Range("K" & ID.row).value = NewResultCG
PreviousResultCategory = wsOutput.Range("L" & FindID.row).value
NewResultCategory = PreviousResultCategory & separator & .Range("F" & ID.row)
wsOutput.Range("L" & FindID.row).value = NewResultCategory
End If
Next ID
End With
【问题讨论】:
-
我敢打赌这是 XL?为什么不直接使用 VLOOKUP?
-
感谢您的回答。这是Excel,是的。我不知道 vlookup 将如何解决我的问题。但是,正如我上面所暗示的,我是 VBA 的初学者。
-
VLOOKUP 是 Excel 中的内置函数,可让您执行上述操作。除非你有其他要求,我建议你先试试内置功能。
-
“其他要求”是什么意思?我唯一的问题是输入工作表不是固定的,而是在单击按钮时重新填充。另外:每次输入的数量都会有所不同。这就是我尝试将其自动化的原因。
-
哦,VLOOKUP 不会将所有不同的 ID 放入一个单元格中,对吧?
标签: vba concatenation