join(array,";")

Status
Niet open voor verdere reacties.

frizzle

Nieuwe gebruiker
Lid geworden
3 feb 2008
Berichten
2
Hallo, voor het wegschrijven van gegevens uit excel naar een csv bestand zou ik de functie join willen gebruiken.Het werkt goed als je iedere cel apart aangeeft (join(array(cel1,cel2, cel3 etc. Is het mogelijk om een reeks bv a26:z26 in een keer, en niet als 26 aparte cellen op te nemen, en hoe zou dit kunnen (zonder gebruik van loop)?
 
Hoi

Zonder loop gaat dat niet. Kijk maar in de helpfiles:

Join Function


Description

Returns a string created by joining a number of substrings contained in an array.

Syntax

Join(sourcearray[, delimiter])

The Join function syntax has these named arguments:

Part Description
sourcearray Required. One-dimensional array containing substrings to be joined.
delimiter Optional. String character used to separate the substrings in the returned string. If omitted, the space character (" ") is used. If delimiter is a zero-length string (""), all items in the list are concatenated with no delimiters.

Wigi
 
Hallo frizzle !

Misschien kan onderstaande Udf helpen. Er zit natuurlijk een loop in (zelfs twee), maar eens je de functie ergens in een module zet, kan je ze zonder loops aanroepen.

Code:
Sub test()

'Bijvoorbeeld.
MsgBox SuperJoin(ThisWorkbook.Sheets(1).Range("A26:Z26"), ",")

End Sub

Function SuperJoin(oRng As Range, cDelimiter As String) As String
Dim cString As String
Dim nRows As Integer, nCols As Integer, r As Integer, c As Integer

'Eerst kijken of we wel degelijk een Range hebben doorgekregen.
If oRng Is Nothing Then Exit Function

'Dan kijken of we te maken hebben met een eendimensionele Range.
nRows = oRng.Rows.Count
nCols = oRng.Columns.Count
If nRows > 1 And nCols > 1 Then Exit Function

'Dan de waarden achter elkaar zetten met de gewenste delimiter er tussen.
For r = 1 To nRows
    For c = 1 To nCols
        cString = cString & CStr(oRng.Cells(r, c).Value) & cDelimiter
    Next
Next

'De laatste delimiter hoeven we niet.
cString = Left(cString, Len(cString) - 1)

'Het resultaat geven we terug.
SuperJoin = cString

End Function

Grtz,
MDN111.
 
Laatst bewerkt:
Bedankt voor de antwoorden !!
Ga het uitproberen. Had zelf al andere oplossing (met loop) en dacht een snellere oplossing over het hoofd te zien.
Bij kleinere bestanden werkt join(array(aparte cellen ,";") denk ik het snelst.
ga tijdsduur van eigen loop en de superjoin functie vergelijken bij grotere en kleinere csv bestanden. bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan