Excel VBA - возврат списка значений, не найденных в одном столбце

463
art.POMEGRANATE

Я хочу, чтобы Excel VBA, чтобы вернуться, в MessageBox строке все элементы, которые находятся в колонке А из листа Mastersheet, но не находятся в колонке А из листа DeliverySheet .

Имея много проблем с выяснением этого, вот что я получил так далеко:

Private Sub CommandButton5_Click()  Dim DeliveryName As Range Dim MasterName As Range Dim MasterSheet As Worksheet Dim DeliverySheet As Worksheet Dim valueToFind  Set MasterSheet = Sheets("Delivery Master List Drop") Set DeliveryName = Sheets("For Delivery").Range(Sheets("For Delivery").Cells("A:A")) Set MasterName = Sheets("Delivery Master List Drop").Range(Sheets("Delivery Master List Drop").Cells("A:A"))  For i = 3 To 3000 valueToFind = DeliveryName("i,1")  For Each MasterName In MasterSheet If Not MasterName.Cells = valueToFind Then MsgBox "The following name is not found in the Delivery Master List" & DeliveryName(i, 1).Value, vbExclamation End If Next MasterName Next i End Sub 

Желательно, чтобы окно сообщения возвращало все не найденные элементы (которые также не являются значениями ("")) в списке, который отображается после завершения макроса. Сейчас я просто пытаюсь заставить его хотя бы вернуть одно значение.

-1
Даже после правок я не уверен, что ты пытаешься сделать. Где вопрос? Это сайт вопросов и ответов, и хотя я понимаю, что у вас проблема, я не вижу вопроса. YetAnotherRandomUser 5 лет назад 1
Это было бы намного проще с помощью вспомогательной колонки. Вы помещаете формулу в один из листов, которая говорит что-то вроде `= IF (A1 = 'For Delivery'! A1,0,1)`, тогда вы можете просто посмотреть на этот столбец на 1 и вывести все, что вам нужно для этой строки. Вы даже можете скрыть столбец, чтобы пользователи не могли видеть ваш чек. HackSlash 5 лет назад 0

1 ответ на вопрос

0
Michal Rosa
Sub SearchForDeliveryItems()  Dim wksMaster As Worksheet, wksSearch As Worksheet Dim rngMaster As Range, rngSearch As Range  Set wksMaster = Sheets("Delivery Master List Drop") Set wksSearch = Sheets("For Delivery")  With wksMaster Set rngMaster = .Range("A1:A" & .Range("A1").SpecialCells(xlCellTypeLastCell).Row) End With  With wksSearch Set rngSearch = .Range("A1:A" & .Range("A1").SpecialCells(xlCellTypeLastCell).Row) End With  With rngMaster For Each cll In rngSearch Set c = .Find(cll.Value2, LookIn:=xlValues) If c Is Nothing Then MsgBox cll.Value2 & " not found in the Delivery Master List." End If Next End With  End Sub 
Рабочий код всегда хорош, но где-то здесь мы предпочитаем ответы, которые включают какое-то объяснение. Посмотрите вокруг и посмотрите на ответы с наибольшим количеством голосов - вы поймете, что я имею в виду. Scott 5 лет назад 0

Похожие вопросы