21. december 2017 - 12:43Der er
14 kommentarer og 1 løsning
Data fra to rækker samlet i en
Jeg har et datasæt hvor der er tre kolonner. Kolonne 1 og 2 holder data om produkt og variant og kolonne tre en beskrivende tekst. Der er i rækkerne flere gengangere af samme produkt og variant, men med forskellige beskrivelser. Eksempel: Kolonne A - B - C - (D) 10267 - 917 - ABCD 10267 - 917 - XYZ Jeg vil gerne have dem samlet til: 10267 - 917 - ABCD - XYZ (altså ni i fire kolonner, men kun en række per produkt)
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.
Jeg har lavet en lille makro, som måske kan bruges. Hvis du har dine data liggende i kolonnerne A:C vil makroen skrive de ønskede lister i området J1:T1000.
Sub Samling() Dim LastRow, OpR, NyR, NyC, ROpslag As Integer LastRow = ActiveSheet.UsedRange.Rows.Count Range("J1:T1000").ClearContents NyR = 1 For x = 1 To LastRow If Application.WorksheetFunction.CountIf(Range("J1:J10000"), Cells(x, 1)) = 0 Then Range(Cells(x, 1), Cells(x, 3)).Copy Range("J" & NyR).PasteSpecial NyR = NyR + 1 Else If Application.WorksheetFunction.CountIf(Range("K1:K10000"), Cells(x, 2)) = 0 Then Range(Cells(x, 1), Cells(x, 3)).Copy Range("J" & NyR).PasteSpecial NyR = NyR + 1 Else ROpslag = Application.Match(Cells(x, 1).Value & " - " & Cells(x, 2).Value, Range("I1:I10000"), 0) NyC = Application.CountA(Range(Cells(ROpslag, 10), Cells(ROpslag, 20))) For y = 3 To 6 If Application.WorksheetFunction.CountIf(Range(Cells(ROpslag, 12), Cells(ROpslag, 20)), Cells(x, 3)) = 0 Then Cells(ROpslag, 10 + NyC) = Cells(x, y) NyC = NyC + 1 End If Next End If End If Next End Sub
Dine data forventes at starte i række 2 (test på en kopi)
Sub udRader() rk = Cells(65536, "A").End(xlUp).Row
For Each c In Range("A2:A" & rk) If c <> "" Then For Each d In Range("A" & c.Row + 1 & ":A" & rk) If d = c And c.Offset(0, 2) <> d.Offset(0, 2) Then x = x & "-" & d.Offset(0, 2) Range("A" & d.Row & ":C" & d.Row) = "" c.Offset(0, 3) = x End If Next End If x = "" Next
@Jens48 - det ser ud til at virke for rækker hvor der er data i både A og B, men hvis B er blank lægger den ikke rækkerne sammen. Eksempel Kolonne A - B - C - (D) 10267 - 917 - ABCD 10267 - 917 - XYZ Bliver rigtigt nok til 10267 - 917 - ABCD - XYZ
Men hvis rækkerne i steder er 10267 - " " - ABCD 10267 - " " - XYZ Returnere den 10267 - " " - ABCD 10267 - " " - XYZ
Har du en løsning så også de rækker med blank kolonne B men samme værdi i kolonne A bliver sammenlagt?
Sub Samling() Dim LastRow, OpR, NyR, NyC, ROpslag As Integer LastRow = ActiveSheet.UsedRange.Rows.Count Range("J1:T1000").ClearContents NyR = 1 For x = 1 To LastRow If Application.WorksheetFunction.CountIf(Range("J1:J10000"), Cells(x, 1)) = 0 Then Range(Cells(x, 1), Cells(x, 3)).Copy Range("J" & NyR).PasteSpecial NyR = NyR + 1 Else If Cells(x, 2) = "" Then Cells(x, 2) = " " End If If Application.WorksheetFunction.CountIf(Range("K1:K10000"), Cells(x, 2)) = 0 Then Range(Cells(x, 1), Cells(x, 3)).Copy Range("J" & NyR).PasteSpecial NyR = NyR + 1 Else ROpslag = Application.Match(Cells(x, 1).Value & " - " & Cells(x, 2).Value, Range("I1:I10000"), 0) NyC = Application.CountA(Range(Cells(ROpslag, 10), Cells(ROpslag, 20))) For y = 3 To 6 If Application.WorksheetFunction.CountIf(Range(Cells(ROpslag, 12), Cells(ROpslag, 20)), Cells(x, 3)) = 0 Then Cells(ROpslag, 10 + NyC) = Cells(x, y) NyC = NyC + 1 End If Next End If End If Next End Sub
If r <> "" Then For Each t In Range("A" & r.Row + 1 & ":A" & rk) If t = r And r.Offset(0, 2) <> t.Offset(0, 2) And InStr(1, r.Offset(0, 3), t.Offset(0, 2)) = 0 Then r.Offset(0, 3) = r.Offset(0, 3) & "-" & t.Offset(0, 2) End If If t = r Then Range("A" & t.Row & ":C" & t.Row) = "" Next End If
@jens48 - Glædelig jul :-) Sætter stor pris på din hjælp! Det ser ud til, at den seneste makro fejler når den rammer et felt i kolonne C som starter med et bogstav i stedet for tal. Kan det passe? Og kan du i givet fald hjælpe mig videre? PFT
@jens48 Jeg oplever fortsat fejl når makroen kommer til en værdi i kolonne C der starter med et bogstav. Kan du hjælpe mig med at løse det? Du kan eventuelt se hele mit dataark her: https://drive.google.com/open?id=1rgOnwbQx17laQ269NNdJO7nbof3GQcK2 Første gang jeg løber på fejlen er når A har værdi 10039.
Jeg har noget, som måske kan bruges, men jeg har problemer med dit dataark. Kan du ikke uploade et excel ark i stedet for en CSV fil.
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.