Excel:检查值是否出现,将内容与范围和设置值进行比较
我尝试在Excel中组合几个函数,但对于这个特殊问题,我找不到解决方案 我想检查一行中是否多次包含值。如果是这样,我必须得到匹配的所有值我不想发布所有匹配的内容但我想将这些值与另一个范围的值进行比较,然后确定匹配是否都是相同的类型 示例: 我有一张像这样的桌子: Animal | Number ___________|___________ Dog | 2 | Cat | 1 | Rabbit | 2 | Cat | 1 | Dog | 3 | Dog | 2 然后我阅读了如何打印出某个范围内出现的所有值 但我既不能把这个解决方案转移到我的问题上,也不能想出任何替代方案 提前感谢您的帮助 编辑:Excel:检查值是否出现,将内容与范围和设置值进行比较,excel,vba,match,Excel,Vba,Match,我尝试在Excel中组合几个函数,但对于这个特殊问题,我找不到解决方案 我想检查一行中是否多次包含值。如果是这样,我必须得到匹配的所有值我不想发布所有匹配的内容但我想将这些值与另一个范围的值进行比较,然后确定匹配是否都是相同的类型 示例: 我有一张像这样的桌子: Animal | Number ___________|___________ Dog | 2 | Cat | 1 | Rabbit |
因此,我的主要问题是如何获取所有事件的内容,例如,对于数字“2”,我希望将结果{“Dog”,“Rabbit”}以一种形式与这些值进行处理(以便将它们与其他值进行比较)关于如何获取所有事件,您在编辑中提到过。以下是一个例子:
Sub Test()
Dim objResult As Object
Dim arrAllNumbers()
Dim arrAllAnimals()
Dim lngNumber As Long
Dim arrAnimals()
Dim strAnimals As String
' processing the table
Set objResult = ExtractOccurrences(Range("A2:B7"))
' example how to get array of the numbers
arrAllNumbers = objResult.Keys
' example how to get array of the dictionaries containing corresponding animals
arrAllAnimals = objResult.Items
' example how to get all animals for certain number
lngNumber = 2
arrAnimals = objResult(lngNumber).Keys
' convert to the string representation
strAnimals = "{""" & Join(arrAnimals, """,""") & """}"
End Sub
Function ExtractOccurrences(rngTable As Range) As Object
Dim arrTable() As Variant
Dim objList As Object
arrTable = rngTable
Set objList = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(arrTable, 1)
If IsEmpty(objList(arrTable(i, 2))) Then Set objList(arrTable(i, 2)) = CreateObject("Scripting.Dictionary")
objList(arrTable(i, 2))(arrTable(i, 1)) = ""
Next
Set ExtractOccurrences = objList
End Function
Sub Test()
scope的变量如下所示:
因此,对于数字
2
来说,结果是{“狗”,“兔子”}
如果你缩小你的问题范围,帮助你会更容易。嘿:-)最初我不打算使用vba,但我意识到学习vba比结合一千个公式更容易;-)谢谢你的帮助!
=IF(COUNTIF('table1'!B:B;A1)>1;"X";"")
Sub Test()
Dim objResult As Object
Dim arrAllNumbers()
Dim arrAllAnimals()
Dim lngNumber As Long
Dim arrAnimals()
Dim strAnimals As String
' processing the table
Set objResult = ExtractOccurrences(Range("A2:B7"))
' example how to get array of the numbers
arrAllNumbers = objResult.Keys
' example how to get array of the dictionaries containing corresponding animals
arrAllAnimals = objResult.Items
' example how to get all animals for certain number
lngNumber = 2
arrAnimals = objResult(lngNumber).Keys
' convert to the string representation
strAnimals = "{""" & Join(arrAnimals, """,""") & """}"
End Sub
Function ExtractOccurrences(rngTable As Range) As Object
Dim arrTable() As Variant
Dim objList As Object
arrTable = rngTable
Set objList = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(arrTable, 1)
If IsEmpty(objList(arrTable(i, 2))) Then Set objList(arrTable(i, 2)) = CreateObject("Scripting.Dictionary")
objList(arrTable(i, 2))(arrTable(i, 1)) = ""
Next
Set ExtractOccurrences = objList
End Function