1、首先,将对照(或者系统溶液)以及供试品溶液的数据粘贴到Excel表格中。
2、然后打开BVA编辑器,具体可参考之前的经验《如何将多行多列单元格区域按照升序或者降序排列》,关于打开VBA编辑器以及新建控件的过程都有详细描述。
3、在编辑框中输入以下代码Sub 杂质定位()Dim i As IntegerDim 门钙蹲茌j As IntegerDim x 帆歌达缒As IntegerDim s As Single'首先选择目标位置的第一个单元格(即,供试品名称的第一个单元格)m = Selection.Rown = Selection.Column'然后开始选择对照品和供试品的区域arr1 = Application.InputBox("对照区域", "请选择对照区域", Type:=8)arr2 = Application.InputBox("样品区域", "请选择样品区域", Type:=8) h = UBound(arr2, 1) '此处是为了确定结果存放的区域大小(多少行) '以下通过循环筛选满足条件的单元格位置 (即找到哪些是已知杂质) For i = 1 To UBound(arr1, 1) For j = 1 To UBound(arr2, 1) s = Abs(arr2(j, 2) - arr1(i, 2)) '此处默认为第一例为保留时间,第二列为名称,如果实际中相反,那么此处的2改为1,下列的1改为2 If s < 0.2 Then arr2(j, 1) = arr1(i, 1) '此处的判定标准为保留时间差值的绝对值小于0.2min就判定为已知杂质,可根据情况自己设置阈值(0.1,0.15等等都可以)。 Next j Next i '此处是为了填写未知杂质,不是已知杂质的位置即为未知杂质y = 1 For x = 1 To UBound(arr2, 1) If arr2(x, 1) <> "" Then arr2(x, 1) = arr2(x, 1) Else arr2(x, 1) = "未知杂质" & y: y = y + 1 Next x '以下是为了将筛选的结果填入指定的单元格区域中 Cells(m, n).Resize(h, 2) = arr2End Sub【请注意】:‘后面的文字为注释文本,方便大家理解,可以删去或者不写。
4、然后在excel界面中添加一个控件(例如,命名为“杂质定位”),指定到刚才编辑的“杂质定位”这条宏。
5、很关键的一步,单击供试品中第一个保留时间的左侧单元坼黉赞楞格(作用是激活该单元格,这样后面才能写入结果),然后再单击控件【杂质定位】,依次选择对照品区域、供试品区域,就可以看到结果。注意:在弹出的选择区域输入框中选择对照品和供试品的区域时,一定要将名称和保留时间两列全部选中。