2017-04-19 73 views
1

這裏是我的數據:如何從包含字符串「2017 | 03」的單元格中獲取日期?

enter image description here

我想建立一個SUMIFS公式來總結會議,如果月=「上個月」(即,解析這些字符串),和頻道分組=「顯示」

這是我到目前爲止有:

=SUMIFS(H3:H,F3:F,________,G3:G,"Direct")

由於這是一個字符串,而不是一個日期,我不知道如何得到它來搭配「上個月」。

回答

2

爲什麼不建立一個像這樣的字符串

=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") 
+0

這一工程!我不太清楚這裏發生了什麼,但它得到了正確的答案。還沒有按照你所說的「硬編碼」的含義嗎?謝謝! – Drewdavid

+0

謝謝。我不能硬編碼,因爲我需要上個月,兩個月前和13個月前的公式;它每個月都會有所不同。 – Drewdavid

+1

我會添加更多的通用公式來回答。 –

1

我想補充兩個選項:

這個公式稍短,功能更強大,因爲它可以完全控制日期格式:

=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
+0

你是對的,你的公式1比我的短,也正則表達式公式可能有用。 –

相關問題