Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用COUNTIF查找项目的位置_Vba_Excel - Fatal编程技术网

Vba 使用COUNTIF查找项目的位置

Vba 使用COUNTIF查找项目的位置,vba,excel,Vba,Excel,我有两个工作表,我正试图比较,看看wksht1中的值是否在wksht2中找到 For Each c In wksht2 If WorksheetFunction.CountIf(wksht1, c.Value) > 0 Then sh2.Range("j10") = c.Value End If Next 如果在wksht1中找到值,则返回该值。 例如: 假设我有两张清单 清单1: 姓名:1,姓名3,姓名17,姓名85 清单2: 名字12,名字6,名字3

我有两个工作表,我正试图比较,看看wksht1中的值是否在wksht2中找到

For Each c In wksht2 
    If WorksheetFunction.CountIf(wksht1, c.Value) > 0 Then
        sh2.Range("j10") = c.Value
    End If
Next
如果在wksht1中找到值,则返回该值。 例如: 假设我有两张清单

清单1:

姓名:1,姓名3,姓名17,姓名85

清单2:

名字12,名字6,名字3

比较列表2和列表1,我会发现在列表1中可以找到Name3,上面的函数将在单元格J10中返回Name3

但我还需要确定它是在哪里发现的。。。例如,在本例中,名称3在列表1中的位置是位置2


那么,如何搜索字符串,如果找到了字符串,如何确定找到字符串的单元格?

此函数将查找给定val第一次出现的地址

编辑:以下版本将以逗号分隔字符串csv获取所有匹配的地址:

Function whereAll(rng As Range, val As Variant) As String
    Dim r As Range, firstFound As String
    Set r = rng.Find(val)
    If r Is Nothing Then Exit Function
    firstFound = r.address
    Do
        whereAll = whereAll & "," & r.address
        Set r = rng.FindNext(r)
    Loop Until r.address = firstFound
    whereAll = Mid(whereAll, 2, 100000)
End Function

是否有可能使用此代码并找到多于第一次出现的代码?例如,如果您找到了名称,但想继续检查是否再次找到它?不,我知道我不能将所有这些都放在J10中,但这确实有帮助。谢谢你提供的信息和答案。这太完美了。@Apolymoxic我添加了一个在csv中查找所有匹配地址的版本:完美!非常感谢。
Function whereAll(rng As Range, val As Variant) As String
    Dim r As Range, firstFound As String
    Set r = rng.Find(val)
    If r Is Nothing Then Exit Function
    firstFound = r.address
    Do
        whereAll = whereAll & "," & r.address
        Set r = rng.FindNext(r)
    Loop Until r.address = firstFound
    whereAll = Mid(whereAll, 2, 100000)
End Function