Вопрос по Excel

Тема в разделе "Другие языки", создана пользователем l.korv1n, 14 окт 2013.

Модераторы: Цукер
  1. pinall

    pinall Писатель

    Регистр.:
    23 дек 2015
    Сообщения:
    2
    Симпатии:
    0
  2. Ruuv1337

    Ruuv1337 Писатель

    Регистр.:
    15 дек 2015
    Сообщения:
    1
    Симпатии:
    0
  3. Elvis000

    Elvis000 Писатель

    Регистр.:
    23 ноя 2015
    Сообщения:
    4
    Симпатии:
    0
    Не верный (

    Есть ещё варианты ?
     
    Последнее редактирование модератором: 26 июл 2016
  4. NutriProfits

    NutriProfits Писатель

    Регистр.:
    9 мар 2016
    Сообщения:
    3
    Симпатии:
    0
    разбить на столбцы потом скопировать строку и вставить данные в виде столбца на др листе и аналогично со второй строкой
     
  5. sava36

    sava36

    Регистр.:
    13 мар 2007
    Сообщения:
    150
    Симпатии:
    31
    Sub whatever()
    Dim WS As Excel.Worksheet
    Set WS = ActiveWorkbook.ActiveSheet
    Dim WS2 As Excel.Worksheet
    Dim i As Long, j As Long, k As Long
    With ActiveWorkbook
    Set WS2 = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
    End With
    WS2.Name = "RESULT"
    With WS.UsedRange
    For i = 1 To .Rows.Count
    For j = 1 To .Columns.Count
    k = k + 1
    WS2.Cells(k, 1) = .Cells(i, j)
    Next
    Next
    End With
    WS.Select
    End Sub
     
  6. sava36

    sava36

    Регистр.:
    13 мар 2007
    Сообщения:
    150
    Симпатии:
    31
    А точнее, если 1 столбец в исходнике надо оставить:
    Код:
    Sub whatever()
      Dim WS As Excel.Worksheet
      Set WS = ActiveWorkbook.ActiveSheet
      Dim WS2 As Excel.Worksheet
      Dim i As Long, j As Long, k As Long
      With ActiveWorkbook
        Set WS2 = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
      End With
      WS2.Name = "RESULT"
      With WS.UsedRange
        For i = 1 To .Rows.Count
          For j = 2 To .Columns.Count
            k = k + 1
            WS2.Cells(k, 1) = .Cells(i, 1)
            WS2.Cells(k, 2) = .Cells(i, j)
          Next
        Next
      End With
      WS.Select
    End Sub
    
    Это если че ВБА. Надо на нужном листе нажать Alt+F11, даблклик слева на "ЭтаКнига", в правом окне закопипастить этот код ниже того, что там уже есть, поставить курсор куда-нибудь в середину этого кода и нажать F5)
     
    Последнее редактирование: 15 окт 2016
  7. AndreasItalyMan

    AndreasItalyMan Писатель

    Регистр.:
    3 окт 2013
    Сообщения:
    1
    Симпатии:
    0
    Можно создать руками CSV файл и вставить разделители строк, после чего открыть с помощью EXCEL указав необходимый разделитель строк, и EXCEL сама разложит на строки
     
  8. drolyn

    drolyn Создатель

    Регистр.:
    20 июл 2007
    Сообщения:
    20
    Симпатии:
    15
  9. sava36

    sava36

    Регистр.:
    13 мар 2007
    Сообщения:
    150
    Симпатии:
    31
    Топикстартеру нужно не транспонирование. Транспонирование поворачивает данные (было 2 строки - станет 2 столбца), а тут надо 2 строки в 1 столбец, так что VBA выше поможет
     
  10. radder8

    radder8 Писатель

    Регистр.:
    11 май 2017
    Сообщения:
    6
    Симпатии:
    1
    Код:
    Sub ReversePivotTable()
    '   Before running this, make sure you have a summary table with column headers.
    '   The output table will have three columns.
        Dim SummaryTable As Range, OutputRange As Range
        Dim OutRow As Long
        Dim r As Long, c As Long
    
        On Error Resume Next
        Set SummaryTable = ActiveCell.CurrentRegion
        If SummaryTable.Count = 1 Or SummaryTable.Rows.Count < 3 Then
            MsgBox "Select a cell within the summary table.", vbCritical
            Exit Sub
        End If
        SummaryTable.Select
        Set OutputRange = Application.InputBox(prompt:="Select a cell for the 3-column output", Type:=8)
    '   Convert the range
        OutRow = 2
        Application.ScreenUpdating = False
        OutputRange.Range("A1:C3") = Array("Column1", "Column2", "Column3")
        For r = 2 To SummaryTable.Rows.Count
            For c = 2 To SummaryTable.Columns.Count
                OutputRange.Cells(OutRow, 1) = SummaryTable.Cells(r, 1)
                OutputRange.Cells(OutRow, 2) = SummaryTable.Cells(1, c)
                OutputRange.Cells(OutRow, 3) = SummaryTable.Cells(r, c)
                OutputRange.Cells(OutRow, 3).NumberFormat = SummaryTable.Cells(r, c).NumberFormat
                OutRow = OutRow + 1
            Next c
        Next r
    End Sub