【问题标题】:How to create Excel list with data that excludes certain types of combinations如何使用排除某些类型组合的数据创建 Excel 列表
【发布时间】:2020-04-26 18:17:55
【问题描述】:

我有两个包含相同数据集的列表(例如 A、B、C、D),我希望能够创建一个组合列表,将相同数据排除两次(例如 A/A、B/ B 等)和反向集(即 A/B 表示我不想要 B/A)

如果这很重要,我正在使用 Excel for Mac 2011。

编辑:

理想情况下,我想使用表格而不是输入单个数据片段,因为实际列表很长

以下表名为 T_TESTA 和 T_TESTB:

编辑 2:

下面提供给我的两种解决方案都运行良好,但我只能选择一个。因此,我选择一个基于简化为我提出的与代码本身完全无关的问题的问题。另一种解决方案在将数据一起显示在列表中时稍微优雅一些​​。

【问题讨论】:

    标签: excel excel-2011


    【解决方案1】:

    试试这个简短的宏:

    Sub Kombo()
        arr = Array("A", "B", "C", "D")
    
        k = 1
        For i = 0 To 2
            For j = i + 1 To 3
                Cells(k, 1) = arr(i) & arr(j)
                k = k + 1
            Next j
        Next i
    
    End Sub
    

    循环被配置为创建组合而不是排列

    编辑#1:

    在这个版本的代码中,我们从单元格而不是内部数组中获取值。我假设这些值在 E1E4 中:

    Sub Kombo2()
        Dim arr(0 To 3) As Variant
    
        For i = 0 To 3
            arr(i) = Range("E" & i + 1).Value
        Next i
    
        k = 1
        For i = 0 To 2
            For j = i + 1 To 3
                Cells(k, 1) = arr(i) & arr(j)
                k = k + 1
            Next j
        Next i
    
    End Sub
    

    结果仍然显示在列A

    【讨论】:

    • 太棒了!不幸的是,我对宏非常陌生,所以有没有办法可以用表名代替,而不是单独列出每条数据?
    • @AdrianFridge 是的!只需用细节更新您的原始问题,我们将修改代码。
    • @AdrianFridge 好!我看到了你的编辑............我将在今天晚些时候更新我的答案。
    • @AdrianFridge 查看我的EDIT#1
    • 好的,所以如果我有 n 行,我需要输入 n-1 的数量才能使宏工作。那和正确的列字母。
    【解决方案2】:

    以下是我为 Google 表格 here 制定并翻译回 Excel 的几个公式:

    =IFERROR(INDEX(A:A,CEILING((2*COUNTA(A:A)-1-SQRT((2*COUNTA(A:A)-1)^2-8*ROW()))/2,1)),"")
    

    =IFERROR(INDEX(A:A,COUNTA(A:A)+ROW()-((2*COUNTA(A:A)-1)*CEILING(((2*COUNTA(A:A)-1)-SQRT((2*COUNTA(A:A)-1)^2-8*ROW()))/2,1)-CEILING(((2*COUNTA(A:A)-1)-SQRT((2*COUNTA(A:A)-1)^2-8*ROW()))/2,1)^2)/2),"")
    

    【讨论】:

    • 不确定我的公式哪里出错了:image
    • 不,我也不是! C1 中的公式似乎是正确的,但我不知道为什么您会在单元格中看到那些绿色警告标记 - 伴随它们的消息是否说明了任何有用的信息?起初我认为 A 列下方可能有一些东西,但这不会给出你得到的结果。我唯一能想到的尝试的另一件事是,如果您在 C2 中使用光标进行屏幕截图,因为那是它开始出错的地方,或者最好与 Excel 在线共享。
    • 顺便说一句,我已经创建了我的工作表的在线版本:这里是 1drv.ms/x/s!AtY3C2IFGCfCgYt-cHXov6GUPd4gJg?e=oQCwNK
    • 好的,所以一旦我看到你是如何格式化你的工作表的,我就知道我哪里出错了,现在它可以工作了!
    猜你喜欢
    • 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
    相关资源
    最近更新 更多