gpt4 book ai didi

Excel – 多列,不同的组合

转载 作者:行者123 更新时间:2023-12-04 21:01:30 54 4
gpt4 key购买 nike

如果这个词正确的话,我有 4 列和 4 个不同的参数。每个参数大约有 3-5 个变量。我想做的是在维护不同列的同时创建 4 个不同参数的所有可能组合。因此,假设我有以下示例:

**Column A | Column B | Column C**

Chicago | Football | Red

New York | Soccer | White

Seattle | Hockey | Blue

我想要的是拥有我可以从这些列中得到的所有组合,我可以将其说明为:

**Column A | Column B | Column C**

New York | Football | Blue

New York | Football | Red

New York | Football | White

New York | Soccer | Blue

New York | Soccer | Red

New York | Soccer | White

New York | Hockey | Blue

New York | Hockey | Red

New York | Hockey | White

Chicago | Football | Blue

Chicago | Football | Red

Chicago | Football | White...

等等。

最佳答案

使用 Office 365 编辑我们可以使用:

=LET(
rng,A1:C3,
rw,ROWS(rng),
clm,COLUMNS(rng),
SORT(MAKEARRAY(rw^clm,clm,LAMBDA(a,b,INDEX(rng,INT(MOD(a,rw^b)/(rw^b/rw))+1,b))),SEQUENCE(,clm)))

原始 vba 答案。

这将为您提供所有可能的组合:

Function fifth(arr() As Variant) As Variant()

Dim temp() As Variant
Dim i As Long
Dim j As Long
Dim t As Long

ReDim temp(1 To (UBound(arr, 1)) ^ (UBound(arr, 2)), LBound(arr, 2) To UBound(arr, 2)) As Variant
For i = 1 To (UBound(arr, 1) ^ UBound(arr, 2))
For j = 1 To UBound(arr, 2)
t = Int((i Mod ((UBound(arr)) ^ j)) / (((UBound(arr)) ^ j) / (UBound(arr))))
temp(i, j) = arr(t + 1, j)
Next j
Next i

fifth = temp

End Function

你会这样调用:

Sub ArrCombine()
Dim ws As Worksheet
Dim arr1() As Variant
Dim rsltarr() As Variant

Set ws = Sheets("Sheet1") 'Change to your sheet

arr1 = ws.Range(ws.Range("A1"), ws.Range("A1").End(xlToRight).End(xlDown)).Value

rsltarr = fifth(arr1)

ws.Range("A1").End(xlToRight).Offset(, 1).Resize(UBound(rsltarr, 1) - 1, UBound(rsltarr, 2)).Value = rsltarr

End Sub

它将在事件表上输出,这个:

![enter image description here

这将使用任何尺寸范围。唯一的限制是 #ofRows ^ #ofColumns 不大于工作表上可用的行数。

关于Excel – 多列,不同的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295430/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com