Stránka 1 z 1

excel/VBA: sloučení sloupců do jednoho

Napsal: 15 kvě 2015 13:46
od maaca
Ahoj, chtěla jsem se zeptat, jak nejrychleji sloučit sloupce do jednoho? př. 365 sloupců o 24 řádcích -> do jednoho sloupce o 8760 řádcích.

Moc děkuju, Máca

Re: excel/VBA: sloučení sloupců do jednoho

Napsal: 15 kvě 2015 16:02
od atari
Kodem VBA, viz níže. Udělal jsem to bez jakýchkoliv kontrol, a názvů sešitu. V úvodu makra je nutné ručně vždy zadat proměnné. Lze to pak udělat komfortněji přes ovládací prvky apod. Makro předpokládá že mezi sloupci nebude prázdný sloupec.

Kód: Vybrat vše

Sub sloucit_sloupce()
pocet_sloupcu = 365
pocet_radku = 24
prvni_sl = 2 ' číslo sloupce kde začáná řada dat
cil_sl = 1 'číslo cílového sloupce - výsledku

radek = 1
For i = prvni_sl To pocet_sloupcu + prvni_sl - 1
For i1 = 1 To pocet_radku
Cells(radek, cil_sl) = Cells(i1, i)
radek = radek + 1
Next i1
Next i
End Sub

Re: excel/VBA: sloučení sloupců do jednoho

Napsal: 19 kvě 2015 07:34
od eLCHa
Řešení od atari asi postačí, jako ranní rozvičku přidávám krapet jednodušší a hlavně rychlejší

Kód: Vybrat vše

Sub subRangeToColumn()
  Const sADDRESS As String = "A1:NA24"
 
  Dim vVals() As Variant
  ReDim vVals(1 To Range(sADDRESS).Cells.Count, 1 To 1)
 
  Dim i As Long
  For i = 1 To UBound(vVals)
    vVals(i, 1) = Range(sADDRESS).Cells(((i - 1) Mod Range(sADDRESS).Rows.Count) + 1, (i - 1) \ Range(sADDRESS).Rows.Count + 1).Value
  Next i
 
  Range(sADDRESS).ClearContents
  Range(sADDRESS).Cells(1).Resize(UBound(vVals), 1).Value = vVals
End Sub

Re: excel/VBA: sloučení sloupců do jednoho

Napsal: 19 kvě 2015 19:43
od lubo.
Předpokládám, že v řádku jsou hodiny a ve sloupci dny. Pokud jsou data v oblasti $A$1:$X$365 a výsledek začíná na řádku 1, data jsou po hodinách, pak stačí vzorec:

Kód: Vybrat vše

=INDEX($A$1:$X$365;CELÁ.ČÁST(ŘÁDEK()/24)+1;MOD(ŘÁDEK()-1;24)+1)


nakopírovat od řádku 1 do řádku 8760. Např. vzorec je v buňce Z1. F5, Z8760, ctrl-shift-šipka nahodu, ctrl-d.