文字列「値1 - 値2」の形式でシート(3)の値の列を検索するコードがあります
value2 は、シート (2) の列の最初の値であり、value1 は、シートのさらに下のセルにある同じ列の値です。
私が持っているセットアップは次のとおりです。
シート (1) では、セル C2:C6 の値はそれぞれ ae です。
シート (2) では、セル C1 の値は "yes" で、セル C2:C6 の値はそれぞれ 1 ~ 5 です。
シート(3)では、セル A2 の値は「4 - はい」です。
したがって、コードは、最初の値が yes であるシート 2 の列をカウントし、値 4 のセルを探し、結果をシート (3) のセル B2 に入れる必要があります。
実際には、はいの列 (列 C) を見つけて、シート (1) の同じ列を検索します (したがって、メッセージ ボックスには数字ではなく文字が表示されます)。
countif 関数が使用するシートをより正確に指定する方法はありますか?
Windows 7 で Excel 2000 を使用しています。
Private Sub test_click()
scenario_count = 6
Dim i As Integer
i = 1
Sheets(2).Select
For j = 2 To 24
If Sheets(2).Cells(1, j).Value = Right(Sheets(3).Cells(i + 1, 1).Value, Len(Sheets(3).Cells(i + 1, 1).Value) - InStrRev(Sheets(3).Cells(i + 1, 1).Value, "-") - 1) Then
MsgBox ("number of scenarios is " & scenario_count)
MsgBox ("value searching for is " & "'" & Left(Sheets(3).Cells(i + 1, 1).Value, InStrRev(Sheets(3).Cells(i + 1, 1).Value, "-") - 2) & "'")
MsgBox ("Range searched is " & Range(Cells(2, j), Cells(scenario_count, j)).Address & " in " & ActiveSheet.Name)
MsgBox ("Number of occurrences " & Sheets(2).Application.WorksheetFunction.CountIf(Range(Cells(2, j), Cells(scenario_count, j)), Left(Sheets(3).Cells(i + 1, 1).Value, InStrRev(Sheets(3).Cells(i + 1, 1).Value, "-") - 2)))
Sheets(2).Select
Sheets(3).Cells(i + 1, 2).Value = Sheets(2).Application.WorksheetFunction.CountIf(Range(Cells(2, j), Cells(scenario_count, j)), Left(Sheets(3).Cells(i + 1, 1).Value, InStrRev(Sheets(3).Cells(i + 1, 1).Value, "-") - 2))
For Each c In Range(Cells(2, j), Cells(scenario_count, j))
MsgBox ("comparing " & c.Address & " " & c.Value & " with " & Left(Sheets(3).Cells(i + 1, 1).Value, InStrRev(Sheets(3).Cells(i + 1, 1).Value, "-") - 2))
Next c
GoTo endofif2
End If
Next
endofif2:
End Sub