Windows 比较工作表中的两行,并测试每行的唯一值和列中的输出
我有一个工作表,它有两个不同值的列:患者ID(ID#)和研究所 我希望找到两列之间的唯一值,并在对应于每个单元格的不同列中输出为1(唯一)和0(不唯一) 我需要使用一个数组,因为我在每列中有10000条记录要测试 试验条件: 案例1:PatientID的价值(A1=“HC1”)转到机构价值(B2=“HG”)。这是一个独特的值,因为PatientID和Institute只出现一次。因此,输出值(C1=“1”) 案例2:PatientID值(A2=“HC1”)变为机构值(B2=“HG”)。这不是一个独特的现象;同一个病人又去了同一个研究所。因此,输出值(C2=“0”) 案例3:PatientID值(A3=“HC1”)变为机构值(B3=“RH”)。这是独一无二的;同一个病人去了不同的研究所。因此,输出值(C3=“1”) 案例4:PatientID值(A4=“HC2”)变为机构值(B4=“RH”)。这是独一无二的;不同的病人去不同的研究所。因此,输出值应为value(C4=“1”) 我需要VB代码来做同样的事情 目前我使用的是Excel 2010公式 =如果(总和产品($C$2:$C1442=C3)*($A$2:$A1442=A3))>1,0,1) 在哪里,, C列为机构,A列为患者 这需要大量的时间来计算。请帮忙Windows 比较工作表中的两行,并测试每行的唯一值和列中的输出,windows,vba,excel,Windows,Vba,Excel,我有一个工作表,它有两个不同值的列:患者ID(ID#)和研究所 我希望找到两列之间的唯一值,并在对应于每个单元格的不同列中输出为1(唯一)和0(不唯一) 我需要使用一个数组,因为我在每列中有10000条记录要测试 试验条件: 案例1:PatientID的价值(A1=“HC1”)转到机构价值(B2=“HG”)。这是一个独特的值,因为PatientID和Institute只出现一次。因此,输出值(C1=“1”) 案例2:PatientID值(A2=“HC1”)变为机构值(B2=“HG”)。这不是一个
谢谢您可以使用辅助列将两个单元格组合在一起,然后计算这些单元格是否唯一 结果 如果需要,可以隐藏C列
如果要使用宏进行相同的操作,可以按如下操作:
Sub TEST()
Set ExcelAppl = CreateObject("Excel.Application")
Set wb = ActiveWorkbook
Set ActiveRange = wb.Worksheets(1).UsedRange
RowCont = ActiveRange.Rows.Count
Dim dataArr() As Variant
ReDim dataArr(RowCont, 1)
For i = 0 To RowCont - 1
InputText = Cells(i + 1, 1).Value & Cells(i + 1, 2).Value
If CheckUnique(dataArr, InputText) = True Then
Cells(i + 1, 3).Value = 0
Else
Cells(i + 1, 3).Value = 1
dataArr(i, 0) = InputText
dataArr(i, 1) = i + 1 'store row number
End If
Next
End Sub
Function CheckUnique(dataArr, InputText)
Dim lb As Long, ub As Long, i As Long, result As Boolean
lb = LBound(dataArr)
ub = UBound(dataArr)
result = False
For i = lb To ub
If dataArr(i, 0) = InputText Then
result = True
Cells(i + 1, 3).Value = 0
Exit For
End If
Next i
CheckUnique = result
End Function
输出将是:
案例3和案例4不一样吗?对不起,输入错误。现在纠正它。谢谢你指出。谢谢你的代码。但是输出有一个错误,C1=0和C2=0,当它找到一个匹配项时,它将两个字段都置为0,而不是将一个字段置为1,另一个字段置为0。是的!我这样写代码:如果它在整个列中是唯一的,它将指定一个,否则为零。因为我从你的帖子中了解到,你想要检查唯一值。