Nu er problemet så, at tallene 8020 - 802145 skal ændres til 9000 - 9145.
Jeg vil derfor fjerne de tre første cifre i "8020", således at der kommer til at stå "0", hvorefter jeg vil lægge 9000 til sådan at den kommer til at hedde "9000" og så fremdeles.
8020 skal blive til 9000 802145 skal blive til 9145....
derfor, hvis man fjerner de tre første cifre og derefter adderer med 9000, så burde det virke -men hvordan skriver man en kode der kan det?
evt. ved brug af "case is" eller "right, left og mid"
Jeg har en pokkers masse tal i en kolonne, som skal omdøbes på den måde...
mit range er For Each cell In Worksheets("old_database").Range("B1065:B2392")
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Får en syntax error, det kan heller ikke passe at det er så simpelt....
her er hvad jeg selv har skrevet, men jeg kan ikke få den til at køre for 9000 og 10000....
------------ Dim i As Integer, TredjeTal As Integer, Nummer As Integer Dim KolonneB As Range, cell As Range Range("B6:B4248").Name = "KolonneB" Worksheets("old_database").Range("KolonneB").Activate For Each cell In Range("KolonneB") 'Starter fra 1. plads i cellen, og vælger derefter 2 karakterer, hvis de = 80 så... If Mid(cell.Value, 1, 2) = 80 Then 'Definerer TredjeTal som 3. karakter i cellen TredjeTal = Mid(cell, 3, 1) 'Definerer Nummer som strengen i cellen, og cil så have at den skal vælge...??? Nummer = Mid(cell.Value, (Len(cell) - 3))
Select Case TredjeTal Case Is = 1 cell.Value = cell.Value - 10 'når 3. karakter er et 1-tal, skal den trække 10 fra Case Is = 2 For i = 0 To 145 If Nummer = i Then cell.Value = 9000 + i 'når 3. karakter er et 2-tal, skal den skrive 9000+i End If Next Case Is = 3 For i = 0 To 24 If Nummer = i Then cell.Value = 10000 + i 'når 3. karakter er et 3-tal, skal den skrive 10000+i End If Next End Select End If Next ------------------------------------
Lasseo's løsning er en almindelig regnearksformel, som blot skal skrives i en celle. Skriv den f.eks. i celle C1065 og kopier den ned så længe der er data i B-kolonnen.
Der er nok en del der skal aflevere samme opgave,:-)
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
He he, ja. Vi er en hel årgang der skal lave en opgave i VBA -sådan ca. en 100 stykker :-)
Nu er problemet bare, at vores forelæser antager at vi er nogle hardcore vba-koderer alle sammen, hvilket vi langt fra er!
Anyway, er det muligt at omskrive ovenstående således at det kommer ned på et lidt mere menneskeligt plan? Husk på, at jeg er en regnskabsmand -ikke edbmand :P
Jeg forstår ikke syntaksen i det du har skrevet (bak)...
Dim i As Integer, TredjeTal As Integer, Nummer As Integer Dim KolonneB As Range, cell As Range Range("B6:B4248").Name = "KolonneB" Worksheets("old_database").Range("KolonneB").Activate
For Each cell In Range("KolonneB") 'Starter fra 1. plads i cellen, og vælger derefter 2 karakterer, hvis de = 80 så... If Mid(cell.Value, 1, 2) = 80 Then 'Definerer TredjeTal som 3. karakter i cellen TredjeTal = Mid(cell, 3, 1) 'Definerer Nummer som strengen i cellen, og cil så have at den skal vælge...??? Nummer = CLng(Mid(cell.Value, 4))
Select Case CLng(TredjeTal) Case 1 cell.Offset(0, 9) = 8000 + Nummer 'når 3. karakter er et 1-tal, skal den trække 10 fra Case 2 cell.Offset(0, 9) = 9000 + Nummer 'når 3. karakter er et 2-tal, skal den skrive 9000+i Case 3 cell.Offset(0, 9) = 10000 + Nummer 'når 3. karakter er et 3-tal, skal den skrive 10000+i End Select End If Next
Prøv lige igen. Begge modeller kører fint på opgaven. jeg har lige ændret linierne med cell.Offset(0, 9) til cell så den skrive i de aktuelle celler
Sub test6()
Dim i As Integer, TredjeTal As Integer, Nummer As Integer Dim KolonneB As Range, cell As Range Range("B6:B4248").Name = "KolonneB" Worksheets("old_database").Range("KolonneB").Activate
For Each cell In Range("KolonneB") 'Starter fra 1. plads i cellen, og vælger derefter 2 karakterer, hvis de = 80 så... If Mid(cell.Value, 1, 2) = 80 Then 'Definerer TredjeTal som 3. karakter i cellen TredjeTal = Mid(cell, 3, 1) 'Definerer Nummer som strengen i cellen, og cil så have at den skal vælge...??? Nummer = CLng(Mid(cell.Value, 4))
Select Case CLng(TredjeTal) Case 1 cell= 8000 + Nummer 'når 3. karakter er et 1-tal, skal den trække 10 fra Case 2 cell= 9000 + Nummer 'når 3. karakter er et 2-tal, skal den skrive 9000+i Case 3 cell = 10000 + Nummer 'når 3. karakter er et 3-tal, skal den skrive 10000+i End Select End If Next
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.