在Excel中水平折叠列

在Excel中水平折叠列,excel,excel-formula,Excel,Excel Formula,几天前,我在Tex.StackExchange中提出了这个问题,但尚未找到可行的解决方案——可能是因为我正在尝试自动化某些内容,而不是在LaTeX中手动编辑它。为了找到解决方案,我转而尝试在Excel中实现这一点 我在Excel中有以下结构: | Type | Category | Subcategory | Name | Code | Variable | Note | |------|----------|-------------|------|------|----------

几天前,我在Tex.StackExchange中提出了这个问题,但尚未找到可行的解决方案——可能是因为我正在尝试自动化某些内容,而不是在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 |

和在一个新的列中,放置在名称和代码之间——让我们称之为组合——我希望所有列的内容向左折叠成这个组合列,但<强> >第一个匹配的左边的空白单元格由字符串“\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)
我在合并列中填写了它,但这将用“\lvl”替换所有空白单元格,而我只需要填充到第一个非空白单元格的左侧,因此我得到了上面所示的预期输出。我非常希望不依赖宏来实现这一点

是否有人建议我如何在Excel中通过在组合列中使用通用公式/函数来实现这一点?

使用,并提供近似的number\u times参数。一个/功能对,可以完成它

在E2 as中

=TRIM(REPT("\lvl", MATCH("zzz", A2:D2)-1)&CHAR(32)&INDEX(A2:D2, MATCH("zzz", A2:D2)))
根据需要填写


这绝对是一流的,正是我想要的!