Несмотря на то, что я согласен, что обычные формулы Excel не могут исправить все, мне не нравится VBA. Для этого есть несколько причин, но самая важная из них заключается в том, что, скорее всего, он перестанет работать со следующим обновлением. Я не говорю, что вам вообще не следует использовать VBA, а используйте его только при необходимости.
Ваш вопрос является хорошим примером необходимости, когда VBA не требуется ... "Хорошо", вы говорите: "Но тогда как мне решить эту проблему?" Если вам повезет, нажмите на эту ссылку, чтобы ответить на соответствующий вопрос здесь .
В ссылке вы узнаете, как вы можете измерить точную сетку ваших графиков. Когда ваша ось X пересекает 0, вам понадобится только максимальная метка оси Y для этого. Вы сейчас только на полпути, потому что ваша конкретная проблема еще не решена. Вот как бы я поступил:
Сначала измерьте, насколько высоки ваши метки по сравнению с высотой вашего графика. Это потребует проб и ошибок, но не должно быть очень сложным. Если ваша диаграмма может складывать 20 меток без наложения, это число будет, например, 0,05.
Затем определите, будут ли перекрываться какие-либо метки. Это довольно легко, потому что все, что вам нужно сделать, это выяснить, где числа находятся слишком близко друг к другу (в пределах диапазона 0,05 в моем примере).
Используйте некоторые булевы тесты или, если хотите, все формулы IF, чтобы узнать. В результате вы получите таблицу с ответами для каждой серии (кроме первой). Не бойтесь снова продублировать эту таблицу для следующего шага: создания нового ввода диаграммы.
Есть несколько способов создать новую диаграмму, но вот тот, который я бы выбрал. Для каждой серии создайте три строчки. Одна - это фактическая строка, две другие - невидимые строки с метками данных. Для каждой из строк есть одна невидимая строка с обычными метками. Все они используют одинаковое выравнивание. Каждая дополнительная невидимая строка имеет различное выравнивание для меток. Вам не понадобится один для первой серии, но для второй метка будет справа, третья снизу и четвертая слева (например).
Когда ни одна из меток данных не перекрывается, только первые невидимые строки (с регулярным выравниванием) должны показывать значения. Когда метки перекрываются, соответствующая дополнительная невидимая линия должна занять место в этой точке и показать ее метку. Конечно, первая невидимая строка не должна показывать ее там.
Когда все четыре метки перекрываются с одним и тем же значением оси x, вы должны увидеть метку первой основной невидимой линии и метки трех дополнительных невидимых линий. Это должно работать для вашего примера диаграммы, потому что есть достаточно места, чтобы перейти к меткам слева и справа. Лично я бы придерживался только минимальной и максимальной метки в точке перекрытия, потому что факт, что она перекрывается, показывает, что значения довольно близки друг к другу, во-первых ..
Надеюсь, это вам помогло,
Привет,
Patrick