Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - сопоставление слов с транслитом и заменой используя vba

Ответить
Настройки темы
2010 - сопоставление слов с транслитом и заменой используя vba

Ветеран


Сообщения: 580
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: r-studio
Дата: 22-03-2019
Хочу уже закрыть тему с чисткой данных используя 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

Отправлено: 14:05, 18-10-2018

 

Ветеран


Сообщения: 580
Благодарности: 2

Профиль | Отправить PM | Цитировать


я попытался для начала решить проблему таким путем
в первом листе строки partdata
во втором 23.txt
https://dropmefiles.com/Fg2Cz
Код: Выделить весь код
Sub test3()
  Dim rowCount As Integer
  rowCount = Sheet1.Range("A" & rows.Count).End(xlUp).Row
  rowCount2 = Sheet2.Range("A" & rows.Count).End(xlUp).Row
  MsgBox rowCount
  MsgBox rowCount2
  For i = 2 To rowCount
    For j = 2 To rowCount2
      If Sheet1.Range("H" & i).Value = Sheet2.Range("A" & j).Value Then
        Sheet1.Range("H" & i).Value = Sheet2.Range("B" & j)
      End If
    Next j
  Next i
End Sub
но желтым подчеркнул
rowCount = Sheet1.Range("A" & Rows.Count).End(xlUp).Row

что это значит? почему не сработало

Отправлено: 12:59, 19-10-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


Цитата r-studio:
но желтым подчеркнул
rowCount = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
что это значит? »
Насколько я могу судить - значение Sheet1 в процедуре вы не определили, код не понимает, к чему он должен обратиться.
Обратиться к конкретному листу активной рабочей книги можно через ActiveWorkbook.Sheets ("Название_листа"), или присвоить значение Sheet1:
Set Sheet1=ActiveWorkbook.Sheets ("Название_листа")
В конце не забудьте указать Set Sheet1=Nothing
Кроме того, rowCount может принимать значения чуть больше 32000, в вашем случае лучше использовать тип long.

-------
[Форум Word и Excel] - [Как запустить Word, Excel и Outlook в безопасном режиме?] - [Как удалить шаблон Word Normal.dotm?]

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:12, 20-10-2018 | #3


Ветеран


Сообщения: 580
Благодарности: 2

Профиль | Отправить PM | Цитировать


a_axe, пожалуйста, можете показать как код должен выглядеть

Отправлено: 11:11, 21-10-2018 | #4


Динохромный


Contributor


Сообщения: 690
Благодарности: 317

Профиль | Отправить PM | Цитировать


r-studio, приложите файл excel с небольшим количеством данных. Если вас устроит результат в копии столбца А (например - в С), то vba тут вероятно не нужен, достаточно стандартных функций поискпоз + индекс.

-------
[Форум Word и Excel] - [Как запустить Word, Excel и Outlook в безопасном режиме?] - [Как удалить шаблон Word Normal.dotm?]


Отправлено: 15:54, 21-10-2018 | #5


Ветеран


Сообщения: 580
Благодарности: 2

Профиль | Отправить PM | Цитировать


a_axe, прилржил файлик скорее всего VBA нужен, если в txt файле( (C:/partdata.txt)), из которого я в er.xlsx скопировал данные будет 10M с экселем будут проблемы

Последний раз редактировалось r-studio, 22-03-2019 в 16:34.


Отправлено: 16:12, 21-10-2018 | #6



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - сопоставление слов с транслитом и заменой используя vba

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2010 - Извлечение ключевых сущностей используя VBA r-studio Microsoft Office (Word, Excel, Outlook и т.д.) 5 19-09-2018 14:53
2012 R2 - Запуск и работа Excel VBA используя службу Windows и Power Shell Mor940k Windows Server 2012/2012 R2 0 12-04-2016 12:26
2008 R2 - Сопоставление типов файлов и протоколов Almest Windows Server 2008/2008 R2 8 15-12-2014 12:03
CMD/BAT - Сопоставление серверов и IP EDIsaev Скриптовые языки администрирования Windows 7 23-07-2013 17:00
сопоставление alex11 Хочу все знать 4 21-03-2005 20:04




 
Переход