如何将两个列表合并为一个长列表?

如何将两个列表合并为一个长列表?

我在第 1 列和第 2 列中有两个列表。我需要第 3 列采用“一划二”格式。

例如:

在此处输入图片描述

C 列需要重复 A 和 B 的所有值。

我希望有一个公式可以实现这一点,如果没有,我可以使用 VBA。另外,我的数据并不像 ABC 和 123 那么简单。

答案1

您正在寻找的内容称为“笛卡尔积“或“外连接”。

解决方案为 VBA。将以下代码复制到 Visual Basic 编辑器的右侧。您将看到您的宏现在有一个名称“cartesianproduct”:(来源

Sub cartesianproduct()
Dim startrange As Range

range1 = Application.InputBox(Prompt:="Please Select First Range", Type:=8)
range2 = Application.InputBox(Prompt:="Please Select Second Range", Type:=8)
Set startrange = Application.InputBox(Prompt:="Please select where you want to put it", Type:=8)

array1 = [range1]
array2 = [range2]

startrange.Select
For i = 1 To UBound(array1)
    For x = 1 To UBound(array2)
        z = z + 1
        ActiveCell.Offset(z, 0).Value = array1(i, 1)
        ActiveCell.Offset(z, 1).Value = array2(x, 1)
    Next
Next
End Sub

我还发现这里作为公式的解决方案(未经测试!):

=IF(ROW()-ROW($F$1)+1>COUNTA(A:A)*COUNTA(B:B),"",INDEX(A:A,INT((ROW()-ROW($F$1))/COUNTA(B:B)+1)) &“-”& INDEX(B:B,MOD(ROW()-ROW($F$1),COUNTA(B:B))+1))

我只是添加了 “-”两个值之间......

答案2

这是另一个公式:在 C1 中输入并向下填充,直到为空白:

=IFERROR(INDEX(Col_A,INT((ROWS($1:1)-1)/COUNTA(Col_B))+1) & "-" &INDEX(Col_B,MOD(ROWS($1:1)-1,COUNTA(Col_B))+1),"")

我使用动态名称来引用列数据;您可能想要更改它:

Col_A   refers to:  =OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A))
Col_B   refers to:  =OFFSET(Sheet1!$B$1,0,0,COUNTA(Sheet1!$B:$B))

答案3

由于 duDE 已经提出了一种使用 VBA 的解决方案,因此我想展示另一种使用 Javascript 的解决方案。

您可以使用一个名为的工具通过编写 Javascript 轻松地操作 Excel好玩.核心代码如下:

<script>
var column1 = new Array();
  for(var i=0; i<$internal.column1.length; i++){
   column1[i] = $internal.column1[i]
  };
var column2 = new Array();
  for(var i=0; i<$internal.column2.length; i++){
   column2[i] = $internal.column2[i]
  };
var added = $internal.add;
console.log(added);
var output = new Array();
for(var i=0; i<$internal.column2.length; i++){
   output[i] = column1[i] + added + column2[i];
  };
  console.log(output);
$internal.result = output;

$internal 是 Funfun 提供的 API,可帮助您获取 Excel 表格中的数据。您可以在 Setting 中更改数据及其所在区域。以下是该函数的 Setting:

{
"add": "=C2",
"column1": "=A2:A9",
"column2": "=B2:B9",
"result": {
    "Type": "Output",
    "Address": "=D2:D9"
}

只需单击该功能,所有数据和结果将被加载到电子表格中。如下图所示: 截屏

最后,Funfun还提供了网页版,你可以更轻松地编写自己的功能。该函数的链接

希望能帮助到你 :)

相关内容