4

Это не должно быть очень сложно, но я не могу понять, как это сделать.

У меня есть таблица, похожая на эту

   %low %high
 0   0   12
 1  13   26
 ...
19  90   94
20  95  100

Когда я отображаю это на графике, в Excel по умолчанию используется первый столбец на оси x, а второй и третий столбцы отображаются в виде значений y. Я хочу, чтобы первый столбец был на оси у. Я предполагаю, что есть простой способ сделать это, но я не могу понять это. Большинство вещей, которые я обнаружил при поиске, предложили кнопку «Переключить строку / столбец», но это делает что-то еще.

Спасибо за помощь.

3 ответа3

5

Вы можете вручную выбрать то, что вы хотите график.

Вот мои примеры данных:

Я выбираю, чтобы создать график рассеяния. После редактирования источника данных я нажимаю кнопку Добавить.

Вы можете выбрать все, что хотите для названия серии, но я выбираю заголовок столбца. Значения X - это значения в вашем столбце X, конечно. Значения Y являются одним из столбцов Y.

Повторите процесс для второго набора данных.

2

Вот простая подпрограмма VBA, которая создает диаграмму рассеяния XY из данных, которые располагаются с Y в первом столбце и одним или несколькими наборами X в последующих данных. Выберите диапазон данных или выделите одну ячейку в этом диапазоне и запустите код.

Sub ChartFromInput_YXX()
    ' assumes first column of input range has Y values
    ' assumes subsequent columns have X values
    ' assumes first row of input range has series

    Dim rngDataSource As Range
    Dim iDataRowsCt As Long
    Dim iDataColsCt As Integer
    Dim iSrsIx As Integer
    Dim chtChart As Chart
    Dim srsNew As Series

    If Not TypeName(Selection) = "Range" Then
        '' Doesn't work if no range is selected
        MsgBox "Please select a data range and try again.", _
            vbExclamation, "No Range Selected"
    Else
        Set rngDataSource = Selection
        If rngDataSource.Cells.Count = 1 Then
            ' expand to data range including active cell
            Set rngDataSource = rngDataSource.CurrentRegion
        End If
        With rngDataSource
            iDataRowsCt = .Rows.Count
            iDataColsCt = .Columns.Count
        End With

        '' Create the chart
        Set chtChart = ActiveSheet.Shapes.AddChart.Chart

        With chtChart
            .ChartType = xlXYScatterLines

            '' Remove any series created with the chart
            Do Until .SeriesCollection.Count = 0
                .SeriesCollection(1).Delete
            Loop

            For iSrsIx = 1 To iDataColsCt - 1
                '' Add each series
                Set srsNew = .SeriesCollection.NewSeries
                With srsNew
                    .Name = rngDataSource.Cells(1, 1 + iSrsIx)
                    .Values = rngDataSource.Cells(2, 1) _
                        .Resize(iDataRowsCt - 1, 1)
                    .XValues = rngDataSource.Cells(2, 1 + iSrsIx) _
                        .Resize(iDataRowsCt - 1, 1)
                End With
            Next
        End With
    End If
End Sub
1

Если вам нужна повторяющаяся задача, принятое решение может занять много времени. Великий Джон Пельтье имеет простую надстройку для этого. Смотрите его страницу.

Как указано на этой другой странице документации:

Переключить оси XY

Это заполнитель для страницы документации по осям коммутатора XY.

То есть, никакой документации нет. Тем не менее, это действительно стоит попробовать. Это действительно легко учиться.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .