...
4. нужно очистить колонку с ценой в прайсе от лишних символов, например, поставщик цену пишет текстом, цифры разделяет пробелом, добавляет обозначение валюты в конце числа, использует точку в качестве разделителя дробной части и т.п.
5. обозначение валюты, чтобы оно соответствовало коду валюты в программе (для мультивалютных прайсов из которых помимо цены загружается еще и валюта)
Note |
---|
смотреть какой реально текст находится в колонке нужно в ячейке прайса, потому что в большинстве случаев, например, валюта в цене указывается с помощью форматирования, а не ручного ввода текста в каждой ячейке (см. скриншет ниже, если в строке формул вверху присутствует текст, значит его нужно заменять на “пусто”) |
...
в полученном тексте вам нужно указать:
SHEET_INDEX = 1
- номер листа, на котором нужно делать замену. Если это будет несколько листов, то нужно будет делать копию всего текста замен для нескольких листов (сначала укажите все замены для одного листа, потом скопируйте полученный текст целиком, только SHEET_INDEX
укажите уже следующего листа.
REPL_COLUMNS = "A:Z"
- интервал колонок, в которых необходимо сделать замены. Если у вас одна колонка, указывайте, например "A:A"
REPL_TYPE = 1
- тип замены, если стоит 1, то искомый текст должен полностью совпадать с тем, что в ячейке, если 2 - то вхождение текста.
Selection.Replace What:="Руб.", Replacement:="RUB"
- здесь указывается что заменить (Руб.) и на что заменить (RUB)
Для примера “2 345.10р.” макрос будет иметь следующий вид (предположим что этот текст во второй колонке B):
Code Block | ||
---|---|---|
| ||
SHEET_INDEX = 1
REPL_COLUMNS = "B:B"
REPL_TYPE = 2
sheets(SHEET_INDEX).Columns(REPL_COLUMNS).Select
Selection.Replace What:=" ", Replacement:="", LookAt:=REPL_TYPE, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="р.", Replacement:="", LookAt:=REPL_TYPE, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=".", Replacement:=",", LookAt:=REPL_TYPE, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
|
Обратите внимание, если нужно делать несколько замен, то нужно копировать блок текста
Code Block | ||
---|---|---|
| ||
Selection.Replace What:=".", Replacement:=",", LookAt:=REPL_TYPE, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False |
В примере делается 3 замены:
1. Пробел меняется на пусто Selection.Replace What:=" ", Replacement:=""
2. Обозначение валюты заменяется на пусто Selection.Replace What:="р.", Replacement:=""
- обратите внимание, что валюта заменяется вместе с точкой, чтобы потом не заменить эту точку на запятую, следующим действием
3. Точка (разделитель дробной части) заменяется на запятую Selection.Replace What:=".", Replacement:=","
Замена переносов строки на html-тег
Code Block | ||
---|---|---|
| ||
SHEET_INDEX = 1 REPL_COLUMNS = "B:B" REPL_TYPE = 2 sheets(SHEET_INDEX).Columns(REPL_COLUMNS).Select Selection.Replace What:=Chr(13) & Chr(10), Replacement:="<br />", LookAt:=REPL_TYPE, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:=Chr(13), Replacement:="<br />", LookAt:=REPL_TYPE, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Selection.Replace What:=Chr(10), Replacement:="<br />", LookAt:=REPL_TYPE, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False |