-1

Связанный вопрос здесь

У меня есть 2 столбца разной длины.

В приведенном ниже цикле Do While

Do While main.Offset(i, 0).Value <> "" Or main.Offset(i, 1).Value <> ""

используя OR, он генерирует тонны нерелевантных данных (например, не совпадает имя / тег в sheet2), поэтому я изменяю на AND, он работает отлично, только если оба столбца заканчиваются в одной строке. (хотя есть дубликаты, но они не были моей главной заботой сейчас)

Do While main.Offset(i, 0).Value <> "" And main.Offset(i, 1).Value <> ""

Но используя логический оператор «И», он останавливается на полпути (если один столбец короче другого. Может ли какой-нибудь эксперт пролить свет на то, как получить данные, даже если один столбец короче другого?

Я попытался добавить скобки между обоими утверждениями, поместить один столбец на другой лист или создать вложенный цикл do while, данные по-прежнему остаются прежними. Я также попробовал приведенный ниже код, но он дает все не относящиеся к делу данные, такие как «Кен, лето, Венди» в sheet2.

Do While (main.Offset(i, 0).Value <> "" And main.Offset(i, 1).Value <> "") Or (main.Offset(i, 0).Value <> "" And main.Offset(i, 1).Value = "")

поэтому мне было интересно, что я мог бы использовать для замены оператора And и дает мне правильные результаты?

ах Вот Xsheet, Sheet1, Sheet2.
Я не могу опубликовать более двух фотографий, поэтому я поместил их в одну. Как показано на рисунке выше, Belle в Xsheet, а также активный случай. Таким образом, 3355 должен быть в Sheet2. Еще один недостаток, где есть дубликаты 4987.

*Добавлен последний скриншот

Я новичок в программировании, я прошу прощения, если я делаю ненужную ошибку. Спасибо за любой совет.

1 ответ1

0

Я думаю, ваш цикл пока не соответствует вашим потребностям - неважно, с OR или AND . Как я понимаю, вы можете обрабатывать два столбца в XSheet один за другим. Для меня, кажется, данные в столбцах A и B являются независимыми.

Итак, сначала вы проверяете, есть ли имена в столбце E Листа1, затем копируете данные в Лист2. После этого вы проверяете, есть ли описания в столбце F Листа 1, а затем копируете данные.

Но прежде чем вставлять данные, найденные в столбце "описание", вы должны проверить, скопировали ли вы эти строки. Поэтому, если вы получили удар по desc, вы берете "код" столбца A и проверяете, есть ли он уже в Sheet2. Если это так, вы ничего не делаете, в противном случае вы копируете данные.

И, конечно, вы всегда должны проверять, является ли ваш удар "активным".

РЕДАКТИРОВАТЬ: сам цикл do-while является правильным. Но условие с AND или OR не обязательно. Таким образом, упомянутые выше проверки являются

Do While main.Offset(i, 0).Value <> ""

для столбца D соотв. колонка Е.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .