2014-01-18 28 views
0

鉴于这样的柱:转换某些单元格在一列从日期格式的文本

Column A 
1 4 
2 Blank 
3 Blank 
4 3 
5 blank 
6 2NDF 
7 Blank 
8 blank 
9 1/2/2014 <-- Date value I need to change to a text value: "1-2" 
10 blank 
11 5/1/2014 <-- Date value I need to change to a text value: "5-1" 
12 blank 

... 

我需要找到一种以编程方式更改包含像行9和11为日期值每个单元一个文本值相当于数字月份,后面跟着数字日期后的短划线。我有24,000行。做一个发现和替换是不实际的。我无法更改整列的格式,因为像1和4这样的行得到转换,我不希望这些转换。 “如果”测试(类似于布雷特建议)到额外的3列

+0

听起来像一个XY问题。你是否在excel中导入了一个文件,并且这些值被自动转换了? – Jerry

+0

这是我打开的其他人的.xlsx电子表格。看起来他们为本专栏选择了错误的数据类型。它应该是文本。没有办法改变原始文件。 – StevieD

+0

问题是日期也是数字(如您注意'41763'),列中还有其他数字。 41763的确是在1/1/1900之后的天数(虽然在该日期系统中有一天异常)。所以如果你有'4',它可能会变成1900年1月4日,如果你想在整列上做点什么,它会给你'4-1'。 – Jerry

回答

1

创建一个新的B柱和使用功能

=IF(NOT(ISERROR(DATEVALUE(A1))),MONTH(DATEVALUE(A1))&"-"&DAY(DATEVALUE(A1)),A1) 
+0

尝试'TEXT(A1,“m-d”)'代替:p –

+0

Brett,关闭。但是当我在该领域有一个日期时,它会返回一个值,例如41763,我认为这是自1901年以来的几天。不知道交易是什么。它似乎正在评估“错误”的价值,a1。当我用“blah”替换false值时,它返回“blah”。 – StevieD

0

OK,我实现了我想通过拆分了三个结果。每一列都有其独立的“if”测试,并构建在它之前的列上。下面是如果测试:

=IF(N5>40000,MONTH(N5)&"-"&DAY(N5),N5) # sets format I want and skip cells that are low integers and not dates 
=IF(O5=0,"",O5) # Sets cells with "0" in them to blank 
=IF(ISERROR(P5),N5,P5) # fixes cells that were originally text and that produced errors 
0

鉴于在OP中的数据似乎是在ColumnA在ROW1开始一个公式,如:

=IF(OR(A1<40000,ISTEXT(A1)),A1,MONTH(A1)&"-"&DAY(A1)) 

,并抄下来,似乎足够了。