【问题标题】:Transform data in Excel (rows and columns)在 Excel 中转换数据(行和列)
【发布时间】:2020-01-09 14:10:39
【问题描述】:

当前输入:

+-------------------------+
|          col A          |
+-------------------------+
| Test(read)              |
| - ABC(dsakl)            |
| - ABC(dslø) Write(T)    |
| - ABC(dsjkl)            |
| Test(true)              |
| - ABC(DSdsa)            |
| - ABC(dsalk**) write(F) |
+-------------------------+

想要的输出:

+-------------------------+-------------------------+
|          col A          |          col B          |
+-------------------------+-------------------------+
| Test(read)              | - ABC(dsakl)            |
| Test(read)              | - ABC(dslø) Write(T)    |
| Test(read)              | - ABC(dsjkl)            |
| Test(true)              | - ABC(DSdsa)            |
| Test(true)              | - ABC(dsalk**) write(F) |
+-------------------------+-------------------------+

因此,我想转换我的数据,以便每次发生“测试”时,它都会在“A”列中创建一个新行,该行对应于下一次“测试”发生之前的行数。包含“ABC”的单元格应写入输出文件的“B”列。

非常感谢您对此的意见。谢谢!

【问题讨论】:

    标签: excel transform


    【解决方案1】:

    可能还有其他方法可以解决此问题,但如果您想纯粹使用常规公式,您可以试试这个:

    使用 Aggregate 执行 col B 以查找带有“-”的第一行,然后是第二行,以此类推。

    =IFERROR(INDEX(A$1:A$10,AGGREGATE(15,6,ROW(A$1:A$10)/(LEFT(A$1:A$10)="-"),ROW())),"")
    

    Col A 更难 - 像以前一样找到以“-”开头的第 n 行,然后在此之前查找以 T 开头的最后一行:

    =IFERROR(INDEX(A$1:A$10,AGGREGATE(14,6,ROW($A$1:INDEX(A$1:A$10,AGGREGATE(15,6,ROW(A$1:A$10)/(LEFT(A$1:A$10)="-"),ROW())))
    /(LEFT($A$1:INDEX(A$1:A$10,AGGREGATE(15,6,ROW(A$1:A$10)/(LEFT(A$1:A$10)="-"),ROW())))="T"),1)),"")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多