2014-01-18 7 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 преобразуются, и я не хочу, чтобы они были преобразованы.

+0

Звучит как проблема XY. Вы импортировали файл в excel, и эти значения были автоматически преобразованы? – Jerry

+0

Это чья-то электронная таблица .xlsx, которую я открываю. Кажется, у них был неправильный тип данных, выбранный для этого столбца. Это должен был быть текст. Я ничего не могу сделать, чтобы изменить исходный файл. – StevieD

+0

Проблема в том, что даты также являются числами (как вы отметили «41763'), а также есть другие числа в столбце. 41763 действительно число дней после 1/1/1900 (хотя в этой системе дается одна аномалия дня). Так что, если у вас есть '4', это, вероятно, также превратится в 4 января 1900 года, что даст вам« 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, close. Но когда у меня есть дата в поле, она возвращает значение, такое как 41763, которое я предполагаю, это дни с 1901 года. Не уверен, что это за сделка. Похоже, что он оценивает «ложное» значение, a1. Когда я заменяю ложное значение «бла», он возвращает «бла». – StevieD

0

ОК, я достиг результата, я хотел разделив из трех «если» тесты (подобные тому, что предложил Brett) в 3-х дополнительных столбцов. Каждый столбец имел свой отдельный тест «если» и строился на столбце перед ним. Вот если тесты:

=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

Учитывая, что в ОП данные, как представляется, в Columna начиная Row1 одну формулу, такие как:

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

и скопировал вниз казалось бы адекватным.

Смежные вопросы