Цитата Iska:
ну, вот, теперь и Вас посчитали »
|
...справка дана иностранцу с табурэткой)
Цитата blackeangel:
Специально для Вас чётко сформулированная задача »
|
что все-таки должна делать программа я так и не понял, но раз Вы сами привели код, то из конструктивных предложений могу указать следующие
независящие от алгоритма факты:
1. Не принципиально, но в коде фигурирует название столбца "ПредвАрхив", в примере "ПредвАрх", думаю Вы сами поправили и по факту у Вас одинаково.
2. Строчка
If Cells(i, ncolumn2).Value Like Cells(i, ncolumn1).Value Then сравнивает значения ячеек столбца "Обозначение". Поскольку строки не совпадают полностью(например для указанной позиции "Провод" это будут МИЛБ.685614.503-0
2, МИЛБ.685614.503-0
3 и т.д.), условие соблюдаться не будет, пока строки не будут полностью одинаковы. Насколько я вижу, в файле таких совпадений не будет нигде.
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