Страницы: 1
RSS
Преобразование целого числа в дату, Макрос проверки ячейки на тип данных и преобразование типа int к дате
 
Суть проблемы такова.
Есть таблица собранная из  множества других таблиц, которые готовят разные люди и как я полагаю на разном ПО (Excel для Mac, OpenOffice и т.д.) Визуально все хорошо, но фактически некоторые ячейки с датой только отображаются в формате ДД.ММ.ГГГГ , а значение содержат целочисленные "42211" Как я понял это дата в том формате из которого Excel высчитывает отображаемую (кол-во дней посте 1 янв 1900 г.). Если выделить ячейки и форматом поставить "Общий", то те которые содержат дату в нормальном формате не изменятся, а те которые в целочисленном начнут отображать число.
Этот файл загружается в 1С, которая при попытке преобразовать значение ячейки (текстового) в дату спотыкается, т.к. в ячейке хранится число(((

Я попробовал с помощью макроса преобразовать к дате (x.Value = CDate(x)) , но стандартные функция VBA так же ругается на недопустимый тип значения в ячейке.

Может кто нибудь помочь написать макрос, который будет проверять тип значения в ячейке и если это Intager преобразовывать число к классической дате, например в текстовом формате, и помещать обратно в ячейку?
 
 
=ЕСЛИ(ЕЧИСЛО($B2);$B2;ДАТАЗНАЧ($B2))

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
а так?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Если надо преобразовать в текстовое значение дату, можно формулой:
Код
=ЕСЛИ(ЕТЕКСТ(B2);B2;ТЕКСТ(B2;"ДД.ММ.ГГГГ"))

т.е. если в ячейке текст - не трогаем, а если число - преобразуем в текст в определенном формате.
Или макросом - в выделенном диапазоне тупо все при помощи формата загоняем в текст нужного вида (и не разбираемся - число там, строка...)
Код
Sub t()
    Dim objC As Range
        For Each objC In Selection
            objC.Value = Format(objC, "DD.MM.YYYY")
        Next
End Sub
Кому решение нужно - тот пример и рисует.
 
JayBhagavan и Пытливый огромное спасибо. Очень помогли.
 
эх...  :cry:
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Не стоит отчаиваться, я бы все равно не заплатил. Я сам могу писать на VB, просто делаю это крайне редко (так сказать сноровки нет). я бы написал что-то подобное, но это отняло бы много времени, поэтому я обратился к профессионалам в надежде на оперативность.

Еще раз спасибо, всем кто помог
 
Цитата
Не стоит отчаиваться, я бы все равно не заплатил.
Т.е. за предложенный вариант даже доброго слова от Вас не дождется? Одних поблагодарили, другие обойдутся...
 
Цитата
но это отняло бы много времени
Понятно, нашего времени вам не жалко. В бан!"
 
забавный чел.
фому и ерёму путает.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Выбрать диапазон и Данные-> Текст по столбцам и шаг 3, форматировать данные в столбце, выберите Дата и выберите ДМГ
 
Цитата
mr_Ujin написал: я бы все равно не заплатил
)) А кто-то просил? Здесь не платный раздел.
 
Цитата
vikttur написал:
Т.е. за предложенный вариант даже доброго слова от Вас не дождется? Одних поблагодарили, другие обойдутся...
Нет, Вы глубоко не правы.
В сообщении IkkI не было вложения, которое там есть сейчас. Т.к. я не хочу никого обидеть, предположу, что это был глюк форума  и оно просто не отобразилось. Пустое сообщение с подписью "фрилансер Excel, VBA - контакты в профиле " наводит на мысль, что человек предлагает коммерческие услуги. Именно на основе таких мыслей я и написал предыдущий пост.
Если я кого-то задел, крайне извиняюсь, я искренне благодарен всем, кто оказал помощь и всегда уважаю время и труд людей.
Еще раз спасибо.
 
Ребята может положите есть число ХХХ-1 можно код макроса что бы в итоге было целое число ХХХ без -1 , да число может быть как Х, ХХ,ХХХ,ХХХХ
 
Это не число, а текст)) Минус один всегда присутствует? Вы бы показали в файле-примере возможные комбинации?
 
да простит меня модератор Юрий М, но, kipf, как ваш вопрос связан с заявленной темой?
 
Прокололся ))
Страницы: 1
Читают тему (гостей: 1)
Наверх