Avatar billede gladhund Nybegynder
08. december 2008 - 13:25 Der er 24 kommentarer og
1 løsning

Gennemse række og kolonne og slet dem med "x"

Hej,

Jeg har brug for lidt kode, der gennemser hhv. en række og en kolonne, og hvis der er sat et "x" i en celle, skal rækken og/eller kolonne slettes.

På forhånd tak :)
Avatar billede gladhund Nybegynder
08. december 2008 - 13:51 #1
Jeg skal vist uddybe lidt: Når en række gennemses, og der findes en celle med "x", så den kolonne cellen er i slettes. Når en kolonne gennemses, og der findes en celle med "x", skal den række cellen er i slettes.
Avatar billede jkrons Professor
08. december 2008 - 15:37 #2
Altså hvis du har

---A---B---C---d
1--b-------X---0
2--C---C---F----
3--X---D---P---Y
4--X---F---Y---Z

så skal kolonne aog c samt række 1, 3 og 4 slettes?
Avatar billede gladhund Nybegynder
08. december 2008 - 20:06 #3
Hej jkrons. Kolonne C skal slettes fordi det står et x i C1. Og række 3 og 4 skal slettes fordi der står et X i A3 og A4 :). Række 1 skal IKKE slettes, og kolonne A skal IKKE slettes.
Avatar billede gladhund Nybegynder
08. december 2008 - 20:10 #4
I dit eksempel gennemses der så kun fra B1 til fx XX1 og slette kolonner der hvor der er x'er. OG der gennemses fra A2 til fx A1000 og slettes rækker der hvor der er x'er. På den måde undgås, at kontrolkolonnen og -rækken slettes (A og 1).
Avatar billede jkrons Professor
08. december 2008 - 22:37 #5
Så er jeg ikke med. Der står jo også X i A-kolonnen,og i række 1, så hvorfor skal de ikke slettes?
Avatar billede gladhund Nybegynder
09. december 2008 - 08:12 #6
Jeg har ikke forklaret mig ordentligt så, det er jeg ked af :(. Der er et dynamisk område under række 1 og efter kolonne A, hvor der indsættes nye rækker og kolonner. Disse skal så kunne slettes igen, ved at man i række 1 og kolonne A sætter et x, og trykker på en knap. Så søger koden efter x'er i kolonne A, og sletter rækkerne under række 1, og tilsvarende søger koden efter x'er i række 1, og sletter kolonner efter kolonne A. Er det bedre forklaret?
Avatar billede gladhund Nybegynder
09. december 2008 - 20:39 #7
Det kunne være noget i stil med dette!: http://www.eksperten.dk/spm/548572
Avatar billede jkrons Professor
10. december 2008 - 00:23 #8
Prøv denne (men i en kopi først :-))

Sub FindXogSlet()
    'Sletter rækker vor første kolonne indeholder "x" og
    'kolonner, hvor første række indeholder "x"

    Dim nr As Long
    Dim nc As String
    Dim ncn As Integer
       
    Application.ScreenUpdating = False
   
    nc = Sheets(1).Range("iv1").End(xlToLeft).Address
    nc = Mid(nc, 2, Len(nc) - InStrRev(nc, "$"))
    ncn = Sheets(1).Range("iv1").End(xlToLeft).Column
    nr = Sheets(1).Range("a65536").End(xlUp).Row
   
    For i = nr To 2 Step -1
        If UCase(Range("a" & i)) = "X" Then
            Range("a" & i).EntireRow.Delete shift:=xlUp
        End If
    Next i
   
    For h = ncn To 2 Step -1
        If UCase(Cells(1, h).Value) = "X" Then
            Cells(1, h).EntireColumn.Delete shift:=xlRight
        End If
    Next h
   
    Application.ScreenUpdating = True
   
End Sub
Avatar billede jkrons Professor
10. december 2008 - 00:26 #9
Du kan i øvrigt godt slette

Dim nc As String

og de to linjer, der begynder med nc =

Jeg endte med ikke at bruge de to variabler alligevel i den færdige løsning.
Avatar billede gladhund Nybegynder
10. december 2008 - 08:09 #10
Godmorgen :). Tak for koden, jeg prøver at rode med den og vender tilbage!
Avatar billede gladhund Nybegynder
10. december 2008 - 08:30 #11
Jeg skal køre koden i flere sheets (nu 6). Skal jeg bare lave 6 versioner af din kode og indsætte navnene på de respektive sheets i stedet for "1" (Sheets(1)?
Avatar billede gladhund Nybegynder
10. december 2008 - 13:01 #12
Æv, det virker ikke... Jeg har lavet 6 makroer, fx FindxogsletArk1 og så rettet sat arknavnet i stedet for tallet ved Sheets(1). Det er nok ikke den rigtige måde at gøre det på så...?
Avatar billede gladhund Nybegynder
10. december 2008 - 13:03 #13
Kan det være fordi den leder efter value = "x", og mine celler faktisk har en henvisning til en celle i et andet ark: "+Simulering!C62"?
Avatar billede jkrons Professor
10. december 2008 - 18:37 #14
Ja, det kan det meget vel være. Jeg prøver lige at kigge på det.
Avatar billede jkrons Professor
10. december 2008 - 18:40 #15
Men det virker nu fint hos mig, også når x hentes fra et andet ark via en formel. Har du evt. mulighed for at sende arket?
Avatar billede gladhund Nybegynder
10. december 2008 - 19:38 #16
Nå for søren. Ja, selvfølgelig kan jeg sende det - jeg er bare glad for at du vil hjælpe :). Den skulle ligge i din mailbox nu.
Avatar billede jkrons Professor
10. december 2008 - 22:53 #17
Problemet ligger i disse linier i din kode:

If UCase(Range("a" & i)) = "X" Then
If UCase(Cells(1, h).Value) = "X" Then


Du har rettet til et lille "x" i stedet for mit store. Men UCASe af et x er altid stort X. Prøv at ret til stort X, aså skal du bare "se løjer" :-)
Avatar billede jkrons Professor
10. december 2008 - 22:53 #18
I øvrigt kan man godt tilrette makroen, så den kører alle 6 ark igennem i "et hug", hvis det er nemmere.
Avatar billede gladhund Nybegynder
10. december 2008 - 23:05 #19
Ksn et lille x virkelig gøre det?! Jeg prøver med stort X så. Hvordan skal jeg rette den til, hvis det skal køre i eet hug?
Avatar billede gladhund Nybegynder
10. december 2008 - 23:11 #20
Det virker jo fantastisk :). Der er velfortjente point når du svarer - og tak her fra.
Avatar billede jkrons Professor
10. december 2008 - 23:16 #21
Et svar - og velbekomme :-)
Avatar billede jkrons Professor
10. december 2008 - 23:29 #22
Jeg må hellere lige trække i land omkring at få makroen til at køre i alle ark. Den holder desværre ikke alligevel, da arkene jo ikke har samme struktur.
Avatar billede gladhund Nybegynder
11. december 2008 - 13:47 #23
Helt fint. Det er også ok som det er nu :)
Avatar billede gladhund Nybegynder
11. december 2008 - 14:18 #24
Der var jeg lige en tand for hurtig, jkrons. Det er nødvendigt at jeg med tryk på een knap kan udføre alle makroerne, og det går galt for mig. Den udfører kun i arket Simulering... Kan det lade sig gøre at få det til at virke...? Da jeg prøvede det af, kørte jeg makroerne en ad gangen, og der virkede de "fantastisk" :)
Avatar billede jkrons Professor
11. december 2008 - 22:11 #25
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