Страницы: 1
RSS
ошибка в Replace
 
Добрый день, работаю только в 1с ,VBA шапочно.

Прошу помочь исправить доработанный под себя код поиска и замены.

выдает ошибку , не могу понять что исправить в

arrTemp(i, 1) = Replace(.Replace(arrTemp(i, 1)), lookAt = xlPart, "", pattern$, "")

Необходимо найденные значения из массива листа "список" удалить в строках включая все знаки после них, оставив остальной текст.
 
что на что нужно заменить?
и где это делать?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Добрый д, значения из листа список, найти в строках Лист2, и заменить на пусто "".

изначальное значение: колодки тормозные toyota E10 -> должно стать: колодки тормозные
Изменено: Абрам Мартынов - 03.10.2022 10:05:19
 
Код
Sub qq()
    Dim ar1, ar2
    Dim i&, j&, k&
    ar1 = Sheets("список").Range(Sheets("список").Cells(1, 1), Sheets("список").Cells(Sheets("список").Rows.Count, 1).End(xlUp)).Value
    ar2 = Sheets("Лист2").Range(Sheets("Лист2").Cells(1, 1), Sheets("Лист2").Cells(Sheets("Лист2").Rows.Count, 1).End(xlUp)).Value
    For i = 1 To UBound(ar2)
        For j = 1 To UBound(ar1)
            k = InStr(1, ar2(i, 1), " " & ar1(j, 1), vbTextCompare)
            If k > 1 Then
                ar2(i, 1) = Left(ar2(i, 1), k)
                Exit For
            End If
        Next
    Next
    Sheets("Лист2").Range("A1").Resize(UBound(ar2)).Value = ar2
End Sub
Изменено: RAN - 03.10.2022 11:49:09
 
Код
Sub Replacer()
  Dim a, r
  a = Worksheets("список").[a1].CurrentRegion
  For r = 1 To UBound(a)
    Worksheets("Лист2").Cells.Replace a(r, 1), "", xlPart
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Благодарю! от RAN, работает почти корректно, но всё равно почему то частично оставляет например,
стало  :                                                                                            Было:
Колодки тормозные   дисковые перед SUBARU LEGASY IV, OUTBКолодки тормозные дисковые перед SUBARU   LEGASY IV, OUTBACK (BM, BR), TRIBECA (B9)
стало  :
Смазка SUP
было:
Смазка SUPERFIT   для тормозной системы пакет 5мл
SUBARU есть в списке, добавил Application.SpellingOptions.IgnoreCaps = True - не помогло
ERFIT такого слова нет в списке, можете подсказать в чем дело? (нужно вырезать только целые слова из "список" и русский текст оставить желательно.

по регэксп вырезать инглиш - не варик .(тогда он вырезает весь и нужный английский текст)
 
Внес исправления, код заменил.
 
всё равно русские слова как то вырезает, пока не могу понять как работает, пытаюсь вникнуть.

стало :      Было:  
Смазка Смазка SUPERFIT для тормозной системы   пакет 5мл
хотя в списке SUPERFIT  нет
 
зато s есть
попробуйте так
Код
k = InStr(1, ar2(i, 1), " " & ar1(j, 1) & " ", vbTextCompare)
Изменено: RAN - 03.10.2022 13:55:11
 
Благодарю RAN, за уделенное время, почти всё корректно работает, остальное по мелочи автоматом очищу в виде поиск замена ручных забитий косяков юзеров.  

в личку можете черкнуть s бер, закину за уделенное время.


приложу файл, всё таки не всё вырезает, по какому принципу он оставляет, непонятно. код VBA я пока не понимаю, пробовал добавить в разных вариациях & "~," & "," чтобы удалить оставшиеся значения, не помогает. выделил красным
 
Кросс на Кибере
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Где тут MERCEDES?
И зачем столько metro? (кстати s, тоже 2)
Если хотите работать со списками, то создавайте их корректно, а не превращайте в помойку

По второй группе - макрос удаляет то, что нашел первым. Либо запускайте его несколько раз, либо уберите Exit For
И третье "(HYUNDAI" <>"HYUNDAI", "OPEL/" <> "OPEL"
Изменено: RAN - 03.10.2022 17:24:10
 
Цитата
написал:
  Кросс на Кибере  
да, там не отвечали, создал здесь и перешел сюда.
 
RAN, безсловно все списки будут редактироваться до состояния эталона (задвоение следствие переноса данных марка->модель). нужно было быстро решить вопрос, благодарю за помощь.
Изменено: Абрам Мартынов - 04.10.2022 07:14:46
Страницы: 1
Наверх