使用公式管理“and”或“,”(逗号)的插入位置

使用公式管理“and”或“,”(逗号)的插入位置

我的困难在于如何用句子成分构造正确的句子结构。特别是当 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

相关内容