Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Автоматическое изменение ширины столбцов в умных таблицах при обновлении их через запрос Power Query, можно ли отключить?
 
У меня по итогу сработало, чтобы не менялась ширина столбца сводной таблице построенной на пивоте по макросу :
Код
Sub AutoFormat_All_Pivotstable() ' Отключить автоподбор ширины столбца при обновлении ' на всех сводных таблицах в активной рабочей книге.


Dim ws As Worksheet
Dim pt As PivotTable     ' Цикл каждого листа в активной рабочей тетради
For Each ws In ActiveWorkbook.Worksheets         ' Проходить по каждой сводной таблице на листе
For Each pt In ws.PivotTables             ' Автоподбор ширины столбца при обновлении       ' изменить на True, чтобы включить
pt.HasAutoFormat = False

Next pt
Next ws
End Sub

А  чтобы не менялось форматирование алгоритм получился  такой:

как писали ранее параметры сводной таблице - галка на сохранять форматирование ячеек

сделать нужное форматирование на таблице

сохранить файл, закрыть книгу и открыть заново.

И только тогда, у меня приживается новое форматирование при последующих обновлениях.

Power Query запрос из папки
 
Цитата
написал:
Hoc40,
из простого - положить пустой файл в папку
Точно, как все просто. Спасибо!
Изменено: Hoc40 - 10.02.2023 13:39:17
Power Query запрос из папки
 
Добрый день. Подскажите как можно обойти ошибку, суть в следующем:
в файле несколько запросов на две папки , далее эти запросы объединяются в один.
Если в папке лежат файлы то все ок, но когда хоть в одной папке пусто (нет файлов) выдает ошибку :
В запросе "Холодный" произошла ошибка. Expression.Error: Столбец "DC" таблицы не найден.

Причину ошибки понимаю, но как ее обойти, чтобы качалось информация с непустой папке?
Список сводных таблиц
 
Добрый день. НЕ смог своими силами доставить часть кода, поэтому прошу у вас помощи форумчане.
Есть код, который делает список сводных таблиц в файле (все отлично работает)
Код
Sub ListPivotsInfor()'Update 20141112
    Dim St As Worksheet
    Dim NewSt As Worksheet
    Dim pt As PivotTable
    Dim I, K As Long
    Application.ScreenUpdating = False
    Set NewSt = Worksheets.Add
    I = 1: K = 2
    With NewSt
        .Cells(I, 1) = "Name"
        .Cells(I, 2) = "Source"
        .Cells(I, 3) = "Refreshed by"
        .Cells(I, 4) = "Refreshed"
        .Cells(I, 5) = "Sheet"
        .Cells(I, 6) = "Location"
        For Each St In ActiveWorkbook.Worksheets
            For Each pt In St.PivotTables
                I = I + 1
                .Cells(I, 1).Value = pt.Name
                .Cells(I, 2).Value = pt.SourceData
                .Cells(I, 3).Value = pt.RefreshName
                .Cells(I, 4).Value = pt.RefreshDate
                .Cells(I, 5).Value = St.Name
                .Cells(I, 6).Value = pt.TableRange1.Address
            Next
        Next
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub

И к этому коды есть дополнительный код, чтобы ссылки на сводные были в виде гипер ссылок

Можно включить этот фрагмент, чтобы сделать имя сводной таблицы гиперссылкой. .Cells(I, 1).Parent.Hyperlinks.Add Anchor:=.Cells(I, 1) _ , Address:="" _ , SubAddress:="'" + St.Name + "'!" + Split(pt.TableRange1.Address, ":")(0) _ , TextToDisplay:=pt.Name With .Cells(I, 7).Font .ColorIndex = xlAutomatic .Underline = xlUnderlineStyleNone End with With .Cells(I, 7). 1).Characters(Start:=4165632, Length:=Len(pt.Name)).Font.Underline = xlUnderlineStyleSingle.Color = -XNUMX End With

Вот он  только ни черта не работает, я не знаю как его поправить и куда вставлять в основное код.....
Единственное что понял "_ ," это обозначение новой строки. Тогда получается
Код
.Cells(I, 1).Parent.Hyperlinks.Add Anchor:=.Cells(I, 1) 
 Address:="" 
 SubAddress:="'" + St.Name + "'!" + Split(pt.TableRange1.Address, ":")(0) 
 TextToDisplay:=pt.Name 
   With 
      .Cells(I, 7).Font .ColorIndex = xlAutomatic .Underline = xlUnderlineStyleNone 
   End with 
   With 
     .Cells(I, 7). 1).Characters(Start:=4165632, Length:=Len(pt.Name)).Font.Underline = xlUnderlineStyleSingle.Color = -XNUMX 
   End With


Подскажите, как это совместить. Спасибо!
Не получается осуществить фильтр массива
 
Jack Famous, Огромное спасибо вам!!!
Не получается осуществить фильтр массива
 
New, vikttur,Спасибо вам за  помощь
Jack Famous, Здравствуйте. Спасибо вам за подробный ответ, особенно за п1  а то уже начал думать как объявить одномерный массив на основе диапазона.

Не сочтите за наглость, просто мой опыт в программировании не такой большой... можно ли небольшой пример цикла с отбором ,где не нужно преобразовывать "готовый" массив с листа в одномерный? Или тут подразумевается обычный цикл For, внутри которого If перебирает значения ячейки на соответствие и если оно есть, то назначает в элемент массива?
И вопрос по процедуре, которую вы привели для наглядности размеров массива исходя из диапазона,
1-не могу понять как мне загуглить, чтобы почитать про такие  диапазоны - Range("A1,B1:B2")- просто впервые с ними сталкиваюсь
2 - изза чего выдает ошибку ? Ведь диапазон для каждого из двух массивов существует...
Код
arrAr = rng.Value
arrVar = rng.Value  При Set rng = Range("A1")

Изменено: Hoc40 - 11.01.2021 22:55:02
Не получается осуществить фильтр массива
 
Добрый день.
Подскажите  как можно решить ошибку несоответствие типа(13)в данном коде:
Код
Sub test()
  Dim arrA
  Dim arrB
  
  arrA = Range("A1:A9").Value
  arrB = Filter(arrA, "январь")
  Range("B1").Resize(UBound(arrB)) = arrB
    
End Sub
Выдает что ошибка в типе переменной, предполагаю что функции  Filter не устраивает , что массив arrA не обозначен как string(хотя в окне локал он фигурирует какVatiant\String).
Но  arrA сделать типа string не могу,так как отладчик начнет ругаться на эту строку  arrA = Range("A1:A9").Value
при этом  при таком исполнении все работает
Код
Sub test()
  Dim arrA(3) As String
  Dim arrB As Variant
  arrA(1) = "a"
  arrA(2) = "b"
  arrA(3) = "c"
  arrB = Filter(arrA, "b")
End Sub
Фактически все одно и тоже за исключением что в первом варианте назначение идет через диапазон, а во втором в ручную. Спасибо
Как узнать какие диапазоны принимают переменные с типом Range?
 
Ігор Гончаренко, Дмитрий(The_Prist) Щербаков, Спасибо за помощь.
Как узнать какие диапазоны принимают переменные с типом Range?
 
Цитата
Ігор Гончаренко написал:
перестаньте изображать из себя программиста
Ігор Гончаренко, так написано же ученик, а это разве не синоним чайника?
Если так проще то подскажите чайнику где увидеть, как увидеть какие диапазоны (из серии - A1:B20, B30:D40) принимают переменные типа range в процессе выполнения процедуры? В окне locals  я вижу как меняются и какие значения принимают другие типы переменных.  Или по типу range только смотри путем Msgbox (переменная типа range).address или (переменная типа range).select?
Изменено: Юра1987 - 07.01.2021 03:21:41
Как узнать какие диапазоны принимают переменные с типом Range?
 
Добрый день. Подскажите ученику познающему свет VBA и погружающегося в его дебри, как можно узнать какие диапазоны принимают переменные  с типом Range в окне LOcals(скрин) или где то или както по другому? Просто надоедает прописывать в режиме пошаговой отладки  Msgbox  .address(особенного когда много переменных данного типа), чтоб понять все ли идет по плану или нет.
Изменено: Юра1987 - 07.01.2021 01:30:27
Не получается изменить количество циклов когда он уже запущен, возможно ли это вообще?
 
Юрий М, Согласен, понял что  еще нужно учится правильно выражаться.
Значит в моем случае получается, что - верхнею границу итераций (х) в цикле после запуска цикла изменить нельзя, но это можно обойти путем изменения текущего номера итерации (i). Спасибо вам, ваш пример расширил мой кругозор.
Изменено: Юра1987 - 03.01.2021 23:41:19
Не получается изменить количество циклов когда он уже запущен, возможно ли это вообще?
 
New, спасибо за помощь, теперь все ясно.
Цитата
Ігор Гончаренко написал:
возник ответ:да, хоть 1000
Ігор Гончаренко, теперь я понял что количество циклов(for) изменить после начала  итерации нельзя(понимаю, что вы это знаете, просто ответ можно понять двояко). Спасибо
Изменено: Юра1987 - 03.01.2021 23:13:25
Не получается изменить количество циклов когда он уже запущен, возможно ли это вообще?
 
Добрый день. Возник вопрос можно ли изменить количество циклов (For), если цикл уже работает?
Пример
Код
Sub xx()
Dim i As Long
Dim x As Long
x = 2
For i = 1 To x
Range("A" & i).Value = 1
x = 10

Next i
Прорабатывает цикл два раза, хотя переменная количества циклов меняется в процессе выполнения на 10 (скрин).
Изменено: Юра1987 - 03.01.2021 04:23:45
Объединение данных из нескольких ячеек в одну
 
buchlotnik, я просто отталкивался от формулы, которая в файле и там она с фигурными скобками(скрины во вложении), то есть идет как массив.
соответственно и интересуюсь, у вас, как вы вносили данную формулу?
ведь в фигурных скобках может быть только массив?
Копировать результат именованных диапазонов одной книги в именованные диапазоны другой книги
 
Цитата
gorogankin написал:
Set b = Range("[Эфир.xlsm]Сетка!C925")
не правильно задано и не объявлена как переменная (вроде объекты в виде переменных обязательно нужно задавать какого класса). Так же везде пропущены названия листов.
а вот тут вообще не понятно, что хотите сделать
Цитата
gorogankin написал:
Range("RekBl" & a + b)
вы пытаетесь объект приплюсовать к тексту, числу
Копировать результат именованных диапазонов одной книги в именованные диапазоны другой книги
 
вот так должно работать
Код
1 Range("RekBl" & a). Copy
Копировать результат именованных диапазонов одной книги в именованные диапазоны другой книги
 
gorogankin, можно и без него, но так понятнее код от куда берутся данные
Копировать результат именованных диапазонов одной книги в именованные диапазоны другой книги
 
gorogankin, При условии что название листа от куда копируется  Лист1
Код
WorkBooks(“Реклама”).WorkSheets(“Лист1”).Range("RekBl" & a). Copy

Объединение данных из нескольких ячеек в одну
 
buchlotnik, подскажите как вы осуществили заполнение со смещением в формуле массива D2 D3 и тд(ведь не вручную же в каждой ячейке объявлять массив)
Код
=ОБЪЕДИНИТЬ("_";1;ЕСЛИ($D$2:$D$49=D2;$B$2:$B$49;""))

понятно что сначала протянули формулой, а потом если я на диапазоне нажимаю контрл шифт энтр, то во всех ячейках делает D2. Вот как)?

Создание файла экселя с помощью горячих клавиш
 
DANIKOLA, Добрый вечер. Спасибо вам огромное, все суперски работает.
Создание файла экселя с помощью горячих клавиш
 
DANIKOLA, подскажите а можно как нить совместить ваш скрипт и тот, который был на гитхабе? В плане того чтобы он определял путь активного окна проводника. И  создавал новый файл по скрипту уже в активном окне , а не там где лежит сам скрипт ( у меня он все файлы создает только на рабочем столе, в независимости от того где лежит сам файл скрипта или ярлыка на него)
Код
; Это часть моего скрипта AutoHotKey [1]. Когда вы находитесь в проводнике Windows,
; позволяет вам нажать Ctrl + Alt + N и ввести имя файла, и этот файл будет создан
; в текущем каталоге и открывается в соответствующем редакторе (обычно
; [gVim] (http://www.vim.org/) в моем случае, но он будет использовать любую программу
; связанный с файлом в проводнике Windows).
 
; Это намного проще, чем альтернатива, которую я использовал до сих пор:
; Щелкните правой кнопкой мыши> Создать> Текстовый файл, удалите имя файла и расширение по умолчанию (которое
; не выделен в Windows 7), введите имя файла и дважды нажмите клавишу ВВОД.
; (В частности, для создания точечных файлов, таких как ".htaccess".)
 
; Благодарим aubricus [2], написавшего большую часть этого - я только что добавил
; Отметьте «IfWinActive» и в конце «Выполните% UserInput%».
 
; [1]: http://www.autohotkey.com/
; [2]: https://gist.github.com/1148174
 
 
; Запускать только при активном проводнике Windows
; (Примечание: если это не сработает, попробуйте вместо этого ExploreWClass)
#IfWinActive  ahk_class  CabinetWClass
 
; Ctrl + Alt + N
^! п ::
 
    ; Получить полный путь из открытого окна проводника
    WinGetText ,  FullPath ,  A
 
    ; Разделить результат (возвращает пути, разделенные символами новой строки)
    StringSplit ,  PathArray ,  FullPath ,  `n
 
    ; Получите первый предмет
    FullPath  =  % PathArray1%
 
    ; Очистить результат
    FullPath  : =  RegExReplace ( FullPath ,  "(^ Адрес :) " ,  "" )
    StringReplace ,  FullPath ,  FullPath ,  `г ,  ,  все
 
    ; Изменить рабочий каталог
    SetWorkingDir ,  % FullPath%
 
    ; Произошла ошибка с директивой SetWorkingDir
    Если ErrorLevel
        Возвращение
 
    ; Показать поле ввода для имени файла
    InputBox ,  UserInput ,  New  File  ( пример :  Foo . TXT ),  ,  ,  400 ,  100
 
    ; Пользователь нажал кнопку отмены
    Если ErrorLevel
        Возвращение
 
    ; Создать файл
    FileAppend ,  ,  % UserInput%
 
    ; Откройте файл в соответствующем редакторе
    Запустить  % UserInput%
 
    Возвращение
 
#IfWinActive
Изменено: Юра1987 - 08.12.2020 00:03:12
Создание файла экселя с помощью горячих клавиш
 
БМВ, Вариант от DANIKOLA не требует админских прав на любой ярлык кроме тех ярлыков которые в пуске. Чтобы обойти это к примеру, на главном ярлыке екселя(в пуске) сносим его на рабочий стол и все теперь админские права не нужны(на домашнем так точно, завтра проверю на рабочем).
UPD- на рабочем компе, без админских прав все работает.
Изменено: Юра1987 - 08.12.2020 09:45:23
Создание файла экселя с помощью горячих клавиш
 
DANIKOLA, Спасибо вам. Решение просто супер и то что нужно. Даже в разы лучше чем autohotkey+скрипт, так как  на рабочий комп не поставишь из-за админских ограничений.
Создание файла экселя с помощью горячих клавиш
 
Добрый день. Подскажите есть ли горячая клавиша, чтоб создать новый файл екселя в папке?
пример(Ctrl + Shift + N. создать папку), а то постоянно приходится маус2 - создать -лист ексель .
Вариант использования макроса не совсем подходит, ведь ексель может быть закрыт.
Как в Power Query пронумеровать строки
 
PooHkrd, за скрины отдельное спасибо - теперь буду знать!
Андрей VG,
Цитата
Андрей VG написал:
У него гранаты не той системы
и не поспоришь))

И всем кто подсказывал разные варианты огромное спасибо, так как очень пригодится для дальнейшего развития в квери.
Как в Power Query пронумеровать строки
 
buchlotnik,  Делал просто через интерфейс,он не позволял так сделать, а в коде квери не так силен. Спасибо, все отлично работает!
Как в Power Query пронумеровать строки
 
Добрый день. Можно ли в Power Query пронумеровать строки в такой последовательности -первые 4 строки 1, вторые 4 строки 2 и тд? Индекс и последущее деление от остатка (на 4 ) не дает желаемого результата, транспортировкой так же не смог объединять по четыре столбца.
Есть список , где  Фио разнесено на каждую строку, нужно объединить их вместе-если использовать  макрос то там ясно.
А вот как сделать в Power Query хз...
Благодарю за помощь!
Изменено: Юра1987 - 26.06.2020 01:03:26
Power Pivot настройка языка
 
Ну вот собственно решил я данную проблему, скопировав с рабочего компа где пивот на русском папку ru (кидаю ссылку на архив этой папки https://yadi.sk/d/fJ1Wqu9nVpxlRQ) далее переходим по пути (C:\Program Files\Microsoft Office\root\Office16\ADDINS\PowerPivot Excel Add-in) и меняет эти папки (работает как для 2016, 2019 и 365) и будет русская версия скрин
Power Pivot настройка языка
 
А у меня в 2019 к сожалению нет такого.... Странно конечно.
Power Pivot настройка языка
 
buchlotnik, так в том то и дело что не могу найти настройки на РР....Если знаете где подскажите. А то просто на работе РР на русском, а дома на английском. Вот и пытаюсь понять в чем причина.
Изменено: Юра1987 - 23.02.2020 23:29:33
Страницы: 1 2 След.
Наверх