![]() |
сопоставление слов с транслитом и заменой используя vba
Хочу уже закрыть тему с чисткой данных используя vba на продуктах)
последний этап следующий есть тхт файлы вот структура (C:/partdata.txt) и есть файл с транслитом, будет поплняться(вручную) C:/23.txt его содержимое old new MAKFA МАКФА makar макароны макар. макароны MAKFA МАКФА Макар макароны макар. макароны мак макароны Мак макароны макф макфа маkфа макфа kрупа крупа колонка old - это слово, которое необходимо заменить, а в колонке new указано, какое слово из old столбца должно быть заменено в partdata.txt в столбце good_names ID ITEM_SUM BARCODE QUANTITY PRICE NDS10 NDS18 GOODS_NAME ID_C_REGCODES_CASH_VOUCHER DISCOUNTNAME DISCOUNTSUM 3972 43.99 1 43.99 4 0 2049750 MAKFA Макар.УЛИТКИ 450г 3971 0 GOODS_NAME колонка MAKFA Макар.УЛИТКИ так слово Макар. есть в old column файла 23.txt и оно должно быть заменено на макароны в partdata.txt из new column. как создать скрипт vba в отдельном файле 1.xlsx (скрипт должен быть запущен из xlsx, поскольку txt может содержать 10M строк), который может сопоставлять слова из столбца good_names файла partdata.txt со словами в транслит-файле 23.тхт, и если он нашел слово в столбце good_names файла partdata.txt, и оно есть в старом столбце файла транслита 23.txt, затем заменить это слово на новое из new column файла 23 txt в столбце good_names файла partdata.txt, как в моем пример . и на выходе ID ITEM_SUM BARCODE QUANTITY PRICE NDS10 NDS18 GOODS_NAME ID_C_REGCODES_CASH_VOUCHER DISCOUNTNAME DISCOUNTSUM 3972 43.99 1 43.99 4 0 2049750 МАКФА макароны УЛИТКИ 450г 3971 0 |
я попытался для начала решить проблему таким путем
в первом листе строки partdata во втором 23.txt https://dropmefiles.com/Fg2Cz Код:
Sub test3() rowCount = Sheet1.Range("A" & Rows.Count).End(xlUp).Row что это значит? почему не сработало |
Цитата:
Обратиться к конкретному листу активной рабочей книги можно через ActiveWorkbook.Sheets ("Название_листа"), или присвоить значение Sheet1: Set Sheet1=ActiveWorkbook.Sheets ("Название_листа") В конце не забудьте указать Set Sheet1=Nothing Кроме того, rowCount может принимать значения чуть больше 32000, в вашем случае лучше использовать тип long. |
a_axe, пожалуйста, можете показать как код должен выглядеть
|
r-studio, приложите файл excel с небольшим количеством данных. Если вас устроит результат в копии столбца А (например - в С), то vba тут вероятно не нужен, достаточно стандартных функций поискпоз + индекс.
|
a_axe, прилржил файлик скорее всего VBA нужен, если в txt файле( (C:/partdata.txt)), из которого я в er.xlsx скопировал данные будет 10M с экселем будут проблемы
|
Время: 23:12. |
Время: 23:12.
© OSzone.net 2001-