Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разнести данные ячейки по другим ячейкам с "," - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разнести данные ячейки по другим ячейкам с "," (Макросы/Sub)
Разнести данные ячейки по другим ячейкам с ","
Yar4i Дата: Четверг, 02.03.2017, 12:16 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Добрый день дамы и господа :D
[vba]
Код
With Sheets("2")
st5 = Split(.[A5].Value, ";")
.[J17] = Trim$(st5(0))
.[A1] = Trim$(st5(1))
.[A2] = Trim$(st5(2))
.[A3] = Trim$(st5(3))
End With
[/vba]
Разношу из ячейки A5 в J17 число и столкнулся с интересной ситуацией:
-Если десятичная запись дробного числа начинается с 0, то запятая переносится правильно (типа 0,123)
-Если десятичная запись дробного числа начинается с не 0, то запятая переносится правильно, при количестве знаков после запятой до 2х (типа 1,23)
-Если десятичная запись дробного числа начинается с не 0, то запятая переносится правильно, при условии присутствия в числе буквы (типа 1,234ы)
В виду не понимания Ввиду непонимания происходящего, но пользуясь тем, что перенос с буквами даёт ожидаемый результат я сначала добавляю букву в число в A5, затем убираю эту букву из J17.
[vba]
Код
Range("J17:J17").Replace "ы", "", xlPart
[/vba]
К сообщению приложен файл: 151515.xlsm (26.5 Kb)


Сообщение отредактировал Yar4i - Четверг, 02.03.2017, 12:25
 
Ответить
СообщениеДобрый день дамы и господа :D
[vba]
Код
With Sheets("2")
st5 = Split(.[A5].Value, ";")
.[J17] = Trim$(st5(0))
.[A1] = Trim$(st5(1))
.[A2] = Trim$(st5(2))
.[A3] = Trim$(st5(3))
End With
[/vba]
Разношу из ячейки A5 в J17 число и столкнулся с интересной ситуацией:
-Если десятичная запись дробного числа начинается с 0, то запятая переносится правильно (типа 0,123)
-Если десятичная запись дробного числа начинается с не 0, то запятая переносится правильно, при количестве знаков после запятой до 2х (типа 1,23)
-Если десятичная запись дробного числа начинается с не 0, то запятая переносится правильно, при условии присутствия в числе буквы (типа 1,234ы)
В виду не понимания Ввиду непонимания происходящего, но пользуясь тем, что перенос с буквами даёт ожидаемый результат я сначала добавляю букву в число в A5, затем убираю эту букву из J17.
[vba]
Код
Range("J17:J17").Replace "ы", "", xlPart
[/vba]

Автор - Yar4i
Дата добавления - 02.03.2017 в 12:16
_Boroda_ Дата: Четверг, 02.03.2017, 12:23 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А так?
[vba]
Код
.[J17] = --(st5(0))
[/vba]
или
[vba]
Код
.[J17] = CDbl(st5(0))
[/vba]
В VBA запятая - разделитель разрядов, а точка - разделитель целой и дробной части.
У нас 12 234, 567
У них 12,234.567
Вот Ваша запятая и преобразуется в разделитель разрядов


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА так?
[vba]
Код
.[J17] = --(st5(0))
[/vba]
или
[vba]
Код
.[J17] = CDbl(st5(0))
[/vba]
В VBA запятая - разделитель разрядов, а точка - разделитель целой и дробной части.
У нас 12 234, 567
У них 12,234.567
Вот Ваша запятая и преобразуется в разделитель разрядов

Автор - _Boroda_
Дата добавления - 02.03.2017 в 12:23
SLAVICK Дата: Четверг, 02.03.2017, 12:27 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Проблема в том что при у Вас числа с разделителем дробной части "," а в ВБА - разделитель "."
Поэтому и получается белиберда.
можно сделать число в ВБА. Например так:
[vba]
Код
.[J17] = CDbl(Trim(st5(0)))
[/vba]
или замените запятую на точку:
[vba]
Код
.[J17] = Replace(Trim(st5(0)), ",", ".")
[/vba]
_Boroda_, опередил :D .


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеПроблема в том что при у Вас числа с разделителем дробной части "," а в ВБА - разделитель "."
Поэтому и получается белиберда.
можно сделать число в ВБА. Например так:
[vba]
Код
.[J17] = CDbl(Trim(st5(0)))
[/vba]
или замените запятую на точку:
[vba]
Код
.[J17] = Replace(Trim(st5(0)), ",", ".")
[/vba]
_Boroda_, опередил :D .

Автор - SLAVICK
Дата добавления - 02.03.2017 в 12:27
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разнести данные ячейки по другим ячейкам с "," (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!