基本上我只想检查一个单独的表列中的两个单元格是否包含相同的字符串,如果它们包含相同的字符串,我想分配另一个字符串,只是一个 .Offset(, 1) 远离原始单元格。

我现在正试图解决这个问题几个小时。
我还尝试比较 .text 属性并使用 CStr() 进行转换,但仍然出现不匹配错误。

这是一个示例

Dim c1 As Range
Dim c2 As Range

For Each c1 In tranTab.DataBodyRange.Columns(1)
    For Each c2 In rawTab.DataBodyRange.Columns(9)
        If c2.Value = c1.Value Then
            c2.Value = c1.Offset(, 1).Value
        End If
    Next c2
Next c1

调试突出显示这一行:
If c2.Value = c1.Value Then

并抛出:



Locals 窗口中,两者都显示为 Variant/Variant 类型。
这是我的第一篇文章/问题,我几乎可以肯定我已经完成了我的研究,以找到关于不匹配问题的所有类似信息,但在对表/ListObjects 进行操作时,没有一个详尽的主题。

最佳答案

循环不是通过单元格,而是通过整个列。试试这个并检查地址是列之一:

Sub TestMe()

    Dim c1 As Range
    For Each c1 In Worksheets(1).ListObjects("tranTab").DataBodyRange.Columns(1)
        Debug.Print c1.Address
    Next c1

End Sub

为了遍历单元格,请在 for-each 循环的末尾添加 .Cells:
For Each c1 In Worksheets(1).ListObjects("tranTab").DataBodyRange.Columns(1).Cells

关于excel - 比较不同/单独表列中的值时出现 'Type mismatch' 运行时错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59054283/

10-10 18:48