Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Можно ли удалить ненужные слои структуры?

Ответить
Настройки темы
2010 - Можно ли удалить ненужные слои структуры?

Старожил


Сообщения: 390
Благодарности: 7

Профиль | Отправить PM | Цитировать


Возникла проблема, что файл Excel представляет собой структуру в три уровня, раскрывающуюся плюсиками.
Но нужно перемножить два столбца только верхнего уровня с результатом в третьем столбце, так чтобы находящееся в этих двух столбцах в скрытых слоях структуры не участвовало в определении суммы по третьему столбцу.
Но получается, что перемножаются все слои структуры в этих двух столбцах и сумма вычисляется не по видимому верхнему слою структуры, а по всем уровням.

Если удалять структуру имеющейся кнопкой на вкладке Данные, то строки из нижних уровней структуры просто встанут между строками верхнего уровня, мешая.

Можно ли удалить данные только отдельных слоев структуры, хотя чтоб пустые строки остались?

Отправлено: 00:36, 30-07-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


pavsem7, образец Рабочей книги с примерами и наглядными пояснениями приветствуется.

Отправлено: 06:20, 30-07-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 390
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата Iska:
образец Рабочей книги с примерами и наглядными пояснениями приветствуется. »
Прилагаю начальный кусок рабочей книги http://rgho.st/6YJ2gFYcy

Строк в книге много, несколько тысяч, поэтому вручную ничего не получится.
Видно, что колонка Стоимость, которая должна быть произведением Цены на КонРезерв посчитана по разным товарам неправильно, некоторые клетки вообще пустые, в 15-ой строке результат завышен и т.п. Подсчет результата(итога) по колонке Стоимость нужен только по верхнему слою, а спрятанные слои под крестиками, т.е., например, строки 16, 17, 19,20,21,23,24 и т.д. не должны давать слагаемых в эту сумму. Если же просто перемножить столбцы Цена и КонРезерв, то эти спрятанные строки дают слагаемые, сумма по товарам получается завышенной.

Цель - удалить нижние слои из книги, т.е. те самые спрятанные строки. Тогда итог стоимости правильно посчитается.

Отправлено: 14:45, 30-07-2016 | #3


Модератор


Moderator


Сообщения: 16853
Благодарности: 3247

Профиль | Сайт | Отправить PM | Цитировать


pavsem7, а нельзя ли то же, но с формулами?

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Отправлено: 23:15, 30-07-2016 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Достаточно странная организация структуры…

Вы уверены, что речь про первый уровень структуры? Там ровно две строки, и обе с пустым содержимым в искомых ячейках. Вот для второго уровня структуры:
Код: Выделить весь код
Option Explicit

Sub Sample()
    Dim objRange As Range
    
    For Each objRange In ThisWorkbook.Worksheets.Item("TDSheet").Range("G6:G117").Cells
        Debug.Print objRange.Address, objRange.Rows.Item(1).OutlineLevel
        
        If objRange.Rows.Item(1).OutlineLevel = 2 Then
            objRange.Value = objRange.Offset(0, -2).Value * objRange.Offset(0, -1).Value
        Else
            objRange.ClearContents
        End If
    Next
End Sub
Можно и формулой.

Это то, что Вы хотели? Главный вопрос — в определении размеров диапазона (в примере — «G6:G117») на реальных данных, «ручками» ведь не будете задавать всякий раз. На что можем ориентироваться?

Цитата okshef:
pavsem7, а нельзя ли то же, но с формулами? »
Сдаётся мне, что это явно результат выгрузки из какой-то внешней программы. И, по-хорошему, править надо код там.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:16, 31-07-2016 | #5


Старожил


Сообщения: 390
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата Iska:
Это то, что Вы хотели? Главный вопрос — в определении размеров диапазона (в примере — «G6:G117») на реальных данных, «ручками» ведь не будете задавать всякий раз. На что можем ориентироваться? »
Спасибо, работает. Да, надо на 2 уровне считать и до ячейки G122, придется вручную.
Почему Вы называете лист TDSheet?

Цитата Iska:
pavsem7, а нельзя ли то же, но с формулами? »
Сдаётся мне, что это явно результат выгрузки из какой-то внешней программы. И, по-хорошему, править надо код там. »
Это выгрузка из 1С8.2 СКД, там формул нет, все галочками настраивается, а те, что есть, считают неправильно. Разбирался несколько дней, не понять, почему не считает.
А результат начальству быстрее нужен.

У меня попутный вопрос по применению: я записал Вашу процедуру в макрос и запустил, при этом файл надо сохранять как xlsm.
Но можно ли запускать этот макрос-процедуру внешним образом, чтоб просто обрабатывать файл xlsx, а внутри процедура не хранилась?

Последний раз редактировалось pavsem7, 31-07-2016 в 11:42.


Отправлено: 11:27, 31-07-2016 | #6


Модератор


Moderator


Сообщения: 16853
Благодарности: 3247

Профиль | Сайт | Отправить PM | Цитировать


Цитата pavsem7:
можно ли запускать этот макрос-процедуру внешним образом »
Как создать свою надстройку?

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:18, 31-07-2016 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата pavsem7:
Почему Вы называете лист TDSheet? »
Потому что таково его имя. Ухватитесь за разделитель-ползунок:



(когда курсор мышки примет двунаправленную форму) и тяните его вправо — сами увидите.

Цитата pavsem7:
Это выгрузка из 1С8.2 »
Я так и предполагал, что 1С. Родимые пятна — ничего, зараза, не изменилось .


Цитата pavsem7:
там формул нет, все галочками настраивается, а те, что есть, считают неправильно. »
Там надо в саму обработку, в код лезть и править, как я понимаю.

Цитата pavsem7:
У меня попутный вопрос по применению: я записал Вашу процедуру в макрос и запустил, при этом файл надо сохранять как xlsm.
Но можно ли запускать этот макрос-процедуру внешним образом, чтоб просто обрабатывать файл xlsx, а внутри процедура не хранилась? »
Можно. Вроде как хранитель персональных макросов Personal.xls всё ещё работает в новых версиях Office в виде Personal.xlsm. Только поменяйте в коде «ThisWorkbook» на «ActiveWorkbook».

Цитата pavsem7:
придется вручную. »
Это не дело. Всё же подумайте: каким образом, по каким признакам коду следует определять границы обрабатываемого диапазона.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:53, 31-07-2016 | #8


Старожил


Сообщения: 390
Благодарности: 7

Профиль | Отправить PM | Цитировать


Цитата Iska:
Там надо в саму обработку, в код лезть и править, как я понимаю. »
Там кода нет, кроме a*b, все настраивается через GUI, а если не настраивается, то надо писать в дополнение код более ветвистый чем в VBA.

Цитата Iska:
Можно. Вроде как хранитель персональных макросов Personal.xls всё ещё работает в новых версиях Office в виде Personal.xlsm. Только поменяйте в коде «ThisWorkbook» на «ActiveWorkbook». »
Я думал есть, что-нибудь типа командной строки excel file.xlsx /key macros.vbs ? Чтоб постоянно не хранилось.


Цитата Iska:
придется вручную. »
Это не дело. Всё же подумайте: каким образом, по каким признакам коду следует определять границы обрабатываемого диапазона. »
Граница очевидна - первая пустая строка, но макрос работает, даже если вручную задать заведомо завышенную верхнюю границу G10000.

Отправлено: 15:42, 03-08-2016 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата pavsem7:
Там кода нет, кроме a*b, »
В сказки не верю, коллега.

Цитата pavsem7:
то надо писать в дополнение код более ветвистый чем в VBA. »
С этим не спорю.

Цитата pavsem7:
Я думал есть, что-нибудь типа командной строки excel file.xlsx /key macros.vbs ? Чтоб постоянно не хранилось. »
Нету.

Цитата pavsem7:
Граница очевидна - первая пустая строка, »
Это нижняя. А верхняя граница? И всегда ли это будет столбец «G», а не какой-либо другой?!

Отправлено: 18:50, 03-08-2016 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Можно ли удалить ненужные слои структуры?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Можно ли удалить файлы Drony Microsoft Windows NT/2000/2003 5 31-01-2012 20:46
Можно ли убрать ненужные драйвера из TXT-режима? Wanderer-1000 Автоматическая установка Windows 2000/XP/2003 3 02-05-2011 19:06
Разное - Удалить ненужные обновления alexra Microsoft Windows 2000/XP 0 17-04-2011 22:58
[решено] WSUS - можно ли настроить без доменной структуры? zenches WSUS 30 22-03-2009 10:26
Можно ли удалить?! sleider Программное обеспечение Windows 6 14-12-2006 07:16




 
Переход