繁体   English   中英

列中与excel中另一列中的特定值相对应的值列表

[英]the listing of values in a column that correspond to a specific value in another column in excel

源数据采用以下格式

    A   B
    1   0
    2   0
    4   1
    5   0
    6   0
    8   1

我原本打算在A列中列出缺失的项目,但是由于那对我来说还算不上什么,因此我打算通过我现在建议的方法实现同样的目的。

我想要的是一份清单

    C
    3
    7

本质上是通过使用B列中提供的值为我提供了序列的缺失编号。但是,基本上任何可以为我提供C列中列出的值的解决方案都是不胜感激的。

应该注意的是,我正在处理大量清单,因此手动过滤等不是可取的。

在单元格G4中,输入要查找的地址,例如A2:A5 ,然后使用下面的数组公式。 唯一的假设是数字列表应从1开始。 我知道公式看起来很疯狂。 必须将此公式应用于范围,因此选择一个范围,然后转到地址栏粘贴此公式并按CTRL + SHIFT + ENTER 在此特定情况下,范围必须为圆柱形状。

我将公式保留为未格式化的文本,因此更易于复制。

= IF(INT(SQRT(MMULT((IF(TRANSPOSE(MMULT(INDIRECT(G4),1 + 0 * TRANSPOSE(ROW(INDIRECT(“ 1:”&MAX(INDIRECT(G4)))))))= MMULT( ROW(INDIRECT(“ 1:”&MAX(INDIRECT(G4)))),1 + 0 * TRANSPOSE(ROW(INDIRECT(“ 1:”&COUNTA(INDIRECT(G4)))))),0,ROW(INDIRECT( “ 1:”&MAX(INDIRECT(G4)))))^ 2),1 + 0 * ROW(INDIRECT(“ 1:”&COUNTA(INDIRECT(G4)))))/ COUNTA(INDIRECT(G4))))) = SQRT(MMULT(((IF(TRANSPOSE(MMULT(INDIRECT(G4),1 + 0 * TRANSPOSE(ROW(INDIRECT(“ 1:”&MAX(INDIRECT(G4))))))))= MMULT(ROW(INDIRECT( “ 1:”&MAX(INDIRECT(G4)))),1 + 0 * TRANSPOSE(ROW(INDIRECT(“ 1:”&COUNTA(INDIRECT(G4))))))),0,ROW(INDIRECT(“ 1:” &MAX(INDIRECT(G4)))))^ 2),1 + 0 * ROW(INDIRECT(“ 1:”&COUNTA(INDIRECT(G4)))))/ COUNTA(INDIRECT(G4))),SQRT(MMULT( (IF(TRANSPOSE(MMULT(INDIRECT(G4),1 + 0 * TRANSPOSE(ROW(INDIRECT(“ 1:”&MAX(INDIRECT(G4))))))))= MMULT(ROW(INDIRECT(“ 1:”&MAX (INDIRECT(G4)))),1 + 0 * TRANSPOSE(ROW(INDIRECT(“ 1:”&COUNTA(INDIRECT(G4))))))),0,ROW(INDIRECT(“ 1:”&MAX(INDIRECT(G4 )))))^ 2),1 + 0 * ROW(INDIRECT(“ 1:”&COUNTA(INDIRECT(G4)))))/ COUNTA(INDIRECT(G4))),“”)

该公式可以理解为

=IF(INT(A)=A,A, "")

A在哪里

SQRT(MMULT((IF(TRANSPOSE(MMULT(INDIRECT(G4),1+0*TRANSPOSE(ROW(INDIRECT("1:"&MAX(INDIRECT(G4)))))))=MMULT(ROW(INDIRECT("1:"&MAX(INDIRECT(G4)))),1+0*TRANSPOSE(ROW(INDIRECT("1:"&COUNTA(INDIRECT(G4)))))),0,ROW(INDIRECT("1:"&MAX(INDIRECT(G4)))))^2),1+0*ROW(INDIRECT("1:"&COUNTA(INDIRECT(G4)))))/COUNTA(INDIRECT(G4)))

如果不需要B列(可以从A进行计算),假设您有名为worksheet1数据,则将所有缺少的值写入C列的VBA子代码如下:

Sub worksheet1c()
    'this contains the position in column A
    Dim i As Integer
    'this contains the position in column C
    Dim j As Integer
    'the numbers from 1
    Dim number As Integer

    'initialization
    i = 1
    j = 1
    number = 1

    'check all numbers in column A from row 2
    Do While Sheets("worksheet1").Cells(i, 1).Value <> ""
        'if there is a difference between number and the value in cell write them to column C
        Do Until number = Sheets("worksheet1").Cells(i, 1).Value
            Sheets("worksheet1").Cells(j, 3).Value = number
            j = j + 1
            number = number + 1
        Loop
        i = i + 1
        number = number + 1
    Loop
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM