Avatar billede Mr_Vikings Nybegynder
13. februar 2012 - 10:11 Der er 5 kommentarer og
1 løsning

slette række i excel

Hej Eksperter,

Jeg har et ark med bl.a. indeholdende beløb og ID. Jeg vil gerne lavet et lille program der sletter en given linje hvis beløbet og ID'et er ens på linjen ovenover.

Eksempel:

1    Text          beløb          ID 
2    XXXX          123            456
3    XXXX          123            456

Nu vil jeg gerne slette linje 3 og efterfølgende gå videre til næste linje.

Er der en af jer som har en ide til en løsning?

pft
Avatar billede H_Klein Novice
14. februar 2012 - 17:43 #1
Hejsa,

Herunder en forholdsvis enkel løsning.

Ved dog ikke om der skal tages en form for hensyn til teksten i kolonne 1 og/eller om det er den øverste eller nederste linie der skal gemmes, men det kan du jo lige vende tilbage med...

Sub slet_rækker()

    Dim Bel As Long
    Dim ID As Long
    Dim RK As Long
    Dim RK1 As Long
   
    RK = 2
    RK1 = RK + 1
    Do
    Bel = Cells(RK, 2)
    ID = Cells(RK, 3)
    If Cells(RK1, 2) = Bel And Cells(RK1, 3) = ID Then
    Cells(RK, 1).Select
    Selection.EntireRow.Delete
    Else
    RK = RK + 1
    RK1 = RK + 1
    End If
    Loop Until Cells(RK, 1) = ""
End Sub

Med venlig hilsen

Henrik
Avatar billede Mr_Vikings Nybegynder
15. februar 2012 - 10:01 #2
Hej Henrik,

Okay cool, jeg prøver mig lige frem. VEd ikke om det gør den store forskel i koden men det er den føste/øverste linje som skal gemmes. Og taksten skal ikke inkluderes.

Mange tak for hjælpen. Vender lige tilbage når jeg har fået det til at virke :)

Vh Morten
Avatar billede Mr_Vikings Nybegynder
15. februar 2012 - 10:47 #3
Hej igen Henrik

Jeg er ikke så erfran i VBA, men står RK for række?

Mit data står lige anderledes end før omtale simple exsempel.

Det står som følger:

Type  D.Account  Date    T.Amount  T.Currency  B.A.No

Det er så T.Amout og B.A.No som skal være ens. Når jeg ændre navnet og placering (fx. fra kol 2 til 4) kommer der en fejl overflow.

Sub slet_rækker()

    Dim T_Amount As Long
    Dim B_A_No As Long
    Dim RK As Long
    Dim RK1 As Long
   
    RK = 2
    RK1 = RK + 1
    Do
    T_Amount = Cells(RK, 4)
    B_A_No = Cells(RK, 6)
    If Cells(RK1, 4) = T_Amount And Cells(RK1, 6) = B_A_No Then
    Cells(RK, 1).Select
    Selection.EntireRow.Delete
    Else
    RK = RK + 1
    RK1 = RK + 1
    End If
    Loop Until Cells(RK, 1) = ""
End Sub

Det er sikkert mig som ikke helt forstår din kode og kan gennemskue fejlen. Kan du hjælpe mig?

Vh Morten
Avatar billede H_Klein Novice
15. februar 2012 - 21:34 #4
Hejsa,

Hvad er det for tal der indtastes i felterne T_Amount og B_A_No?

Når du benytter "Long" må der nemlig kun stå tal og ingen bogstaver, bare for at nævne et eksempel og sådan en type af fejl kan nemt resultere i fejlen "overflow"

Hvis der er bogstaver med i et af de to felter skal du i stedet benytte dig af "String" og ikke "Long" så bør det kunne fungere.

Som makroen er lavet nu vil det være den øverste række der slettes, men prøv med nedenstående kode, så tror jeg den skulle fungere og ellers vender du bare frygteligt tilbage ;-)

Og ja RK står for række i mit oplæg.

Sub slet_rækker()

    Dim T_Amount  As Long
    Dim B_A_No As Long
    Dim RK As Long
    Dim RK1 As Long
   
    RK = 2
    RK1 = RK + 1
    Do
    T_Amount = Cells(RK, 4)
    B_A_No = Cells(RK, 6)
    Cells(RK, 1).Select
    If Cells(RK1, 4) = T_Amount And Cells(RK1, 6) = B_A_No Then
    Cells(RK1, 1).Select
    Selection.EntireRow.Delete
    RK = RK + 1
    RK1 = RK + 1
    Else
    RK = RK + 1
    RK1 = RK + 1
    End If
    Loop Until Cells(RK, 1) = ""
End Sub


Med venlig hilsen

Henrik
Avatar billede Mr_Vikings Nybegynder
23. februar 2012 - 09:20 #5
Hej Henrik,

Beklager det sene tilbagesvar. Koden virker efter hensigten, mange tak for hjælpen. Har dog været nødt til at ændre long til string før den virkerde selvom der kun er tale om tal i de to kolonner.

Sender du et svar?

Vh Morten
Avatar billede H_Klein Novice
23. februar 2012 - 17:17 #6
Et stk svar fra mig til dig. Glad for at du trods alt fik det til at fungere :-)

Med venlig hilsen

Henrik
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
Kurser inden for grundlæggende programmering

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