我几天前在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中实现这一目标?
答案 0 :(得分:3)
使用提供 number_times 参数的大约REPT function的MATCH。 INDEX / MATCH函数对CHAR function和TRIM function可以完成它。
在E2中,
> exec console.log(p)
根据需要填写。