Avatar billede Basse25 Novice
30. december 2010 - 09:20 Der er 18 kommentarer og
1 løsning

Sammenkædning med komma

Hej

Jeg har nogle kolonner som skal sammenkædes adskilt med et komma. Dette kan jeg godt lave, men hvis en af kolonner indeholder et tomt felt fremkommer kommaet alligevel, hvordan undgår jeg dette?

F.eks. hvis jeg i kolonne C2, C3, C4 har hhv. CS,DD,EF stående og sammenkæder disse kommer det rigtigt nok ud, men hvis jeg i kolonne D2, D3, og D4 kun har noget tekst stående i D2 og D4 mens D# er toms, så kommer der til at stå CS,,EF, hvordan undgår jeg dobbeltkommaet?
Avatar billede supertekst Ekspert
30. december 2010 - 09:26 #1
Hvor mange kolonner er der maksimalt tale om?
Avatar billede Basse25 Novice
30. december 2010 - 09:31 #2
22 kolonner
Avatar billede supertekst Ekspert
30. december 2010 - 09:45 #3
Går ud fra at du anvender en formel. Er det samme kolonne?

En mulighed er at få en makro til at fjerne "overflødelige" kommaer. Kunne det være en mulighed?

I princippet kan der vel være flere en 2 kommaer efter hinanden?
Avatar billede Basse25 Novice
30. december 2010 - 10:12 #4
En makro kunne godt være en mulighed. Og jo i princippet kan der godt være flere end 2 kommaer efter hinanden, men de kan også komme ind i mellem det hele.

Jeg tror måske løsningen er en hvis og erstat i nogle andre kolonner, og derfra så lave sammenkædningen. Men andre foreslag modtages med glæde.
Avatar billede excelent Ekspert
30. december 2010 - 10:29 #5
Prøv med denne funktion som indsættes i et alm. modul

Function tst(rng As Range)
For Each c In rng
If c <> "" Then x = x & c & ","
Next
tst = Left(x, Len(x) - 1)
End Function

I arket skriver du fx.:
=tst(B2:W4)
Avatar billede Basse25 Novice
30. december 2010 - 10:48 #6
Hej igen

Jeg kan ikke rigtig få det til at virke. Jeg er gået ind i VB, og sat ovenstående funktion ind under ark 3 (hvor formlen skal laves), herefter har jeg prøvet formlen =tst(B2:W4) af i arket, men det virker ikke, hvad mon jeg gør forkert. Tror du, at jeg sætter funktionen forkert ind i VB?
Avatar billede excelent Ekspert
30. december 2010 - 10:55 #7
Ja i VB skal du vælge Insert/Module

indsæt kode der
Avatar billede Basse25 Novice
30. december 2010 - 11:01 #8
Jeg fået makroen til at virke, hvis jeg tager B2:BW2. Men jeg skal bruge en forskellig rækkefølge af kolonnerne, så jeg kan ikke bruge f.eks. B2:BW2, for jeg skal f.eks. bruge C2, D2, R2 og E2 - Kan du også hjælpe mig med det?
Avatar billede excelent Ekspert
30. december 2010 - 11:42 #9
Prøv denne som du evt selv kan udvide hvis du har behov for flere

Function test(Optional x1, Optional x2, Optional x3, Optional x4, Optional x5)
If IsMissing(x1) = False Then x = x & x1 & ","
If IsMissing(x2) = False Then x = x & x2 & ","
If IsMissing(x3) = False Then x = x & x3 & ","
If IsMissing(x4) = False Then x = x & x4 & ","
If IsMissing(x5) = False Then x = x & x5 & ","

test = Left(x, Len(x) - 1)
End Function

I arket taster du så =test(c2;d2;r2;e2)
Avatar billede Basse25 Novice
30. december 2010 - 11:51 #10
Det er helt kanon - Tusind tak for hjælpen. Ha' en fantastisk dag.

Acceptere du, så jeg kan give dig dine velfortjente point:-)

Mvh/Basse25
Avatar billede excelent Ekspert
30. december 2010 - 12:48 #11
glemte lige en detalje

Function test(Optional x1, Optional x2, Optional x3, Optional x4, Optional x5)
If IsMissing(x1) = False And x1 <> "" Then x = x & x1 & ","
If IsMissing(x2) = False And x2 <> "" Then x = x & x2 & ","
If IsMissing(x3) = False And x3 <> "" Then x = x & x3 & ","
If IsMissing(x4) = False And x4 <> "" Then x = x & x4 & ","
If IsMissing(x5) = False And x5 <> "" Then x = x & x5 & ","

test = Left(x, Len(x) - 1)
End Function

Husk lige at lade den som hjælper svare
Avatar billede Basse25 Novice
30. december 2010 - 13:00 #12
Hej igen

Den virkede desværre ikke helt. Når der er blanke felter, kommer der kommaer frem. F.eks. kolonne a2 og b2 er blanke og i e2 står der SG - Resultatet bliver ,,SG.
Avatar billede excelent Ekspert
30. december 2010 - 13:03 #13
se kommentar #11
Avatar billede Basse25 Novice
30. december 2010 - 13:16 #14
Når jeg bruger denne formel, får jeg #Værdi?

Og jeg skal nok lade dig svare, jeg troede bare, at jeg havde afsluttet det hel før:-)
Avatar billede excelent Ekspert
30. december 2010 - 13:22 #15
er du sikker på du anvender =test(.... og ikke =tst(...
Avatar billede excelent Ekspert
30. december 2010 - 13:30 #16
nej du har ret der var en bug prøv:

Function test(Optional x1, Optional x2, Optional x3, Optional x4, Optional x5)
If IsMissing(x1) = False Then If x1 <> "" Then x = x & x1 & ","
If IsMissing(x2) = False Then If x2 <> "" Then x = x & x2 & ","
If IsMissing(x3) = False Then If x3 <> "" Then x = x & x3 & ","
If IsMissing(x4) = False Then If x4 <> "" Then x = x & x4 & ","
If IsMissing(x5) = False Then If x5 <> "" Then x = x & x5 & ","

test = Left(x, Len(x) - 1)
End Function
Avatar billede Basse25 Novice
30. december 2010 - 16:07 #17
Den fungerer fint nu. Det eneste spørgsmål jeg har er, hvis nu alle kolonnerne er blanke, så kommer den ud med #værdi, kan jeg sætte noget ind, så den blot bliver blank?
Avatar billede excelent Ekspert
30. december 2010 - 16:12 #18
udskift
test = Left(x, Len(x) - 1)
med
If x = "" Then test = "" Else test = Left(x, Len(x) - 1)
Avatar billede Basse25 Novice
03. januar 2011 - 08:53 #19
Hej

Nu virker den helt efter hensigten. Tak for din store indsats og godt nytår.
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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