使用VBA Excel创建图形正确的列表

使用VBA Excel创建图形正确的列表,excel,vba,list,Excel,Vba,List,我需要找到一种方法,根据列表中不同数量的项目,以正确的方式使用“、”和“来编写列表。请参见下面的演示: Apples + Oranges + Bananas = Apples, Oranges and Bananas Apples + Oranges + Pineapples + Bananas = Apples, Oranges, Pineapples and Bananas Apples + Oranges = Apples and Oranges 我的第一个猜测是创建一个值列表或数组,然

我需要找到一种方法,根据列表中不同数量的项目,以正确的方式使用“、”和“来编写列表。请参见下面的演示:

Apples + Oranges + Bananas = Apples, Oranges and Bananas
Apples + Oranges + Pineapples + Bananas = Apples, Oranges, Pineapples and Bananas
Apples + Oranges = Apples and Oranges
我的第一个猜测是创建一个值列表或数组,然后使用某种“n-1”或“last”函数将单词“AND”放在最后两项之间,并将符号“,”放在所有其他项之间

不幸的是,我对VBA还相当陌生,所以还没有取得多大进展,任何指导或代码都非常感谢

致以最良好的祝愿

加思

如果您对公式没意见(我知道您要求的是VBA…),您可以使用以下公式:

=IF(COUNTA(A1:D1)=2,A1&" and "&B1,TEXTJOIN($A$5:$B$5,TRUE,A1:D1))
A5
中,只放一个逗号和一个空格。在
B5
中,放置
(注意
后面有一个空格)

编辑:我将处理VBA答案..但是保留这个,因为我了解到在一个
TEXTJOIN()
中可以有多个分隔符,我不知道

Edit2:在看到数据后,您仍然可以使用公式。同样,将
以及
放在某个地方(我在这里使用了
A8:B8
):

将其作为数组公式输入:

=TEXTJOIN($A$8:$B$8,TRUE,IF(B1:B4="YES",A1:A4,""))

和VBA(有点作弊,因为我只是用这个公式,但它是有效的):


你的数据是什么样子的?没有牛津逗号,嗯?我的列表最多可以有9个不同的项目,由用户表单选择。我需要他们在单元格中生成一个适当使用“,”和“和”的文本。布鲁斯,如果你能给我一个使用牛津逗号的替代方案,我很乐意升级我的草率语法。为了给我的问题提供一些背景信息,我正在尝试使用VBA自动编写法律文档,并且标题取决于所选的组件。Excel中的列表将如何显示?一个单元格是否只有一个单词(如下面我的公式答案中所示),或者一个单元格是否真的有
苹果+香蕉
苹果+香蕉+博诺诺斯
?添加了一个数据外观的链接。谢谢你的Excel公式,这是一个有趣的方法。非常感谢布鲁斯!
Sub t()
Dim output As String
output = Evaluate("=TEXTJOIN($A$8:$B$8,TRUE,IF(B1:B4=""YES"",A1:A4,""""))")
End Sub