![]() |
Excel, расчет процентов
в экселе 4 таблицы.
2. исходные. из них нужно сделать такие же как, под ними, т.е. такого же формата. 0 и 1 это категории(да , нет. Возможно несколько) Группа - это номер группы 1 и 2 нужная таблица имеет вид 28/78(35,9%) где 28 это n т.е. абсолютное число , 78 это сумма абсолютных значений первой и второй категории 28+50=78. 35,9% это соответствует p (пропорция -0,359 категории 0) вторая таблица отличается тем, что там добавлены ещё визиты. групп и визитов может быть несколько но формат отображения данных такой же 71/78(91%). каждая из этих двух таблиц представлена отдельно, они не вместе в экселе сопровождаются:) |
Elizavetta, первая таблица может быть обработана кодом ниже. Оговорки: как таблицы типа 1 расположены на листе - данных нет, соответственно для работы нужно щелкнуть по любой непустой ячейке внутри таблицы 1, и запустить код - результат будет вставлен ниже нее (соответственно - предусмотрите ниже свободное место, новые строки специальным образом не вставляются, т.к. нет ясности, что правее не будет каких-либо данных). код ищет внутри таблицы слово "Параметр", и строит структуру относительно него, соответственно без этой фразы (или фраза на другом месте) работать не будет.
код для типа 1
Код:
Public Sub tab_type1() Цитата:
|
a_axe, Спасибо Вам, вторую таблицу, где визиты, расписала по формулам, используя функцию СЦЕПИТЬ.
вид должен быть такой n/N(%) N считается как сумма n 1 группа N=n+n =78 2 группа N=n+n =100 в первой группе у нас 2 категории n1=71 и n2=7 => N=78, т.е. 71 нет+ 7 да. Я в файле пометки сделала, посмотрите пожалуйста. Ваш код для первой таблицы сработал на ура. НО! он не работает для дополнительных категорий и параметров, которых может быть несколько. Привела пример Касательно второй таблицы там также может быть -несколько групп -несколько категорий -несколько визитов |
Цитата:
код
Код:
Public Sub tab_type1v2() Добавлено: поправил код, теперь работает для любого количества групп (по крайней мере у меня - предлагаю проверить сначала на нескольких реальных примерах). В таблицах обязательно нужно проставить нумерацию групп, как в ваших примерах. Универсальный код для таблиц типа 1
Код:
Public Sub tab_type1v3() Updated: Для таблиц типа 2 можно использовать код ниже. Оговорки: также необходимо выделить любую непустую ячейку в таблице. В столбце "Параметр" имя параметра должно быть указано строго как в примере - один раз для каждой группы, остальные ячейки пустые (они заполняться в процессе работы кода). Аналогично "группа" - указывается один раз (вроде это не имеет принципиального значения, однако лучше строго оформлять так, как в примере). Визиты должны быть четко пронумерованы без пустых ячеек. К сожалению, код крайне чувствителен к указанному оформлению. Таблицу на выходе я немного переоформил, полагаю - это не критично. Код для таблиц типа 2:
Код:
Public Sub tab_type2v1() |
a_axe, с первой таблицей, 2 дня тестировала, вопросов нет) А для второй таблички визитной, код не сработал почему-то:((
|
a_axe, а вы можете дать ваш эксель.
Я все сделала ,как Вы сказали. Результат выложила. выделила ячейку b4, запустила макрос и вот. |
Elizavetta, я исходил из вашей первой таблицы "реструктуризация" - в ней один параметр ("головокружение.0.нет..1.да") и для этого параметра две группы (№1 и №2).
В последнем примере - параметров уже два, а с группами непонятки - параметру "температура" соответствует группа 1, параметру "озноб" - группа 2. Исходя из логики вашего первого примера, должно быть: либо группа одна (№1) для обоих параметров, либо две (№1 и №2) для обоих параметров, причем опять же как в вашем предыдущем примере - сначала две группы для первого параметра, потом две группы для второго и т.д. Замените в вашем последнем примере группу 2 на группу 1, и все будет работать. Алгоритм заложен именно такой. Файла, на котором все тестировалось под рукой нет, однако структура была для примера следующая: Два параметра, для каждого две группы, для них четыре визита. Сначала перечислены все визиты, для каждого визита все группы, для них - визиты. Обратите внимание на пустые ячейки в визитах - их необходимо соблюдать (как в вашем примере). Картинка
![]() Если последняя структура верная, 1. то получается что "Параметр" и "Группа" просто-напросто синонимы, и одно из них не нужно рассматривать. 2. предлагаю вам вручную заполнить таблицу результата, чтобы я понял, что должна выдать программа. 3. выложить еще несколько примеров с результатом. Updated: По раздумью, код можно изменить так, что он будет работать при любом раскладе, кроме того - теперь необязательно наличие пустых ячеек в структуре. Потестируйте и отпишитесь (разумеется - после ответа на вопросы, приведенные выше). Код для реструктуризации N2
Код:
Public Sub tab_type2v2() |
Все теперь нормально. :) Дело в том, что параметров то может быть много. А смысл Вас тревожить ради оформления 2 параметров, я бы сама сделала, чтоб Ваше время не тратить, я просто 2 параметра привела как образец.
|
Цитата:
Ограничение было в другом: для каждого параметра набор групп должен был одинаков - пусть групп будет 10, но их должно быть 10 для каждого параметра. Во второй версии кода если код не находит для параметра какую-либо из групп, он пишет нулевое значение (до этого отсутствие любой из групп для любого из параметров код считал ошибкой). Применительно к последнему вашему примеру - групп у вас две, код не находил вторую группу для первого параметра и аварийно останавливался. Для второго параметра отсутствует группа 1, это он бы также расценивал как ошибку. Я специально не тестировал, но новый код по идее должен быть нечувствителен к порядку групп и параметров, результат будет просто повторять порядок параметров в исходных данных (даже если они перемешаны). |
Время: 22:23. |
Время: 22:23.
© OSzone.net 2001-