Naar een volgende kolom

Status
Niet open voor verdere reacties.

bontekite

Gebruiker
Lid geworden
19 dec 2009
Berichten
80
:rolleyes:

Ik ben bezig met een programma welke waarde uit excel leest in een array (geg(z) en dan plaatst in één kolom, daarna worden er weer gegevens gelezen en die moeten in de volgende kolom.
is er een eenvoudige vb code om dit uit te voeren het aantal kollommen kan op lopen naar 100 (x) en misschien wel meer.
x wordt van te voren bepaalt bijv 3 maar kan ook 100 zijn
voorbeeld:

for i = 1 to x
'hiermee wordt de kolom bepaalt
if i =1 then kol = "D"
if i= 2 then kol = "E"
If i= 3 then Kol = "F"

for z = 1 to 100
'nu worden de gegevens in de kolom geplaatst
range(kol & "" & i & "")= geg(z)
next z

next i


Maar nu moet ik alle kolommen van te voren in een if statment bepalen, is dit niet simpeler te maken.
 
Uit de losse pols.
bv:
Code:
Dim i
For i = 1 To Range("1:1").Cells(1, Columns.Count).End(xlToLeft).Column
Cells(1, i).Offset(, 1) = 5
Next
 
Uit een nog lossere pols :D
Code:
for i = 1 to x 
'hiermee wordt de kolom bepaalt
[COLOR="red"]kol = Chr(67 + i)[/COLOR]
for z = 1 to 100
'nu worden de gegevens in de kolom geplaatst
range(kol & "" & i & "")= geg(z)
next z 

next i
 
:thumb::D

Heren hierbij mij hartelijke dank jullie reactie.


Ik heb uiteindelijk de tweede gebruikt, hier kon ik volstaan om alleen het regeltje "kol = Chr(67 + i)" in de script toe te voegen en alle if statments te verwijderen en werken maar.
Ik denk dat ik deze oplossing nog wel eens meer ga toepassen omdat ik regelmatig excel documenten met vba programma's bewerk en gegevens verplaats.

We zijn nu weer wat wijzer geworden.
Het kan toch zo eenvoudig zijn maar je moet er maar opkomen.
nog maals bedankt.

met vriendelijke groeten
Bontekite

:thumb:
:d
 
Laatst bewerkt:
:confused:
Heren
Toch nog even een reactie bij de tweede oplossing gaat het mis na 23 kolommen omdat chr 91 niet AA is maar een ander Karakter.
dan probeer ik een procedure te schrijven die na Z de AA aanmaakt en dan weer bi AZ naar BA enz tot dat ik ongeveer 200 of 300 kolommen opgeschoven ben.

of de andereoplossing toe te passen maar deze werkt nog niet helemaal naar behoren.
hij doet het wel maar werkt nog niet in mijn script.


groeten bontekite
 
dit is uiteindelijk de procedure geworden
'hierbij wordt kolom C tot en met Z

If zzzzz <= 24 Then
kol = Chr(66 + zzzzz)
End If
'kolommen AA tot en met AZ
If zzzzz >= 25 And zzzzz <= 50 Then
c = 1
cc = cc + 1
kol = Chr(64 + c) + Chr(64 + cc)
End If

'kolommen BA tot en met BZ
If zzzzz >= 51 And zzzzz <= 76 Then
c = 2
ccc = ccc + 1
kol = Chr(64 + c) + Chr(64 + ccc)
End If

If zzzzz >= 77 And zzzzz <= 102 Then
c = 3
cccc = cccc + 1
kol = Chr(64 + c) + Chr(64 + cccc)
End If

If zzzzz >= 103 And zzzzz <= 128 Then
c = 4
ccccc = ccccc + 1
kol = Chr(64 + c) + Chr(64 + ccccc)
End If

If zzzzz >= 129 And zzzzz <= 154 Then
c = 5
cccccc = cccccc + 1
kol = Chr(64 + c) + Chr(64 + cccccc)
End If

If zzzzz >= 155 And zzzzz <= 180 Then
c = 6
ccccccc = ccccccc + 1
kol = Chr(64 + c) + Chr(64 + ccccccc)
End If

If zzzzz >= 181 And zzzzz <= 206 Then
c = 7
cccccccc = cccccccc + 1
kol = Chr(64 + c) + Chr(64 + cccccccc)
End If

If zzzzz >= 207 And zzzzz <= 232 Then
c = 8
ccccccccc = ccccccccc + 1
kol = Chr(64 + c) + Chr(64 + ccccccccc)
End If
=======================================

ik ben nog op zoek met de andere oplossing of ik die in de procedure werkend kan krijgen.

het is uiteindelijk toch nog iets groter geworden dan het in het begin er naar uit zag.
maar het werkt.

groeten Bontekite
 
Code:
Dim i As Long
    For i = 4 To x + 3
        kol = ColumntoNumber(i) 'hiermee wordt de kolom bepaalt
        For z = 1 To 100
            Range(kol & "" & i - 3 & "") = geg(z) 'nu worden de gegevens in de kolom geplaatst
        Next z
    Next i

Function ColumntoNumber(Column As Long) As String
Dim str As String
Dim lngA As Long, lngB As Long
lngA = (Column - 1) Mod 26
lngB = (Fix((Column - 26 - 1) / 26)) Mod 26
If Column > 26 Then str = str + Chr(65 + lngB)
str = str + Chr(65 + lngA)
ColumntoNumber = str
End Function
 
@Warme bakkertje
Ik heb die oude functie van mij veranderd in het volgende:
Code:
Function ColumnToText(col As Long) As String
    ColumnToText = Split(Columns(col).Cells(1, 1).Address, "$")(1)
End Function

stukken korter :P, maar beperkt zich wel tot Excel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan