是否有 VBA 工作表函数可以让我进行两层搜索?
Is there a VBA worksheet function that will allow me to do a two layer search?
有什么公式可以用来做双层搜索吗?
我希望能够在第三列中收集满足两个条件的任何信息。
- 必须是一个地点(在本例中为印度尼西亚)
- 必须是特定行业 (FMCG)
这里的例子:
如果行业规模是一个数字字段,您有 2 个选项来获取它。如果没有,那么您只能使用 MATCH 和 INDEX
与MATCH/INDEX:=INDEX($C:$C;MATCH(F17&G17;A2:A11&B2:B11;0))
使用 SUMIFS:=SUMIFS($C:$C;$A:$A;F18;$B:$B;G18)
根据您的 Excel 版本,MATCH 公式可能需要作为数组公式引入,因此您必须按 CTRL+ 引入它SHIFT+ENTER
如果你想要VBA的解决方案,请使用下一个函数:
Function extractIndSize(strCountry As String, strInd As String, rng As Range) As Variant
Dim i As Long, arr
arr = rng.value
For i = 1 To UBound(arr)
If arr(i, 1) = strCountry And arr(i, 2) = strInd Then
extractIndSize = arr(i, 3): Exit Function
End If
Next i
End Function
可以通过以下方式进行测试:
Sub testExtractIndustrySize()
Dim sh As Worksheet, lastR As Long, rng As Range
Set sh = ActiveSheet
lastR = sh.Range("A" & sh.rows.count).End(xlUp).Row
Set rng = sh.Range("A2:C" & lastR)
MsgBox extractIndSize("Indonesia", "FMCG", rng)
End Sub
该函数也可以从单元格调用(作为 UDF),使用下一个公式:
=extractIndSize(E2,F2,A2:C11)
其中"E2"必须引入国家名称,"F2"必须引入行业名称,第三个参数为要处理的范围(光标选中),
有什么公式可以用来做双层搜索吗?
我希望能够在第三列中收集满足两个条件的任何信息。
- 必须是一个地点(在本例中为印度尼西亚)
- 必须是特定行业 (FMCG)
这里的例子:
如果行业规模是一个数字字段,您有 2 个选项来获取它。如果没有,那么您只能使用 MATCH 和 INDEX
与MATCH/INDEX:=INDEX($C:$C;MATCH(F17&G17;A2:A11&B2:B11;0))
使用 SUMIFS:=SUMIFS($C:$C;$A:$A;F18;$B:$B;G18)
根据您的 Excel 版本,MATCH 公式可能需要作为数组公式引入,因此您必须按 CTRL+ 引入它SHIFT+ENTER
如果你想要VBA的解决方案,请使用下一个函数:
Function extractIndSize(strCountry As String, strInd As String, rng As Range) As Variant
Dim i As Long, arr
arr = rng.value
For i = 1 To UBound(arr)
If arr(i, 1) = strCountry And arr(i, 2) = strInd Then
extractIndSize = arr(i, 3): Exit Function
End If
Next i
End Function
可以通过以下方式进行测试:
Sub testExtractIndustrySize()
Dim sh As Worksheet, lastR As Long, rng As Range
Set sh = ActiveSheet
lastR = sh.Range("A" & sh.rows.count).End(xlUp).Row
Set rng = sh.Range("A2:C" & lastR)
MsgBox extractIndSize("Indonesia", "FMCG", rng)
End Sub
该函数也可以从单元格调用(作为 UDF),使用下一个公式:
=extractIndSize(E2,F2,A2:C11)
其中"E2"必须引入国家名称,"F2"必须引入行业名称,第三个参数为要处理的范围(光标选中),