Tallene 8011 – 8016 ændres til 8001 – 8006. Tallene 8020 – 802145 ændres til 9000 – 9145. Tallene 803000 – 803024 ændres til 10000 – 10024.
Dvs i den første er der 6 tal i den anden er der 146 tal i den tredje er der 25 tal
Hvordan laver jeg en løkke/tæller så den selv ændres. Nedenfor er den kode jeg selv har genereret indtil videre, ved godt at det kan gøres mindre kodemæssigt, men hvordan får jeg en tæller/løkke ind, så jeg ikke behøver skrive det for hver linie?
Sub Change_Database()
Dim data1 As Range, data2 As Range, data3 As Range, data4 As Range, data5 As Range, data6 As Range Range(Range("B1015").Offset(0, 0), Range("B1015").End(xlDown)).Select
Do For Each data1 In Selection If data1.Value = "8011" Then data1.Value = "8001" Next
For Each data2 In Selection If data2.Value = "8012" Then data2.Value = "8002" Next
For Each data3 In Selection If data3.Value = "8013" Then data3.Value = "8003" Next
For Each data4 In Selection If data4.Value = "8014" Then data4.Value = "8004" Next
For Each data5 In Selection If data5.Value = "8015" Then data5.Value = "8005" Next
For Each data6 In Selection If data6.Value = "8016" Then data6.Value = "8006" Next
Jeg synes jeg har set spm. før i VBA-kategorien. Her er en måde at gøre det på.
Sub test() Dim ws As Worksheet Dim rKat As Range Dim lLastRow As Long Dim rCell As Range Set ws = Sheets("old_database") lLastRow = ws.Range("B" & Rows.Count).End(xlUp).Row Set rKat = ws.Range("B2:B" & lLastRow) For Each rCell In rKat Select Case Left(rCell, 3) Case "801": rCell.Offset(0, 10) = 8000 + CLng(Mid(rCell, 4)) Case "802": rCell.Offset(0, 10) = 9000 + CLng(Mid(rCell, 4)) Case "803": rCell.Offset(0, 10) = 10000 + CLng(Mid(rCell, 4)) Case Else End Select Next End Sub
Sub test() Dim ws As Worksheet Dim rKat As Range Dim lLastRow As Long Dim rCell As Range
'sæt ws lig med arket old_database Set ws = Sheets("old_database") 'Find sidste række med data i kolonne B i arket old_database 'Starter nedefra (række 65536) og og går op og finder rækken lLastRow = ws.Range("B" & Rows.Count).End(xlUp).Row 'sæt rKat lig alle data i kolonne B Set rKat = ws.Range("B2:B" & lLastRow) 'For hver celle i rKat gør : For Each rCell In rKat 'Kig på de første 3 cifre Select Case Left(rCell, 3) 'Hvis de første 3 cifre er 801 så tag de 'resterende cifre (fra 4. ciffer og udad) og læg dem til 8000 Case "801": rCell = 8000 + CLng(Mid(rCell, 4)) 'hvis de er 802 så tag de resterende cifre og læg til 9000 Case "802": rCell = 9000 + CLng(Mid(rCell, 4)) ''hvis de er 803 så tag de resterende cifre og læg til 10000 Case "803": rCell = 10000 + CLng(Mid(rCell, 4)) Case Else: 'ellers gør ingenting End Select Next rCell
End Sub
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.