Ordinamento automatico di Excel e dati corrispondenti


0

Sto cercando di utilizzare una formula per trovare corrispondenze e ordinare colonne in base a dati corrispondenti (numeri). I gruppi sono piuttosto grandi (32.000 righe) di numeri.

Posso ordinare i dati e fare in modo che una formula mi dica se esiste una corrispondenza, ma devo ordinare ciascuna colonna singolarmente e quindi devo regolare ogni cella che non corrisponde, spostandole verso l'alto o verso il basso per abbinare la cella adiacente.

È possibile avere una formula per ordinare i dati e spostare effettivamente le celle in modo che le due celle vengano visualizzate allo stesso modo? e se non c'è nulla da abbinare o visualizza solo uno spazio vuoto o anche meglio, la differenza nella SOMMA delle due celle?

dati di esempio


Sei disposto a scrivere una macro? Le macro si basano su VBA (Visual Basic, Applications Edition) e possono praticamente essere scritte per fare qualsiasi cosa con sufficiente sforzo.
cybernard,

Hai provato VLOOKUP? = VLOOKUP (B2, A: A, 1) Avresti bisogno di alcune colonne extra, ma ti dirà se il valore viene trovato o inserisci un # N / A nella casella.
cybernard,

ho provato entrambi ma non ho abbastanza conoscenze per far funzionare correttamente la macro e non riesco a capire come ottenere VLOOKUP per ordinare effettivamente i dati e sostituire B con la differenza tra A e C ma allora voglio che la formula inserisca uno spazio in cui i dati non sono stati trovati in C?
Tanya,

Selection.Insert Shift: = XlDown, CopyOrigin: xlFormatFromLeftOrAbove che sposta una riga verso il basso, devi prima definire una selezione. VLOOKUP non ordina, devi preordinare.
cybernard,

Risposte:


1

Ecco una macro che ho scritto che fa quello che vuoi. Presuppone già due elenchi ordinati. Modifica per adattarlo alle tue colonne, elimina ciò che non ti serve e, eventualmente, aggiungi una funzione di ordinamento all'inizio. Godere!

Sub compareCheckNumbers()

'Macro1 Macro

"confronta i numeri di controllo, quindi elimina se la riga corrisponde

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.