0

文字列「値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
4

1 に答える 1

0

「WorksheetFunction.CountIf(Range(Cells(2, j))」がある場合は、次のように範囲参照の前にシートを挿入するだけです。

Sheets(2).Range(Sheets(2).Cells(2, j), Sheets(2).Cells(scenario_count, j))

@Roryのコメントから大胆に取得したCells関数とRange関数の両方のシートを参照する完全な数式を編集します。

于 2015-07-22T15:51:34.330 に答える