Здравствуйте! Почему в приложенном примере макрос в excel 2003 показывает неправильно последний заполненный столбец (187), а в excel 2007 показывает правильно (17).
Здравствуйте! http://www.excelworld.ru/forum/10-6371-1 в сообщении №13 макрос от "Michael_S" (Михаил С.) правильно преобразует при любом системном разделителе (и запятая, и точка)
Вот пример диалога выбора текстового файла и импорта на лист:
Код
Filename = Application.GetOpenFilename("txt Files (*.txt), *.txt") 'получаем имя и путь файл
Dim r As Long
Set ImpRng = Cells(1, 1)
Open Filename For Input As #1
r = 0
Do Until EOF(1)
Line Input #1, data
Cells(1, 1).Offset(r, 0) = data
Cells(1, 1).Offset(r, 0) = LTrim(Replace(Cells(1, 1).Offset(r, 0).Text, Chr(9), " "))
r = r + 1
Loop
Close #1
Михаил С. спасибо!!! Ваш макрос делает то, что мне нужно. Теперь программа, в которую мне надо импортировать ексель-файл правильно понимает даты. И работает Ваш макрос примерно в 10 раз быстрее чем цикл по ячейкам листа. Только день поменялся местами с месяцем.
При выделении мышкой в столбце А первых четырех дат в нижней служебной строке сумма 07.05.2354 Если в нижней служебной строке сумма не появляется, то это значит, что дата в каком-то несоответствующем формате, т.к. excel представляет дату как число.
Потом мне надо импортировать ексель-файл в программу, но эта программа не понимает даты, если они не удовлетворяют вышеприведенным условиям.
Как из исходного форматы "дата" получить нормальный формат даты, чтобы при выделении мышью нескольких ячеек, excel показывал бы сумму ячеек. В примере в макросе сделано с помощью цикла на листе, возможно ли такой цикл сделать в массиве, чтобы ускорить время выполнения.
Слэн и Sergii87 спасибо! Для данного примера работает. Но у меня слишком разнообразные вариации записей. Буду разбираться как сделать, чтобы попытаться охватить как можно больше вариантов.
Sub colour()
Dim D1 As Date, D2 As Date
D1 = #1/1/2000#
D2 = #12/12/2013#
lLastRow = Cells(Rows.Count, 3).End(xlUp).Row
For i = 1 To lLastRow
If IsDate(Cells(i, 3)) = False Then Cells(i, 3).Interior.Color = 255
If CDate(Cells(i, 3) < D1) Then Cells(i, 3).Interior.Color = 255
If CDate(Cells(i, 3) > D2) Then Cells(i, 3).Interior.Color = 255
Next i
End Sub
Подскажите что за формат в примере, при попытке изменить формат на общий или другой, всё что после семерки отбрасывается.
если сохранить файл "сохранить как" и в строке "тип файла" выбрать CSV (разделители-запятые), то в сохраненном файле"пример.csv" уже получится формат "общий"
Приходилось объединять разные файлы ексель от разных пользователей, которые получали эти ексель-файлы выгрузкой из своих учетных программ (1с разных версий,галактика,числа из excel95 и т.д.). В результате в сборном файле очень тяжело было все числа сделать числами,т.к. были числа с разными разделителями, в разных форматах,с апострофами спереди,с зелеными треугольничками и т.п. перепробовал много разных способов. Удалось все эти числа привести к нормальному формату таким способом:
1.Установить перед всеми числами апостроф,т.е. все числа привести к текстовому формату 2.Заменить точку на системный разделитель 3.Заменить запятую на системный разделитель пункты 2 и 3 для универсальности макроса, чтобы все разделители привести к одному-системному 4.добавить к числам единицу 5.Вычесть из чисел единицу 6.Установить форматы ячеек "общий" В данном случае сработает, если сначала убрать разделитель разрядов