|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - Можно ли удалить ненужные слои структуры? |
|
|
2010 - Можно ли удалить ненужные слои структуры?
|
|
Старожил Сообщения: 390 |
Возникла проблема, что файл 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 | |
|