我有一个使用 if 函数的宏。它将结果(1 或 0)放置到指定的列中。但是,我想指定列名的名称。假设说执行 if 函数并将值带到标题称为“值”的列中。您可以在下面找到原始代码:
Sub bbb()
Dim FormulaCol As Long
Dim LookupCol As Long
Dim TotalRows As Long
Dim TotalCols As Long
Dim i As Long
Sheets("Sheet1").Select
TotalRows = ActiveSheet.UsedRange.Rows.Count
TotalCols = ActiveSheet.UsedRange.Columns.Count
For i = 1 To TotalCols
If Cells(1, i).Value = "Values" Then FormulaCol = i
If Cells(1, i).Value = "Test" Then LookupCol = i
Next
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""United States"",1,0)"
Cells(2, FormulaCol).AutoFill Destination:=Range(Cells(2, FormulaCol), Cells(TotalRows, FormulaCol))
With Range(Cells(2, FormulaCol), Cells(TotalRows, FormulaCol))
.Value = .Value
End With
End Sub
我知道这部分代码负责静态指定列:
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=""United States"",1,0)"
但我不知道我应该如何改变它以使其如上所述工作。有人可以帮我解决这个问题吗?
编辑
这是显示我想要实现的目标的图像
现在,如果 VALUE 列在 TEST 列的右侧,则此宏可以正常工作。如果 VALUE 列远离测试列,则它不会带来正确的值。我想制作宏来查找标题“值”以识别值列的确切位置(对于某些文件,它不会是同一列)
编辑 2:这是我使用您当前的代码得到的结果。即使我将 VALUE 列移到 TEST 列旁边,它的行为也是一样的。使用时,我的代码值从 C2 填充到 C9。如您所见,使用您的代码它带来了 D1 中的价值