簡體   English   中英

如何在谷歌表格中使用 sumif 和 arrayformula

[英]How to use sumif with arrayformula in google sheet

從google forms,我們將得到車輛編號的輸入。 在一段時間內,其中一些車輛可能是相同的。 在此期間,我們可能已經注意到這輛車的交通違法行為。 我們是否可以編寫代碼/函數來匯總所述車輛違反的罪行?

Col A:Timestamp Col B:Vehicle No. (從谷歌表格獲得的數據) Col C:Entry Count(通過 VLookup/Query 獲得 ~ 類似於基於 Col B 的計數) Col D:Violation Count(如果是,則為 1,空單元格表示否) Col E:Total Violation Count ~ 希望根據 Col B 求和總數。

因此,每次提交新的谷歌表單時,谷歌表格都會檢查該車輛在 Col E 中累積和自動化的違規總數。

感謝您的指導。

如果您需要在車輛的每一行有相同的違規總數,那么它將是:

=ARRAYFORMULA(
  IF(
    ROW(D:D) = 1,
      "Total Violation Count",
      IFNA(VLOOKUP(
        D:D,
        QUERY(
          D:E,
          "SELECT D, COUNT(D)
           WHERE E IS NOT NULL
           GROUP BY D"
        ),
        2,
      ))
  )
)

在此處輸入圖像描述

如果您需要違規次數的運行總和:

=ARRAYFORMULA(
  IFS(
    ROW(D:D) = 1,
      "Total Violation Count",
    A:A = "",,
    True,
      IFNA(VLOOKUP(
        MATCH(D:D, UNIQUE(FILTER(D2:D, D2:D <> "")),) * 10^INT(LOG10(ROWS(D2:D)) + 1) + ROW(D:D),
        SORT(
          {
            SEQUENCE(COUNTUNIQUE(D2:D)) * 10^INT(LOG10(ROWS(D2:D)) + 1),
            IF(SEQUENCE(COUNTUNIQUE(D2:D)), 0);
            FILTER(MATCH(D2:D, UNIQUE(FILTER(D2:D, D2:D <> "")),) * 10^INT(LOG10(ROWS(D2:D)) + 1) + ROW(D2:D), E2:E <> ""),
            MMULT(
                (FILTER(D2:D, E2:E <> "") = TRANSPOSE(FILTER(D2:D, E2:E <> "")))
              * (SEQUENCE(COUNTA(E2:E)) >= SEQUENCE(1, COUNTA(E2:E))),
              SEQUENCE(COUNTA(E2:E), 1, 1,)
            )
          }
        ),
        2
      ))
  )
)

在此處輸入圖像描述

請注意,第二個解決方案有一個限制:n^2 < 10 000 000,其中 n 是違規記錄的數量。 這是谷歌表格對單元格總數的限制,也適用於中間計算。

未使用F:F列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM