I kolonne E kan der være mellem 3 og 12 karakter bestående af tal og bogstaver.
Jeg skal efter hver opdatering have sorteret/omdøbt nr. i kolonne A, det gør jeg i dag manuelt hvilket er et stort og træls arbejde. Nu har nogen fortalt mig, at det kan en Makro gøre, nu er jeg igen prof. i Excel og slet i at indspille Makro som jeg har forsøgt, det kunne slet ikke virke. Når jeg er færdig med at sorter/omdøbe ser resultatet ud som følger
forklaring: ”nb” forand nr. knytter sig altid til 3 tallet i kolonne E ”gb” forand nr. knytter sig altid til 2 tallet i kolonne E ”sn” forand nr. knytter sig altid til 5 tallet i kolonne E ”br” forand nr. knytter sig altid til 0 tallet i kolonne E
Hvilke kriterier sorterer du efter?? Omdøbningen består den kun af ,at du indsætter de 2 bogstaver før kolonnens oprindelige indhold, og kan der være tale om andre bogstavkombinationer end nævnte?
Jeg sorter altid så: ”nb” forand nr. knytter sig altid til 3 tallet i kolonne E ”gb” forand nr. knytter sig altid til 2 tallet i kolonne E ”sn” forand nr. knytter sig altid til 5 tallet i kolonne E ”br” forand nr. knytter sig altid til 0 tallet i kolonne E
Der kan IKKE være tale om andre bogstavkombinationer end nævnte!!!
Her er en makro, der kan løse dit problem. Du skal indlægge dine data i "Sheet1" kolonne A til E, og skrive antallet af rækker i J1. Når du kører makroen vil den i nedenstående udgave skrive resultaterne i kolonne G (så kan du kontrollere, at det er korrekt). Det kan dog nemt rettes til kolonne A ved at rette 7 til 1 i tredienederste linie.
Sub Button1_Click() Dim r_antal As Integer Dim r As Integer Dim e_val As String Dim a_val As String Dim cif1 As String Dim prefix As String
'MsgBox "Sorter start"
' Hent antal rækker fra J1 r_antal = ActiveWorkbook.Worksheets("Sheet1").Cells(1, 10).Value
'MsgBox "Sorter end rows = <" & r_antal & ">" For r = 1 To r_antal e_val = ActiveWorkbook.Worksheets("Sheet1").Cells(r, 5).Value a_val = ActiveWorkbook.Worksheets("Sheet1").Cells(r, 1).Value 'MsgBox "e_val " & r & " = " & e_val cif1 = Left(e_val, 1) Select Case cif1 Case "0" prefix = "br" Case "2" prefix = "gb" Case "3" prefix = "nb" Case "5" prefix = "sn" Case Else prefix = "" End Select 'MsgBox "cif1 " & cif1 & " prefix " & prefix a_val = prefix & a_val
' Gem resultat i søjle G (=7) ActiveWorkbook.Worksheets("Sheet1").Cells(r, 7).Value = a_val Next End Sub
Du kunne også indsætte denne formel i en kolonne ved siden af de andre: =VÆLG(VÆRDI(VENSTRE(E1;1))+1;"br";"";"gb";"nb";"";"sn") & A1 og kopiere den ned til bunden af dine data. Dette vil give dig de rigtige bogstaver foran tallene. Når du har gjort dette, kopierer du hele kolonnen, stiller dig i A1, vælger Indsæt Speciel og klikker på "Værdier"
Et lidt dumt spørgsmål Sheet1 er det det samme som Ark1? Jeg har nu døbt Ark1 om til Sheet1. Du skriver: "skrive antallet af rækker i J1" skal det forstås sådan, at hvis der er 1500 rækker (nr) skal jeg skrive 1500 i J1?
Nu viker Makroen, jeg har prøvet med blot 17 rækker OG DET GIK HURTIGT, -men det skete blot det at kolonne G blev en KOPI af kolonne A, der kom igen bogstaver foran nr. (br, gb, nb eller sn).!?
Jesper Naur, Nu virker din Makro perfekt både med 7 tallet og 1 tallet, det var mig som havde flyttet eller fået en kolonne for meget med. Tak for den hurtige hjælp.
BAK, jeg har prøvet at kopier følgende linie ned som du skriver, men i stedet for linien kommer der de to forbogstaver plus nr. til at stå i cellen, og når jeg stopper ved række 18 går jeg til A1, men Indsæt Speciel er ikke aktiv??
Kan dit forslag også virke som en Makro ved f.eks 1000 rækker og 1500 rækker.
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.