Требуется конвертировать формат чисел SAP в Excel

Программирование на Visual Basic for Applications
bvitaly
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 16.05.2004 (Вс) 15:05

Требуется конвертировать формат чисел SAP в Excel

Сообщение bvitaly » 20.03.2007 (Вт) 9:30

Мне требуется предварительная подготовка некоторых документов в Excel, так значительно удобнее. Просьба если кто может то помогите. Формат чисел в SAP выглядит так
0,035 Т
9,144 М
18,288 М
18,288 М
3,390 КГ
1,700 КГ
2 ШТ
0,400 КГ
16.010,000 КГ
2.000,000 КГ
(вид единиц измерения в отдельной ячейке)

Excel в таком виде естесственно не понимает, а очень надо. Причем по окончании работы надо еще и назад сконвертировать.
Буду очень признателен.

Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 20.03.2007 (Вт) 10:49

Если у Вас эти данные уже есть в Excel, то я бы посоветовал Вам бы следующее:
1) Выделить эти данные (допустим F2:F200)
2) далее меню Данные - Текст по столбцам...
3) у вас откроется окно (1 шаг из 3), там будет указан Формат данных - С разделителями, ничего не меняя нажмите Далее
4) Во втором шаге из трёх - поставьте галочку Пробел (или другой если там не пробел), нажмите Далее
5) в шаге 3 из 3 в окошке Поместить в: либо ничего не меняйте и у вас замениться выделенный текст или укажите соседнюю с первой ячейкой вашего диапазона, соседняя ячейка для F2 будет G2 (можно мышкой)
5) Нажмите Готово
6) Точки можно заменить на запятые через Ctrl+H

Krasnaja Shapka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 26.10.2006 (Чт) 12:13
Откуда: Киев

Сообщение Krasnaja Shapka » 20.03.2007 (Вт) 13:32

либо порыться в "формат ячейки"... для примера, возмите финансовый формат и отредактируйте (например, вместо "руб" вставте "кг")
Если ясность вашего объяснения исключает ложное толкование, все равно кто-то поймет вас неправильно.

bvitaly
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 16.05.2004 (Вс) 15:05

Сообщение bvitaly » 21.03.2007 (Ср) 10:56

Krasnaja Shapka писал(а):либо порыться в "формат ячейки"... для примера, возмите финансовый формат и отредактируйте (например, вместо "руб" вставте "кг")

И чем мне это поможет?

Добавлено: 20.03.2007 (Вт) 15:49 Заголовок сообщения:

--------------------------------------------------------------------------------

Если у Вас эти данные уже есть в Excel, то я бы посоветовал Вам бы следующее:
1) Выделить эти данные (допустим F2:F200)
2) далее меню Данные - Текст по столбцам...
3) у вас откроется окно (1 шаг из 3), там будет указан Формат данных - С разделителями, ничего не меняя нажмите Далее
4) Во втором шаге из трёх - поставьте галочку Пробел (или другой если там не пробел), нажмите Далее
5) в шаге 3 из 3 в окошке Поместить в: либо ничего не меняйте и у вас замениться выделенный текст или укажите соседнюю с первой ячейкой вашего диапазона, соседняя ячейка для F2 будет G2 (можно мышкой)

Вот это помогло, спасибо. Сделал несколько иначе но идея не плохая. Вот только как теперь назад преобразовывать? Я так и не разобрался возможно ли это.

Krasnaja Shapka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 26.10.2006 (Чт) 12:13
Откуда: Киев

Сообщение Krasnaja Shapka » 21.03.2007 (Ср) 16:25

bvitaly писал(а):
Krasnaja Shapka писал(а):либо порыться в "формат ячейки"... для примера, возмите финансовый формат и отредактируйте (например, вместо "руб" вставте "кг")

И чем мне это поможет?

вам надо чтоб "200 кг" эксель воспринимал как цифру 200? то в этом этот формат и поможет...
Если ясность вашего объяснения исключает ложное толкование, все равно кто-то поймет вас неправильно.

bvitaly
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 16.05.2004 (Вс) 15:05

Сообщение bvitaly » 21.03.2007 (Ср) 17:24

Krasnaja Shapka писал(а):вам надо чтоб "200 кг" эксель воспринимал как цифру 200? то в этом этот формат и поможет...

Тип едениц измерения прописан отдельно от числа (в ячейке рядом), проблема далеко не в этом а в формате числа.

Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 21.03.2007 (Ср) 17:45

для того, чтобы сцепить несколько значений, находящихся в разных столбцах, можно воспользоваться функцией Excel =СЦЕПИТЬ
=СЦЕПИТЬ(C5;D5;E5)

или можно использовать знак амперсанда - &
=C5&D5&E5

если нужны пробелы, то
=C5 & " " & D5 & " " & E5

bvitaly
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 16.05.2004 (Вс) 15:05

Сообщение bvitaly » 21.03.2007 (Ср) 19:54

Нет не надо сцеплять, надо формат типа 1.600,000 в 1600,00 и обратно. Первое сделал а обратно пока не знаю как.

ZlydenGL
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 148
Зарегистрирован: 13.08.2004 (Пт) 10:02

Сообщение ZlydenGL » 21.03.2007 (Ср) 21:13

Если задача частая - я бы написал "внешнюю" (VBA) обработку.

Суть:
1. Убираем текст в конце (пока не наткнемся на цифру)
2. Убираем все запятые и пробелы
3. Точку заменяем на символ разделителя десятичной части системы.

Код сам напишешь?

Добавлено позже:

Если же число в SAP ВСЕГДА строится по принципу, приведенному в первом сообщении темы, то можно вывернуться, написав в еще одной колонке формулу:

=VALUE(SUBSTITUTE(SUBSTITUTE(LEFT(B2, SEARCH(" ",B2)-1),",",""),".",","))

Она перевернет текст в число (правда, как видим, не самым красивым образом). Принцип ее действия:

1. Убираем все, что находится правее пробела (вместе с пробелом). Здесь накладывается ограничение №1 - предполагается, что в числе пробел встречается только перед заданием единиц.

2. Убираем все запятые. Соответственно ограничение №2 - SAP ВСЕГДА должен отдавать в качестве разделителей тысячей именно запятую.

3. Точку меняем на запяту. Ограничение №3 - это действие необходимо, если в системе разделитель десятичной части - именно запятая! Если точка - вылетит. Т.е. надо либо проверять наличие такого разделителя, либо менять условие в зависимости от разделителя, используемого на данном компьютере

4. Получившуюся строку конвертируем в число.

К сожалению, поскольку на винте только WWE офис, русского аналога формулы не знаю :( Но найти думаю будет несложно! ;)
Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.

ZlydenGL
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 148
Зарегистрирован: 13.08.2004 (Пт) 10:02

Сообщение ZlydenGL » 21.03.2007 (Ср) 21:41

Для полных извращенцев - вот формула с проверкой:

=IF(ISERROR(VALUE(SUBSTITUTE(SUBSTITUTE(LEFT(B2, SEARCH(" ",B2)-1),",",""),".","."))),
VALUE(SUBSTITUTE(LEFT(B2, SEARCH(" ",B2)-1),",","")),
VALUE(SUBSTITUTE(SUBSTITUTE(LEFT(B2, SEARCH(" ",B2)-1),",",""),".",".")))

Правда проверка идет только на разделитель, и предполагается, что кроме точки и запятой, разделителя десятичной части быть не может :)

Добавлено позже:

Блин, а про обратное преобразование не подумал... Но идея будет такой же! Преобразуем число в текст, меняем разделитель десятичной части на точку (если в системе разделитель - запятая), меняем все разделители тысяч (тут уже сильнее привязка к системе будет) на запятые - вуаля! Правда, откуда брать правую часть (текст, единицы измерения) - разве что присоединять, если они в столбце есть?

И похоже, как раз эту задачу придется делать на VBA...
Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.

bvitaly
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 16.05.2004 (Вс) 15:05

Сообщение bvitaly » 22.03.2007 (Чт) 8:48

Присоеденить не проблема, спасибо!!!
А вот можно ли в экселе скрывать строку по условию в двух ячейках. Т.е типа в одной 0 в другой " " - её и скрыть, причем в реальном времени.

Krasnaja Shapka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 26.10.2006 (Чт) 12:13
Откуда: Киев

Сообщение Krasnaja Shapka » 22.03.2007 (Чт) 13:42

єто надо копать в сторону расширенного фильтра... только это не в реальном времени, а по выбору данные\фильтр\расширенный фильтр

если в реальном - то в вба однрозначно писать процедуру Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Если ясность вашего объяснения исключает ложное толкование, все равно кто-то поймет вас неправильно.

ZlydenGL
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 148
Зарегистрирован: 13.08.2004 (Пт) 10:02

Сообщение ZlydenGL » 22.03.2007 (Чт) 14:35

bvitaly, не понял - можно "на пальцах" объяснить, что имел ввиду?
Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

    TopList