Avatar billede Jacii Novice
14. juni 2017 - 15:27 Der er 6 kommentarer og
2 løsninger

Opsummering af data fra flere rækker i én kolonne

Jeg har et problem med et større datasæt, som skal opsummeres til 'en kolonne'.

Datasættet består af et ID (kolonne A) og variabel information (for nemheds skyld angives kun to kolonner her) i kolonne B og kolonne C. Kolonne A indeholder et ukendt antal personer. Kolonne B og C kan indeholde data men også være NULL

Datasættet kan altså se sådan her ud:
A        B        C
ID      Data  Data
1        B1      NULL
2        B2      C2
3        NULL C3

Det forventede output:
A      B
1      B1
2      B2
2      C2
3      C3

DBH
Jacob
Avatar billede kim1a Ekspert
14. juni 2017 - 17:34 #1
Hvis det vitterligt er NULL, eller om ikke andet så tom - så kan du blot kombinere de mange kolonner via "&" tegnet. Så kan det være du skal have en replace formel for at fjerne NULL.
Avatar billede jens48 Ekspert
14. juni 2017 - 17:36 #2
Kan for eksempel gøres med denne makro:

Sub TilEnKolonne()
Dim LastRow, LastColumn As Integer
LastRow = ActiveSheet.UsedRange.Rows.Count
LastColumn = ActiveSheet.UsedRange.Columns.Count
For x = LastRow To 2 Step -1
For y = 2 To LastColumn
If Cells(x, y) <> "NULL" And Cells(x, y) <> "" Then
Rows(x + 1).Insert
Cells(x + 1, 1) = Cells(x, 1)
Cells(x + 1, 2) = Cells(x, y)
End If
Next
Rows(x).Delete
Next
End Sub
Avatar billede Jacii Novice
14. juni 2017 - 18:58 #3
Tak for svar! (Jeg får testet om det virker i morgen)

Det var måske lidt upræcist, men NULL var for at angive, at der vil være angivet ingenting. Det vil være tomme celler. Gør det nogen forskel?

Dbh
Avatar billede xl-Enthusiast Ekspert
14. juni 2017 - 20:31 #4
Hvis du ønsker en formelløsning, og med dine data i B3:C5 så prøv denne matrixformel:

=HVIS(RÆKKER($1:1)>$F$1;"";INDIREKTE(TEKST(MINDSTE(HVIS(range1<>"";10^5*RÆKKE(range1)+KOLONNE(range1));RÆKKER($1:1));"R0C00000");0)). Kopier nedad.

hvor F1 = =SUM(TÆL.HVIS(range1;{">0"\"?*"})) og range1 er navngivet område for B2:C5.
Avatar billede jens48 Ekspert
14. juni 2017 - 21:24 #5
Det gør ingen forskel med min makro. Jeg har tager højde for at det kan være en tom celle
Avatar billede Jacii Novice
15. juni 2017 - 07:46 #6
@Jens48

Virker som en drøm. Det var lige det jeg stod og ledte efter!

På længere sigt kan jeg få brug for et lidt anderledes putput (se nedenfor). Kan du evt. pege mig i retning af hvordan jeg opdaterer det, du allerede har fremsendt? På forhånd mange tak!

Datasættet kan altså se sådan her ud:
A        B                  C
ID      Ref1            Ref2
1        B1                NULL
2        B2                C2
3        NULL          C3

Det forventede output:
A      B            C
1      Ref1      B1
2      Ref1      B2
2      Ref2      C2
3      Ref2      C3
Avatar billede jens48 Ekspert
15. juni 2017 - 09:31 #7
Prøv med denne makro:

Sub TilEnKolonne()
Dim LastRow, LastColumn As Integer
LastRow = ActiveSheet.UsedRange.Rows.Count
LastColumn = ActiveSheet.UsedRange.Columns.Count
For x = LastRow To 2 Step -1
For y = 2 To LastColumn
If Cells(x, y) <> "NULL" And Cells(x, y) <> "" Then
Rows(x + 1).Insert
Cells(x + 1, 1) = Cells(x, 1)
Cells(x + 1, 2) = Cells(1, y)
Cells(x + 1, 3) = Cells(x, y)
End If
Next
Rows(x).Delete
Next
Range(Cells(1, 3), Cells(1, LastColumn)).ClearContents
Cells(1, 2) = "Ref"
Cells(1, 3) = "Value"
End Sub
Avatar billede Jacii Novice
15. juni 2017 - 10:26 #8
@Jens48 - virker fornemt!

Tusind tak for hjælpen.

DBH
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester