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

时间:2013-08-21 15:02:14

标签: excel vba

我有一个场景,员工数据在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

我想在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

等主管的详细信息........

直到每个员工的最后一位主管详细信息。

我不知道excel中的vba或宏。
我可以通过在excel中使用vlookup函数来实现它,但它花费了太多时间,所以我想通过编程方式快速,快速地完成它。

1 个答案:

答案 0 :(得分:0)

也许这会帮助你开始。

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