2015-07-14 3 views
-1

У меня есть два набора диапазонов данных. Один диапазон находится в Листе 1 (8000 строк, 6 столбцов), который является основным диапазоном, а другой диапазон - в Листе 2 (5000 строк, 6 столбцов). Как я могу отобразить другие 3000 строк на новом листе (лист 3), которые не указаны в Листе 2, но находятся в Листе 1?Поиск данных, которые нет

+1

У меня есть несколько идей - можете ли вы разместить некоторые данные примера? Являются ли данные на обоих листах одинаковыми данными? То есть Ли Sheet1 имеет те же заголовки, что и Sheet2? – BruceWayne

+0

Конечно, вот пример, который я бросил вместе. Да, все заголовки столбцов совпадают. Мастер перечисляет все данные. В части 1 перечислены только некоторые строки. Я хочу, чтобы часть 2 отображала недостающие строки, которые не входят в Часть 1, но находятся в Мастере. Скажем, столбцы: «Имя», «День рождения», «Возраст». Мастер перечислит 10 строк заполненных данных. В первой части будут перечислены только 4 из 10 строк, перечисленных в Мастере. Я хочу, чтобы Part 2 отображала недостающие 6 из 10 строк, которые НЕ входят в Часть 1. Я не знаю, как прикрепить этот файл сюда. – Megan

ответ

0

Я могу сделать это макросом, но прежде всего, дайте мне знать, будет ли это делать то, что вы ищете.

Вот примеры данных, которые я использовал, в трех листах.

Лист 1 называется "Master" состоит в следующем, начиная с A1:

Name   Birthday Month  Age 
Batman   January   35 
Superman  March    32 
Catwoman  April    37 
Joker   June    28 
Harley Quinn September   33 
Rorschach  July    35 
Dr. Manhattan August    41 
Aquaman   October   22 
Ms. Jupiter  October   23 
Penguin   July    39 

И в Лист2:

Name   Birthday Month  Age 
Batman   January   35 
Superman  March    32 
Catwoman  April    37 
Joker   June    28 
Harley Quinn September   33 
Rorschach  July    35 

Итак, как вы можете видеть, мы должны доктора Манхэттена на вниз для добавления в (пустой) лист3.

Быстрый способ проверить, что НЕ находится в листе 2, заключается в том, чтобы добавить вспомогательную колонку к вашему основному листу и просто посчитать количество раз, когда каждая запись отображается в Листе2. На основной листе введите эту формулу в D2 и скопируйте ее, =Countifs(Sheet2!$A:$A,A2,Sheet2!$B:$B,B2,Sheet2!$C:$C,C2).

Это оставит вас с количеством раз, что запись показывает в листе 2. Где вы видите «0», это означает, что вам нужно добавить эти записи в свой Лист3:

enter image description here

и там ты иди.

Примечание: Поскольку у вас огромное количество строк, вы, вероятно, получите чередующиеся 1 и 0. Для того, чтобы быстро определить, которые не были включены в Лист2, просто сортировать все данные по колонке D («с заголовками»):

enter image description here (Примечание: Я изначально выбран диапазон A1: D11, но так как я выбрал " имеет заголовки ", Excel оставляет видимый выбранный диапазон одной строкой. Нажмите« ОК », и все« 0 »отчеты находятся вверху, их можно добавить на ваш лист. 3.

Я могу сделать это макросом, но ., если бы вы любезно дайте мне знать, как это работает для вас первым Благодаря

Edit: Macro включена, пожалуйста, дайте мне знать, если вам нужны какие-либо ухищрений

!
Sub Find_Reports() 
    Dim lastRow As Long, lastCol As Integer, missingLastRow As Integer 
    ' Create variables for the master worksheet, the list wsht (which has SOME of the Master records), and missing WS which we will put the missing records 
    Dim masterWS As Worksheet, listWS As Worksheet, missingWS As Worksheet 
    Dim listWSName As String 
Dim ws as Worksheet 

Application.DisplayAlerts= false 
For each ws in Sheets 
    If ws.name = "Missing" then ws.delete 
Next ws 
Application.DisplayAlerts= True 

    Set masterWS = Sheets("Master List") ' Change this to whatever your Master List sheet is called 
    Set listWS = Sheets("Sheet2") ' same with Master, change this to whatever the second sheet (that has SOME of the data) is called 
    listWSName = listWS.Name 

    Sheets.Add.Name = "Missing" 
    Set missingWS = Sheets("Missing") 
    missingWS.Rows(1).Value = masterWS.Rows(1).Value 
    missingLastRow = 2 'Start on row 2 

    lastRow = masterWS.Cells(1, 1).End(xlDown).Row 'I am assuming you have NO gaps in your column A, if you do, uncomment and use the next line instead 
    'lastRow = masterWS.UsedRange.Rows.Count 

    lastCol = masterWS.Cells(1, 1).End(xlToRight).Column 

    Dim countCol As Integer 
    countCol = lastCol + 1 'We will add the COUNT formula to this column 
    masterWS.Cells(1, countCol).Value = "Times included in " & listWSName 
    With masterWS 
     .Range(.Cells(2, countCol), .Cells(lastRow, countCol)).FormulaR1C1 = "=COUNTIFS(" & listWSName & "!C[-3],RC[-3]," & listWSName & "!C[-2],RC[-2]," & listWSName & "!C[-1],RC[-1])" 
    End With 

    'Now, we would add the rows with a "0" next to it in Master WS to the new "Missing" WS 
    Dim i As Integer 
    With masterWS 
     For i = 2 To lastRow 
      If .Cells(i, countCol).Value = 0 Then 'If there is no record, add to the missing WS 
       missingWS.Range(missingWS.Cells(missingLastRow, 1), missingWS.Cells(missingLastRow, lastCol)).Value = _ 
        .Range(.Cells(i, 1), .Cells(i, lastCol)).Value 
       missingLastRow = missingLastRow + 1 
      End If 
     Next i 
    End With 


    End Sub 
+0

Это работает! Спасибо! – Megan

+0

Я обновил код VBA. Пожалуйста, дайте мне знать, если что-то не работает или у вас есть какие-либо вопросы! (Если это работает, вы любезно отметите как ответ? Спасибо!) – BruceWayne

+0

Он добавил новый лист просто отлично, но он дал мне ошибку «переполнения» RunTime error 6 и указывает на код: lastRow = masterWS.UsedRange. Ряды.Подсчитайте , и у меня нет пробелов в моей колонке A – Megan

Смежные вопросы