Overfør data fra en kolonnede til to andre kolonner - VBA
Jeg håber nogle af jer kan hjælpe med at udbygge nedenstående VBA kode. Jeg har lavet et udtræk fra et system til Excel, som f.eks. ser ud som nedenstående. Bemærk at antal af afdelinger kan varierer: Kontonr. Sted 1 Afdeling 1 Afdeling 2 Afdeling 3 Afdeling 4 Total Sted 2 Afdeling 1 Afdeling 3 Afdeling 4 Afdeling 5 Total Sted 3 Afdeling 1 Afdeling 2 Afdeling 3 Afdeling 4 Afdeling 5 Total Total Kontonr. Sted 1 Afdeling 1 Afdeling 2 Afdeling 4 Total Sted 2 Afdeling 1 Afdeling 2 Afdeling 3 Afdeling 4 Afdeling 5 Total Sted 3 Afdeling 1 Afdeling 2 Afdeling 3 Afdeling 4 Afdeling 5 Total Total Osv. Osv. Listen afsluttes med TOTAL
Jeg kunne godt tænke mig, at kontonr. overføres til kolonne A og sted overføres til kolonne B, så det f.eks. ser således ud:
1000 Sted 1 Afdeling 1 1000 Sted 1 Afdeling 2 Total 1000 Sted 2 Afdeling 1 1000 Sted 2 Afdeling 2 Total Total 1001 Sted 1 Afdeling 1 1001 Sted 1 Afdeling 2 osv. osv.
Nuværende kode: Const startRæk = 2 Const testKol = "C" Const brudTekst = "Total" Const stopTekst = "T O T A L" Dim antalRæk As Integer, kontoNr As Integer, brudFlag As Boolean Public Sub kopierKontonr() Dim ræk As Integer Application.ScreenUpdating = False
For ræk = startRæk + 1 To antalRæk If Range(testKol & ræk) = brudTekst Then If Range(testKol & ræk).Offset(1, 0) <> stopTekst Then kontoNr = Range(testKol & ræk).Offset(1, 0) Else Exit Sub End If Else If brudFlag = True Then Range(testKol & ræk).Offset(0, -1) = kontoNr End If End If Next ræk End Sub Private Sub CommandButton1_Click() kopierKontonr End Sub
Forudsætningen er, at dataene fra dit udtræk starter i celle C2, og at kontonummeret står i kolonne D.
Kopiér VBA-koden ind i arkets kodemodul, så referencen "Me" fungerer som reference til ark-objektet. Eksempelvis refererer udtrykket "Me.Cells(t, 3)" til cellen i række t, kolonne 3 (dvs. "C").
Sub KopierKontoNr()
Dim t, KontoNr As Long Dim Sted As String
t = 2
Application.ScreenUpdating = False
Do
If UCase(Me.Cells(t, 3)) Like "KONTONR*" Then
KontoNr = Me.Cells(t, 4)
ElseIf UCase(Me.Cells(t, 3)) Like "STED*" Then
Sted = Me.Cells(t, 3)
Else
Me.Cells(t, 1) = KontoNr Me.Cells(t, 2) = Sted
If UCase(Me.Cells(t, 3)) = "TOTAL" And UCase(Me.Cells(t - 1, 3)) = "TOTAL" Then
Tak for ovenstående svar. Problemet er bare, at kontonummeret står i kolonne C sammen med sted nr. og afdeling. Så jeg kunne godt tænke mig at få kontonummeret overført til kolonne A, og at den skifter, hver gang der kommer et nyt kontonr. :-)
Har du mulighed for at sende mig et mere detaljeret eksempel på dit udtræk i en Excel-fil? Ellers kommer jeg til at arbejde "i blinde", hvis jeg ikke ved præcist, hvordan dataene ligger.
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.