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
Sub ss() Dim rng As Range With Range([A1], [A1].End(xlDown)) Set rng = .Resize(.Count * [B1]) .Copy rng With ActiveSheet.Sort With .SortFields .Clear .Add rng, 0, 1, , 0 End With .SetRange rng: .Header = 2 .MatchCase = 0: .Orientation = 1 .SortMethod = 1: .Apply End With End With End Sub
[/vba]
До кучи Данные в столбце A:A, N в ячейке B1 [vba]
Код
Sub ss() Dim rng As Range With Range([A1], [A1].End(xlDown)) Set rng = .Resize(.Count * [B1]) .Copy rng With ActiveSheet.Sort With .SortFields .Clear .Add rng, 0, 1, , 0 End With .SetRange rng: .Header = 2 .MatchCase = 0: .Orientation = 1 .SortMethod = 1: .Apply End With End With End Sub
Sub d() With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then With Application: .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = 0: End With CreateObject("wscript.shell").Run _ "cmd /c dir " & .SelectedItems(1) & _ " /AD-H-L-S | clip", 0, 1 With ActiveSheet .[A1:B1] = Array("Папка", "Дата создания") With Intersect(.UsedRange.Offset(1), .[A:B]) .Cells(1, 1).Select .Delete xlUp End With .PasteSpecial "Текст" .UsedRange With Intersect(.UsedRange.Offset(1), .[A:A]) .Columns(1).TextToColumns [A2], 2, FieldInfo:=Array( _ Array(0, 4), Array(10, 9), Array(36, 2)), TrailingMinusNumbers:=1 .Offset(, 1).Cut .Insert xlToRight .Offset(.Rows.Count - 3, -1).Resize(2, 2).Delete xlUp .Offset(, -1).Resize(5, 2).Delete xlUp End With End With End If End With With Application: .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1: End With End Sub
[/vba]
а если попробовать такой изврат? [vba]
Код
Sub d() With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then With Application: .ScreenUpdating = 0: .EnableEvents = 0: .DisplayAlerts = 0: End With CreateObject("wscript.shell").Run _ "cmd /c dir " & .SelectedItems(1) & _ " /AD-H-L-S | clip", 0, 1 With ActiveSheet .[A1:B1] = Array("Папка", "Дата создания") With Intersect(.UsedRange.Offset(1), .[A:B]) .Cells(1, 1).Select .Delete xlUp End With .PasteSpecial "Текст" .UsedRange With Intersect(.UsedRange.Offset(1), .[A:A]) .Columns(1).TextToColumns [A2], 2, FieldInfo:=Array( _ Array(0, 4), Array(10, 9), Array(36, 2)), TrailingMinusNumbers:=1 .Offset(, 1).Cut .Insert xlToRight .Offset(.Rows.Count - 3, -1).Resize(2, 2).Delete xlUp .Offset(, -1).Resize(5, 2).Delete xlUp End With End With End If End With With Application: .ScreenUpdating = 1: .EnableEvents = 1: .DisplayAlerts = 1: End With End Sub