Předmět Autor Datum
Návod pre menej znalých (tiež sa medzi nich radím...:-) ): 1. Skopíruj si hárok do iného a rob to v…
pme 15.04.2013 17:29
pme
Moc díky za pomoc! Avšak data data je třeba "číst" skutečně po řádcích, tzn.: Jméno Login Heslo Jmé…
Jaroslav33 15.04.2013 17:52
Jaroslav33
A takto? Sub ToOneColumn() Dim i As Long, k As Long, j As Integer Application.ScreenUpdating = Fals…
pme 15.04.2013 18:03
pme
Skvěle - funguje, díky, vyřešeno :-) poslední
Jaroslav333 16.04.2013 10:11
Jaroslav333

Návod pre menej znalých (tiež sa medzi nich radím...:-) ):

1. Skopíruj si hárok do iného a rob to v ňom (aby pôvodné dáta ostali zachované...) - označ si všetky bunky
2. Spusti VBE (ALT+F11)
3. Stlač Ctrl+R - vyber si svoj hárok
4. V ponuke vyber Insert - Module a do editora vlož tento kód:

Sub MakeOneColumn()

    Dim vaCells As Variant
    Dim vOutput() As Variant
    Dim i As Long, j As Long
    Dim lRow As Long

    If TypeName(Selection) = "Range" Then
        If Selection.Count > 1 Then
            If Selection.Count <= Selection.Parent.Rows.Count Then
                vaCells = Selection.Value

                ReDim vOutput(1 To UBound(vaCells, 1) * UBound(vaCells, 2), 1 To 1)

                For j = LBound(vaCells, 2) To UBound(vaCells, 2)
                    For i = LBound(vaCells, 1) To UBound(vaCells, 1)
                        If Len(vaCells(i, j)) > 0 Then
                            lRow = lRow + 1
                            vOutput(lRow, 1) = vaCells(i, j)
                        End If
                    Next i
                Next j

                Selection.ClearContents
                Selection.Cells(1).Resize(lRow).Value = vOutput
            End If
        End If
    End If

End Sub

5. stlač F5

Všetky označené dáta by mali byť v jednom stĺpci pod sebou.

A takto?

Sub ToOneColumn()
    Dim i As Long, k As Long, j As Integer
    Application.ScreenUpdating = False
    Columns(1).Insert
    i = 0
    k = 1
    While Not IsEmpty(Cells(k, 2))
        j = 2
        While Not IsEmpty(Cells(k, j))
            i = i + 1
            Cells(i, 1) = Cells(k, j)
            Cells(k, j).Clear
            j = j + 1
        Wend
        k = k + 1
    Wend
    Application.ScreenUpdating = True
End Sub

Zpět do poradny Odpovědět na původní otázku Nahoru