Just nu i M3-nätverket
Gå till innehåll

Hitta unika värden från 2 kolumner


--webben--

Rekommendera Poster

Hej!

Jag har fått ett litet problem med ett ett script för excel(2003).

Jag har 2 kolumner, c:a 40.000 rader vardera som ska jämföras.

Att köra koder i cellerna tar för mycket kraft så det måste (tror jag) bli ett VBA.

Jag har hittat ett par alternativ men den här är den enda som jag fått att fungera med normal datakraft.

 

 Option Explicit

Sub Jamfora_Kolumndata_1()

  '© 2003 Alla rättigheter XL-Dennis

  Dim rnKalla As Range, rnJamfora As Range, rnCell As Range, rnHitta As Range



  Application.ScreenUpdating = False

  With ActiveSheet

     Set rnKalla = .Range(.Range("A2"), .Range("A65536").End(xlUp))

     Set rnJamfora = .Range(.Range("B2"), .Range("B65536").End(xlUp))

  End With

  For Each rnCell In rnKalla

     Set rnHitta = rnJamfora.Find(What:=rnCell, LookIn:=xlValues, Lookat:=xlWhole)

     If Not rnHitta Is Nothing Then rnCell.Offset(0, 2) = rnHitta.Value

  Next rnCell

  Application.ScreenUpdating = True

End Sub

 

Här får jag ut värden som finns även i den andra kolumnen. (oavsett vilken rad)

 

Problemet:

Jag vill vända på det och få ut dom värdena som INTE finns i andra kolumnen.

 

Tacksam för hjälp, det skulle spara mycket tid...

Länk till kommentar
Dela på andra webbplatser

Unika värden från två kolumner?

Du menar att du har i stil med

A B

B C

D E

och du vill då få ut de värden i vänstra kolumnen som ej finns i högra, dvs A och D?

Fullt möjligt med formler + ett verktyg.

En enkel ANTAL.OM som räknar antalet förekomster ett givet värde i endera kolumnen, kopierat utmed din tabell.

Applicera ett autofilter, sortera ut alla med antal större än noll. Markera, radera. Ta bort filtret. Klart.

Eller sortera ut just de med nollvärde och kopiera dessa till annan plats för vidare bearbetning.

 

En snabb formel, ett enkelt verktyg.

Länk till kommentar
Dela på andra webbplatser

Att ta bort Not ur If-satsen borde fungera.

 

Hälsningar

/Johan

Tack, men det fungerar tyvärr inte.

Jag har försökt med Else If och en massa andra varianter utan att lyckas.

 

Unika värden från två kolumner?

Du menar att du har i stil med

A B

B C

D E

och du vill då få ut de värden i vänstra kolumnen som ej finns i högra, dvs A och D?

Fullt möjligt med formler + ett verktyg.

En enkel ANTAL.OM som räknar antalet förekomster ett givet värde i endera kolumnen, kopierat utmed din tabell.

Applicera ett autofilter, sortera ut alla med antal större än noll. Markera, radera. Ta bort filtret. Klart.

Eller sortera ut just de med nollvärde och kopiera dessa till annan plats för vidare bearbetning.

 

En snabb formel, ett enkelt verktyg.

Tack till dig också!

Du har uppfattat helt rätt i vad jag vill få ut.

Förutom att jag vill få ut C och E från andra kolumnen också i en separat kolumn.

Där faller (vad jag kan förstå) alternativet att ta bort rader som inte platsar.

Hade det inte varit så många rader så hade det gått utmärkt att köra koderna med en sak i taget. Först leta upp dubbletterna, sen få ut dom som inte är dubbletter och sist ett script för att lägga resultaten i följd uppifrån.

Då har jag inte nämnt att det måste till ett förberedande script som rensar i listan (tar bort mellanslag m.m.)

Detta har jag kört upp till 10.000 rader och det fungerar skapligt.

fler rader skapar problem.

Jag är ute efter att

1. Klistra in data

2. Minimera antalet beräkningskolumner.

3. Trycka på en knapp för att få ett färdigt resultat senast efter kafferasten.

Länk till kommentar
Dela på andra webbplatser

Följande (något lätt modifierade) kod fungerar åtminstone för mig ...

For Each rnCell In rnKalla
Set rnHitta = rnJamfora.Find(What:=rnCell, LookIn:=xlValues, Lookat:=xlWhole)
If rnHitta Is Nothing Then rnCell.Offset(0, 2) = rnCell.Value
Next rnCell

 

Hälsningar

/Johan

Länk till kommentar
Dela på andra webbplatser

Följande (något lätt modifierade) kod fungerar åtminstone för mig ...

For Each rnCell In rnKalla
Set rnHitta = rnJamfora.Find(What:=rnCell, LookIn:=xlValues, Lookat:=xlWhole)
If rnHitta Is Nothing Then rnCell.Offset(0, 2) = rnCell.Value
Next rnCell

 

Hälsningar

/Johan

Helt otroligt, nu fungerade det perfekt när jag klippte och klistrade!

TACKAR!

Detta minskar filstorleken betydligt!

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...