-
1 # 葉柱
-
2 # 南岸稻草人
計算天數可以直接用countif()函式。第二個問題應該不是獲取第一個時間,應該是獲取最早的起始時間,用vlookup()函式預設的是返回符合條件的第一個單元格,如果右列的資料不是升序排列就會查詢錯誤,因此建議用minifs()函式
-
3 # EXCEL資料處理與分析
開始日期,結束日期的提取用陣列函式
開始日期=INDEX(G$1:G$19,MIN(IF(F$2:F$19=A2,ROW(F$2:F$19),4^8)))
結束日期=INDEX(G$1:G$19,MAX(IF(F$2:F$19=A2,ROW(F$2:F$19),0)))
天數用DAY360函式
天數=DAYS360(C2,D2)
當然,也可以直接把結束日期整合到DAY360函數里面,變成陣列函式
天數=DAYS360(C2,INDEX(G$1:G$19,MAX(IF(F$2:F$19=A2,ROW(F$2:F$19),0))))
-
4 # 精進Excel
這個問題可以用資料透視表、VBA、Power Query、Power Pivot等多種功能解決,下面我使用被稱為“Excel 20年來最大革新”的Power Pivot功能來演示一下解決方案。
先將資料來源與結果展示如下:
選中剛剛建立的表,在【表格工具——設計】選項卡中將表名稱按自己習慣命名,這裡我命名【表1】。
至此已得到最終結果。
Step3:持續更新例如:對第5行資料的日期進行了修改;增加了第11行資料。
大約1-2秒後即可得到重新整理後的結果。
用Power Pivot解決本問題,有三大優點:
1.一勞永逸:僅需編寫一次DAX表示式,可無數次複用,若使用普通函式公式,每次都要重新編輯。
附:DAX表示式
DAX表示式可以在DaxStudio(如下圖)中編寫和除錯,除錯無誤後再貼上至編輯DAX對話方塊中。
EVALUATE
ADDCOLUMNS (
VALUES ( "表1"[使用者暱稱] ),
"連續堅持天數", COUNTROWS ( FILTER ( "表1", "表1"[使用者暱稱] = EARLIER ( "表1"[使用者暱稱] ) ) ),
"從哪天開始的", CALCULATE (
MIN ( "表1"[日期] ),
FILTER ( "表1", "表1"[使用者暱稱] = EARLIER ( "表1"[使用者暱稱] ) )
)
)
-
5 # 雷哥office1. 函式語法
=countif(引數1,引數2),表示引數2在資料範圍1中出現的次數,具體語法描述如下↓
=vlookup(引數1,引數2,引數3,引數4),具體語法見下圖↓
2.實現方法① 使用countif函式,統計【連續堅持的天數】。
=COUNTIF(Sheet2!A:A,Sheet1!A2)
表示“張三”,‘李四’,‘王五’,分別在sheet2第一列中出現次數。② 使用vlookup函式來統計使用者最早出現的資料。
=VLOOKUP(A2,Sheet2!A:B,2,FALSE)
解釋:可以發現 sheet2中,張三等人出現了多次。Vlookup如何查詢呢? 又返回第幾個資料呢? 原來,vlookup在進行查詢 張三的時候,當遇見第一個張三時,它就返回數值了,而不再進行查找了。可以理解為vlookup是“一見鍾情”的函式,只要遇見就停止查詢,無論查詢的值(如張三)出現多少次。 理解了這個原理,為了找出最早的日期,因此需要先對資料按日期的順序進行排序,然後使用vlookup進行查詢即可函式語法解釋: =VLOOKUP(A2,Sheet2!A:B,2,FALSE) 表示A2在資料表Sheet2!A:B中進行查詢,返回表的第二列資料,查詢是精確查詢!3.我是小結① 使用countif統計滿足條件的資料出現的次數;
② 如果查詢值出現多次時,vlookup函式返回最先查詢到的數值(即行數較小的數值)。
請問如何把右邊的資料用公式變成左邊的?
題目描述不清請看圖。
這樣的資料有上萬個,所以抽象了一下。
求大神指導用什麼公式以及怎麼寫公式?
回覆列表
1.實現自動抓取的話,使用vlookup函式,精確查詢就能返回每個人的開始日期
2.計算天數可以使用countif函式,注意結果要減1