Excel автоматическая сортировка и сопоставление данных

0

Я пытаюсь использовать формулу для поиска совпадений и сортировки столбцов на основе сопоставленных данных (чисел). Группы довольно большие (32 000 строк) чисел.

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

Можно ли с помощью формулы отсортировать данные и фактически переместить ячейки, чтобы они совпали, чтобы две ячейки отображали одинаковые данные? и если нет ничего, чтобы соответствовать этому, или просто показывает пустое или даже лучше, разница в сумме двух ячеек?

sample data

Tanya
источник
Готовы ли вы написать макрос? Макросы основаны на VBA (Visual Basic для приложений) и могут быть написаны, чтобы делать что-либо с достаточными усилиями.
cybernard
Вы пробовали VLOOKUP? = VLOOKUP (B2, A: A, 1) Вам потребуются дополнительные столбцы, но он сообщит вам, найдено ли значение или поставит # N / A в поле.
cybernard
Я пробовал оба, но у меня просто недостаточно знаний, чтобы заставить макрос работать должным образом, и я не могу понять, как заставить VLOOKUP фактически отсортировать данные и заменить B на разницу между A & amp; C, но тогда я хочу, чтобы формула для вставки пробела, где данные не найдены в C?
Tanya
Selection.Insert Shift: = XlDown, CopyOrigin: xlFormatFromLeftOrAbove, который переместит строку вниз, сначала нужно определить выделение. VLOOKUP не сортирует, вы должны предварительно сортировать.
cybernard

Ответы:

1

Вот макрос, который я написал, который делает то, что вы хотите. Это уже предполагает два отсортированных списка. Изменить, чтобы соответствовать вашим столбцам, удалить то, что вам не нужно, и, возможно, добавить функцию сортировки в начале. Наслаждайтесь!

Sub compareCheckNumbers()

Макро1 Макро

'сравнить контрольные номера, а затем удалить, если строка совпадает

rowNum = 3
Do
    If (Range("C" & rowNum).Value > Range("L" & rowNum).Value) Then
        'shift down first set
        Range("A" & rowNum & ":G" & rowNum).Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    ElseIf (Range("C" & rowNum).Value < Range("L" & rowNum).Value) Then
        'else shift down second set
        Range("J" & rowNum & ":P" & rowNum).Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    ElseIf (Range("C" & rowNum).Value = Range("L" & rowNum).Value And Range("D" & rowNum).Value = Range("M" & rowNum).Value And Range("F" & rowNum).Value = Range("O" & rowNum).Value) Then
        'delete outstanding data if matching
        Range("A" & rowNum & ":G" & rowNum).Select
        Selection.ClearContents
    End If
    rowNum = rowNum + 1
Loop While (Range("C" & rowNum).Value <> "")

End Sub

gns100
источник