簡體   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