-2

誰かがこの問題で私を助けることができれば、私は非常に素晴らしいでしょう...

シート1のセルb3でブース条件が満たされている場合、シート2の最初の行と最初の列を通過して値を返すExcelマクロが必要です。条件はシート 1 で指定します。セル b1 には、シート 2 の行を検索する条件が含まれ、セル b2 には、シート 2 の列を検索する条件が含まれます。結果は、シート 1 のセル b3 にコピーする必要があります。

前もって感謝します

添加..............

行を通過して条件1(strDate)を探すこのサブがありますが、これを行うことができたのは列が固定されていることだけです。条件 2 (strProduct) を満たすために列を通過するカウンターをもう 1 つ追加する必要がありますが、追加しません。

   Sub LookUpValuesRCC2()
'
Dim shtData     As Worksheet    ' Sheet containing data 
Dim shtOutput   As Worksheet    ' Output Sheet 
Dim strDate     As String       ' Date - condition 1
Dim strProduct  As String       ' Product - condition 2   
Dim i           As Integer      ' Counter in shtData Sheet
Dim j           As Integer      ' Counter in shtOutput Sheet
'
Set shtData = Worksheets("sheet2")
Set shtOutput = Worksheets("sheet1")
'
' Loop through "Data" Sheet Rows
For i = 1 To 1000

    strDate = shtData.Cells(i, 1)
    '
    ' Loop through dates in "Output" Sheet
    ' if date match then vrite values
    For j = 1 To shtOutput.Cells(Rows.Count, 14).End(xlUp).Row
        If shtOutput.Cells(j, 14) = strDate Then
            shtOutput.Cells(j, 2) = shtData.Cells(i, 18)

        End If
    Next j
Next i

End Sub
4

1 に答える 1

0

SOへようこそ。第二に、あなたのコードがあなたが望むものの説明と完全に一致していないか、私にはそうしていないように見えるため、あなたのその後が100%明確ではありません.

私はあなたの説明に基づいて以下のコードを書きました.

これが要件を満たさない場合はコメントしてください。

Sub LookUpValuesRCC2()

Dim shtData     As Worksheet    ' Sheet containing data
Dim shtOutput   As Worksheet    ' Output Sheet
Dim strDate     As Date       ' Date - condition 1
Dim strProduct  As String       ' Product - condition 2
Dim strResult As String         'result to print

Dim rngFound As range, rngFoundAgain As range

Set shtData = Worksheets("sheet2")
Set shtOutput = Worksheets("sheet1")

strDate = shtOutput.range("B1").Value
strProduct = shtOutput.range("B2").Value

strResult = "Nothing Found"

With shData

    'first look down the first column for the date
    Set rngFound = .Columns(1).Find(strDate, lookat:=xlWhole)

    If Not rngFound Is Nothing Then

        'if that is found, look for the product in the row with the date
        Set rngFoundAgain = rngFound.EntireRow.Find(strProduct, lookat:=xlWhole)

        If Not rngFoundAgain Is Nothing Then strResult = rngFoundAgain.Value

    End If

End With

shtData.range("B3") = strResult


End Sub
于 2012-12-11T16:08:52.940 に答える