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

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

maaca
nováček
Příspěvky: 1
Registrován: květen 15
Pohlaví: Žena
Stav:
Offline

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

Příspěvekod maaca » 15 kvě 2015 13:46

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

Reklama
Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3362
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod atari » 15 kvě 2015 16:02

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

Uživatelský avatar
eLCHa
Level 1
Level 1
Příspěvky: 72
Registrován: duben 10
Bydliště: Ostrava
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod eLCHa » 19 kvě 2015 07:34

Ř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
eL CHá ;)

Kdo hledá, najde. Jenom je třeba hledat pořádně. Zkuste tohle- opravdu to funguje ;)
No vidíš, když se díváš pořádně, tak jedou ;)

lubo.
Level 2
Level 2
Příspěvky: 196
Registrován: červen 13
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod lubo. » 19 kvě 2015 19:43

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.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » 24 dub 2025 10:51 » v Kancelářské balíky
    5
    4470
    od atari Zobrazit poslední příspěvek
    26 dub 2025 09:11
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12865
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    6127
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3813
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00
  • Excel 2016 - vzorec kombinace podmínek Příloha(y)
    od MK_Vs » 08 led 2025 17:56 » v Kancelářské balíky
    5
    4634
    od lubo. Zobrazit poslední příspěvek
    14 led 2025 00:51

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti