VBA Excel;查找重复单元格并填充偏移单元格

时间:2015-07-24 01:13:56

标签: excel vba excel-vba automation

我正在创建一个自动化系统,将数据无线传输数据读入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

这就是我现在拥有的东西,但它不会搜索重复项我只会找到它找到的第一个副本。

1 个答案:

答案 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。然后它将以相反的顺序循环,并在第二个规格数的情况下结束。