0

助けを求めたいと思います。そのようなアクションを実行するマクロを探しています:

Comment という列と、Comment 列に従って入力する必要がある他の 5 つの列があります。コメント列に「重複」というメッセージがある場合、重複 1 という列にマークを付けたいと思います。そうでない場合は 0 にする必要があります。左 - 交換品なし。これらの値の両方について、左の列に入力された 1 で、その他の値は 0 である必要があります。

Vlookup用に持っているマクロを修正したところ、if関数を取得できましたが、特定の論理テストが1つしかありませんでした(この例では「左 - 置換が見つかりました」)。複数の論理テストが必要になるため、この場合はLeft - Replacement Found と Left - No Replacement を 1 としてマークし、残りを 0 としてマークしたいと考えています。

Sub Testing_if_function()
Dim FormulaCol As Long
Dim LookupCol As Long
Dim TotalRows As Long
Dim TotalCols As Long
Dim i As Long

Sheets("Data").Select
TotalRows = ActiveSheet.UsedRange.Rows.Count
TotalCols = ActiveSheet.UsedRange.Columns.Count

For i = 1 To TotalCols
    If Cells(1, i).Value = "Test" Then FormulaCol = i
    If Cells(1, i).Value = "Comment" Then LookupCol = i
Next

ActiveCell.FormulaR1C1 = "=IF(RC[-2]=""Left - Replacement Found"",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
4

1 に答える 1

0

この問題の解決策を見つけました。したがって、誰かが同様のマクロを必要とする場合、コードは次のとおりです。

Sub Testing_if_function()
Dim FormulaCol As Long
Dim LookupCol As Long
Dim TotalRows As Long
Dim TotalCols As Long
Dim i As Long

Sheets("Data").Select
TotalRows = ActiveSheet.UsedRange.Rows.Count
TotalCols = ActiveSheet.UsedRange.Columns.Count

For i = 1 To TotalCols
    If Cells(1, i).Value = "Test" Then FormulaCol = i
    If Cells(1, i).Value = "Comment" Then LookupCol = i
Next

ActiveCell.FormulaR1C1 = "=IF(RC[-2]=""Left - Replacement Found"", 1, IF(RC[-2]=""Left - No Replacement"", 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
于 2013-02-21T11:28:16.527 に答える