iamlaosong文
要求從貨運明細中統計各省某日發貨點數量,公式如下:
=sumproduct((sheet1!$l$2:$l$1747=b6) * (sheet1!$m$2:$m1747=$a$1) / countif(sheet1!$u$2:$u$1747,sheet1!$u$2:$u$1747))
sheet1是貨運明細,其中l列是發貨省,b6是要統計的省份;m列是發貨日期,a1是要統計的日期,u列是發貨點。
需要注意的是最大行數1747必須是有效行數,如果為了通用,把行數放大,比如2000,由於1747行後面沒有資料,導致countif函式的統計結果為0,就會產生被零除的錯誤。
這種方法給客戶後,客戶說函式的運算量大,很卡。換個方法吧,先對明細建立乙個查詢,本想用sql語句一次完成,可是,用於excel的sql語句既不支援where中直接引用單元格的值,也不支援count(distinct 欄位名)這種寫法,所以,最後採用先建立乙個去重複的查詢,再用sumifs求和。
1、建立查詢的方法
資料選項卡—現有連線—瀏覽更多 或者 按快捷鍵alt+d+d+d
選擇要查詢的excel檔案和檔案中的的工作表,就可以將相應工作表的資料取過來。表現形式選擇表。
查詢結果表放在w6開始的區域,如目前的結果是w6:y61。
2、修改查詢
select 日期,始發省份,count(*) as 網點數量 from (select distinct 日期,始發省份,攬收機構 from [sheet1$]) group by 日期,始發省份
select 月份,始發省份,count(*) as 網點數量 from (select distinct 月份,始發省份,攬收機構 from [sheet1$]) group by 月份,始發省份
結果如下:
日期始發省份
網點數量
月份始發省份
網點數量
10月01日
雲南省1
10月浙江省
110月02日
雲南省1
10月安徽省
4710月05日
雲南省1
10月雲南省
210月09日
雲南省1
10月河南省
110月10日
雲南省1
11月湖北省
410月11日
雲南省1
11月浙江省
110月12日
安徽省1
11月安徽省
1610月12日
雲南省1
11月雲南省
210月13日
雲南省1
10月14日
雲南省2
10月15日
雲南省1
10月16日
安徽省2
10月16日
雲南省1
10月17日
安徽省3
10月17日
雲南省1
10月18日
安徽省6
3、統計某日網點數
公式如下:
=sumifs($y$6:$y$1000,$w$6:$w$1000,text($a$1,"m月d日"),$x$6:$x$1000,b6)
其中1000是預留的查詢結果行數,可以大於實際行數,不影響統計結果,這樣明細增加的時候就沒問題了。
4、excel使用distinct關鍵字時似乎很苛刻,除了上面提到的,對字段做處理後取不重複也不行,比如distinct left(日期,3)就不行。
不特定列的不重複次數 公式解讀 統計不重複個數
小夥伴們好啊,今天咱們一起學習一下countif函式的高階應用,來看看如何使用這個函式完成不重複個數的統計。模式化的公式為 這個公式中包含了乙個數學邏輯 任意乙個資料重複出現n次,n個1 n的和值為1。公式中 countif a1 a10,a1 a10 部分是陣列計算,運算過程相當於 countif...
Excel從其他表中匯入符合條件的資料
例子 表一中有編號 名稱列,表二中有名稱 責任人列,現在需要把錶二中與表一中名稱相對應的責任人匯入到表一中。1 開啟表一,建立新的工作表,名字叫import,將表二中的資料拷貝到import工作表中。表一如下 表二如下 2 在表一中新建一列,名叫責任人。3 選中表一的責任人列第一行,輸入函式 mat...
EXCEL雜記 統計重複列的個數
假設你的資料在a2 a21,1 統計資料個數 重複資料只計算1次 sumproduct 1 countif a2 a21,a2 a21 2 統計資料個數 重複資料不統計 sumproduct countif a2 a21,a2 a21 1 3 列出資料 重複資料只列1次 在b2輸入 if row i...