如果函数macros – 结果在一个特定的列

我有一个使用if函数的macros。 它将结果(1或0)放到指定的列中。 但是,我想指定列名称的名称。 比方说说做if函数,并把值赋给那个名为“Values”的列。 下面你可以find原来的代码:

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列,这个macros就可以正常工作。 如果VALUE栏的位置远离testing栏,则不会显示正确的值。 我想使macros查找标题“值”来确定列的位置确切值(如某些文件不会是同一列)

编辑2:这是我得到使用您当前的代码的结果。 即使我移动了TEST列旁边的VALUE列,它的行为也是一样的。 当使用我的代码值从C2到C9填充。 正如你可以看到使用你的代码它在D1中带来的价值

在这里输入图像描述

我不太清楚,如果我理解这个问题,但是基于testing列在一列中更改值的子例程可能如下所示:

 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 = "Test" Then LookupCol = i Exit For End If Next For i = 1 To TotalCols If Cells(1, i).Value = "Values" Then FormulaCol = i Range("A2").Activate Debug.Print "=IF(RC[" & CStr(FormulaCol - LookupCol - 1) & "]=""United States"",1,0)" ActiveCell.Offset(0, FormulaCol - 1).FormulaR1C1 = "=IF(RC[" & CStr(LookupCol - FormulaCol) & "]=""us"",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 If Next End Sub