這裏是我的數據:如何從包含字符串「2017 | 03」的單元格中獲取日期?
我想建立一個SUMIFS
公式來總結會議,如果月=「上個月」(即,解析這些字符串),和頻道分組=「顯示」。
這是我到目前爲止有:
=SUMIFS(H3:H,F3:F,________,G3:G,"Direct")
由於這是一個字符串,而不是一個日期,我不知道如何得到它來搭配「上個月」。
這裏是我的數據:如何從包含字符串「2017 | 03」的單元格中獲取日期?
我想建立一個SUMIFS
公式來總結會議,如果月=「上個月」(即,解析這些字符串),和頻道分組=「顯示」。
這是我到目前爲止有:
=SUMIFS(H3:H,F3:F,________,G3:G,"Direct")
由於這是一個字符串,而不是一個日期,我不知道如何得到它來搭配「上個月」。
爲什麼不建立一個像這樣的字符串
=sumifs(H3:H,F3:F,year(today())&"|"&text(month(today())-1,"00"),G3:G,"Direct")
這建立了一個字符串等於「2017年| 03」(或只是硬編碼?)採取一年從今天的日期(2017年)和一個比從今天的日期,在寫作時的月份數是四月,所以4-1 = 3。文本函數使用前導零來格式化它。所以整個事情是「2017」&「|」 &這給出了「2017 | 03」 - 這與F欄進行比較。
注意:1月將是一個特例(現有公式會給2018年1月前2018 | 00「一些額外的代碼來覆蓋這種情況並使其完全自動)。
通過「硬編碼」我的意思只是把2017年| 03作爲一個字符串這樣
=sumifs(H3:H,F3:F,"2017|03",G3:G,"Direct")
然後就手動更改爲不同的月份。
這裏是一個更通式
=sumifs(H3:H,F3:F,year(eomonth(today(),-1))&"|"&text(month(eomonth(today(),-1)),"00"),G3:G,"Direct")
只要改變-1到-2等,爲不同的號碼個月。
編輯
在@Max Makhrov的回答來看,這可以顯著縮短至
=sumifs(H3:H,F3:F,text(eomonth(today(),-1),"YYYY|MM"),G3:G,"Direct")
我想補充兩個選項:
這個公式稍短,功能更強大,因爲它可以完全控制日期格式:
=TEXT(TODAY(),"YYYY|MM")
公式語法是在這裏:
https://support.google.com/docs/answer/3094139?hl=en
你的情況,轉換日期字符串是更有效,因爲它計算公式中的一個時間,所以有少計算。但有時你需要將文本轉換爲日期。在這種情況下,我更喜歡用正規expresions:
=JOIN("/",{REGEXEXTRACT("2017|03","(\d{4})\|(\d{2})"),1})*1
它是如何工作
REGEXEXTRACT("2017|03","(\d{4})\|(\d{2})")
給出2個獨立的電池輸出:
2017 03
{..., 1}
加1 ...
,並將其添加到右邊:
2017 03 1
JOIN("/", ...)
加入...
輸入:
2017/03/1
這看起來像日期,但使它成爲真正的日期,多1:
"2017/03/1"*1
轉換字符串,看起來像日期爲若干42795
這是序列號日期2017 march 01
你是對的,你的公式1比我的短,也正則表達式公式可能有用。 –
這一工程!我不太清楚這裏發生了什麼,但它得到了正確的答案。還沒有按照你所說的「硬編碼」的含義嗎?謝謝! – Drewdavid
謝謝。我不能硬編碼,因爲我需要上個月,兩個月前和13個月前的公式;它每個月都會有所不同。 – Drewdavid
我會添加更多的通用公式來回答。 –