是否有一种方法来循环通过一个范围,并返回一个公式在旁边的单元格,如果有数据?



我一直在通过google和stack overflow进行研究,看看是否能找到类似的问题,但我还没有看到它。

我试图告诉excel查看我的数据集内的整个范围(整个列F)(数据集量经常变化)。该列使用供应商编号或空白生成。我需要循环通过整个列和每个单元格,并编写一个逻辑语句,如果有一个供应商编号在列F内的特定单元格,返回一个VLOOKUP在列G在同一行,查找在列F的供应商编号,如果没有数据在列F在一个特定的单元格,我需要它插入一个等号,并指向列Q,但在同一行。例如,如果F13是空白,我需要插入单元格G13 "=Q13"每个细胞都是如此。所以如果F14是Blank, G14就必须是q14。如果在F20中有一个供应商号码,我需要在G20中返回一个VLOOKUP,例如"=VLOOKUP(F20,Mapping!$ a $4:$B$1000,2,FALSE)"

这是我目前为止所拥有的,但我真的很纠结如何循环并告诉excel在代码中指向同一行但不同的列。

Dim LastRow As Long
LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "F").End(xlUp).Row
Dim CL As Range
Dim Rng As Range
Set Rng = Worksheets("Sheet1").Range("LastRow")
For Each CL In Rng
If CL.Value = "" Then
CL.Value = "=VLOOKUP("

如果我不是在正确的轨道上,任何帮助是感激的。

像这样?

Dim ws As Worksheet
Dim rc As Long, i As Long
Set ws = ActiveSheet
rc = ws.Range("F" & Rows.Count).End(xlUp).Row
For i = 1 To rc
If ws.Range("F" & i) <> "" Or Not IsEmpty(ws.Range("F" & i).Value) Then
ws.Range("G" & i).Formula = "=VLOOKUP(F" & i & ",Mapping!$A$4:$B$1000,2,FALSE)"
Else
ws.Range("G" & i).Value = ws.Range("Q" & i).Value
End If
Next