В желтой заливке - реализация на формулах листа. В голубой заливке - реализация на VBA.
Оригинальный документ имеет объем > 6Мб, свыше 2 тыс. строк. При открытии файла на формулах листа время составляет 19,05 с. При открытии на VBA - 28,80 с. Я хотел третий вариант - в модуле VBA применить WorksheetFunction и сравнить время загрузки.
Конечная идея - защитить данный файл от возможности его частичного или полного копирования, использования другими лицами в прочих задачах. Защищаю свою "интеллектуальную собственность", модуль с функциями хочу вынести в PERSONAL библиотеку, которую защищу от просмотра.
Public Function CDSDayReport_a1(DateStart As Range, DateEnd As Range, Dates As Range, Volumes As Range)
CDSDayReport_a1 = WorksheetFunction.Sum(WorksheetFunction.Index(Volumes, WorksheetFunction.Match(DateStart, Dates, 0)) : WorksheetFunction.Index(Volumes, WorksheetFunction.Match(DateEnd, Dates, 0)))
End Function
В чём-то есть "ньюанс". Поэтапно записывал, работало, как дошёл до .Sum так сломалось. Возможно необходимо цикл вместо Суммы. Я незнаю.
на листе установлены свойства файла "Точность как на экране", в ячейках столбца вручную устанавливается формат числа с разной разрядностью (0, 2, 3, 4 и т.д.), таким образом необходимо получить формулой или через свойства в VBA значение в ячейке так, как оно отображается. Например: "125,1200" - 4 разряда "125,12" - 2 разряда "125,000" - 3 разряда
Цель - обработка достаточной разрядности, чтобы на этапе ввода отсечь ошибки вводимых значений.
На мой взгляд простое и работающее решение под изложенную задачу - условное форматирование.
Я использую такое при отслеживании разрядности значений по разным строкам столбца (от 6 до 0 знаков), если в определенном столбце значение равно заданному критерию, то нужные ячейки из определенного диапазона окрашиваются в выбранный в УФ цвет.
Большая таблица с ячейками условного форматирования. Периодически возникает необходимость вставить дополнительные строки внутри имеющейся таблицы. Диапазоны, заданные в критериях условного форматирования прерываются в данном месте и дробятся, формулы становятся громоздкими плохо читабельны и возникает необходимость вручную корректировать критерии во всех ячейках, содержащих условное форматирование.
Хочется: - задать именованный диапазон на который будет распространяться заданное условие форматирования. Это Имя применить при описании критериев УФ. При добавлении строки внутрь таблицы корректировать Имя в одном месте, чтобы УФ при этом "не ломалось".
Сейчас при описанных действиях после нажатия кнопки "Применить" диапазон, заданный Именем автоматически заменяется на адресацию.
В тему условного форматирования такой вопрос: - как на отдельный лист получить список всех "условий форматирования" на рабочем листе. Например: столбец 1 / столбец 2 / столбец 3 адрес / формула / диапазон на ячейки, / условия / который содержащей / / действует условие / / условие ------------------------------------------------- $F$10 / = $O10<6 / = $F$1:$F$11809
Пытался найти ответ на свой вопрос, зайдя в редактор VBA, полез в .Sheets.Item(1).Cells.FormatConditions.Item их там 256. Внутри каждого - "темный лес, непролазный". В общем - застрял.
Еще вопрос: - как ненужные мне условия из полученного списка, удалить на рабочем листе.
Спасибо за помощь. А можно чуть подробней про волшебство#перед скобкой в описании функции. Дело изменилось именно благодаря ей. Тип возвращаемых данных я прежде менял и даже убирал из объявления, но всё стало работать именно когда поставил #.
Здравствуйте, написал пользовательскую функцию с использованием WorksheetFunction.Sum. При тестировании получил неожиданный результат: при исходных числах в сумме больше 40000 результат ошибка; при задании исходных диапазонов по одной ячейке - работает, при задании этих же ячеек диапазоном - ошибка. Прошу помощи разобраться в функцией.