【发布时间】:2019-09-16 12:51:02
【问题描述】:
场景:我有一个比较两个不同数组中的数据并将相应值写入工作表的函数。
数组1:
+-------+----------------+-----------------+
| Name1 | Current Level1 | Previous Level1 |
+-------+----------------+-----------------+
| ID1 | b | c |
+-------+----------------+-----------------+
| ID2 | f* | g |
+-------+----------------+-----------------+
| ID3 | | |
+-------+----------------+-----------------+
| ID4 | e | e |
+-------+----------------+-----------------+
数组2:
+----+--------------+
| ID | Corresponder |
+----+--------------+
| a | 1 |
+----+--------------+
| b | 2 |
+----+--------------+
| c | 3 |
+----+--------------+
| d | 4 |
+----+--------------+
| e | 5 |
+----+--------------+
| f* | 6 |
+----+--------------+
| g | 7 |
+----+--------------+
| h | 8 |
+----+--------------+
| i | 9 |
+----+--------------+
场景:我正在运行一个循环,它读取第一个数组中的字母,在第二个数组中找到对应的值(如 Vlookup)并写入一个与第一个数组完全相同的数组,但是和相应的数字)。
输出:
+-------+----------------+-----------------+
| Name1 | Current Level1 | Previous Level1 |
+-------+----------------+-----------------+
| ID1 | 2 | 3 |
+-------+----------------+-----------------+
| ID2 | 6 | 7 |
+-------+----------------+-----------------+
| ID3 | | |
+-------+----------------+-----------------+
| ID4 | 5 | 5 |
+-------+----------------+-----------------+
问题:我正在运行这段代码,但是对于某些值,即使比较是肯定的,循环仍然会跳转内部命令。
代码:
Function match_up_values(cleanoutputArray As Variant, matchArray As Variant, targetColumn As Integer, matchColumn As Integer)
For loopvar1 = 2 To UBound(cleanoutputArray, 1)
For loopvar2 = 2 To UBound(matchArray, 1)
If CStr(cleanoutputArray(loopvar1, targetColumn + 1)) = CStr(matchArray(loopvar2, ratingsColumn)) And CStr(cleanoutputArray(loopvar1, targetColumn + 1)) <> "" Then ' some times, even if this if is true, it steps to the next loopvar2
shtOutput1.Cells(loopvar1, targetColumn + 1) = matchArray(loopvar2, matchColumn + 1)
shtOutput1.Cells(loopvar1, 1) = cleanoutputArray(loopvar1, 1)
shtOutput1.Cells(loopvar1, 2) = cleanoutputArray(loopvar1, 2)
Exit For
End If
Next loopvar2
Next loopvar1
End function
问题:什么可能导致此错误?
【问题讨论】:
-
您是否曾尝试在工作表中:
=A1=A2查找您认为应该匹配的单元格?通常有一个尾随或前导空格会引发这种比较。 -
是的,@Luuklag 有道理。尝试在阅读单元格时添加
Trim。 -
@Luuklag我试过了,结果是假的。我将两者都复制并粘贴到文本编辑器中,它们是相同的。
-
@Tom 是的。错误只是当我将问题转移给 SO 时。
-
你怎么称呼
Function?为什么你使用Function而不是Sub,因为你没有返回任何值?