2010 - Сложная задача по поиску и вхождению

Ответить
 • Просмотры: 1
Аватара пользователя
a_axe

Re: 2010 - Сложная задача по поиску и вхождению

Сообщение a_axe »

Цитата blackeangel:



Поправте что не так?
2010 - Сложная задача по поиску и вхождению





Цитата blackeangel:



не знаю даже как описать то, что нужно сделать
2010 - Сложная задача по поиску и вхождению




Оно и есть - Вы не сформулировали задачу. Ровно отсюда и выплывают все проблемы. Да еще подтвердили, что алгоритм должен делать следующее (а он вероятно совершенно не должен это делать):


Цитата a_axe:



при условии что значение в ячейках "Наименование " также будет совпадать?
2010 - Сложная задача по поиску и вхождению




Вот например в Вашем коде графа Наименование вообще не задействована. Сопоставлять судя по всему нужно строку "Обозначения".

Заниматься проверкой Вашего кода не имея сформулированной задачи - не самое разумное предложение.



Для начала все-таки сформулируйте задачу, что должна сделать программа, а уже потом давайте разбираться с кодом.
Аватара пользователя
blackeangel

Re: 2010 - Сложная задача по поиску и вхождению

Сообщение blackeangel »

Цитата a_axe:



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



Специально для Вас чётко сформулированная задача: привязать все исполнения к основному,если таковое имеется без использования человека,или на крайний случай один клик(запуск макроса) в Эксель
Аватара пользователя
Iska

Re: 2010 - Сложная задача по поиску и вхождению

Сообщение Iska »

Цитата blackeangel:



Специально для Вас чётко сформулированная задача
2010 - Сложная задача по поиску и вхождению




a_axe, ну, вот, теперь и Вас посчитали Изображение.
Аватара пользователя
a_axe

Re: 2010 - Сложная задача по поиску и вхождению

Сообщение a_axe »

Цитата Iska:



ну, вот, теперь и Вас посчитали
2010 - Сложная задача по поиску и вхождению




...справка дана иностранцу с табурэткой)


Цитата blackeangel:



Специально для Вас чётко сформулированная задача
2010 - Сложная задача по поиску и вхождению




что все-таки должна делать программа я так и не понял, но раз Вы сами привели код, то из конструктивных предложений могу указать следующие независящие от алгоритма факты:



1. Не принципиально, но в коде фигурирует название столбца "ПредвАрхив", в примере "ПредвАрх", думаю Вы сами поправили и по факту у Вас одинаково.



2. Строчка If Cells(i, ncolumn2).Value Like Cells(i, ncolumn1).Value Then сравнивает значения ячеек столбца "Обозначение". Поскольку строки не совпадают полностью(например для указанной позиции "Провод" это будут МИЛБ.685614.503-02, МИЛБ.685614.503-03 и т.д.), условие соблюдаться не будет, пока строки не будут полностью одинаковы. Насколько я вижу, в файле таких совпадений не будет нигде.



3. В цикле у Вас идет проверка на совпадение ячеек в текущей строке столбцов "Обозначения" и "Карточки". Если не совпадают, больше никаких проверок этот участок кода не выполняет (в коде ниже - строки между двумя красными строками будут выполняться только если "Обозначения" четко равны "Карточкам".) Если условие выполняется (будем считать, что пункт 2 устранен), то идет проверка синей сточки кода. Если условие соблюдается (в коде оно подчеркнуто), то выполняется следующая строчка кода. Если не соблюдается, то выполняются дальнейшие проверки, в том числе - еще раз выполняется проверка If Cells(i + 1, ncolumn1).Value Like Cells(i, ncolumn1).Value (подчеркнуто второй раз). Это условие заведомо выполняться не будет (в коде это проверено четырьмя строчками выше, и если условие истинно, то в else мы в принципе не попадем). Вероятно, строчки End If не должны идти друг за другом.

Вообще этот блок лучше реализовать через select case.





Код:

Код: Выделить всё

Do While Cells(i, ncolumn1).Value  Empty

    If Cells(i, ncolumn2).Value Like Cells(i, ncolumn1).Value Then 
        If Cells(i + 1, ncolumn1).Value Like Cells(i, ncolumn1).Value Then 
             Cells(i + 1, ncolumn2).Value = Cells(i, ncolumn1).Value 
        Else
            If Cells(i, ncolumn3).Value Like Cells(i, ncolumn1).Value Then
                If Cells(i + 1, ncolumn1).Value Like Cells(i, ncolumn1).Value Then
                    Cells(i + 1, ncolumn3).Value = Cells(i, ncolumn1).Value
                End If
            End If
        End If
    End If
    i = i + 1
Ответить

Вернуться в «Microsoft Office (Word, Excel, Outlook и т.д.)»