我有一个如下所示的电子表格:
基于研究,我目前正在将“ Y”和“ N”值手动输入到“值”列中。但是,为了节省时间,我希望为初始配对的值自动填充其反向配对。例如,我将苹果与橙配对为“ Y”。我想用相同的“ Y”值自动填充橙对苹果配对。我曾考虑过进行索引匹配,但没有考虑配对的组合。任何想法都将不胜感激。
答案 0 :(得分:1)
我不知道公式,但是这是VBA解决方案-您甚至可以将其转换为Worksheet_Change
事件,如果您对列本身进行更改,该事件将不断刷新值。
正如Marc所说-您实际上不应该有一个包含值和公式的混合列(特别是如果它正在读取自身,那么您将遇到递归的问题)。
Option Explicit
Sub PopulateValue()
Dim i As Long, j As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 3).Value = "" Then
'Look for a true match
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If i <> j Then
If Cells(i, 1).Value = Cells(j, 1).Value And _
Cells(i, 2).Value = Cells(j, 2).Value Then
If Cells(j, 3).Value <> "" Then
Cells(i, 3).Value = Cells(j, 3).Value
Exit For
End If
End If
End If
Next j
'Look for a reverse match
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If i <> j Then
If Cells(i, 1).Value = Cells(j, 2).Value And _
Cells(i, 2).Value = Cells(j, 2).Value Then
If Cells(j, 3).Value <> "" Then
Cells(i, 3).Value = Cells(j, 3).Value
Exit For
End If
End If
End If
Next j
End If
Next i
End Sub
答案 1 :(得分:1)
这是一个工作表公式。假设标题位于第1行,数据从第2行开始,并且列Entity1
,Entity2
和Value
中的A
,B
和C
分别放
=IFERROR(INDEX(C$2:C2,MATCH(B3&"$"&A3,A$2:A2&"$"&B$2:B2,0)),"")
在C3
中作为数组公式(CTRL-SHIFT-ENTER
)并填写。
说明
该公式会像您考虑的那样进行索引/匹配。对于匹配的查找部分,它将Entity2
和Entity
连接到单个字符串中。两个两个实体之间有一个可选的$
分隔符(如下所述)。对于匹配项的数组部分,Entity1
和Entity2
由相同的定界符连接在一起。数组从第一个数据行开始,到当前行上方的行结束。
如果匹配返回一个索引,则该索引将与直到当前索引的值数组一起插入INDEX
中。如果匹配返回#VALUE错误,则将其包装在IFERROR
函数中。
定界符考虑两对Entity1
和Entity2
,第一对为(峰值,峰值),第二对为(峰值,说话)。如果不使用分隔符而将其中任何一个连接起来,则会产生“尖峰”,并可能导致错误的匹配。分隔符防止出现这种情况。您可以选择数据中不会出现的任何字符串作为分隔符。
希望有帮助