10. april 2012 - 15:14Der er
40 kommentarer og 1 løsning
Slette en række som indeholder specifikt søgeord
Hej
Jeg sidder og smider en masse data ind i et excel regneark og iblandt dette data er der rækker som vil indeholde ordet "_txt_". Er der en måde jeg kan få systemet til at slette den række som indeholder ordet. Jeg ved jeg kan lave en søg og erstat men eftersom rækken indeholder mere end blot det ord er det ikke så lige til.
Jeg er ikke nok inde i excel til at vide helt hvad du mener. Hvordan skulle jeg lave det som et loop eller endnu bedre hvordan sorterer jeg så rækkerne med "_txt_" kommer øverst. "_txt_" står inde midt i teksten i rækkerne
Sub Makro1() Dim sidst As Range Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_txt_*" _ , Operator:=xlAnd Rows("2:1000").Delete Shift:=xlUp ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
Koier koden her under Tryk alt+F11 Dobbelt klik på det Ark makroen skal virke på Tryk ctrl+v og luk på det røde kryds. Tryk alt+F8 Vælg koden og tryk Afspil
Sub SletRkMed_txt_i_C() Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_txt_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row Rows("2:" & Sidste).Delete Shift:=xlUp ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
Eller Manuelt:
Klik på " C " Tryk ctrl+skift+l Klik på den lille pil i cell C1 Vælg" Talfilter" --> Vælg "Brugerdefineret filter" Vælg "Indeholder" og skriv _txt_ --> OK Marker Rækker og tryk Delete Klik på den lille pil i cell C1 Vælg "Marker alt" --> OK Tryk ctrl+skift+l
Sub Auto_Close() Dim MenuName As String MenuName = "&Brunos_Menu" ' Delete the menu before closing On Error Resume Next MenuBars(xlWorksheet).Menus(MenuName).Delete End Sub
Sub mac1() Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_txt_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row Rows("2:" & Sidste).Delete Shift:=xlUp ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
Kopier koden her over Tryk alt+F11 Dobbelt klik på et Ark Menuen 'Insert' --> vælg "Module" Tryk ctrl+v og luk på det røde kryds. Luk og Gem filen et sted du kan finde igen ;-) Åben den, og kik efter Brunos Menu, under Tilføjelsprogrammer.
Dobbelt klik på et Ark Menuen 'Insert' --> vælg "Module"
når jeg dobbeltklikker på et ark kommer der jo en hvid kasse frem jeg kan skrive i og når jeg så derefter tager insert --> module kommer der jo en hvid kasse mere frem jeg kan skrive i. Hvilken af dem skal jeg smide koden i?
Så skal du have lagt din Menu kode ind i din 'Personlig makromappe' Så skal tungen holdes lige i munden ;-)
Menuen Udvikler --> Menuen Kode --> "Indspil makro" Vigtigt! 'Gem makro i:' --> ændres til "Personlig makromappe" --> OK Klik på en tilfældig celle --> Menuen Kode --> "Stop indspilling"
Tryk alt+F11 Under VBAProject(PERSONAL.XLSB) --> 'Modules' --> dobbeltklik på 'Module1' i kassen vil der stå noget med:
Sub Makro1() ' ' Makro1 Makro '
' Range("C7").Select End Sub
Erstat det med koden fra før. Luk og Gem alt.
NU... skulle det virker når du åbner et "Nyt" ark.
Sub Auto_Close() Dim MenuName As String MenuName = "&Brunos_Menu" ' Delete the menu before closing On Error Resume Next MenuBars(xlWorksheet).Menus(MenuName).Delete End Sub
Sub mac1() Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_txt_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row Rows("2:" & Sidste).Delete Shift:=xlUp ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
Sub mac2() Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_track_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row Rows("2:" & Sidste).Delete Shift:=xlUp ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
har gemt den i den personlige mappe og har prøvet at lukket excel helt ned og genåbne og under menuen tilføjelsesprogrammer kan jeg stadig vælge macroen og den virker :-)
Jeg tror godt jeg kan gennemskue hvordan opbygningen af yderligere macros er efter du lavede den nye kode med både _txt_ og _track_
:-)
Det er virkelig cool! Mit liv er lige blevet meget lettere hehe
Endnu engang mange tak for din hjælp! Det var aldrig gået uden din assistance!
(nu må vi se hvor længe der går før jeg har ødelagt et eller andet) :-)
Sub Auto_Close() Dim MenuName As String MenuName = "&Brunos_Menu" ' Delete the menu before closing On Error Resume Next MenuBars(xlWorksheet).Menus(MenuName).Delete End Sub
Sub mac1() Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_txt_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
Sub mac2() Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_track_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
Sub mac3() Dim svar1 As String Dim svar2 As String svar1 = InputBox("Indtast kolonne bogstav") svar2 = InputBox("Indtast søge ord?") On Error GoTo ExitSub
Columns(svar1 & ":" & svar1).Select Selection.AutoFilter ActiveSheet.Range(svar1 & ":" & svar1).AutoFilter Field:=1, Criteria1:="=*" & svar2 & "*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, svar1).End(xlUp).Row Rows("2:" & Sidste).Delete Shift:=xlUp If Sidste = 1 Then GoTo Ingen ActiveSheet.Range(svar1 & ":" & svar1).AutoFilter Field:=1 Ingen: Selection.AutoFilter Range("A1").Select ExitSub: Exit Sub End Sub
ja stemmer det ikke at den kunne finde på at slette noget der ikke var meningen før. Kunne ikke helt sætte min finger på hvad det var, troede bare det var mig der gjorde noget galt :-)
Sub Auto_Close() Dim MenuName As String MenuName = "&Brunos_Menu" ' Delete the menu before closing On Error Resume Next MenuBars(xlWorksheet).Menus(MenuName).Delete End Sub
Sub mac1() Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_txt_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
Sub mac2() Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_track_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select End Sub
Sub mac3() Dim svar1 As String Dim svar2 As String svar1 = InputBox("Indtast kolonne bogstav") svar2 = InputBox("Indtast søge ord?") On Error GoTo ExitSub
Columns(svar1 & ":" & svar1).Select Selection.AutoFilter ActiveSheet.Range(svar1 & ":" & svar1).AutoFilter Field:=1, Criteria1:="=*" & svar2 & "*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, svar1).End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range(svar1 & ":" & svar1).AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select ExitSub: Exit Sub End Sub
Sub Auto_Close() Dim MenuName As String MenuName = "&Brunos_Menu" ' Delete the menu before closing On Error Resume Next MenuBars(xlWorksheet).Menus(MenuName).Delete End Sub
Sub mac1() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name
Application.ScreenUpdating = False
Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_txt_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select
Sheets(homeArk).Select Range(home).Select
GoTo Slut Slut: Application.ScreenUpdating = True End Sub
Sub mac2() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name
Application.ScreenUpdating = False
Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*_track_*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select
Sheets(homeArk).Select Range(home).Select
GoTo Slut Slut: Application.ScreenUpdating = True End Sub
Sub mac3() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name
Application.ScreenUpdating = False
Dim svar1 As String Dim svar2 As String svar1 = InputBox("Indtast kolonne bogstav") If svar1 = vbchancel Then GoTo ExitSub svar2 = InputBox("Indtast søge ord?") If svar2 = vbchancel Then GoTo ExitSub
Columns(svar1 & ":" & svar1).Select Selection.AutoFilter ActiveSheet.Range(svar1 & ":" & svar1).AutoFilter Field:=1, Criteria1:="=*" & svar2 & "*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, svar1).End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range(svar1 & ":" & svar1).AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select
Sheets(homeArk).Select Range(home).Select
GoTo Slut Slut: Application.ScreenUpdating = True End Sub
Sub mac4() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name
Application.ScreenUpdating = False
Dim iRow As Integer 'Rækken der arbejdes med iRow = 2 'Sæt hvilken række der startes fra
Do While Sheets(4).Range("A" & iRow).Value <> "" 'Så længe der er data I kolonne "læsekolonnen" søgord = Sheets(4).Range("A" & iRow).Value
Columns("C:C").Select Selection.AutoFilter ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:="=*" & søgord & "*" _ , Operator:=xlAnd Sidste = Cells(Rows.Count, "C").End(xlUp).Row If Sidste = 1 Then GoTo Ingen Rows("2:" & Sidste).Delete Shift:=xlUp Ingen: ActiveSheet.Range("C:C").AutoFilter Field:=1 Selection.AutoFilter Range("A1").Select
iRow = iRow + 1 'Forbered læsning af næste række Loop 'Afslut loopet
Sheets(homeArk).Select Range(home).Select
GoTo Slut Slut: Application.ScreenUpdating = True End Sub
Jeg har nu haft tid til at teste din nye løsning og det er lige præcis hvad jeg skulle bruge!
Jeg har godt nok kun testet den med mine egne indsatte test lister og ord men det burde jo være det samme når jeg går i krig på de "ægte" lister
Det er super nemt for mig nu at sætte mine ord ind i ark4 og teste dem op mod originallisterne i ark1. Jeg glæder mig helt til at få prøvet det rigtigt imorgen og nyde hvor meget tid det sparer mig for på daglig basis :-)
TAK!
Bruno
Synes godt om
Ny brugerNybegynder
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.