Макрос "Скрыть строки в пределах определенного раздела"
Alex_ST
Дата: Вторник, 30.09.2014, 11:41 |
Сообщение № 41
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
Андрей, а при чём тут это? Где цветовая дифференциация штанов и открытость заголовков? Да и с [vba]Код
If Len(Cells(i, "D")) Then Else If Len(Cells(i, "E")) Then Else If Len(Cells(i, "F")) Then Rows(i).Hidden = True End If End If End If
[/vba] ты не перемудрил ли? Может быть так покороче будет?[vba]Код
Rows(i).Hidden = Len(Cells(i, "D")) + Len(Cells(i, "E")) + Len(Cells(i, "F")) = 0
[/vba] И какой смысл в цикле снизу вверх если мы не удаляем, а всего лишь скрываем строки?
Андрей, а при чём тут это? Где цветовая дифференциация штанов и открытость заголовков? Да и с [vba]Код
If Len(Cells(i, "D")) Then Else If Len(Cells(i, "E")) Then Else If Len(Cells(i, "F")) Then Rows(i).Hidden = True End If End If End If
[/vba] ты не перемудрил ли? Может быть так покороче будет?[vba]Код
Rows(i).Hidden = Len(Cells(i, "D")) + Len(Cells(i, "E")) + Len(Cells(i, "F")) = 0
[/vba] И какой смысл в цикле снизу вверх если мы не удаляем, а всего лишь скрываем строки? Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Вторник, 30.09.2014, 12:37
Ответить
Сообщение Андрей, а при чём тут это? Где цветовая дифференциация штанов и открытость заголовков? Да и с [vba]Код
If Len(Cells(i, "D")) Then Else If Len(Cells(i, "E")) Then Else If Len(Cells(i, "F")) Then Rows(i).Hidden = True End If End If End If
[/vba] ты не перемудрил ли? Может быть так покороче будет?[vba]Код
Rows(i).Hidden = Len(Cells(i, "D")) + Len(Cells(i, "E")) + Len(Cells(i, "F")) = 0
[/vba] И какой смысл в цикле снизу вверх если мы не удаляем, а всего лишь скрываем строки? Автор - Alex_ST Дата добавления - 30.09.2014 в 11:41
Wasilich
Дата: Вторник, 30.09.2014, 13:00 |
Сообщение № 42
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
Это Wasilic, хочет видимо свой вариант проработать.
Да уж. Подобрался ближе к результату но, строки 45, 48, 51, 62 и 76 не вяжутся ни к какому критерию. Не знаю, есть ли смысл, но может быть добавить еще дополнительный столбец (слева) и в нем пометить пункты определенным знаком?
Как сказал Алексей:Ещё какой смысл! Всё намного упростится.
Наверное в данном случае это идеальный вариант. Легче одним кликом поставить метку нежели красить ячейки.
Это Wasilic, хочет видимо свой вариант проработать.
Да уж. Подобрался ближе к результату но, строки 45, 48, 51, 62 и 76 не вяжутся ни к какому критерию. Не знаю, есть ли смысл, но может быть добавить еще дополнительный столбец (слева) и в нем пометить пункты определенным знаком?
Как сказал Алексей:Ещё какой смысл! Всё намного упростится.
Наверное в данном случае это идеальный вариант. Легче одним кликом поставить метку нежели красить ячейки.Wasilich
Сообщение отредактировал Wasilic - Вторник, 30.09.2014, 13:07
Ответить
Сообщение Это Wasilic, хочет видимо свой вариант проработать.
Да уж. Подобрался ближе к результату но, строки 45, 48, 51, 62 и 76 не вяжутся ни к какому критерию. Не знаю, есть ли смысл, но может быть добавить еще дополнительный столбец (слева) и в нем пометить пункты определенным знаком?
Как сказал Алексей:Ещё какой смысл! Всё намного упростится.
Наверное в данном случае это идеальный вариант. Легче одним кликом поставить метку нежели красить ячейки.Автор - Wasilich Дата добавления - 30.09.2014 в 13:00
Лорик
Дата: Вторник, 30.09.2014, 13:40 |
Сообщение № 43
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 109
Репутация:
1
±
Замечаний:
0% ±
Excel 2010
Легче одним кликом поставить метку
Интересный вариант, но по времени занимает столько же, как и скрыть строки вручную.
Легче одним кликом поставить метку
Интересный вариант, но по времени занимает столько же, как и скрыть строки вручную. Лорик
Сообщение отредактировал Лорик - Вторник, 30.09.2014, 13:50
Ответить
Сообщение Легче одним кликом поставить метку
Интересный вариант, но по времени занимает столько же, как и скрыть строки вручную. Автор - Лорик Дата добавления - 30.09.2014 в 13:40
RAN
Дата: Вторник, 30.09.2014, 13:47 |
Сообщение № 44
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Может быть так покороче будет?
Покороче будет. Правда, работать не будет, но это мелочи.
Может быть так покороче будет?
Покороче будет. Правда, работать не будет, но это мелочи. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Может быть так покороче будет?
Покороче будет. Правда, работать не будет, но это мелочи. Автор - RAN Дата добавления - 30.09.2014 в 13:47
Alex_ST
Дата: Вторник, 30.09.2014, 14:39 |
Сообщение № 45
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
Андрей, извини, но так диалог не ведётся. Если имеешь замечания или возражения, выскажи их, но обоснуй чтобы научить людей. Если нет обоснования, то лучше промолчи. Да и отвечать только на то, что тебе хочется, но при этом явно игнорировать указания на свои ошибки (это по поводу цикла снизу вверх) тоже негодная манера общения.
Андрей, извини, но так диалог не ведётся. Если имеешь замечания или возражения, выскажи их, но обоснуй чтобы научить людей. Если нет обоснования, то лучше промолчи. Да и отвечать только на то, что тебе хочется, но при этом явно игнорировать указания на свои ошибки (это по поводу цикла снизу вверх) тоже негодная манера общения. Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Андрей, извини, но так диалог не ведётся. Если имеешь замечания или возражения, выскажи их, но обоснуй чтобы научить людей. Если нет обоснования, то лучше промолчи. Да и отвечать только на то, что тебе хочется, но при этом явно игнорировать указания на свои ошибки (это по поводу цикла снизу вверх) тоже негодная манера общения. Автор - Alex_ST Дата добавления - 30.09.2014 в 14:39
Wasilich
Дата: Вторник, 30.09.2014, 16:03 |
Сообщение № 46
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
по времени занимает столько же, как и скрыть строки вручную.
по времени занимает столько же, как и скрыть строки вручную.
Wasilich
Ответить
Сообщение по времени занимает столько же, как и скрыть строки вручную.
Автор - Wasilich Дата добавления - 30.09.2014 в 16:03
RAN
Дата: Вторник, 30.09.2014, 16:51 |
Сообщение № 47
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Леш, по поводу ошибки не согласен, ибо в данном случае фиолетово, сверху вниз, или снизу верх. Я и задумываться не стал, спер у Wasilic 'а. А вот твоя "короче" должна выглядеть так [vba]Код
Rows(i).Hidden = (Len(Cells(i, "D")) + Len(Cells(i, "E"))) + (Len(Cells(i, "F")) = 0) = 0
[/vba] Вдобавок это неудобочитаемо, да и скорострельность ниже.
Леш, по поводу ошибки не согласен, ибо в данном случае фиолетово, сверху вниз, или снизу верх. Я и задумываться не стал, спер у Wasilic 'а. А вот твоя "короче" должна выглядеть так [vba]Код
Rows(i).Hidden = (Len(Cells(i, "D")) + Len(Cells(i, "E"))) + (Len(Cells(i, "F")) = 0) = 0
[/vba] Вдобавок это неудобочитаемо, да и скорострельность ниже. RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Вторник, 30.09.2014, 16:58
Ответить
Сообщение Леш, по поводу ошибки не согласен, ибо в данном случае фиолетово, сверху вниз, или снизу верх. Я и задумываться не стал, спер у Wasilic 'а. А вот твоя "короче" должна выглядеть так [vba]Код
Rows(i).Hidden = (Len(Cells(i, "D")) + Len(Cells(i, "E"))) + (Len(Cells(i, "F")) = 0) = 0
[/vba] Вдобавок это неудобочитаемо, да и скорострельность ниже. Автор - RAN Дата добавления - 30.09.2014 в 16:51
Alex_ST
Дата: Вторник, 30.09.2014, 21:52 |
Сообщение № 48
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
А вот твоя "короче" должна выглядеть так
[vba]
Код
Rows(i).Hidden = (Len(Cells(i, "D")) + Len(Cells(i, "E"))) + (Len(Cells(i, "F")) = 0) = 0
[/vba]
"Не верю!" "От перестановки мест слагаемых сумма не меняется" точно так же как и от расставления любого количества скобок между тремя слагаемыми. А складываются именно АРИФМЕТИЧЕСКИ ЦЕЛЫЕ ПОЛОЖИТЕЛЬНЫЕ ЧИСЛА (Long). Поэтому X+Y+Z == ((X)+Y)+Z Ну а по поводу логики выражения, так двойное сравнение с нулём вместо логической инверсии как раз и служит тому, чтобы сделать код неудобочитаемым. Ведь если X+Y+Z может дать результат как 0 (ЛОЖЬ), так и ≥ 1 (ИСТИНА), то имеются всего два варианта: 1. Если X+Y+Z = 0 то логическое выражение X+Y+Z = 0 вернёт ИСТИНА (т.е. -1). А следовательно выражение (X+Y+Z = 0) = 0 вернёт ЛОЖЬ. 2. Если X+Y+Z ≥ 1 то логическое выражение X+Y+Z = 0 вернёт ЛОЖЬ (т.е. 0). А следовательно выражение (X+Y+Z = 0) = 0 вернёт ИСТИНА. Т.е. налицо обычная логическая инверсия.
А вот твоя "короче" должна выглядеть так
[vba]
Код
Rows(i).Hidden = (Len(Cells(i, "D")) + Len(Cells(i, "E"))) + (Len(Cells(i, "F")) = 0) = 0
[/vba]
"Не верю!" "От перестановки мест слагаемых сумма не меняется" точно так же как и от расставления любого количества скобок между тремя слагаемыми. А складываются именно АРИФМЕТИЧЕСКИ ЦЕЛЫЕ ПОЛОЖИТЕЛЬНЫЕ ЧИСЛА (Long). Поэтому X+Y+Z == ((X)+Y)+Z Ну а по поводу логики выражения, так двойное сравнение с нулём вместо логической инверсии как раз и служит тому, чтобы сделать код неудобочитаемым. Ведь если X+Y+Z может дать результат как 0 (ЛОЖЬ), так и ≥ 1 (ИСТИНА), то имеются всего два варианта: 1. Если X+Y+Z = 0 то логическое выражение X+Y+Z = 0 вернёт ИСТИНА (т.е. -1). А следовательно выражение (X+Y+Z = 0) = 0 вернёт ЛОЖЬ. 2. Если X+Y+Z ≥ 1 то логическое выражение X+Y+Z = 0 вернёт ЛОЖЬ (т.е. 0). А следовательно выражение (X+Y+Z = 0) = 0 вернёт ИСТИНА. Т.е. налицо обычная логическая инверсия.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение А вот твоя "короче" должна выглядеть так
[vba]
Код
Rows(i).Hidden = (Len(Cells(i, "D")) + Len(Cells(i, "E"))) + (Len(Cells(i, "F")) = 0) = 0
[/vba]
"Не верю!" "От перестановки мест слагаемых сумма не меняется" точно так же как и от расставления любого количества скобок между тремя слагаемыми. А складываются именно АРИФМЕТИЧЕСКИ ЦЕЛЫЕ ПОЛОЖИТЕЛЬНЫЕ ЧИСЛА (Long). Поэтому X+Y+Z == ((X)+Y)+Z Ну а по поводу логики выражения, так двойное сравнение с нулём вместо логической инверсии как раз и служит тому, чтобы сделать код неудобочитаемым. Ведь если X+Y+Z может дать результат как 0 (ЛОЖЬ), так и ≥ 1 (ИСТИНА), то имеются всего два варианта: 1. Если X+Y+Z = 0 то логическое выражение X+Y+Z = 0 вернёт ИСТИНА (т.е. -1). А следовательно выражение (X+Y+Z = 0) = 0 вернёт ЛОЖЬ. 2. Если X+Y+Z ≥ 1 то логическое выражение X+Y+Z = 0 вернёт ЛОЖЬ (т.е. 0). А следовательно выражение (X+Y+Z = 0) = 0 вернёт ИСТИНА. Т.е. налицо обычная логическая инверсия.Автор - Alex_ST Дата добавления - 30.09.2014 в 21:52
RAN
Дата: Вторник, 30.09.2014, 22:43 |
Сообщение № 49
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Я обычно сначала проверяю. If Len(Cells(i, "F")) then (Len(Cells(i, "F")) = 0) = False
Я обычно сначала проверяю. If Len(Cells(i, "F")) then (Len(Cells(i, "F")) = 0) = False RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Я обычно сначала проверяю. If Len(Cells(i, "F")) then (Len(Cells(i, "F")) = 0) = False Автор - RAN Дата добавления - 30.09.2014 в 22:43