Excel VBA 递归查找父子节点并输出到 Sheet2
可以使用递归的方法来实现该功能。以下是一个示例的 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 著作权归作者所有。请勿转载和采集!