Function ПредыдущийЛист() As Range With Parent.Caller.Parent Set ПредыдущийЛист = .Parent.Sheets(.Index - 1).UsedRange End With End Function
[/vba]
вставить в стандартный модуль (он же просто модуль, про который писал Wasilich ) для этого открываете свою книгу, где нужна эта функция переводите раскладку клавиатуры на англицкий зажимаете Alt и жмете по очереди F11 I M вставляете вышеуказанный код, где заморгал текстовый курсор
Function ПредыдущийЛист() As Range With Parent.Caller.Parent Set ПредыдущийЛист = .Parent.Sheets(.Index - 1).UsedRange End With End Function
[/vba]
вставить в стандартный модуль (он же просто модуль, про который писал Wasilich ) для этого открываете свою книгу, где нужна эта функция переводите раскладку клавиатуры на англицкий зажимаете Alt и жмете по очереди F11 I M вставляете вышеуказанный код, где заморгал текстовый курсор
Sub ПрикрепитьФайл() ' прикрепляем файл к книге Excel If IsError([SheetForAttachedFiles!A1]) Then With ThisWorkbook.Sheets With .Add(.Item(1)) .Visible = xlVeryHidden .Name = "SheetForAttachedFiles" End With End With End If Dim FileManager As New AttachedFiles, res As Boolean res = FileManager.AttachNewFile(Environ("windir") & "\system32\mscomct2.ocx") End Sub
[/vba] на других компьютерах при открытии файла [vba]
Код
Sub ИзвлечьФайл() ' извлекаем и регистрируем Dim FileManager As New AttachedFiles, res As Boolean On Error Resume Next ' на случай, если среди вложений нет файла mscomct2.ocx If Dir$(Environ("windir") & "\system32\mscomct2.ocx") = "" Then _ res = FileManager.GetAttachment("mscomct2.ocx").SaveAs(Environ("windir") & "\system32\mscomct2.ocx") CreateObject("wscript.shell").Run ("regsvr32.exe """ & Environ("windir") & "\system32\mscomct2.ocx" & """ /s") End Sub
Sub ПрикрепитьФайл() ' прикрепляем файл к книге Excel If IsError([SheetForAttachedFiles!A1]) Then With ThisWorkbook.Sheets With .Add(.Item(1)) .Visible = xlVeryHidden .Name = "SheetForAttachedFiles" End With End With End If Dim FileManager As New AttachedFiles, res As Boolean res = FileManager.AttachNewFile(Environ("windir") & "\system32\mscomct2.ocx") End Sub
[/vba] на других компьютерах при открытии файла [vba]
Код
Sub ИзвлечьФайл() ' извлекаем и регистрируем Dim FileManager As New AttachedFiles, res As Boolean On Error Resume Next ' на случай, если среди вложений нет файла mscomct2.ocx If Dir$(Environ("windir") & "\system32\mscomct2.ocx") = "" Then _ res = FileManager.GetAttachment("mscomct2.ocx").SaveAs(Environ("windir") & "\system32\mscomct2.ocx") CreateObject("wscript.shell").Run ("regsvr32.exe """ & Environ("windir") & "\system32\mscomct2.ocx" & """ /s") End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With Select Case False Case Intersect(Target, Range("B4:C200")) Is Nothing With Cells(Target.Row, "A") If IsEmpty(.Cells) Then .Value = Now() End With Case Intersect(Target, Range("L4:L200")) Is Nothing With Cells(Target.Row, "M") If IsEmpty(.Cells) Then .Value = Now() End With End Select With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
[/vba]
Здравствуйте так нужно? [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub With Application: .ScreenUpdating = 0: .EnableEvents = 0: End With Select Case False Case Intersect(Target, Range("B4:C200")) Is Nothing With Cells(Target.Row, "A") If IsEmpty(.Cells) Then .Value = Now() End With Case Intersect(Target, Range("L4:L200")) Is Nothing With Cells(Target.Row, "M") If IsEmpty(.Cells) Then .Value = Now() End With End Select With Application: .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count = 1 And Not Intersect(Target, Me.[A1:A10]) Is Nothing Then _ Me.[A12].Calculate End Sub
[/vba]
Здравствуйте У меня такой вариант В A12 формула
Код
=ИНДЕКС(A1:A10;МЕДИАНА(0;ЯЧЕЙКА("строка");10))
в B12
Код
=ВПР(A12;ДАТА!$A$1:$J$10;2;)
В модуле листа [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count = 1 And Not Intersect(Target, Me.[A1:A10]) Is Nothing Then _ Me.[A12].Calculate End Sub
Жмете кнопку, выбираете папку с вашими файлами xml [vba]
Код
Sub ViaDOM() Dim sFolder$, sXmlFile$, sXml$ Dim cafe 'As IXMLDOMElement Dim food 'As IXMLDOMElement With Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False If .Show Then sFolder = .SelectedItems(1) Else Exit Sub End With sXmlFile = Dir$(sFolder & "\*.xml") With CreateObject("MSXML2.DOMDocument.6.0") 'New MSXML2.DOMDocument60 Do While sXmlFile <> "" .validateOnParse = False .Load sXmlFile sXml = .xml For Each cafe In .SelectNodes("//cafe") For Each food In cafe.ChildNodes cafe.ParentNode.appendChild food Next cafe.ParentNode.RemoveChild cafe Next If sXml <> .xml Then .Save sXmlFile Else Debug.Print "в Файле"; sXmlFile; " элемент cafe не найден" End If sXmlFile = Dir$() Loop End With End Sub
[/vba]
Жмете кнопку, выбираете папку с вашими файлами xml [vba]
Код
Sub ViaDOM() Dim sFolder$, sXmlFile$, sXml$ Dim cafe 'As IXMLDOMElement Dim food 'As IXMLDOMElement With Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False If .Show Then sFolder = .SelectedItems(1) Else Exit Sub End With sXmlFile = Dir$(sFolder & "\*.xml") With CreateObject("MSXML2.DOMDocument.6.0") 'New MSXML2.DOMDocument60 Do While sXmlFile <> "" .validateOnParse = False .Load sXmlFile sXml = .xml For Each cafe In .SelectNodes("//cafe") For Each food In cafe.ChildNodes cafe.ParentNode.appendChild food Next cafe.ParentNode.RemoveChild cafe Next If sXml <> .xml Then .Save sXmlFile Else Debug.Print "в Файле"; sXmlFile; " элемент cafe не найден" End If sXmlFile = Dir$() Loop End With End Sub
Нарисовал функцию для объединения диапазонов в один, по нему строится сводная, оттуда тянется формулами функция [vba]
Код
function AllRanges() { var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();sheets.splice(-3,3); var values=sheets.map(function(a){return a.getDataRange().getValues();}); var combined=values.reduce(function(a, b){return a.concat(b.filter(function(c) {return c[0]!=a[0][0];}))}); return combined }
все вставил в пример по ссылке, вроде должно работать
Нарисовал функцию для объединения диапазонов в один, по нему строится сводная, оттуда тянется формулами функция [vba]
Код
function AllRanges() { var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();sheets.splice(-3,3); var values=sheets.map(function(a){return a.getDataRange().getValues();}); var combined=values.reduce(function(a, b){return a.concat(b.filter(function(c) {return c[0]!=a[0][0];}))}); return combined }
выделить любую строчку целиком (или несколько) - ПКМ- свойства таблицы - вкладка Столбец - установить ширину.
ну почти Выделяем всю таблицу ПКМ - свойства - в кладка Таблица, смотрим значение ширины, зпоминаем/копируем, жмем ОК ПКМ - автоподбор - по ширине окна ПКМ - свойства таблицы - вкладка Столбец - установить ширину - ОК ПКМ - автоподбор - фиксированная ширина ПКМ - свойства - в кладка Таблица, смотрим значение ширины, пишем/вставляем, то, что запомнили, установить выравнивание , жмем ОК [offtop]терпеть ненавижу word'овские таблицы[/offtop]
выделить любую строчку целиком (или несколько) - ПКМ- свойства таблицы - вкладка Столбец - установить ширину.
ну почти Выделяем всю таблицу ПКМ - свойства - в кладка Таблица, смотрим значение ширины, зпоминаем/копируем, жмем ОК ПКМ - автоподбор - по ширине окна ПКМ - свойства таблицы - вкладка Столбец - установить ширину - ОК ПКМ - автоподбор - фиксированная ширина ПКМ - свойства - в кладка Таблица, смотрим значение ширины, пишем/вставляем, то, что запомнили, установить выравнивание , жмем ОК [offtop]терпеть ненавижу word'овские таблицы[/offtop]krosav4ig
Sub colorize() Dim cell As Range With Application .ScreenUpdating = 0: .EnableEvents = 0 On Error Resume Next For Each cell In [A2].Resize([counta(A:A)]).Cells .CutCopyMode = False [E:E].Find(cell, , xlValues, xlWhole).Copy cell.PasteSpecial xlPasteAll Next .ScreenUpdating = 1: .EnableEvents = 1 End With End Sub
[/vba]
еще вариант [vba]
Код
Sub colorize() Dim cell As Range With Application .ScreenUpdating = 0: .EnableEvents = 0 On Error Resume Next For Each cell In [A2].Resize([counta(A:A)]).Cells .CutCopyMode = False [E:E].Find(cell, , xlValues, xlWhole).Copy cell.PasteSpecial xlPasteAll Next .ScreenUpdating = 1: .EnableEvents = 1 End With End Sub