|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Можно ли удалить ненужные слои структуры? |
|
2010 - Можно ли удалить ненужные слои структуры?
|
Старожил Сообщения: 390 |
Профиль | Отправить PM | Цитировать Возникла проблема, что файл Excel представляет собой структуру в три уровня, раскрывающуюся плюсиками.
Но нужно перемножить два столбца только верхнего уровня с результатом в третьем столбце, так чтобы находящееся в этих двух столбцах в скрытых слоях структуры не участвовало в определении суммы по третьему столбцу. Но получается, что перемножаются все слои структуры в этих двух столбцах и сумма вычисляется не по видимому верхнему слою структуры, а по всем уровням. Если удалять структуру имеющейся кнопкой на вкладке Данные, то строки из нижних уровней структуры просто встанут между строками верхнего уровня, мешая. Можно ли удалить данные только отдельных слоев структуры, хотя чтоб пустые строки остались? |
|
Отправлено: 00:36, 30-07-2016 |
Старожил Сообщения: 390
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
|
||
Последний раз редактировалось pavsem7, 04-08-2016 в 16:31. Отправлено: 13:11, 04-08-2016 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать pavsem7, код там таки есть, но он заботливо скрыт от пользователя .
Цитата pavsem7:
Option Explicit Sub Sample() Dim objRange As Range If IsWorksheetExists("TDSheet") Then With ActiveWorkbook.Worksheets.Item("TDSheet") For Each objRange In Intersect(.UsedRange, .Range("G6:G65536")).Cells If objRange.Rows.Item(1).OutlineLevel = 2 Then 'objRange.Value = objRange.Offset(0, -2).Value * objRange.Offset(0, -1).Value objRange.Formula = "=" & objRange.Offset(0, -2).Address & "*" & objRange.Offset(0, -1).Address Else objRange.ClearContents End If Next objRange End With Else MsgBox "Can't find worksheet named [TDSheet] in active workbook", vbInformation + vbOKOnly End If End Sub Private Function IsWorksheetExists(strWorksheetName As String) As Boolean Dim objWorksheet As Worksheet IsWorksheetExists = False For Each objWorksheet In ActiveWorkbook.Worksheets If StrComp(objWorksheet.Name, strWorksheetName, vbTextCompare) = 0 Then IsWorksheetExists = True Exit For End If Next objWorksheet End Function Цитата pavsem7:
pavsem7, может имеет смысл сделать код не в Excel, а во внешнем скрипте? Тогда сможете, скажем, банально перетаскивать на скрипт (или на ярлык на скрипт) потребный файл Рабочей книги в Проводнике, использовать его запуск из Планировщика, пакетного файла или же непосредственно из 1С (если экспорт этого отчёта 1C в Рабочую книгу у Вас делается программно). |
||
Отправлено: 06:52, 05-08-2016 | #12 |
Старожил Сообщения: 390
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
Мне годится тот короткий скрипт, который был раньше. |
||
Отправлено: 12:25, 07-08-2016 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата pavsem7:
Цитата pavsem7:
Цитата pavsem7:
Скрытый текст
Option Explicit Dim strSourceFile Dim objWorksheet Dim objRange If WScript.Arguments.Count = 1 Then With WScript.CreateObject("Scripting.FileSystemObject") strSourceFile = .GetAbsolutePathName(WScript.Arguments.Item(0)) If .FileExists(strSourceFile) Then Select Case LCase(.GetExtensionName(strSourceFile)) Case "xls", "xlsx" With WScript.CreateObject("Excel.Application") With .Workbooks.Open(strSourceFile) For Each objWorksheet In .Worksheets With objWorksheet If StrComp(.Name, "TDSheet", vbTextCompare) = 0 Then For Each objRange In .Parent.Parent.Intersect(.UsedRange, .Range("G6:G65536")).Cells If objRange.Rows.Item(1).OutlineLevel = 2 Then objRange.Formula = "=" & objRange.Offset(0, -2).Address & "*" & objRange.Offset(0, -1).Address Else objRange.ClearContents End If Next Exit For End If End With Next .Save .Close End With .Quit End With Case Else WScript.Echo "Probably not an Excel workbook." WScript.Quit 3 End Select Else WScript.Echo "Can't find source file [" & strSourceFile & "]." WScript.Quit 2 End If End With Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>" WScript.Quit 1 End If WScript.Quit 0 |
|||
Отправлено: 08:26, 08-08-2016 | #14 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Можно ли удалить файлы | 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 |
|