【问题标题】:Excel VBA generate combinations of cells from 3 columns or moreExcel VBA 从 3 列或更多列生成单元格组合
【发布时间】:2014-09-14 21:46:32
【问题描述】:

我想在 Excel 中创建关键字组合,但不是所有可能的排列(这会创建太多组合)

这里有 3 个示例列,我在这里只列出其中的 2 个值:

A:
Two
Three

B:
Red
Blue

C:
Shirts
Jackets

结果会是这样的:

Two Red Shirts
Two Red Jackets
Two Blue Shirts
Two Blue Jackets
Three Red Shirts
Three Red Jackets
Three Blue Shirts
Three Blue Jackets

我不希望单词改变它们的位置,所以第三个单词不能成为第一个。列可以有不同数量的单元格。每个单元格可以有多个单词,如果可以轻松地将 3 列组合更改为 4 或 5,那将是完美的。

提前致谢

【问题讨论】:

  • -1 因为您显然只是要求我们为您工作。如果您有问题,请提出。否则很快就会关闭。
  • @AlexandreP.Levasseur 我尝试了许多不同的方法,但我放弃了。它们似乎都排列了所有可能的单词组合,逻辑上不正确......

标签: vba excel


【解决方案1】:

这样的事情可能会奏效:

Sub test()
  Dim x, y, z, lastRow As Long
  lastRow = ThisWorkbook.Sheets(1).UsedRange.Rows.Count
  For Each x In Range("A1:A" & lastRow)
    For Each y In Range("B1:B" & lastRow)
      For Each z In Range("C1:C" & lastRow)
        Debug.Print x & " " & y & " " & z
      Next z
    Next y
  Next x
End Sub

我将输出写入即时窗口,但您可以将其放在任何您喜欢的位置。

如果要添加更多列,则需要添加更多循环。如果单元格为空,它将不向字符串附加任何内容(不存在的单元格内容)。

【讨论】:

  • @JohnyAggro 谢谢,但我不知道如何让它工作。我正在运行宏,但没有任何反应。我需要选择任何东西才能让它工作吗?
  • 您需要打开即时窗口。在 PC 上的 VB 编辑器中按 Ctrl + G。
  • @JohnyAggro 有 5 行 3 列文本,您在即时窗口中的解决方案会冻结我的 Excel
  • 它在我的工作正常。你所有的单元格都充满了数据吗?您可能希望根据工作表的外观使用不同的方法查找最后一行。 mrexcel.com/td0058.html
猜你喜欢
  • 2014-09-15
  • 2012-12-19
  • 1970-01-01
  • 2013-07-14
  • 2019-03-03
  • 2018-04-05
  • 2021-02-23
  • 2019-02-11
  • 1970-01-01
相关资源
最近更新 更多