Vraag : Excel VBA - schakel cellen in elke andere kolom in waaier aaneen

Het dossier in bijlage heeft sommige kolommen waar ik me bij alle tekstkolommen (elke tweede kolom die met B beginnen) zou willen aansluiten en de resultaten in een kolom op Sheet1 zetten, bijvoorbeeld.
Hard-coded met een formule, zou het vrij eenvoudige =concatenate zijn (b2, „ | “, d2, „ | “, f2, „ | “, h2) met het pijp-symbool „ | “ verdelend elk tekstgebied.  Of het kon enkel =b2 zijn & „ | “ & d2… enz.  Dan kleef de formule onderaan page.

I kan niet berekenen hoe te om dit in VBA though.
I te doen denken u moet a voor gebruiken… Elk en telt overdwars de kolommen om (xlToLeft) toen Stap 2 voor elke andere column.
Then te beëindigen…?  elke cel wordt toegevoegd aan de volgende tot het eind van de waaier. ???
For tot de reden de syntaxis voor de de Waaier en inzameling van Cellen (en de logica van het tellen overdwars en dan het van verwijzingen voorzien van de variabelen) niet betekenis of het werk voor me.
Thanks voor uw hulp maakt!
Attachments:
van
schakel cellen in elke andere column
aaneen

Antwoord : Excel VBA - schakel cellen in elke andere kolom in waaier aaneen

Probeer dit:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
Sub ConcatenateText ()
    
    Schemerige lastRow zoals lang
    Schemerige lastCol zoals lang
    Schemerige tempLastRow zoals lang
    Schemerige I als lang 'Rijen van de Toename
    Schemerig p als lang 'Kolommen van de Toename
    Schemerige conValue als Koord
    Schemerige conSheet als Koord 'schakelt de Naam van het Blad aaneen
    Schemerige destSheet Naam van het Blad van de Bestemming als van Koord de '
    
    destSheet = „Sheet1“
    conSheet = „surveyText“

    lastRow = Bladen (conSheet). Waaier („A“ & Rows.Count). Eind (xlUp). Rij
    lastCol = Bladen (conSheet). Waaier (Columns.Count & „: 1“). Eind (xlToRight). Kolom
    
    Voor I = 2 aan lastRow
        Voor p = 2 aan lastColStap 2
            conValue = conValue & „ | “ & Bladen (conSheet). Cellen (I, p). Waarde
        Daarna
        tempLastRow = Bladen (destSheet). Waaier („A“ & Rows.Count). Eind (xlUp). Rij + 1
        Bladen (destSheet). Cellen (tempLastRow, 1). Waarde = Juist (conValue, Len (conValue) - 3)
        conValue = ""
    Volgende I
    
    Gedaane MsgBox „!“
    
Sub van het eind
Andere oplossingen  
 
programming4us programming4us