我在excel中有一个表,其中有一个公司和各种人谁在公司工作,每个公司可能有5-7人与一家公司的名单。该表的结构为公司名称、person1、人员2……在单元格中
我需要一个在VBA或excel公式中的方法,其中基于此表,我希望有每个人的公司名称关联例如。person1 -在他名字下面的单元格中他正在工作的所有公司的列表。
我有基本的VBA知识,任何方法或解决方案都是高度赞赏。
我还不能嵌入图片。因此链接源表:1:https://i.stack.imgur.com/gMyy8.png

所需输出:1:https://i.stack.imgur.com/x8QxU.png

发布于 2019-03-03 23:47:07
如果您可以像图片中的两列那样更改数据,您仍然可以使用数据透视表来获得每个人的公司列表。例如,像图片中那样进行过滤(很抱歉使用荷兰式的布局)。

否则,如果您至少知道所有人的名字,我建议在VBA中使用以下循环
Dim ws as worksheet
Dim wst as worksheet
Dim i,j,k as long
Set ws = Thisworkbook.sheets("SheetNameData")
Set wst = Thisworkbook.sheets("SheetNameLists")
For i = 2 to ws.cells(rows.count,1).end(xlup).row 'Assuming you have headers, start at row 2
For j = 2 to ws.cells(i,columns.count).end(xltoLeft).column 'Loop through all names in a companyrow
k = application.worksheetfunction.match(ws.cells(i,j).value,wst.range("1:1"),0) 'find the right column in the output worksheet
wst.cells(rows.count,k).end(xlup).Offset(1,0).value = ws.cells(i,1).value 'Place the companyname in the column of the right person
Next j
Next i对于此脚本,您需要已经有了第二个工作表,其中第一行由人名组成
https://stackoverflow.com/questions/54968795
复制相似问题