我的困难在于如何用句子成分构造正确的句子结构。特别是当 Excel 应该使用 '和' 或 ','(逗号)。
我正在使用 Excel 创建自动报告。我创建了一个电子表格,用于查看区域(10 个以上)及其所有项目(项目 A 到 F),然后为每个区域填充一个表格,告诉我项目是增加了、减少了还是没有变化。
我已成功创建了一个公式,可以正确放置“,”和“和”,但前提是句子中代表了 2 个以上的项目。不幸的是,如果有 2 个,它就会失败。
下面是该表的一个示例。
我点击了 H7 来显示公式结构。引用 G 列时有效,但引用 E 列或 I 列时无效。
我的报告将包括一个连接公式,它将简单地指向
concatenate(D3,E3,D4,E4,D5,E5,D6,E6,D7,E7,D8,E8)
这应该创建:
“对于 1 区,我们看到项目 A 的增加和项目 D。
“C 项目,项目 E和项目F”
“项目 B 没有变化”。
如果只有 2 个条目,我很难理解如何使其包含“and”。
任何指点都将不胜感激。
谢谢
迈克尔。
答案1
很难说,但我认为您的例子对于任何包含 4 个或更多项目的句子也会失效。
您可以尝试用逗号和空格连接所有项目名称,然后使用SUBSTITUTE(haystack, needle, newvalue, n-th instance)
如果末尾没有逗号,那么n第 1 个实例是项目数减 1。如果确实有尾随逗号,请事先将其剪掉。
因此:连接、修剪尾随逗号(如果需要),用“and”替换最后一个逗号,然后在前缀处加上“There has been...”
答案2
使用 VBA
项目名称不能包含逗号“,”
Function mCombine(mRange As Range) As String
Dim mResult As String, mSize As Long
For Each mCell In mRange
If mCell <> "" Then mResult = mResult & mCell & " , "
Next mCell
mResult = Left(mResult, Len(mResult) - 3)
mSize = Len(mResult) - (Len(Split(mResult, ",")(UBound(Split(mResult, ",")))) + 1)
mCombine = Left(mResult, mSize - 1) & Replace(mResult, ",", "and", mSize)
End Function