1

countif 関数を使用し、値「United States」が Test 列に入力されているかどうかをチェックする VBA コードがあります(以下のコードを参照)

これをより柔軟にしたいと思います。静的な値「United States」ではなく、特定の列 (A2 など) からデータを取得したいと考えています。

このコードを修正する必要があることはわかっています

Debug.Print "=IF(RC[" & CStr(FormulaCol - LookupCol - 1) & "]=""United States"",1,0)"
ActiveCell.Offset(0, FormulaCol - 1).FormulaR1C1 = "=IF(RC[" & CStr(LookupCol -     FormulaCol) & "]=""United States"",1,0)"

単純な関数コード =IF(B2=A2,1,0) を使用して、コードに A2 を入れてみました。私の試みはすべて構文エラーを返しました。

私のマクロ

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) & "]=""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 If
Next
End Sub
4

2 に答える 2

1

R2C1関数内の代わりに使用してみてくださいA2Range.FormulaR1C1これは、RC スタイルの参照のみを受け入れるを使用しているためです。

数式をセルに割り当てる VBA 行は、次のようになります。

ActiveCell.Offset(0, FormulaCol - 1).FormulaR1C1 = _
    "=IF(RC[" & CStr(LookupCol - FormulaCol) & "]=R2C1,1,0)"
于 2013-03-13T17:03:14.407 に答える
0

"]=""United States"",1,0)"...と置き換えます"]=" & Range("A2").Value & ",1,0)"

それはトリックを行う必要があります...

于 2013-03-13T17:03:45.677 に答える