簡體   English   中英

從日期單元格Excel中獲取月份和年份

[英]Get month and year from date cells Excel

我想從日期列中隔離monthyear ,但此列有兩種格式:

2011年5月8日00:5908-05-2011

如果我想要一個新的列來隔離這個專欄中的月份和年份,例如: 05-2011 ,我應該怎么做?

試試這個公式(它會從A1返回值,如果它不是一個日期):

=TEXT(A1,"mm-yyyy")

或者這個公式(它更嚴格,如果A1不是日期,它將返回#VALUE錯誤):

=TEXT(MONTH(A1),"00")&"-"&YEAR(A1)

請嘗試以下方法

=IF(LEN(C1)>10,VALUE(LEFT(C1,FIND(" ",C1,8))),IF(ISTEXT(C1),DATE(RIGHT(C1,4),MID(C1,4,2),LEFT(C1,2)),C1))  

您似乎有三種主要可能的情況:

  1. 以時間為文本的空格分隔日期(例如下面的A1)
  2. 連字符分隔日期為文本(例如下面的A2)
  3. 格式化日期索引(如下面的A4和A5)

下面的ColumnA格式為General ,ColumnB格式為Date(我的默認設置)。 ColumnC也作為日期,但具有自定義格式以適合您的問題中提到的外觀。
關於文本格式是否是單元格內容的左對齊或右對齊的線索。

我建議對上述三種主要病例中的每一種進行單獨治療,因此使用= IF來區分它們。

情況1

這比其他任何一個都長,因此可以區分為長度大於10個字符, = LEN
在這種情況下,我們想要除了最后六個字符之外的所有字符,但為了增加靈活性(例如,如果時間元素包括秒數),我選擇從左邊而不是從右邊開始計數。 那么問題是月份名稱的長度可能不同,所以我選擇查找緊跟年份的空間以指示相關字符數的限制。

這與= FINDC1 尋找一個空格( " " ),從左邊開始計算C1內的第八個字符,假設在這種情況下,天數將表示為兩個字符,而月份則表示為三個或更多

由於= LEFT是一個字符串函數,它返回一個字符串,但是這可以轉換為值為VALUE的值

所以

=VALUE(LEFT(C1,FIND(" ",C1,8))) 

在此示例中返回40671 - 在Excel的1900日期系統中 ,2011年5月5 的日期序列號。

案例#2

如果C1的長度不超過10個字符,我們仍然需要區分我選擇使用= ISTEXT的文本條目或值條目,以及if條件為TRUE的情況(對於C2)apply = DATE這需要三個參數,這里提供:

=RIGHT(C2,4)  

采用C2的最后四個字符,因此在此示例中為2011

=MID(C2,4,2) 

從第四個字符開始,取C2的下兩個字符,因此在此示例中為05 (表示May)。

=LEFT(C2,2))  

采用C2的前兩個字符,因此在此示例中為08 (表示該月的第8天)。 日期不是文本函數,因此不需要包含在= VALUE中。

一起來

=DATE(RIGHT(C2,4),MID(C2,4,2),LEFT(C2,2)) 

在此示例中也返回40671 ,但來自Case#1的不同輸入。

案例#3

很簡單,因為已經是日期序列號,所以只是

=C2  

足夠了。


將上述內容放在一起以涵蓋單個公式中的所有三種情況:

=IF(LEN(C1)>10,VALUE(LEFT(C1,FIND(" ",C1,8))),IF(ISTEXT(C1),DATE(RIGHT(C1,4),MID(C1,4,2),LEFT(C1,2)),C1))  

在ColumnH中應用於ColumnF(格式化為適合OP)或一般格式(以顯示值為整數):

SO23928568示例

您可以右鍵單擊這些單元格,轉到格式,選擇自定義,然后鍵入mm yyyy。

我要求提供一個報告,按月顯示詳細信息,其中日期字段被格式化為日期和時間,我只是將日期列的格式更改為“常規”,然后在新列中使用以下公式,

=CONCATENATE(YEAR(C2),MONTH(C2)) 

暫無
暫無

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

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