【问题标题】:Combining rows into concatenated cell with varying numbers of rows将行组合成具有不同行数的连接单元格
【发布时间】:2012-06-18 19:08:14
【问题描述】:

我有一个从 6000 页 PDF 文件转换而来的非常大的 Excel 表格,大约有 50 万行,所以任何手动操作几乎都是不可能的。

我正在努力将其转换为可用数据,但是我对已提取的某些行有疑问。

这些行应该是这样提取的:

Date       Text (Date Time TelNo Duration)                     
-----------------------------------------
01/05/2012 29.04.2012 18:31 07[removed]8 00:00:06 
01/05/2012 29.04.2012 18:32 07[removed]8 00:07:22 
01/05/2012 29.04.2012 19:54 07[removed]8 00:00:28 

不确定如何,但大约有 10,000 行是这样结束的:

Date       Text                     
-----------------------------------------
01/05/2012  29.04.2012 
01/05/2012  29.04.2012 
01/05/2012  29.04.2012 
01/05/2012  18:31 
01/05/2012  18:32 
01/05/2012  19:54 
01/05/2012  07[removed]8 
01/05/2012  07[removed]8 
01/05/2012  07[removed]8  
01/05/2012  00:00:06 
01/05/2012  00:07:22 
01/05/2012  00:00:28 

我正在尝试将这些行重新组合成单​​行(然后再次拆分)。

我尝试了以下方法,但它仅适用于 3 行组:

   A           B                    C
------------------------------------------------------------------
1  01/05/2012   29.04.2012      =B1 & B4 & B7 & B10
2  01/05/2012   29.04.2012 
3  01/05/2012   29.04.2012 
4  01/05/2012   18:31 
5  01/05/2012   18:32 
6  01/05/2012   19:54 
7  01/05/2012   07[removed]8 
8  01/05/2012   07[removed]8 
9  01/05/2012   07[removed]8  
10 01/05/2012   00:00:06 
11 01/05/2012   00:07:22 
12 01/05/2012   00:00:28 

我也尝试过以下各种组合:

=B1&INDEX(B1:B10,MATCH("??:??",B1:B10,0))&INDEX....

任何人都可以制定一个公式来组合这些值并可以将其拖动/复制到整个工作表中吗?

编辑:

公式需要:

在第一行,找到当前单元格下方的第一个 Time 值,然后是第一个 Telno 和第一个 Duration。 在第二行,找到当前单元格下方的第二个Time 值,然后是第二个Telno 和第二个Duration

【问题讨论】:

    标签: excel concatenation excel-formula


    【解决方案1】:

    在加入数据之前抛出一个“IF”:

    =IF(MID(B1,3,1)=".",B1 & " " & B4 & " " & B7 & " " & B10,"")
    

    你也可以把它分成几列:

    名为时间的 C 列

    =IF(MID(B1,3,1)=".",B4,"")
    

    名为 TelNo 的 D 列

    =IF(MID(B1,3,1)=".",B7,"")
    

    名为 Duration 的 E 列

    =IF(MID(B1,3,1)=".",B10,"")
    

    在任何一种情况下,过滤 C 列为空白的任何行。

    【讨论】:

    • 第一种方法基本上是我尝试过的,它失败了,因为行被分组为从 1 到 30 的任何块,我将更详细地扩展问题。
    【解决方案2】:

    我只用公式解决了这个问题:

    第 1 步。 添加了 Mistype 列并填充了 if 公式(日期/时间/数字等)。

    第 2 步。 使用公式添加了另一个新列NumMissed

    =IF(D2="date",IF(AND(D2="date",D1<>"date"),MATCH("Time",D2:D20,0)-1,IF(D2="date",E1,"")),"")
    

    这将显示可用于选择正确单元格的缺失行数。

    第 3 步。 添加了另一列以使用公式保存检索到的行(然后可以由我的其他公式拆分):

    =IF(D2="date",B2&INDEX(B2:B80,E2)&INDEX(B2:B80,E2*2)&INDEX(B2:B80,E2*3)&IF(ISNUMBER(INDEX(B2:B80,E2*4)),INDEX(B2:B80,E2*4),""),"")
    

    这为我提供了 99.9% 行的数据,最后几行可以手动完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 1970-01-01
      • 2015-01-24
      相关资源
      最近更新 更多