23. januar 2008 - 23:11Der er
7 kommentarer og 1 løsning
slette 5 ciffer i kolonne A
Jeg har ca. 1000 linier i kolonne A
Tallene består altid af 5 cifre. Det sidste er 99% af gangene "4"
Kan man få en makro til at slette det sidste ciffer i alle linierne, hvis det er et 4-tal
Hvis det 5 ciffer ikke er et 4 tal skal den komme med en msg box der fortæller hvilket tal det er galt med og den skal så spørge om hvilket tal der istedet skal stå. Herefter skal den lave en erstatning af tallet på alle de restrende linier.
F.eks.
10004 = 1000 10104 = 1010
10105 = spørg om hvad det skal være i stedet for. Her kan man evt. skrive 1011 i msg boxen. Herefter erstattes ALLE linier med 10105 med 1011.
Herefter skal makroen fortsætte, så der til sidst kun er 4 cifre i alle linier i kolonne A.
Der er en lille bug, med at den spørger efter sidste tal 2 gange, men det er sengetid:
Sub test() Dim Talrække, SLUT As Long, I As Long ReDim Rettede(0) SLUT = Range("A65536").End(xlUp).Row
Talrække = Range("A1:A" & SLUT)
For I = 1 To UBound(Talrække) If Right(Talrække(I, 1), 1) <> 4 Then
Skip = False For Z = 1 To UBound(Rettede) If Right(Talrække(I, 1), 1) = Rettede(Z) And Rettede(Z) <> "" Then Skip = True End If Next If Skip = False Then GlValue = Talrække(I, 1) NyValue = InputBox("Indsæt erstatningstal for " & Talrække(I, 1), Title, Default) ReDim Preserve Rettede(UBound(Rettede) + 1) Rettede(UBound(Rettede)) = NyValue For Y = I To UBound(Talrække) If Talrække(Y, 1) = GlValue Then Talrække(Y, 1) = NyValue Next End If End If Next Range("A1:A" & SLUT) = Talrække End Sub
Sub test() Dim Talrække, SLUT As Long, I As Long ReDim Rettede(0) SLUT = Range("A65536").End(xlUp).Row
Talrække = Range("A1:A" & SLUT)
For I = 1 To UBound(Talrække) If Right(Talrække(I, 1), 1) <> 4 And Len(Talrække(I, 1)) = 5 Then Skip = False For Z = 1 To UBound(Rettede) If Right(Talrække(I, 1), 1) = Rettede(Z) And Rettede(Z) <> "" Then Skip = True End If Next If Skip = False Then GlValue = Talrække(I, 1) NyValue = InputBox("Indsæt erstatningstal for " & Talrække(I, 1), Title, Default) ReDim Preserve Rettede(UBound(Rettede) + 1) Rettede(UBound(Rettede)) = NyValue For Y = I To UBound(Talrække) If Talrække(Y, 1) = GlValue Then Talrække(Y, 1) = NyValue Next End If Else Talrække(I, 1) = Left(Talrække(I, 1), 4) End If Next Range("A1:A" & SLUT) = Talrække End Sub
Måske er jeg for skeptisk, men når det skal tage over 1½ time for den kode, synes jeg det går for sløvt. En gang imellem hvis jeg starter på en kode samtidig som bak eller kabbak, er jeg ikke engang halvvejs, når de er færdige - og det er når jeg er skarp. Hatten af for det.
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.