Sloučení párových sloupců do jednoho

Sloučení párových sloupců do jednoho je případ, kdy máme několik párů sloupců s odpovídajícími si položkami vedle sebe, a naším cílem je spojit je do jednoho seznamu. Více napoví obrázek.

Sloučení párových sloupců
Sloučení párových sloupců

A takto vypadá převod zdrojových dat (List1) do cílové podoby (List2):

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Sub SlouceniParovychSloupcu()

    Dim wshZdroj As Worksheet
    Dim wshCil As Worksheet
   
    Dim rngOblast As Range
    Dim rngTempBunka1 As Range
    Dim rngTemp As Range

    Dim intTemp As Integer
    Dim intRadek As Integer
    Dim intPocetSloupcu As Integer

    'zamezeni prekreslovani a prepoctu
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    'prirazeni zdrojoveho listu do promenne
    Set wshZdroj = Worksheets("List1")
   
    'prirazeni ciloveho listu do promenne
    Set wshCil = Worksheets("List2")
   
    'vycisteni ciloveho listu
    wshCil.UsedRange.Clear
       
    'prirazeni kopirovane oblasti do promenne
    Set rngOblast = wshZdroj.Cells(1).CurrentRegion

    With wshCil

        'kopie na druhy list
        rngOblast.Copy .Cells(1)

        'pocet sloupcu
        intPocetSloupcu = .Range(.Cells(1), _
            .Cells(1).End(xlToRight)).Cells.Count

        'prvni volny radek prvni podoblasti s parovymi hodnotami
        intRadek = .Range(.Cells(1), .Cells(1).End(xlDown)).Cells.Count + 1

        'zpracovani podoblasti s parovymi hodnotami
        For i = 2 To intPocetSloupcu \ 2

            'prvni bunka podoblasti
            Set rngTempBunka1 = .Cells(1, 2 * i - 1)

            'pocet paru v podoblasti
            intTemp = .Range(rngTempBunka1, rngTempBunka1.End(xlDown)).Cells.Count - 1
           
            'prevzeti podoblasti
            Set rngTemp = rngTempBunka1.Offset(1, 0).Resize(intTemp, 2)

            'presun podoblasti
            rngTemp.Cut .Cells(intRadek, 1)

            'nasledujici volny radek
            intRadek = intRadek + intTemp

        Next i
       
        'vycisteni radku hlavicek
        .Range(.Cells(1, 3), .Cells(1, 3).End(xlToRight)).Clear

    End With
   
    'povoleni prepoctu a prekreslovani
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub

 

Občas je potřeba docílit pravého opaku. To když kupříkladu máme páry odpovídajících si hodnot (pro představu takový česko-anglický slovníček), a chceme při tisku šetřit papírem, tj. umístit více párů na list A4. O tom ale zas někdy jindy.

Příloha
slouceni_parovych_sloupcu.zip

Související články
Rozřazení bloků dat do podoby seznamu
Převod seznam – tabulka