Excel-如何将多个行转换为单个行,用于A列中的每个唯一标识符

时间:2016-08-04 18:15:11

标签: excel-formula

我有一个大型数据集(超过100万行)的患者姓名,问题/诊断以及输入这些诊断的日期(每个变量都作为列标题)。

我想从此源文件中提取数据,以添加到现有文件中,该文件包含大约900个具有其他人口统计信息的唯一患者姓名(在列中)。

我无法使用vlookup功能,因为大多数患者都有多个问题。

还有其他可能有用的功能或技巧吗?

提前感谢您的时间和精力。

当前数据的示例:

Name     Diagnosis    Date of Dx
A        Head         11/15/12
B        Leg          09/08/14
B        Elbow        10/11/15
C        Hand         02/23/16
A        Toe          04/11/13
A        Eye          05/25/15
C        Ear          12/21/14

我希望数据集看起来像:

Name   Dx#1   Date#1    Dx#2   Date#2    Dx#3   Date#3   
A      Head   11/15/12  Toe    04/11/13  Eye    05/25/15
B      Leg    09/08/14  Elbow  10/11/15  n/a    n/a
C      Hand   02/23/16  Ear    12/21/14  n/a    n/a

1 个答案:

答案 0 :(得分:0)

我不确定您是否熟悉索引和匹配功能,但您可以使用它们来创建工作表。最简单的方法是添加几个辅助列(在示例3中)并使用match函数获取所需的引用行。

从那里你可以通过前一个匹配来偏移搜索范围以找到下一个匹配。根据患者的病情数量,您可以根据需要多次执行此操作。

之后它是一个简单的索引函数,用所需的值填充表格的行。如果需要,可以使用iferror清理额外的单元格。

假设您的数据位于A1:C8列,输出数据集位于E1:K4列中,以下公式将为您提供所需的输出。辅助列位于L1:N4中。这些公式将放在第2行,但您可以将它们向下拖动以计算其余行。

我将在每个公式上方添加列:

<强>电子 没有公式,列出所有患者姓名

<强>˚F     = INDEX(B:B,L2)

<强“G     = INDEX(C:C,L2)

<强>ħ     = IFERROR(INDEX(B:B,M2),&#34;&#34;)

<强> I     = IFERROR(INDEX(C:C,M2),&#34;&#34;)

<强>Ĵ     = IFERROR(INDEX(B:B,N2),&#34;&#34;)

<强>ķ     = IFERROR(INDEX(C:C,N2),&#34;&#34;)

<强>→     =比赛(E2,$ A $ 1:$ A $ 8,0)

<强>中号     = IFERROR(匹配($ E2,OFFSET($ A $ 1,L2,0,COUNTA($ A:$ A)-L2),0)+ L2,&#34;&#34;)

<强>名词     = IFERROR(MATCH($ E2,OFFSET($ A $ 1,M2,0,COUNTA($ A:$ A)-M2),0)+ M2,&#34;&#34)

希望这会有所帮助,如果您对公式有任何疑问,请与我们联系。