如何在 Excel 中的两个单独列中匹配返回相关单元格字段?

埃里克

我正在尝试创建一个公式,显示所有匹配的字段,但还包括“链接的单元格”。像这样的东西——

用户输入“Brad”,结果框应显示“Brad、Adam、Charlie、David”,因为 Brad 与 Adam 相关联,Adam 与 Charlie 和 David 相关联。

A     B
Adam|Brad
Adam|Charlie
Adam|David
Evan|Fred

公式:

{IFERROR(IFERROR(INDEX(Column B,SMALL(IF(Column A=InputCriteria,ROW(Column A)-1),ROW(1:1))),INDEX(Column A,SMALL(IF(Column B=InputCriteria,ROW(Column B)-1),ROW(1:1)))),"")}
皮肤

我的名字是布拉德,所以我无法控制自己,我不得不给出一个解决方案。:-)

将以下代码添加到 VBA 编辑器中的新模块中...

Public Function GetAssociatedNames(ByVal strName As String, ByVal rngCells As Range) As String
    Dim lngRow As Long, lngCol As Long, lngBlanks As Long, objNames As Scripting.Dictionary
    Dim strName1 As String, strName2 As String, i As Long, strNameToAdd As String, x As Long
    Dim lngStart As Long, lngCount As Long, lngForCount As Long

    strName = Trim(strName)

    Set objNames = New Scripting.Dictionary
    objNames.Add strName, strName

    With rngCells
        lngStart = 0

        Do While True
            lngForCount = objNames.Count - 1

            If lngStart > lngForCount Then Exit Do

            For x = lngStart To lngForCount
                strName = objNames.Keys(x)

                lngCount = objNames.Count

                For lngRow = 1 To .Rows.Count
                    strName1 = .Cells(lngRow, 1)
                    strName2 = .Cells(lngRow, 2)

                    If strName1 & strName2 = "" Then
                        lngBlanks = lngBlanks + 1
                    Else
                        lngBlanks = 0

                        If strName1 = strName Then strNameToAdd = strName2
                        If strName2 = strName Then strNameToAdd = strName1

                        If Not objNames.Exists(strNameToAdd) And strNameToAdd <> "" Then objNames.Add strNameToAdd, strNameToAdd
                    End If

                    If lngBlanks = 10 Then Exit For
                Next

                lngStart = lngStart + 1
            Next
        Loop
    End With

    For i = 0 To objNames.Count - 1
        GetAssociatedNames = Trim(GetAssociatedNames & "," & objNames.Keys(i))
    Next

    GetAssociatedNames = Replace(Mid(GetAssociatedNames, 2), ",", ", ")
End Function

...然后添加对Microsoft Scripting Runtime的引用...

在此处输入图片说明

然后您可以在单元格中使用公式,就像这样......

在此处输入图片说明

它对我有用,希望它对你有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Excel中创建N个单元格

如何在两个不同的Excel工作表中比较两个单元格区域?

如何在Excel中的两个单元格中比较两个日期?

如何在Excel中添加两个单元格,其值之间用斜杠分隔?

在Excel中如何用两个条件替换单元格内部颜色

如何合并具有相同字段名称的Excel中的两个单元格

如何在Excel中增加单元格引用

如何在Excel的一个单元格中应用多个(两个以上)条件?

如何在同一条件列中唯一单元格满足两个条件的情况下使用Excel或Google表格COUNTUNIQUEIFS

如何在Excel中的额外列或单元格中定义的列列表中求和

excel如何将两个单独的单元格与逗号分隔的数据进行配对?

如何在Excel中合并两个单元格(均包含内容),以使用VBA保持格式完整?

如何自动同步两个Excel文件中的单元格?

如何在Excel 2013中的IF中比较和求和两个单元格的值并使用多个条件

如何在excel中输出彼此相邻的两个单元格的值?

VBA Excel-如何在两个粗体单元格之间排序

Excel:如果列中为数字,则返回上方两个空格和下方两个空格的单元格,输出到单独的文件

如何从两个具有相同格式的Excel工作表中找出不同的单元格

如何使两个公式在Excel中引用相同的单元格?

如何在Excel中的两个日期之间计算大于或小于0(零)的单元格数目?

Excel VBA代码-当工作表2中的两个单元格相等时,如何清除工作表1列的值?

在 Excel 中,如何根据任一单元格的条件突出显示两个单元格?

如果文本之间有两个空格,如何在excel中溢出单元格

如何计算excel同一列中两个单元格之间的差异?

在 Excel 中,如何在两个单独的工作表中匹配两个不同的值后有条件地设置单元格格式?

VBA Excel:如何使用两个变量作为其位置将值放入单元格中

当我在excel中的那些单元格中同时输入数字和文本时如何将两个单元格多个

如何在excel中为每个单独的单元格获取一个?

Excel:如果单元格中的值与另一个选项卡上的列中的值匹配,我如何返回空白行上方的特定单元格?