我在第 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还提供了网页版,你可以更轻松地编写自己的功能。该函数的链接
希望能帮助到你 :)