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に価値をもたらします