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

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

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

Старожил


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

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


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

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

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

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

 

Старожил


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

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


Цитата Iska:
Там кода нет, кроме a*b, »
В сказки не верю, коллега. »
Не сказки, это 1с8 СКД, специальное встроенное графическое приложение для создания отчетов без кода, кода там нет, кроме цена*кол-во.

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

Последний раз редактировалось pavsem7, 04-08-2016 в 16:31.


Отправлено: 13:11, 04-08-2016 | #11



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

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


Ветеран


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

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


pavsem7, код там таки есть, но он заботливо скрыт от пользователя .

Цитата pavsem7:
Верхняя всегда G6. Столбец всегда устанавливается в G. »
Давайте попробуем так:
Код: Выделить весь код
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
Благодарности: 7

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


Цитата Iska:
Добавил проверку существования в активной Рабочей книге Рабочего листа с указанным именем, и сделал добавление формулы »
Не понимаю смысла совершать эту проверку. Такой лист создался при сохранении из 1С автоматически, я даже не знал его названия, пока Вы не подсказали. Отчеты из 1С, насколько я понял, всегда сохраняются в однолистовую книгу. В принципе могут быть отчеты совсем о другом, но по-видимому, с тем же именем.

Цитата Iska:
может имеет смысл сделать код не в Excel, а во внешнем скрипте? Тогда сможете, скажем, банально перетаскивать на скрипт (или на ярлык на скрипт) »
А вот это интересно. Это как раз типа командной строки. Только я не понял, как сделать скрипт, чтоб при его перетаскивании на файл Excel этот файл Excel обрабатывался?
Мне годится тот короткий скрипт, который был раньше.

Отправлено: 12:25, 07-08-2016 | #13


Ветеран


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

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


Цитата pavsem7:
Не понимаю смысла совершать эту проверку. »
Запустили макрос в Рабочей книге, в которой нет данного листа (случайно, специально, звёзды так сошлись — не суть важно). Без этой проверки макрос отвалится с ошибкой времени исполнения, с проверкой — просто сообщит об отсутствии листа.

Цитата pavsem7:
но по-видимому, с тем же именем. »
Не уверен.

Цитата pavsem7:
А вот это интересно. Это как раз типа командной строки. Только я не понял, как сделать скрипт, чтоб при его перетаскивании на файл Excel этот файл Excel обрабатывался? »
Попробуйте так (WSH):
Скрытый текст
Код: Выделить весь код
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



Компьютерный форум 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




 
Переход