我很难生成以CONCATENATE
我想要的方式组合文本单元格的公式。我要连接五个字段:Title、Forename、RegnalNumber、Surname 和 Alias,按此顺序。我不是正则表达式专家,所以请原谅糟糕的格式,但这是表达我想要实现的目标的粗略方式:
(title)? (forename) (regnalnumber)? (surname)?, (alias).
唯一不能为空的字段是名字字段,尽管它可能具有值“?”,在这种情况下,它不应该在连接中输出任何内容,即它应该被视为空白。希望下面的测试用例应该展示我想要实现的输出:右边的输出应该是这样的:
| Title | Forename | RN | Surname | Alias | CONCATENATE |
+--------+----------+----+-----------+--------------+---------------------------------------+
| Ser | Jaime | | Lannister | Kingslayer | Ser Jaime Lannister, Kingslayer |
| | Pate | | | | Pate |
| Lord | ? | | Vance | | Lord Vance |
| King | Aerys | II | Targaryen | The Mad King | King Aerys II Targaryen, The Mad King |
| Lord | Jon | | Arryn | | Lord Jon Arryn |
| | Garth | | | Of Oldtown | Garth, Of Oldtown |
我已经尝试了很长时间来尝试使这种串联工作,但一直无法做到正确。这是当前公式,为便于理解,将单元格引用替换为字段名称:
=CONCATENATE(IF(Title<>"",Title&" ",""),IF(AND(Forename<>"",Forename<>"?"),Forename,""),IF(RN<>""," "&RN,""), IF(OR(AND(Forename<>"", Forename<>"?"), Surname<>"", RN<>""), " ",""), IF(Surname<>"",Surname,""),IF(AND(Alias<>"",OR(Alias<>"",AND(Forename<>"", Forename<>"?"),Surname<>"")),", "&Alias, Alias))
在一种情况下它不起作用:如果 Surname 和 RN 为空,但 Forename 和 Alias 不为空。例如,如果 Forename 是Garth
, Alias 是Of Oldtown
,则串联输出:Garth , Of Oldtown
。如果标题不为空,则相同。逗号前不应该有空格。
你能帮我修正这个公式,让它按预期工作吗?如果你能找到一种方法来简化它,那就更好了!我知道我可能把这件事复杂化了很多。我使用的是 LibreOffice Calc 4.3.1.2,而不是 Excel。