【问题标题】:Spreadsheet : every possible combination of 2 columns into one single colum电子表格:2列的每一种可能组合成一列
【发布时间】:2015-07-19 05:23:23
【问题描述】:

对不起,如果这个问题看起来很熟悉,我看到了很多类似的问题但无法理解其中的技巧,我完全卡住了。

我有一个包含 2 列的电子表格:

A 与国家
B 与他们的代码

  A             B
Belgium        BE
England        EN
France         FR
Luxembourg     LX
Netherlands    NL
Spain          SP

我正在尝试生成一个代表所有可能旅行的矩阵:从 A 到 A、从 A 到 B、从 B 到 A、从 B 到 B。唯一的限制是不要旅行从一个国家到它自己

最后我想在单列 C 中生成结果,如下所示:

从比利时到英国旅行
从比利时到法国旅行
从比利时到卢森堡旅行
从比利时到卢森堡旅行 荷兰
从比利时到意大利旅行
从比利时旅行 到西班牙
从英国到比利时旅行
从英国到 法国
从英国到卢森堡旅行
从英国旅行 到荷兰
从英国到意大利旅行
从 英国到西班牙

从比利时旅行到 EN
从 比利时到 FR
从比利时到 LX
从比利时到 NL

从 BE 到 EN
从 BE 到 FR
从BE到LX旅行

从BE到英国旅行
旅行 从BE到法国

谁能帮我解决这个问题?我尝试了几种连接和 JOIN 的技巧,但我没有得到任何结果......

提前非常感谢

【问题讨论】:

  • 在 VBA 中使用二维数组并循环遍历。开始吧,如果您遇到麻烦,请回来编辑您的问题以包含您的努力,我们可以帮助您解决问题。

标签: excel excel-formula spreadsheet


【解决方案1】:

您可以遍历 A 列中的每个值并将其与 B 列中的交错值相关联,但您必须使用 INT functionMOD function 执行一些数学技巧,以使 A 列中的第六个条目与B 列中的第一个条目。

        

C2:E2 中的公式是,

=INDEX(A$2:A$7, INT((ROW(1:1)-1)/(COUNTA(A$2:A$7)-1))+1)
=INDEX(B$2:B$7, MOD(MOD((ROW(1:1)-1), (COUNTA(B$2:B$7)-1))+INT((ROW(1:1)-1)/(COUNTA(B$2:B$7)-1))+1, COUNTA(A$2:A$7))+1)
="Travel from "&C2&" to "&D2

可能有一种更优雅的方式可以在跳过起点的同时循环遍历目的地,但这很有效,尽管公式明显复杂,但计算量并不大。

我使用COUNTA function 来确定条目的数量,而不是使用序号的硬编码。通过跟踪和修改引用的单元格范围,您应该能够将其转录为更多或更少的条目。

【讨论】:

  • 非常好,虽然这是 VBA 更自然的问题(但 OP 没有要求它)。
  • 非常感谢您的帮助,我会继续努力的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多