Как мне создать график Excel, которая вытягивает данные из нескольких листов? [закрыто] -- excel поле с участием charts поле с участием excel-2007 пол Связанный проблема

How do I create an Excel chart that pulls data from multiple sheets? [closed]


7
vote

проблема

русский
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»>
закрыт. Этот вопрос Off-Topic . В настоящее время он не принимает ответы.

<Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 5.6A6.31 6.31 0 002.39 5.75C.49.39.76.93.76 1.5V.24C0 1.07.89 1.9 1.92 1.92.75C1.04 0 1.92-.83 1.92-1.9v-. 2C0-.6.26-1.15.7-1.6.26-1.15.7-1.48A6.32 6.32 0 0015 6.37ZM4.03 5.85A4.49 4.49 0 018 2.02A4.48 4,48 0 015 4.36 4.3 4,3 0 01-1.72 3.44C-01-1.74-1.5 1.9- 1.5 3.08V.1H7.2V-.14C0-1.23-.6-2.34-1.3-1.32.32-1.53-3.07A4.32.32.32 0 01-1.64-3.94ZM10 18A1 1 0 000-2х7А1 1 0 100 2H3Z ">

Хотите улучшить этот вопрос? Обновите вопрос Так что это на- Тема для переполнения стека.

Закрыто 8 лет назад .

Улучшить этот вопрос .

У меня ежемесячные продажи фигуры, хранящиеся в отдельных листах. Я хотел бы создать сюжет продаж для нескольких продуктов в месяц. Каждый продукт будет представлен в другой цветной линии на том же диаграмме с каждым месяцем, работающим по оси X.

Какой лучший способ создать единую диаграмму, которая тянет из тех же относительных клеток на нескольких листах?

Английский оригинал

I have monthly sales figures stored in separate sheets. I would like to create a plot of sales for multiple products per month. Each product would be represented in a different colored line on the same chart with each month running along the x axis.

What is the best way to create a single line chart that pulls from the same relative cells on multiple sheets?

</div
        
         
         

Список ответов

6
 
vote
vote
Лучший ответ
 

Используйте мастер диаграммы.

на шаге 2 из 4, есть вкладка, помеченная «серия». На этой вкладке есть 3 поля и вкладка списка. В поле «Список» отображается разные серии, которые вы уже включаете на график. Каждая серия имеет поле «Имя», так и поле «Значения», которое специфично для этой серии. Окончательное поле - поле этикеток «категории (X) оси», которое обычно для всех серий.

Нажмите на кнопку «Добавить» под окном списка. Это добавит пустой серию в ваш список в списке. Обратите внимание, что значения для «name» и «значения» изменяются при выделении серии в поле списка.

Выберите вашу новую серию.

Есть значок в каждом поле на правой стороне. Этот значок позволяет выбрать ячейки в рабочей книге, чтобы вытащить данные. Когда вы нажмете на нем, мастер временно скрывается (за исключением поля, в которой вы работаете), позволяя вам взаимодействовать с рабочей книгой.

Выберите подходящий лист в рабочей книге, а затем выберите поля с данными, которые вы хотите показать на графике. Кнопка справа от поля может быть нажата, чтобы показать мастер.

Надеюсь, что помогает.

Редактировать: приведенное выше относится к 2003 году и раньше. За 2007 год, когда выбрана график, вы сможете выполнить аналогичное действие, используя опцию «Выбор данных» на вкладке «Дизайн» ленты. Это открывает диалоговое окно, перечисляющее серию для диаграммы. Вы можете выбрать сериал, так как вы можете в Excel 2003, но вы должны использовать кнопки «Добавить» и «редактировать» для определения пользовательских серий.

 

Use the Chart Wizard.

On Step 2 of 4, there is a tab labeled "Series". There are 3 fields and a list box on this tab. The list box shows the different series you are already including on the chart. Each series has both a "Name" field and a "Values" field that is specific to that series. The final field is the "Category (X) axis labels" field, which is common to all series.

Click on the "Add" button below the list box. This will add a blank series to your list box. Notice that the values for "Name" and for "Values" change when you highlight a series in the list box.

Select your new series.

There is an icon in each field on the right side. This icon allows you to select cells in the workbook to pull the data from. When you click it, the Wizard temporarily hides itself (except for the field you are working in) allowing you to interact with the workbook.

Select the appropriate sheet in the workbook and then select the fields with the data you want to show in the chart. The button on the right of the field can be clicked to unhide the wizard.

Hope that helps.

EDIT: The above applies to 2003 and before. For 2007, when the chart is selected, you should be able to do a similar action using the "Select Data" option on the "Design" tab of the ribbon. This opens up a dialog box listing the Series for the chart. You can select the series just as you could in Excel 2003, but you must use the "Add" and "Edit" buttons to define custom series.

</div
 
 
         
         
0
 
vote

Вот какой-то код от Excel 2010, который может работать. Он имеет пару специфики (например, фильтрующие символы плохого кодирования от заголовков), но он был разработан для создания нескольких графов нескольких серий из 4-мерных данных, имеющих абсолютные и процентные данные. Измените это, как вам нравится:

 <код> Sub createAllGraphs()  Const chartWidth As Integer = 260 Const chartHeight As Integer = 200     If Sheets.Count = 1 Then     Sheets.Add , Sheets(1)     Sheets(2).Name = "AllCharts" ElseIf Sheets("AllCharts").ChartObjects.Count > 0 Then     Sheets("AllCharts").ChartObjects.Delete End If Dim c As Variant Dim c2 As Variant Dim cs As Object Set cs = Sheets("AllCharts") Dim s As Object Set s = Sheets(1)  Dim i As Integer   Dim chartX As Integer Dim chartY As Integer  Dim r As Integer r = 2  Dim curA As String curA = s.Range("A" & r) Dim curB As String Dim curC As String Dim startR As Integer startR = 2  Dim lastTime As Boolean lastTime = False  Do While s.Range("A" & r) <> ""      If curC <> s.Range("C" & r) Then          If r <> 2 Then seriesAdd:             c.SeriesCollection.Add s.Range("D" & startR & ":E" & (r - 1)), , False, True             c.SeriesCollection(c.SeriesCollection.Count).Name = Replace(s.Range("C" & startR), "Â", "")             c.SeriesCollection(c.SeriesCollection.Count).XValues = "='" & s.Name & "'!$D$" & startR & ":$D$" & (r - 1)             c.SeriesCollection(c.SeriesCollection.Count).Values = "='" & s.Name & "'!$E$" & startR & ":$E$" & (r - 1)             c.SeriesCollection(c.SeriesCollection.Count).HasErrorBars = True             c.SeriesCollection(c.SeriesCollection.Count).ErrorBars.Select             c.SeriesCollection(c.SeriesCollection.Count).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, Amount:="='" & s.Name & "'!$F$" & startR & ":$F$" & (r - 1), minusvalues:="='" & s.Name & "'!$F$" & startR & ":$F$" & (r - 1)             c.SeriesCollection(c.SeriesCollection.Count).ErrorBar Direction:=xlX, Include:=xlBoth, Type:=xlFixedValue, Amount:=0              c2.SeriesCollection.Add s.Range("D" & startR & ":D" & (r - 1) & ",G" & startR & ":G" & (r - 1)), , False, True             c2.SeriesCollection(c2.SeriesCollection.Count).Name = Replace(s.Range("C" & startR), "Â", "")             c2.SeriesCollection(c2.SeriesCollection.Count).XValues = "='" & s.Name & "'!$D$" & startR & ":$D$" & (r - 1)             c2.SeriesCollection(c2.SeriesCollection.Count).Values = "='" & s.Name & "'!$G$" & startR & ":$G$" & (r - 1)             c2.SeriesCollection(c2.SeriesCollection.Count).HasErrorBars = True             c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBars.Select             c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, Amount:="='" & s.Name & "'!$H$" & startR & ":$H$" & (r - 1), minusvalues:="='" & s.Name & "'!$H$" & startR & ":$H$" & (r - 1)             c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBar Direction:=xlX, Include:=xlBoth, Type:=xlFixedValue, Amount:=0             If lastTime = True Then GoTo postLoop         End If          If curB <> s.Range("B" & r).Value Then              If curA <> s.Range("A" & r).Value Then                 chartX = chartX + chartWidth * 2                 chartY = 0                 curA = s.Range("A" & r)             End If              Set c = cs.ChartObjects.Add(chartX, chartY, chartWidth, chartHeight)             Set c = c.Chart             c.ChartWizard , xlXYScatterSmooth, , , , , True, Replace(s.Range("B" & r), "Â", "") & " " & s.Range("A" & r), s.Range("D1"), s.Range("E1")              Set c2 = cs.ChartObjects.Add(chartX + chartWidth, chartY, chartWidth, chartHeight)             Set c2 = c2.Chart             c2.ChartWizard , xlXYScatterSmooth, , , , , True, Replace(s.Range("B" & r), "Â", "") & " " & s.Range("A" & r) & " (%)", s.Range("D1"), s.Range("G1")              chartY = chartY + chartHeight             curB = s.Range("B" & r)             curC = s.Range("C" & r)         End If          curC = s.Range("C" & r)         startR = r     End If      If s.Range("A" & r) <> "" Then oneMoreTime = False ' end the loop for real this time     r = r + 1 Loop  lastTime = True GoTo seriesAdd postLoop: cs.Activate  End Sub   
 

Here's some code from Excel 2010 that may work. It has a couple specifics (like filtering bad-encode characters from titles) but it was designed to create multiple multi-series graphs from 4-dimensional data having both absolute and percentage-based data. Modify it how you like:

Sub createAllGraphs()  Const chartWidth As Integer = 260 Const chartHeight As Integer = 200     If Sheets.Count = 1 Then     Sheets.Add , Sheets(1)     Sheets(2).Name = "AllCharts" ElseIf Sheets("AllCharts").ChartObjects.Count > 0 Then     Sheets("AllCharts").ChartObjects.Delete End If Dim c As Variant Dim c2 As Variant Dim cs As Object Set cs = Sheets("AllCharts") Dim s As Object Set s = Sheets(1)  Dim i As Integer   Dim chartX As Integer Dim chartY As Integer  Dim r As Integer r = 2  Dim curA As String curA = s.Range("A" & r) Dim curB As String Dim curC As String Dim startR As Integer startR = 2  Dim lastTime As Boolean lastTime = False  Do While s.Range("A" & r) <> ""      If curC <> s.Range("C" & r) Then          If r <> 2 Then seriesAdd:             c.SeriesCollection.Add s.Range("D" & startR & ":E" & (r - 1)), , False, True             c.SeriesCollection(c.SeriesCollection.Count).Name = Replace(s.Range("C" & startR), "Â", "")             c.SeriesCollection(c.SeriesCollection.Count).XValues = "='" & s.Name & "'!$D$" & startR & ":$D$" & (r - 1)             c.SeriesCollection(c.SeriesCollection.Count).Values = "='" & s.Name & "'!$E$" & startR & ":$E$" & (r - 1)             c.SeriesCollection(c.SeriesCollection.Count).HasErrorBars = True             c.SeriesCollection(c.SeriesCollection.Count).ErrorBars.Select             c.SeriesCollection(c.SeriesCollection.Count).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, Amount:="='" & s.Name & "'!$F$" & startR & ":$F$" & (r - 1), minusvalues:="='" & s.Name & "'!$F$" & startR & ":$F$" & (r - 1)             c.SeriesCollection(c.SeriesCollection.Count).ErrorBar Direction:=xlX, Include:=xlBoth, Type:=xlFixedValue, Amount:=0              c2.SeriesCollection.Add s.Range("D" & startR & ":D" & (r - 1) & ",G" & startR & ":G" & (r - 1)), , False, True             c2.SeriesCollection(c2.SeriesCollection.Count).Name = Replace(s.Range("C" & startR), "Â", "")             c2.SeriesCollection(c2.SeriesCollection.Count).XValues = "='" & s.Name & "'!$D$" & startR & ":$D$" & (r - 1)             c2.SeriesCollection(c2.SeriesCollection.Count).Values = "='" & s.Name & "'!$G$" & startR & ":$G$" & (r - 1)             c2.SeriesCollection(c2.SeriesCollection.Count).HasErrorBars = True             c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBars.Select             c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, Amount:="='" & s.Name & "'!$H$" & startR & ":$H$" & (r - 1), minusvalues:="='" & s.Name & "'!$H$" & startR & ":$H$" & (r - 1)             c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBar Direction:=xlX, Include:=xlBoth, Type:=xlFixedValue, Amount:=0             If lastTime = True Then GoTo postLoop         End If          If curB <> s.Range("B" & r).Value Then              If curA <> s.Range("A" & r).Value Then                 chartX = chartX + chartWidth * 2                 chartY = 0                 curA = s.Range("A" & r)             End If              Set c = cs.ChartObjects.Add(chartX, chartY, chartWidth, chartHeight)             Set c = c.Chart             c.ChartWizard , xlXYScatterSmooth, , , , , True, Replace(s.Range("B" & r), "Â", "") & " " & s.Range("A" & r), s.Range("D1"), s.Range("E1")              Set c2 = cs.ChartObjects.Add(chartX + chartWidth, chartY, chartWidth, chartHeight)             Set c2 = c2.Chart             c2.ChartWizard , xlXYScatterSmooth, , , , , True, Replace(s.Range("B" & r), "Â", "") & " " & s.Range("A" & r) & " (%)", s.Range("D1"), s.Range("G1")              chartY = chartY + chartHeight             curB = s.Range("B" & r)             curC = s.Range("C" & r)         End If          curC = s.Range("C" & r)         startR = r     End If      If s.Range("A" & r) <> "" Then oneMoreTime = False ' end the loop for real this time     r = r + 1 Loop  lastTime = True GoTo seriesAdd postLoop: cs.Activate  End Sub 
</div
 
 
 
 
-1
 
vote

2007 более мощный с лентой ..: =) Добавить новую серию в диаграмме сделать: Выберите Диаграмма, затем нажмите Дизайн в инструментах Диаграммы на ленте, На ленте дизайна выберите «Выбор данных» в группе данных, Затем вы увидите кнопку для добавления, чтобы добавить новую серию.

Надеюсь, что поможет.

 

2007 is more powerful with ribbon..:=) To add new series in chart do: Select Chart, then click Design in Chart Tools on the ribbon, On the Design ribbon, select "Select Data" in Data Group, Then you will see the button for Add to add new series.

Hope that will help.

</div
 
 

Связанный проблема

0  Power Query Connect DB2  ( Power query connect db2 ) 
Я пытаюсь использовать Power Query для подключения DB2, но для подключения DB2 нет варианта, Может кто-нибудь помочь мне решить это? ...

1  Что вызывает эту ошибку SOAPMAPPER в вызове SOAP VBA?  ( Whats causing this soapmapper error in vba soap service call ) 
Я пытаюсь употреблять веб-сервис на базе Java от кода VBA в рабочей книге Excel 2003. Есть два метода доступны. Один извлекает данные, другие данные загрузки....

0  Сохранение рабочей книги Excel заставляет пользовательскую форму неверно отвечать на вкладку и события клавиши (но сохранение в среде кода не!)  ( Saving excel workbook causes userform to incorrectly respond to tab and keydown ) 
Я использую Excel 2013 в Windows 10. У меня есть пользователь номер, который имеет ряд текстовых ящиков и соответствующие обработчики для подключения клавиши,...

2  Как я могу найти слово в ячейке в Excel VBA и окрасить его красным (только слово, а не всю ячейку), используя код VBA?  ( How can i find a word in a cell in excel vba and color it red only the word not ) 
Я пишу код в Excel, часть которой необходимо найти слово в ячейке (не чувствительно к регистру) и окрасить его красным (только слово не все ячейка). Например...

0  VBA Help - скрипт для запуска 3 макросов через функцию вызова не будет работать все макросы  ( Vba help script to run 3 macros via call function will not run all macros ) 
Извинения, если этот вопрос элементарной, я не отлично в VBA. У меня есть 3 отдельных кода, которые я хочу запустить один за другим, нажав кнопку. Поэтому у м...

2  Функции локальной (специфики для рабочей книги) без использования VBA или VSTO  ( Local workbook specific functions without using vba or vsto ) 
Я ищу способ создания рабочей книги - локальные функции в C ++ (неуправляются). VBA не подходит для моего случая использования. К сожалению, это единственный ...

0  Есть ли возможность выбора определенного диапазона данных на Excel с использованием кода VBA на основе критериев столбцов?  ( Is there a possibility of selecting a specific range of data on excel using vba ) 
В моем наборе данных у меня есть столбец с большим количеством адресов электронной почты, некоторые повторяющиеся, некоторые нет. Я вставил новый столбец вп...

-1  Auto запустить два кода VBA, когда открывается книжная книга Excel  ( Auto run two vba codes when an excel workbook opens ) 
У меня есть два кода VBA, я хотел бы запустить, когда открывается рабочая книга Excel. <код> Sub test2() Dim c As Range For Each c In Range("A1:A1")...

0  Выбор определенных флажков с использованием главного флажка  ( Selecting specific check boxes using a master check box ) 
Я пытаюсь создать макрос, чтобы выбрать все флажки определенного столбца. Например, у меня есть 10 критериев, установите флажки на столбце с главным установит...

-1  Как подсчитать строки и вернуть данные из CE  ( How to count rows and return the data from a ce ) 
У меня есть электронная таблица с датами, перечисленными в столбце A, и рабочее время или на выходных в столбце B. в столбце C, я хотел бы ключевой номер тран...

0  VBA для извлечения даты из файла  ( Vba to extract date from file path ) 
У меня есть серия файлов для отслеживания в электронной таблице Excel. Они хранятся в папках по дате. Иногда файл изменен, затем повторно повторно, поэтому им...

0  VBA: Код паузы для различных длин времени с Doevents  ( Vba code pauses for varying lengths of time with doevents ) 
У меня есть процедура, которая генерирует отчеты на основе ввода пользователей, предусмотренной пользовательской формой. Я реализовал обработку ошибок, как сл...

0  Несоответствие типов при использовании оператора CASE для только видимых ячеек  ( Receiving type mismatch when using case statement for only visible cells ) 
Я получаю ошибку на смелой линии относительно несоответствия типа. Заявление о случаях относится к значению ячейки, которое только видно, но я не уверен, если...

14  Добавление элементов управления в рамку в Excel Userform с VBA  ( Adding controls to a frame in an excel userform with vba ) 
Мне нужно динамически создавать этикетки и кнопки, а затем добавлять их в кадр в рамках пользователя. Как мне это сделать? Похоже, это должно быть проще, чем...

1  Чтение от файла Excel с пустыми ячейками до 2D-массива  ( Reading from excel file with blank cells to 2d array ) 
У меня есть следующий код, который читает логины и пароли из файла XLS, начиная со второго ряда (оно пропускает имена столбцов) и записывают его в 2D массив. ...

Связанный проблема

0  Power Query Connect DB2 
1  Что вызывает эту ошибку SOAPMAPPER в вызове SOAP VBA? 
0  Сохранение рабочей книги Excel заставляет пользовательскую форму неверно отвечать на вкладку и события клавиши (но сохранение в среде кода не!) 
2  Как я могу найти слово в ячейке в Excel VBA и окрасить его красным (только слово, а не всю ячейку), используя код VBA? 
0  VBA Help - скрипт для запуска 3 макросов через функцию вызова не будет работать все макросы 
2  Функции локальной (специфики для рабочей книги) без использования VBA или VSTO 
0  Есть ли возможность выбора определенного диапазона данных на Excel с использованием кода VBA на основе критериев столбцов? 
-1  Auto запустить два кода VBA, когда открывается книжная книга Excel 
0  Выбор определенных флажков с использованием главного флажка 
-1  Как подсчитать строки и вернуть данные из CE 
0  VBA для извлечения даты из файла 
0  VBA: Код паузы для различных длин времени с Doevents 
0  Несоответствие типов при использовании оператора CASE для только видимых ячеек 
14  Добавление элементов управления в рамку в Excel Userform с VBA 
1  Чтение от файла Excel с пустыми ячейками до 2D-массива