
Вся гибкость нашего софта в резиновых костылях
отсюда
Описание макроса
Макрос выполняет выделение рудных пересечений согласно вариантам кондиционных ограничений, задаваемых пользователем.
Для работы требуются данные опробования, где обязательно должны присутствовать поля:
-
Номер скважины
-
Поле «От» - т.е. поле, отвечающее за начало интервала опробования
-
Поле «До» - конец интервала опробования
-
Содержание элемента. Если месторождение комплексное (т.е. ценность руды складывается более, чем из одного металла) – необходим пересчёт на «условный металл»
Поля могут быть расположены произвольно и иметь совершенно произвольные заголовки. Однако, ряд требований на данные всё-таки накладывается. А именно:
-
Данные должны быть отсортированы по полям номера скважины и полю «От»
-
В данных не должно быть пропусков. То есть, вот такая ситуация не допускается:

Точнее, допускается, но «дырка» будет проигнорирована. Как несложно догадаться, пропуски особенно критичны для безрудных прослоев. Поэтому крайне рекомендуется очистить свои данные от этой неприятности.
-
«Перекрытия» проб приводят к неожиданным и, часто, довольно печальным последствиям.

-
В поле содержаний не допускаются алфавитные значения (типа n/a или «-»).
Собственно, всё. Есть ещё ограничения на названия листов: не длинные (чем короче, тем лучше), без пробелов и без русских символов (иногда работает, иногда – не очень).
Суммируя: корректность данных целиком на совести пользователя. Макрос рассчитывает кондиционные пересечения, а не проверяет данные.
Параметры кондиций, которые используются в макросе, следующие:
-
Бортовое содержание – единственный обязательный параметр
-
Минимальное содержание по пересечению. При отсутствии значения считается равным бортовому. Может быть меньше бортового (например, хочется выделить весь интервал от первой пробы выше борта до последней).
-
Минимальная мощность пересечения. При отсутствии значения не ограничивается.
-
Признак необходимости пересчёта маломощных содержаний через метропроцент на минимальную мощность. Принимает значения 0 – не пересчитывать, 1 – пересчитывать. По умолчанию имеет значение 1 (то есть, при отсутствии явного указания на необходимость пересчёта, пересчёт будет выполнен)
-
Максимальная мощность прослоя пустых пород или некондиционных руд, включаемых в контур рудного тела. Если не указывать – не ограничена
-
Максимальная суммарная мощность безрудных прослоев. Ни разу не встречал, но – почему бы не сделать? Если не указать – не ограничивается.
-
Признак необходимости использовать т.н. «двустороннюю окупаемость». Все знают, что это, но не все её так называют. Объясняю. Вот опробование:

Пусть бортовое содержание – 0.5 г/т, минимальное содержание по пересечению для простоты принимаем равным бортовому, а максимальая мощность пустого прослоя – 2 м. Так вот, при проверке того, можно ли пробы с номерами 2-4 включить в контур одного рудного пересечения, проверяются не только весь массив проб №№2-4 на соответствие минимальному содержанию по пересечению, а отдельно проверяются пробы №№2+3 и №№3+4 и пробы объединяются в одно пересечение только в случае соответствия пар №№2+3 и №№3+4 минимальному содержанию по пересечению. То есть, в данном случае, как несложно посчитать, в случае использования «двусторонней окупаемости» в одно пересечение пробы объединены не будут. Если же «двустороннюю окупаемость» отключить, то пробы №№2-4 объединяются в одно рудное пересечение.
По умолчанию «двусторонняя окупаемость» отключена.
Количество вариантов сочетаний кондиционных ограничений не ограничено.
Интерфейс
Интерфейс состоит из двух вкладок, одна – для определения расположения данных, вторая – для определения расположения кондиционных ограничений:


Кондиционные ограничения должны быть записаны на рабочем листе – так же, как данные, а не вбиваться в поля интерфейса. Данные и кондиции могут быть на разных листах одной и той же книги. Указание расположения данных осуществляется так же, как в случае использования функций Excel: выделили поле для указания расположения данных –> мышкой на листе указали соответствующий диапазон.
После заполнения всех необходимых полей следует нажать на кнопку «Поехали». Прогресс выполнения макроса нигде не виден. Время выполнения зависит от массы факторов, как то: мощность компьютера, количество данных, количество вариантов кондиций, сложность данных. На относительно современных компьютерах обычно это вопрос секунд-минут («обычно» – не значит «всегда»).
Результаты работы
В результате работы справа от поля содержаний создаются дополнительные поля, количество которых на одно больше, чем количество вариантов кондиций (просто мелкий «баг» в макросе, который не создаёт избыточных проблем и потому уже лет 10 не исправляется). В создаваемых полях напротив проб, которые соответствуют кондиционным ограничениям, стоят единицы. Последовательность вариантов результатов соответствует последовательности вариантов кондиций:
