可以使用递归的方法来实现该功能。以下是一个示例的 VBA 代码:

Sub FindNodes()
    Dim inputChar As String
    Dim parentNode As Range
    Dim childNode As Range
    Dim outputSheet As Worksheet
    
    ' 获取输入字符
    inputChar = Range("C1").Value
    
    ' 设置输出工作表
    Set outputSheet = ThisWorkbook.Sheets("Sheet2")
    
    ' 清空输出工作表
    outputSheet.Cells.Clear
    
    ' 在 sheet1 中查找父节点
    For Each parentNode In ThisWorkbook.Sheets("Sheet1").Range("A:A")
        If parentNode.Value = inputChar Then
            ' 将找到的父节点写入输出工作表
            outputSheet.Cells(outputSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = parentNode.Value
            ' 递归查找子节点
            FindChildNodes parentNode, outputSheet
        End If
    Next parentNode
End Sub

Sub FindChildNodes(parentNode As Range, outputSheet As Worksheet)
    Dim childNode As Range
    
    ' 在 sheet1 中查找子节点
    For Each childNode In ThisWorkbook.Sheets("Sheet1").Range("B:B")
        If childNode.Value = parentNode.Offset(0, 1).Value Then
            ' 将找到的子节点写入输出工作表
            outputSheet.Cells(outputSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1, 2).Value = childNode.Value
            ' 递归查找子节点的子节点
            FindChildNodes childNode, outputSheet
        End If
    Next childNode
End Sub

在 Sheet1 的 A 列中输入父节点,在 B 列中输入子节点。在 Sheet2 的 A 列中输出父节点,在 B 列中输出子节点。在 C1 单元格中输入要查找的字符,运行FindNodes宏即可实现将该字符下的所有父子节点输出到 Sheet2 中。


原文地址: https://www.cveoy.top/t/topic/p8Ca 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录