(Это довольно сильно отличается от метода изменения размера динамического диапазона, управляемого макросом, поэтому я использую отдельный ответ ...)
Диаграмма динамической гистограммы можетбыть построенным, помня, что «именованные диапазоны» на самом деле именуются формулами , поэтому их значения могут быть динамическими, а в некоторых случаях чрезвычайно.
Давайте начнем с предположения, что у нас есть произвольный наборзначений в столбце A, начиная с строки 1, а также о том, что у нас есть еще одна ячейка, которая содержит количество бинов, которые мы хотим видеть в нашей гистограмме.В моей книге это E2.Таким образом, мы запускаем Диспетчер имен (на вкладке «Формулы») и создаем
num_bins =Sheet1!$E$2
Я решил определить количество бинов, а не размер бина (который мы определим позже)потому что последнее затрудняет точное определение границ наших бинов: довольны ли мы тем, что первый и последний бины могут охватывать части диапазона значений разных размеров, например? *
Мы также можем настроить динамические формулы для описания наших данных:
data_count =COUNT(Sheet1!$A:$A)
data_vals =OFFSET(Sheet1!$A$1,0,0,data_count,1)
max_val =MAX(data_vals)
min_val =MIN(data_vals)
Определив их, мы можем получить фантазию.Насколько большим должен быть каждый контейнер?Создайте еще одну именованную формулу:
bin_size =(max_val-min_val)/(num_bins)
И вот идет наука: эти формулы создают динамические массивы:
bin_array =min_val+ROW(OFFSET(Sheet1!$A$1,0,0,num_bins-1,1))*bin_size
bin_labels =min_val+ROW(OFFSET(Sheet1!$A$1,0,0,num_bins,1))*bin_size
data_vals =FREQUENCY(data_vals,bin_array)
Первый способ сложнее: он использует номера строкnum_bins minus one
-размерный диапазон для генерации кратного bin_size
.Массив не начинается с min_val
, потому что функция FREQUENCY()
считает элементы до каждого значения бина.Это на единицу меньше желаемого количества бинов, потому что функция создает массив на один больше, где конечная запись имеет точки выше самого высокого номера бина.Поэтому мы создаем отдельный массив bin_labels
для презентаций.
Теперь мы можем создать диаграмму.Вставьте (скажем) двумерную диаграмму столбца и откройте диалоговое окно «Выбор данных» (с ленты или щелкнув правой кнопкой мыши диаграмму).Добавьте новую серию, установив значения серии в =Sheet1!freq_array
.Чтобы это работало, необходимо указать либо имя листа, либо имя книги.Добавьте название серии, если хотите, и нажмите «ОК».Теперь нажмите «Изменить» для «Метки горизонтальной (категории) оси» и установите диапазон на =Sheet1!bin_labels
.
. Здесь 2000 ячеек с =RAND()*5
и 5 ячейками (я перечислил имена и их формулы со значениямигде они не производят массивы)
=RAND()*5 results into 5 bins">
И тот же лист после изменения num_bins на 10. (Формулы RAND()
пересчитаны, поэтому ящики могут не составлять в точностите же значения)
- (если вам нужен пользовательский размер ячейки, вам нужно сделать
bin_size
ссылкой на лист ирассчитать num_bins
по названной формуле)