Avatar billede boso Juniormester
30. september 2021 - 17:46 Der er 5 kommentarer og
1 løsning

Slette række med bestemte ord

Hejsa
Jeg har i fane "AAA" en lang liste med data.

Der er kolonner fra A-F og antallet af rækker bliver løbende udvidet.

I de rækker hvor ordret "rekvisition" eller "udløber" indgå vil jeg gerne slette rækken så rækken ikke længere er en del af datasættet.

Hvordan pokker laver jeg en kode der kan gøre dette da arket løbende bliver opdateret med ny data og så det virker automatisk.

En venlig sjæl der kan pege mig i den rigtige retning?
Avatar billede kim1a Ekspert
01. oktober 2021 - 08:55 #1
Et gennemløb via tryk på en knap i VBA er muligt, det lyder dog til at kunne blive lidt tungt, da de ord du skal frasortere måske kan stå i forskellige kolonner, eller er det altid i samme kolonne?
Kan du give eksempel på en række med ordene.

Du kan dog også lavpraktisk lave en formel der gennemsøger for ordet (f.eks. til højre for listen) og så have et filter hvor du frasorterer på baggrund af denne formel. F.eks:
=Find("rekvisition";kolonnen det står i)
Det vil returnere et tal, så derefter frasorterer du tal i dit filter.
Avatar billede store-morten Ekspert
01. oktober 2021 - 10:32 #2
#kim1a
Filter har søg funktion indbygget
Avatar billede kim1a Ekspert
02. oktober 2021 - 07:20 #3
Nå'e ja, selvfølgelig :-)
Avatar billede boso Juniormester
02. oktober 2021 - 19:44 #4
halløj
kender godt funktionen. Min udfordringer er når jeg arbejder med dataen i pivottabeller så synes jeg ikke dataen bliver frasorteret korrekt.

Ordene der skal kigges efter står iøvrigt altid i kolonne F. Så når ordet er der ønsker jeg at hele rækken fra A:F bliver slettet
Avatar billede kim1a Ekspert
02. oktober 2021 - 23:37 #5
Her er en vba som starter nede fra nederste linje (bemærk tager udgangspunkt i data i alle celler i A). Ser om der står dine to ord i cellen i F, og i så fald sletter den linjen.
Utestet:

Sub slet_hvis()
Dim intLastLine As Integer
Dim intL As Integer

intLastLine = Range("A1").CurrentRegion.Rows.Count
   
For intL = intLastLine To 1 Step -1
    If InStr(Cells(intL, 6).Value, "rekvisition") > 1 Then
    Rows(intL).EntireRow.Delete
    ElseIf InStr(Cells(intL, 6).Value, "udløber") > 1 Then
    Rows(intL).EntireRow.Delete
    End If
Next intL

end sub
Avatar billede boso Juniormester
04. oktober 2021 - 11:01 #6
Hej Kim1a
Hold nu op hvor er det fedt. Det har løst en stor udfordring for mig.

MANGE MANGE tak.
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

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