在excel工作表中选择员工的嵌套主管详细信息

在excel工作表中选择员工的嵌套主管详细信息,excel,vba,Excel,Vba,我有一个场景,员工数据在excel表格中给出,并带有其主管的详细信息(姓名和电子邮件id)。而主管本身就是一名员工,因此他将拥有其主管的详细信息(姓名和电子邮件id)等等 以表格形式- emp_name email_id supervisor1_name supervisor1_emailid abc abc@xyz.com pqr pqr@xyz.com -------------------------------------- -------------

我有一个场景,员工数据在excel表格中给出,并带有其主管的详细信息(姓名和电子邮件id)。而主管本身就是一名员工,因此他将拥有其主管的详细信息(姓名和电子邮件id)等等

以表格形式-

emp_name email_id supervisor1_name supervisor1_emailid abc abc@xyz.com pqr pqr@xyz.com -------------------------------------- -------------------------------------- pqr pqr@xyz.com lmn lmn@xyz.com emp\u姓名电子邮件\u id监督员1\u姓名监督员1\u电子邮件id abcabc@xyz.compqrpqr@xyz.com -------------------------------------- -------------------------------------- pqrpqr@xyz.comlmnlmn@xyz.com 我想在excel表格中显示上述数据,如下所示:

emp_name email_id supervisor1_name supervisor1_emailid supervisor2_name suprvisor2_emailid abc abc@xyz.com pqr pqr@xyz.com lmn lmn@xyz.com emp_name email_id supervisor 1_name supervisor 1_email id supervisor 2_email id abcabc@xyz.compqrpqr@xyz.comlmnlmn@xyz.com 等等,主管的详细信息

直到最后一位主管为每位员工提供详细信息

我不了解excel中的vba或宏。

我可以通过在excel中使用vlookup函数来完成,但是它占用了太多的时间,所以我想通过编程的方式快速完成。

也许这会帮助您开始

Dim FirstRow As Integer
Dim EndRow As Integer
FirstRow = 2
EndRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 2).End(xlUp).row

Dim supName As String
Dim secRow As Long

For row = FirstRow To EndRow
    supName = Range("C" & row)
    If supName <> "" Then
        Do Until supName = ""
            For secRow = FirstRow To EndRow
                If Range("A" & secRow) = supName Then
                    Cells(row, Cells(row, Sheets(1).Columns.Count).End(-4159).Column + 1) = Range("C" & secRow)
                    Cells(row, Cells(row, Sheets(1).Columns.Count).End(-4159).Column + 1) = Range("D" & secRow)
                    supName = Range("C" & secRow)
                    Exit For
                End If
            Next secRow
        Loop
    End If
Next row
Dim第一行为整数
作为整数的Dim EndRow
第一行=2
EndRow=ActiveSheet.Cells(ActiveSheet.Rows.Count,2).End(xlUp).row
将名称设置为字符串
暗秒长
For row=从第一行到第二行
supName=范围(“C”和行)
如果名称为“”,则
直到supName=“”为止
对于第二行=第一行到第二行
如果范围(“A”&secRow)=supName,则
单元格(行,单元格(行,表(1)。列。计数)。结束(-4159)。列+1)=范围(“C”和第二行)
单元格(行,单元格(行,表(1)。列。计数)。结束(-4159)。列+1)=范围(“D”和第二行)
supName=范围(“C”和secRow)
退出
如果结束
下一秒
环
如果结束
下一排