Sub l_lisa() Dim x As Range Set x = Range("d10:bb18") x.Replace What:=".", Replacement:=",", LookAt:=xlPart For Each x In x x = Application.WorksheetFunction.Trim(x) x = CLng(x) Next x End Sub
[/vba]
Жмите на кнопку во вложении [vba]
Код
Sub l_lisa() Dim x As Range Set x = Range("d10:bb18") x.Replace What:=".", Replacement:=",", LookAt:=xlPart For Each x In x x = Application.WorksheetFunction.Trim(x) x = CLng(x) Next x End Sub
l-lisa! Очевидно, Вы осуществляете "импорт" файла ТХТ в EXCEL. Варииант без формул и макросов: 1. открыть ТХТ в Блокноте, 2. выделить все, 3. заменить "." на ",", 4. сохранить. После этого Ваш ТХТ в EXCEL сразу откроется готовым к вычислениям.
l-lisa! Очевидно, Вы осуществляете "импорт" файла ТХТ в EXCEL. Варииант без формул и макросов: 1. открыть ТХТ в Блокноте, 2. выделить все, 3. заменить "." на ",", 4. сохранить. После этого Ваш ТХТ в EXCEL сразу откроется готовым к вычислениям.Матрёна
есть еще один вариант если речь про 1с. В параметрах системы, в языках и региональных параметрах, на вкладке дополнительные параметры заменить разделитель дробной и целой части, по умолчанию в системе стоит запятая, поставьте точку. И тогда всё становится числовым значением без макросов)))
есть еще один вариант если речь про 1с. В параметрах системы, в языках и региональных параметрах, на вкладке дополнительные параметры заменить разделитель дробной и целой части, по умолчанию в системе стоит запятая, поставьте точку. И тогда всё становится числовым значением без макросов)))DJ_Marker_MC
Вариант без "найти/заменить" при импорте текстового файла с точками в качестве разделителей (например, из 1С) 1. Временно устанавливаем в Excel в качестве разделителя целой и дробной части - точку 2. Импортируем данные (они автоматически преобразуются в числа) 3. Возвращаем запятую в качестве разделителя
Если вначале импортировать, а затем менять разделитель с точки на запятую, то некоторые числа, такие как "1.2" могут превратится в даты - "01.фев" и данные сложно будет восстановить
Вариант без "найти/заменить" при импорте текстового файла с точками в качестве разделителей (например, из 1С) 1. Временно устанавливаем в Excel в качестве разделителя целой и дробной части - точку 2. Импортируем данные (они автоматически преобразуются в числа) 3. Возвращаем запятую в качестве разделителя
Если вначале импортировать, а затем менять разделитель с точки на запятую, то некоторые числа, такие как "1.2" могут превратится в даты - "01.фев" и данные сложно будет восстановитьMCH
Полагаю не имеет смысла временно менять разделитель целой и дробной части в EXCEL. В лучшем случае здесь имеет место элементарное копирование информации в файле-источнике. Однако, очень даже возможно - выделение и копирование с экрана Генератора Отчетов в ПО и элементарная вставка в EXCEL. Поэтому достаточно только в этой информации заменить точку на запятую уже после ее вставки в EXCEL.
Полагаю не имеет смысла временно менять разделитель целой и дробной части в EXCEL. В лучшем случае здесь имеет место элементарное копирование информации в файле-источнике. Однако, очень даже возможно - выделение и копирование с экрана Генератора Отчетов в ПО и элементарная вставка в EXCEL. Поэтому достаточно только в этой информации заменить точку на запятую уже после ее вставки в EXCEL.Матрёна
Сообщение отредактировал Матрёна - Четверг, 29.08.2013, 13:07
Полагаю не имеет смысла временно менять разделитель целой и дробной части в EXCEL
Случаи разные бывают, я данным способом пользуюсь когда необходимо открыть текстовый файл выгруженный из 1С, выгрузка может быть и 100 и 200 тыс. строчек, править все в текстовом редакторе - долго, да и текст можно испортить, меняя точки на запятые.
Кроме того, данный метод применим и при копировании данных через буфер обмена из 1С, при этом можно преобразовать числа в формате "#,##0.00", задав соответствующие разделители в настройках. Это значительно быстрее чем делать поиск/замену.
Для преобразования уже загруженных чисел в формате "#,##0.00" использую макрос: [vba]
Код
Sub Text1C() 'Преобразование чисел из 1С в виде #,##0.00 в формат # ##0,00 Dim r As Range With Application .DecimalSeparator = "." .ThousandsSeparator = "," .UseSystemSeparators = False End With For Each r In Cells.SpecialCells(xlCellTypeConstants, 2) If r = " " Then r.ClearContents Else r = r.Value Next r Application.UseSystemSeparators = True End Sub
[/vba] Заодно и даты текстом преобразует в нормальные даты
Полагаю не имеет смысла временно менять разделитель целой и дробной части в EXCEL
Случаи разные бывают, я данным способом пользуюсь когда необходимо открыть текстовый файл выгруженный из 1С, выгрузка может быть и 100 и 200 тыс. строчек, править все в текстовом редакторе - долго, да и текст можно испортить, меняя точки на запятые.
Кроме того, данный метод применим и при копировании данных через буфер обмена из 1С, при этом можно преобразовать числа в формате "#,##0.00", задав соответствующие разделители в настройках. Это значительно быстрее чем делать поиск/замену.
Для преобразования уже загруженных чисел в формате "#,##0.00" использую макрос: [vba]
Код
Sub Text1C() 'Преобразование чисел из 1С в виде #,##0.00 в формат # ##0,00 Dim r As Range With Application .DecimalSeparator = "." .ThousandsSeparator = "," .UseSystemSeparators = False End With For Each r In Cells.SpecialCells(xlCellTypeConstants, 2) If r = " " Then r.ClearContents Else r = r.Value Next r Application.UseSystemSeparators = True End Sub
[/vba] Заодно и даты текстом преобразует в нормальные даты
Это бесспорно. Однако, "исход" информации l-lisa нам не известен. Для ее информации (в данном случае) все меры предосторожности излишни. А если эта работа "разовая" - тем паче. Интересно было бы узнать об "исходе" ее информации. Полагаю, заполучив макрос, она счастлива и все остальное для нее - "фиолетово"!
Это бесспорно. Однако, "исход" информации l-lisa нам не известен. Для ее информации (в данном случае) все меры предосторожности излишни. А если эта работа "разовая" - тем паче. Интересно было бы узнать об "исходе" ее информации. Полагаю, заполучив макрос, она счастлива и все остальное для нее - "фиолетово"!Матрёна