Avatar billede koden Novice
05. november 2007 - 08:47 Der er 20 kommentarer og
1 løsning

sammenlign indhold i 2 kolonner og giv resultat i 3 kolonne

Jeg har 2 kolonner med en masse server navne.
Den 1 kolonne har 500 navne.
Den anden har 300 navne.

navnene i den 2 kolonne er også i den 1 kolonne.

De 200 der ikke er i 2 kolonne men i 1 kolonne, skal jeg hve vist i en 3. kolonne.

Hvordan gør man lige det?
Avatar billede luffeladefoged Praktikant
05. november 2007 - 09:41 #1
I C2:
=IF(ISNA(VLOOKUP(A2;B2:B301;1;FALSE));A2;"")
og kopiere 500 linjer derned af.
Du kan eventuelt smide et autofilter på bagefter for at få dem samlet eller sortere efter kolonne C

Hilsen Luffe
Avatar billede luffeladefoged Praktikant
05. november 2007 - 10:12 #2
Skal jo nok lige nogle $-tegn på:
=IF(ISNA(VLOOKUP(A2;$B$2:$B$301;1;FALSE));A2;"")
/ Luffe
Avatar billede koden Novice
05. november 2007 - 14:33 #3
hmm.. jeg synes ikke jeg helt kan få det til at virke selvom jeg tilpasser til mit. men det er nok fordi det ikke helt var det jeg skulle :-)

Så jeg starter lige forfra :-))

jeg har en kolonne C med 515 servernavne
jeg har en anden kolonne E hvor der faktisk er 511 servernavne.
Jeg kan modsat før ikke være sikker på at de 511 er blandt de 515.


det jeg skal finde ud af er hvilke navne der ikke er tilstede i begge kolonner og så have de navne vist i en ny kolonne...

Fik du den? :-)
Avatar billede luffeladefoged Praktikant
05. november 2007 - 15:08 #4
Hvis man skal følge ovenstående løsning med en formel i en ny kolonne, kan du gøre to ting, idet der vil forekomme rækker med eventuelt to servernavne:
1) Have det i to kolonner:
- i F2: =IF(ISNA(VLOOKUP(C2;$E$2:$E$512;1;FALSE));C2;"") og kopiere ned til F516
- i G2: =IF(ISNA(VLOOKUP(E2;$C$2:$C$516;1;FALSE));E2;"") og kopiere ned til G512
2 Kombinere servernavne i en celle:
- i H2: =IF(ISNA(VLOOKUP(C2;$E$2:$E$512;1;FALSE));C2;"")&"  "&IF(ISNA(VLOOKUP(E2;$C$2:$C$516;1;FALSE));E2;"")
- ved denne må du lige udfylde E513 til E5516 med gyldige servernavne fra kolonne C, således at listerne bliver lige lange.

Den skulle virke både med tal og bogstaver ... ved ikke lige hvordan dine servernavne ser ud.
Jeg går ud fra at de 515 og de 511 navne individuelt er forskellige.

Håber jeg fik den :-)

/ Luffe
Avatar billede koden Novice
05. november 2007 - 15:18 #5
ja de er forskellige.
Sad lige og prøvede manuelt, men der ligger mange som er i den ene kolonne og ikke i den anden.

Jeg kan måske forsimple det nu...
Egentlig skal jeg vide hvilke servernavne der ikke går igen i begge kolonner OG have dem listet så jeg kan se hvilken kolonne de er i.
men det er måske det formel gør?
Avatar billede koden Novice
05. november 2007 - 15:24 #6
så hvordan de navne listes som kun eksisterer en gang, er sådan set lige meget.
bare jeg ved hvilken kolonne de kommer fra :-)
Avatar billede luffeladefoged Praktikant
05. november 2007 - 15:28 #7
Så ville jeg bruge nr.1) hvor du har løsningerne i to kolonner - den er lettest at arbejde videre med. Col.F indhold af 515 som ikke er i 511. Col.G indhold af 511 som ikke er i 515.
Smid eventuelt et autofilter på og vælg "non-blanks" for de to kolonner individuelt.

Din sidste kommentar giver mig ikke anledning til at lave om på formlen, så jeg - tror - jeg har forstået korrekt.
/ Luffe
Avatar billede koden Novice
05. november 2007 - 16:37 #8
jeg har prøvet med nr. 1

kolonne C har jeg de 515 navne og i E de 511 navne

I G2 har jeg indsat:  =IF(ISNA(VLOOKUP(E2;$C$2:$C$516;1;FALSE));E2;"")
I F2 har jeg indsat:  =IF(ISNA(VLOOKUP(C2;$E$2:$E$512;1;FALSE));C2;"")

det giver blot blanke G2 og F2 felter?
Avatar billede koden Novice
05. november 2007 - 16:38 #9
mine server navne er ikke ens. de starter næsten alle på de samme 3 bogstaver, men slutter forskelligt...
Avatar billede luffeladefoged Praktikant
05. november 2007 - 16:44 #10
Måske et dumt spørgsmål, men du har kopieret formlerne derned af, ikke? Ned til hhv.F516 og G512.
Avatar billede supertekst Ekspert
05. november 2007 - 17:38 #11
VBA-forslag:

Dim antalRæk
Sub sammenligning()                      'Startes her..............
    ActiveWorkbook.Sheets(1).Activate
   
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row

Rem Test kolonne C(3) - hvilke værdier findes IKKE i E(5) - diff i kolonne D(4)
    testKolonne 3, 5, 4
   
Rem Test kolonne E(5) - hvilke værdier findes IKKE i C(3) - diff i kolonne F(6)
    testKolonne 5, 3, 6
End Sub
Private Sub testKolonne(k1, k2, k3)
Dim celle
    For ræk = 1 To antalRæk
        celle = Cells(ræk, k1)
        If findVærdi(celle, k2) = False Then
            Cells(ræk, k3) = celle
        End If
    Next ræk
End Sub
Private Function findVærdi(værdi, kolonne)
    With ActiveSheet.Range(Cells(1, kolonne), Cells(antalRæk, kolonne))
        Set c = .Find(værdi, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            findVærdi = True
        Else
            findVærdi = False
        End If
    End With
End Function
Avatar billede koden Novice
05. november 2007 - 21:36 #12
UPS... ikke noget dumt spørgsmål når det er mig.. :-)
Jo det har jeg selvfølgelig...har nok haft lidt for travlt til at tænke..
Kan jeg jo godt se nu...
Tak og send forresten lige et svar...
Avatar billede luffeladefoged Praktikant
05. november 2007 - 21:59 #13
Herligt du fik det til at virke. Vend tilbage om der er noget der driller.
Tak for point.
// Luffe
Avatar billede koden Novice
06. november 2007 - 08:01 #14
det virker fint. Dog viser G513 til G517 tallet 0.
har prøvet at tyde din formel men kan ikke lige greje hvorfor.

Hvis du kan oversætte i sprog hvad din formel gør, så ville jeg være glad :-)
har forhøjet point lidt. send bare svar...
Avatar billede luffeladefoged Praktikant
06. november 2007 - 09:09 #15
Jeg sender et svar.

G kolonnen skal kun kopieres til G512, F skal kopieres ned til F516, længere nede er der ikke flere værdier at teste. G kolonnen tester på servernavne i col.E og de slutter i E512, og således skal testen slutte i G512.

=IF(ISNA(VLOOKUP(E2;$C$2:$C$516;1;FALSE));E2;"")
- lookup formlen tester om servernavnet i E2 er indeholdt i C2:C516
- hvis dette ikke er tilfældet (hvilket er det vi leder efter) vil lookup formlen returnere et N/A og formlen isna vil dermed være sand.
- if formlen skal således hvis isna er sand returnere servernavnet i E2 og hvis falsk returnere en blank

Det kan nogengange give mening at decikere en formel step by step:
menu - tools - formula auditing - evaluate formula; hvor man kan se resultaterne i formlen som den regner sig fremad.

// Luffe
Avatar billede koden Novice
06. november 2007 - 09:28 #16
takker...meget rart at vide hvad det er den gør, så man kan blive bedre :-)
Avatar billede koden Novice
06. november 2007 - 09:33 #17
jeg har ændret F og G til C og D
jeg har indsat =COUNTA(D3:D519)-COUNTBLANK(D3:D519)under D kolonne.
men den tæller kun 52 selvom der er over 60 felter med noget i???
det samme med de 3 andre kolonner. tallet er forkert...

ja nu skal jeg nok stoppe. Ellers bliver det jo et helt kursus :-)
Avatar billede luffeladefoged Praktikant
06. november 2007 - 09:56 #18
counta tæller alle "ikke-tomme", tal, bogstaver og også formler der returnerer "", som din if formel.
countblank tæller alle blanke både helt tomme celler, men også formler der returnerer "", som din if formel.
Så formlen er som udgangspunkt korrekt formuleret, men som før skulle G jo kun ned til G512 og det vil sige nu ned til D512 (tror først dine data nu begynder i row 3, så ned til D513, da).
Hvis du får en sådan fejl, så prøv at dele formlen op:
=counta(D3:D519) giver sikkert 511; hvilket også =counta(D3:D513) vil give
derimod:
=countblank(D3:D519) giver sikkert 459; hvorimod den korrekte =countblank(D3:D513) vil give 453; således at den samlede formel vil give 58.
Du må lige rette til med de helt præcise row antal - måske derfor jeg får 58 og ikke 60.

Ingen fare med yderligere spørgsmål overhovedet - sålænge jeg kan følge med :-) - ellers kan man jo altid pynte lidt ved at forhøje point som du har gjort, eller give karma for god behandling. Det eneste problemet kan vel være at for mange spørgsmål og svar i en tråd bliver indviklet at overskue for andre brugere.

Hilsen Luffe
Avatar billede luffeladefoged Praktikant
06. november 2007 - 10:14 #19
Der findes ikke lige en count formel til dit formål, hvis du ikke som indikeret i ovenstående skal rette antal rækker individuelt, så skulle den funke.

Alternativt må du konstruere en anden formel, som f.eks.:
{=SUM((LEN(D3:D519)>0)*1)}
den burde kunne tage til 519 i alle tilfælde.
Den tager alle celler som har en længde over 1 og returnerer true, som den ganger med 1, så dette bliver et et-tal og summerer disse et-taler. Formlen er en array formel, så den skal entres med <ctrl><shift><enter>.

// Luffe
Avatar billede koden Novice
06. november 2007 - 11:00 #20
jeg talte dem manuelt, da jeg ikke lige forstod den med <ctrl><shift><enter>. :-))
tak for din fine hjælp
Avatar billede luffeladefoged Praktikant
06. november 2007 - 12:08 #21
<ctrl><shift><enter> bruges ved en matrix formel - en formel der skal regne på alle celler individuelt i et array - det er dem der så giver { } udenom formlen.
Men din kombinerede counta minus countblank formel burde nu også virke, hvis det rette område er angivet i formlen.

Tak for point

/ Luffe
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester