在Excel

时间:2016-01-09 14:15:43

标签: excel excel-formula

我几天前在Tex.StackExchange中问过这个问题(Collapse table columns to vertical hierarchy),但还没有找到一个可行的解决方案 - 可能是因为我试图自动化某些东西而不是在LaTeX中手动编辑它。为了找到解决方案,我改为尝试在Excel中完成此任务。

我在Excel中有以下结构:

| Type | Category | Subcategory | Name | Code | Variable | Note      |
|------|----------|-------------|------|------|----------|-----------|
| A    |          |             |      |      |          |           |
|      | A        |             |      |      |          |           |
|      |          | A           |      |      |          |           |
|      |          |             | OneA | one  | one      | Something |
|      |          |             | OneB | One  | One      | Something |
|      |          |             | OneC | One  | One      | Something |
| B    |          |             |      |      |          |           |
|      | A        |             |      |      |          |           |
|      |          | A           |      |      |          |           |
|      |          |             | OneA | One  | One      | Something |
|      |          |             | OneB | One  | One      | Something |
|      | B        |             |      |      |          |           |
|      |          | A           |      |      |          |           |
|      |          |             | OneA | One  | One      | Something |
|      |          |             | OneB | One  | One      | Something |

在一个新列中,放在Name和Code之间 - 让我们称它为Combined - 我希望左边所有列的内容都折叠到这个Combined-column中,但左边是空白单元格将第一个匹配替换为字符串“\ lvl”(对于每个匹配,最后一个匹配后跟一个空格)。

所以预期的输出看起来像这样:

| Type | Category | Subcategory | Name | Combined          | Code | Variable | Note      |
|------|----------|-------------|------|-------------------|------|----------|-----------|
| A    |          |             |      | A                 |      |          |           |
|      | A        |             |      | \lvl A            |      |          |           |
|      |          | A           |      | \lvl\lvl A        |      |          |           |
|      |          |             | OneA | \lvl\lvl\lvl OneA | one  | one      | Something |
|      |          |             | OneB | \lvl\lvl\lvl OneB | One  | One      | Something |
|      |          |             | OneC | \lvl\lvl\lvl OneC | One  | One      | Something |
| B    |          |             |      | B                 |      |          |           |
|      | A        |             |      | \lvl A            |      |          |           |
|      |          | A           |      | \lvl\lvl A        |      |          |           |
|      |          |             | OneA | \lvl\lvl\lvl OneA | One  | One      | Something |
|      |          |             | OneB | \lvl\lvl\lvl OneA | One  | One      | Something |
|      | B        |             |      | \lvl B            |      |          |           |
|      |          | A           |      | \lvl\lvl A        |      |          |           |
|      |          |             | OneA | \lvl\lvl\lvl OneA | One  | One      | Something |
|      |          |             | OneB | \lvl\lvl\lvl OneB | One  | One      | Something |

目的是将一长串分层信息更容易地放入LaTeX中的表中,其中“\ lvl”被给定数量的空格替换。

在Excel中,我尝试了concatenate()isblank()的变体,目前最接近的解决方案是:

=IF(ISBLANK(A2),"\lvl",A2) & IF(ISBLANK(B2),"\lvl",B2) & IF(ISBLANK(C2),"\lvl",C2) & IF(ISBLANK(D2),"\lvl",D2)

我在Combined-column中填写了,但是这用“\ lvl”替换了所有空白单元格,而我只需要填充第一个非空白单元格的左边,所以我得到上面显示的预期输出。我非常希望不依赖宏观。

有没有人建议我如何通过在Combined-column中使用通用公式/函数在Excel中实现这一目标?

1 个答案:

答案 0 :(得分:3)

使用提供 number_times 参数的大约REPT functionMATCHINDEX / MATCH函数对CHAR functionTRIM function可以完成它。

在E2中,

> exec console.log(p)

根据需要填写。

rept_lvl.