У Мартина есть рабочий лист, содержащий 50 строк данных, каждая строка описывает отдельный объект. Столбец A содержит имя объекта, столбец B — его координату X, а столбец C — его координату Y. Когда он создает диаграмму рассеяния X-Y (столбец B против столбца C), результат, как и требуется, представляет собой график, показывающий массив точек, показывающий расположение объектов. Однако Мартин не может пометить точки данных их индивидуальными именами (из столбца A). Когда он пытается пометить точки данных, единственные доступные варианты — пометить каждую точку ее значением X, значением Y или именем серии. Мартин задается вопросом, есть ли способ легко использовать столбец A для маркировки нанесенных на график точек данных.

Это можно сделать вручную, но в лучшем случае это утомительно. Для 50 рядов это быстро будет жестоко, поэтому лучше использовать макро-ориентированный подход. Одна из идей заключается в использовании макроса, подобного следующему, который проходит по точкам данных на диаграмме X-Y и считывает значения меток из столбца A.

Sub DataLabelsFromRange()

Dim Cht As Chart     Dim i, ptcnt As Integer

Set Cht = ActiveSheet.ChartObjects(1).Chart     On Error Resume Next     Cht.SeriesCollection(1).ApplyDataLabels _       Type:=xlDataLabelsShowValue, _       AutoText:=True, _       LegendKey:=False

ptcnt = Cht.SeriesCollection(1).Points.Count     For i = 1 To ptcnt         Cht.SeriesCollection(1).Points(i).DataLabel.Text = _           ActiveSheet.Cells(i + 1, 1).Value     Next i End Sub

Макрос предполагает, что первая строка рабочего листа содержит информацию заголовка и что фактические данные начинаются в строке 2. Если данные действительно начинаются в строке 1, измените «i + 1» на просто «i». (Этот подход к макросам на самом деле является вариацией макроса, найденного на страницах 570-571 прекрасной книги Джона Уокенбаха Excel 2003 Power Programming with VBA.)

Один довольно уникальный немакросъемочный подход — использовать настраиваемые форматы Excel.

Все, что вам нужно сделать, это настроить кучу пользовательских форматов, содержащих только текст, который вы хотите отобразить. Например, если у вас есть значения Age, 15 и 23 в ячейках от A3 до C3, вы можете отформатировать ячейку B3 или C3, чтобы отобразить слово «Возраст», даже если значение останется 15 или 23 соответственно. Просто введите «Возраст» (включая кавычки) для пользовательского формата ячейки. Затем отформатируйте диаграмму, чтобы отобразить метку для значения X или Y.

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

Очевидно, что для реализации этого подхода может потребоваться некоторое время, поскольку вы настраиваете и применяете кучу настраиваемых форматов для каждого значения в своей серии данных. Если вы не хотите возиться с написанием и тестированием собственных макросов или созданием множества настраиваемых форматов, вы всегда можете обратиться к надстройкам, написанным другими. Microsoft MVP Роб Бови создал отличную (бесплатную) надстройку для Excel, которая, среди прочего, включает функцию маркировки X-Y. Его можно скачать по этому адресу:

http://www.appspro.com/Utilities/ChartLabeler.htm

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3503) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Labeling_X-Y_Scatter_Plots [Маркировка графиков рассеяния X-Y].