我正在创建一个自动化系统,将数据无线传输数据读入excel。数据发送一个标尺号和一个值ex。 89, - .002(规格#89,值= - .002)。该数据进入单元格F2。我已经创建了将规格数和值分成变量的代码。我在单元格C5-C11中有一个固定标尺编号列表,并且读数通过基于标尺编号的单元格G5-G11中的偏移量填充。我能够弄清楚的是,如果我们需要检查零件上的多个点,如何以相同的规格读取读数,但多次读数。因此,例如,如果测量仪87需要三个不同的读数(87将在C5-C11中列出三次),我需要代码从F2中的输入搜索基于我的仪表编号变量的87并找到所有87在细胞C5-C11中。然后检查单元格偏移4列是否已有值。如果是,则转到下一个找到的87并检查该偏移量是否有值。如果它没有填充单元格。
我无法对数字进行编码,因为我正在创建模板。所以它必须用我认为的所有标准数来搜索倍数。
感谢任何帮助或想法。如果有人可以给我示例代码以集成到我的项目中,那就更好了。
设置wsInput = Sheet1 使用wsInput.Range(" C5:C24")'选择第1张范围
Border
这就是我现在拥有的东西,但它不会搜索重复项我只会找到它找到的第一个副本。
答案 0 :(得分:0)
这是DO...LOOP WHILE
部分的问题。通过将While
条件放在最后,您告诉它继续循环UNTIL C.Address = FirstAddress
。不应在此处自动将C设置为下一个:Set C = .FindNext(C)
,而应先测试它以确定FindNext
是否为您提供所需的地址。像这样:
Set TempC = .FindNext(C)
If TempC.Address <> FirstAddress Then
Set C = TempC
Else
Exit Do
End If
注意:这将始终将C
设置为仪表编号显示的最后一个位置,而不是下一个位置。要获得下一个,您可以将FindNext
替换为FindPrevious
。然后它将以相反的顺序循环,并在第二个规格数的情况下结束。