27. februar 2003 - 11:55Der er
18 kommentarer og 3 løsninger
redigere felt med makro
Jeg har en tabel hvor der blandt andet er adressefelter i en kolonne. De adresse felter vil jeg have redigeret til kun at indeholde postnummer. således at: Personnavn#vejnavn 11#2222 bynavn bliver til: 2222 #=vist som en firkant i excel regnearket, repræsentere linieskift.
Er der nogen der hen idee til hvordan det løses nemmest.
Sub Makro2()
Dim strHolder As String Dim s, s1, q, x, z, sVærdi
sVærdi = Selection.Value sVærdi = Trim(sVærdi) q = Len(sVærdi) For x = 1 To q i strengen If Mid(sVærdi, x, 1) = "." Then z = x Next x z = q - z sVærdi = Right(sVærdi, z) Selection.Value = sVærdi ActiveCell.Offset(1, 0).Range("A1").Select End Sub
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Nope.. Hvis jeg nu kan løbe strengen igenne bagfra, udtrække de 4 første tal der findes - og indsætte dem i omvendt rækkefølge. Så det bare lige hvordan jeg gør det?
Den her returnere tallene, men bare fra starten af i stedet for slutningen.
sVærdi = Selection.Value sVærdi = Trim(sVærdi) 'fjerner leading og trailing spaces q = Len(sVærdi)
For x = 1 To q Select Case Mid(sVærdi, x, 1) Case 1: u = u + Mid(sVærdi, x, 1) Case 2: u = u + Mid(sVærdi, x, 1) Case 3: u = u + Mid(sVærdi, x, 1) Case 4: u = u + Mid(sVærdi, x, 1) Case 5: u = u + Mid(sVærdi, x, 1) Case 6: u = u + Mid(sVærdi, x, 1) Case 7: u = u + Mid(sVærdi, x, 1) Case 8: u = u + Mid(sVærdi, x, 1) Case 9: u = u + Mid(sVærdi, x, 1) Case 0: u = u + Mid(sVærdi, x, 1) End Select Next x Selection.Value = u
eller som makro hvor hele adressen udskiftes med postnr og der flyttes til næste celle.
Sub postnr1() Dim t As Long Dim s As String s = ActiveCell.Value t = InStrRev(s, Chr(10)) + 1 ActiveCell.Value = Mid(s, t, 4) ActiveCell.Offset(1, 0).Select End Sub
Hej bak Jaeh... det kan du godt have ret i. Subens virke forudsættes af hvorvidt linieskiftet er det ene (CrLf) eller det andet (Lf) i den aktuelle celle. Men det kan uden videre rettes ved denne sub...
sub TrimToZip() Dim lRv As Long Dim sString As String
Denne her virker til formålet - den er simpel, ikke særlig køn og har en temlig dårlig tidskompleksitet, men det er kun 3000-4000 rækker den skal igennem, så det går.
Sub Makro1() While ActiveCell.Offset(0, -2).Range("A1") <> "" ActiveCell.Offset(0, -2).Range("A1").Select Selection.Copy ActiveCell.Offset(0, 2).Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False
Dim strHolder As String Dim a, b, s, s1, q, x, z, sVærdi a = 1
sVærdi = Selection.Value sVærdi = Trim(sVærdi) q = Len(sVærdi) For x = 1 To q E = Mid(sVærdi, x, 1) Select Case Mid(sVærdi, x, 1) Case 1: u = u + E Case 2: u = u + E Case 3: u = u + E Case 4: u = u + E Case 5: u = u + E Case 6: u = u + E Case 7: u = u + E Case 8: u = u + E Case 9: u = u + E Case 0: u = u + E End Select Next x u = Right(u, 4) Selection.Value = u ActiveCell.Offset(1, 0).Range("A1").Select Wend End Sub
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.