Excel 循环行和列以满足条件
如果有人能帮我解决这个问题,我将非常感激 我想要一个excel宏,它将通过sheet2的第一行和第一列返回值,如果sheet1的单元格b3中满足booth条件。 条件将在表1中规定;单元格b1将包含搜索sheet2中的行的条件,单元格b2将包含搜索sheet2中的列的条件。结果应复制到表1的单元格b3中 提前谢谢 添加 我有一个子程序,它遍历行并查找条件1(strDate),但我只设法做到了这一点,因为列是固定的。我应该再添加一个计数器,它将通过列来满足条件2(strProduct),但我不这样做Excel 循环行和列以满足条件,excel,vba,Excel,Vba,如果有人能帮我解决这个问题,我将非常感激 我想要一个excel宏,它将通过sheet2的第一行和第一列返回值,如果sheet1的单元格b3中满足booth条件。 条件将在表1中规定;单元格b1将包含搜索sheet2中的行的条件,单元格b2将包含搜索sheet2中的列的条件。结果应复制到表1的单元格b3中 提前谢谢 添加 我有一个子程序,它遍历行并查找条件1(strDate),但我只设法做到了这一点,因为列是固定的。我应该再添加一个计数器,它将通过列来满足条件2(strProduct),但我不这样
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
首先欢迎来到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