excel - 如何使用 range.value 查找多个字符串?

标签 excel vba

我尝试使用 range("A1:I1").value 在第一行查找多个字符串,但它显示错误“不匹配”。我在这里做错了什么?还有另一种方法吗?

enter image description here

Dim sht as worksheet

Set sht = ThisWorkbook.Sheets("Result")

If sht.range("A1:I1").value = " Voltage" and sht.range("A1:I1").value = " Time"     ,<---------error 'mismatch' occurs here  

call powerandtime

最佳答案

这里的问题是您正在将一组值与单个值进行比较。对于这么小的数组,您可以使用一些 Application.Methods .另一种选择是使用 Range.Find实际Range目的。我将在下面演示两者:

应用程序.方法

Sub Test()

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Result")
Dim arr As Variant

With Application
    arr = .Transpose(ws.Range("A1:I1").Value)
    If .Count(.Match(Array("Voltage", "Time"), arr, 0)) = 2 Then
        Call PowerAndTime
    End If
End With

End Sub

这里发生的是 .Match将返回一个包含两个元素的数组。如果未找到“电压”或“时间”,它将向数组返回一个错误值,或者在找到其中任何一个时返回一个数值。然后.Count将对返回的数组中的数值进行计数,并且仅当计数为 2 时,两个值都存在于您的初始范围内。

注: .Match需要一维数组,因此 .Transpose在开始时。

范围。查找
Sub Test()

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Result")
Dim rng1 As Range, rng2 As Range

Set rng1 = ws.Range("A1:I1").Find("Voltage", lookat:=xlWhole)
Set rng2 = ws.Range("A1:I1").Find("Time", lookat:=xlWhole)

If Not rng1 Is Nothing And Not rng2 Is Nothing Then
    Call PowerAndTime
End If

End Sub

所以只有当“电压”和“时间”都被发现为xlWhole时在您的特定范围内的值,它将继续调用 PowerAndTime .

关于excel - 如何使用 range.value 查找多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60000061/

相关文章:

excel - 如何将单个单元格中的数据分离成多列和多行

c# - 如何将 Excel 工作表导出为图像?

vba - 如何将当前对象 (Me) 设置为存储在 Visual Basic for Excel 中的数组中的新对象

vba - 当员工编号添加到用户表单 Combobox9 时,VLookup 将名称添加到用户表单 textbox531

vba - Excel VBA Rnd 实际上不是随机的

excel - 变量属于一个值范围

excel - Google 文档导出带双引号的 CSV

excel - 从 InStr 函数返回 True/False bool 值?维巴

excel - 你能从 excel 宏运行 .jl 文件吗

vba - 使用VBA删除Word Doc中的空白页