Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagevb
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
languagevb
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:=","