Новости:

Название темы должно отражать суть задачи.
Темы типа "ПОМОГИТЕ!!!", "Срочно!" и т.п. будут удаляться без объяснения причин

Главное меню

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.

Просмотр сообщений

Темы - baters

#1
Доброго времени суток.

Интересует возможность обновления (в определенное время) запроса Power Pivot, это возможно? или Power Query...(Excel 2016)

Обыскал весь инет ... единственное, что нашел похожее так, это
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=87201&MID=s

Но тема не раскрыта.

PS Суть проблемы в следующем - начал юзать Power BI, данные обновляются ;

Сейчас - Обновляю куб OLAP - копирую данные в лист ексель (ВэПэРю, все, что нужно)  - импортирую данные в Power BI (в последствии просто обновляю)
Нужно - Куб обновляется сам (Либо запрос из Power Pivot)- данные в Ексель копируются сами и обрабатываются тоже сами - Power Bi обновляет источники тоже сам (на сколько я понял, источник настраивается регламентным заданием на обновление)

Буду признателен за любые советы.


#2
Добрый день.

Ситуация следующая.. сделал себе локальное хранилище данных в Power Pivot (несколько листов с данными по несколько мильенов строк).
Как можно объединить все листы в один? Данные в одинаковом формате... просто разные периоды (целиком не подгружалось, пришлось частями).

#3
Добрый день.

Гугл не помог найти решение данной задачки, но уверен, что большинство с ней сталкивались.
Поделитесь плиз решением... необходимо "нормализовать таблицу" таким образом, что бы из нее сделать сводную.
Во вложении файл с примером, в нем два листа (как есть, и как нужно). По факту кол-во столбцов гараздо больше.
Спс.
#4
Добрый день.

Подскажите пожалуйста, как можно в колонтитул листа пропечатать номер копии.
Например печатаю лист Ексель, указываю, что нужно напечатать 5 копий......нужно, что бы при печати первой копии в колонтитуле печаталось "Первая копия", когда начиналась печать 2 копии в колонтитуле печаталось "Вторая копия".... и т.д.

Заранее большое спасибо.
#5
Доброго времени суток.

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

Не поможет ктонить универсальным кодом для печати шапки?
Спасибо.


'Печать шапки на каждом листе
Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$2"
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.708661417322835)
        .RightMargin = Application.InchesToPoints(0.708661417322835)
        .TopMargin = Application.InchesToPoints(0.748031496062992)
        .BottomMargin = Application.InchesToPoints(0.748031496062992)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.31496062992126)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = False
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
#6
Добрый день.

Есть переменная, в ней фраза из этой фразы нужно сохранить в другую переменную 18 и 19 знак (средствами VBA)

Подскажите плиз как енто реализовать.
Спасибо.
#7
Добрый день.

Есть формула, она ссылается на соседний лист на столбец В, что можно придумать, что бы при удалении столбца В (соответственно столбец С переезжает на место столбца В) в формуле не умирала ссылка, а ссылалась так же на столбец В?
=СУММЕСЛИ(Шаблон!#ССЫЛКА!;"<>0";Шаблон!#ССЫЛКА!)

Спасибо.
#8
Доброго времени суток.

Есть книга, в ней 2 листа.
В 1 лист копирую данные как значения (данные из печатной формы ИНВ-3, копирую как значения для того, что бы убрать все объединения ячеек), запускаю макрос, он структурирует данные и можно работать.
Во втором листе формулы, которые обрабатывают данные из 1 листа и образуют собой "выжимку данных".

Проблема в том, что макрос работает если я удаляю из книги 2 лист быстро и четко, а вот если 2 лист присутствует, то макрос зависает. Предполагаю, что во время работы макроса (при удалении строк, столбцов), формулы постоянно пересчитываются и из за этого все виснит...  

Добавил
в начало макроса  -     Application.Calculation = xlCalculationManual
в конец макроса -        Application.Calculation = xlCalculationAutomatic
но результат тот же...все висит чудовищно.
Подскажите, что можно предпринять?
Спасибо.


На всякий случай привожу весь текст макроса.
Sub УдалениеСтрокИтог()
Dim lLastRow As Long, li As Long
Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
Dim ssSubStr As String
Dim sssSubStr As String
Dim Valu As String

sSubStr = "недостачи"
ssSubStr = "Кол-во"
sssSubStr = "Итого по группе:"
 
  Application.Calculation = xlCalculationManual
 
    'Удаляем ненужные строки
  lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
 
   Application.ScreenUpdating = 0
   For li = lLastRow To 3 Step -1
       If (Cells(li, "B") <> "" Or Cells(li, "H") = "") And -(InStr(Cells(li, "A"), sssSubStr) = 0) Then Rows(li).Delete
   Next li
 
   'Копируем группы
   li = 0
     
   lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
   For li = lLastRow To 4 Step -1
   
    If -(InStr(Cells(li, "A"), sssSubStr) > 0) Then Valu = Cells(li, "A").Value
         
   Cells(li - 1, "B").Value = Valu
       
    Next li
   
   li = 0
   For li = lLastRow To 4 Step -1

   'Удаляем ненужные группы
   If Cells(li, "C") = "" Then Rows(li).Delete
    Next li
     
'Удаляем пустые столбцы
Dim c As Long, FirstColumn As Long, LastColumn As Long
FirstColumn = ActiveSheet.UsedRange.Column
LastColumn = ActiveSheet.UsedRange.Columns.Count - 1 + ActiveSheet.UsedRange.Column
For c = LastColumn To FirstColumn Step -1
If Application.CountA(Columns(c)) = 0 Then
Columns(c).Delete
End If
Next c

   Range("A1:Q1").Select
   Range(Selection, Selection.End(xlDown)).Select
   With Selection.Font
       .ColorIndex = xlAutomatic
       .TintAndShade = 0
   End With
   
   Range("J1:K1").Merge
   Range("L1:M1").Merge
   Range("O1:P1").Merge
   
   Range("N2").Value = "Есть значение"
   Range("O1").Value = "Отклонения"
   Range("O2").Value = "Кол-во"
   Range("P2").Value = "Сумма руб"
   Range("Q2").Value = "Коментарий"
   
     
'Делаем рамочку
   Range("A1:Q1").Select
   Range(Selection, Selection.End(xlDown)).Select
   Selection.Font.Bold = True
   Selection.Font.Bold = False
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone
   Selection.Borders(xlDiagonalUp).LineStyle = xlNone
 
  Range("A1:Q1").Select
   Range(Selection, Selection.End(xlDown)).Select
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone
   Selection.Borders(xlDiagonalUp).LineStyle = xlNone
   
   
   With Selection.Borders(xlEdgeLeft)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlEdgeTop)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlEdgeBottom)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlEdgeRight)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlInsideVertical)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With
   With Selection.Borders(xlInsideHorizontal)
       .LineStyle = xlContinuous
       .ColorIndex = 0
       .TintAndShade = 0
       .Weight = xlThin
   End With

Range("A1").ClearContents
   Range("B1").ClearContents

lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
li = 0

   Application.ScreenUpdating = 0
   For li = lLastRow To 4 Step -1
       
   Cells(li, "O") = (Cells(li, "J") - Cells(li, "L"))
   Cells(li, "P") = (Cells(li, "K") - Cells(li, "M"))
     
   Next li
         
     Range("A2").Select
   Range(Selection, Selection.End(xlToRight)).Select
   Range(Selection, Selection.End(xlDown)).Select

   ActiveSheet.Range("$A$2:$Q$12150").AutoFilter Field:=15, Criteria1:="<>0", _
       Operator:=xlAnd
         
    Application.ScreenUpdating = 1
   Application.Calculation = xlCalculationAutomatic

MsgBox ("Приложение сформировано")

End Sub
#9
Добрый день.

Необходимо удалять строки по следующему условию;
Если (К+О+Q+R+S)>0 Тогда
Строку удалить
Иначе
не удалять

как можно енто попробовать решить?
+есть определенная "Шапка" листа которую проверять не нужно (нужно просто оставить).

Пример во вложении, там 2 листа (есть и нужно) в листе "Есть" может быть портянка огромная, а может маленькая.
Может есть примеры какиенить?
Хелпните форумчане.
#10
Доброго времени суток.

Как создать гиперсылку на гиперсылку в другой книге Excel...звучит бредово, но нужно так, что бы я ткнув в гиперсылку, провалился по выбранной гиперсылке.
Спасибо.
#11
Добрый день товарищи форумчане.

          В настоящее время интенсивно пытаюсь осваивать VBA (закончил курсы, юзаю Уокенбаха) толку если честно не очень много....читаю, вроде все понятно, но быстро забывается. Сборников задач по VBA я не нашел (если у кого то, есть ссылки-поделитесь товарисчи). Итогом самостоятельного обучения стало то, что в принципе глядя на макрос я стал понимать как он работает (ну по крайней мере в 75% макросах, понимаю, что к чему и почему).
          Очень нужна практика, а так как от программирования я далек, практиковаться неначем :(
Нужны задачи от простого к сложному, которые помогут понять циклы, конструкции и прочее по VBA.

Прошу озвучить ценники на постановку таких задач и соответственно проверку их решений.

Так же прошу откликнуться только активных участников данного форума.
Спасибо.

 
#12
Добрый день форумчане!


Добавил в сводную таблицу вычисляемое поле (=ЕСЛИОШИБКА(Сумма/Расхождение*('Кол-во пр сплош'+'Кол-во межинв'+'Кол-во межсклад');0))
И столкнулся со следующей проблемой.....
В рамках строк вычисления идут корректно, но там где есть промежуточные итоги в самой сводной таблице в столбце с этой формулой вместо промежуточного итога срабатывает эта формула.....соответственно промежуточный итог по этому вычисляемому полю кривой как "Турецкая сабля".
Подскажите как это можно обойти?
Спасибо.
#13
Добрый день.

Записываю с помощью макрокодера кусок кода, который создает сводную таблицу, записанный код приведен ниже.
Проблема в том, что этот кусок кода срабатывает только 1 раз....я подозреваю, что это из за автоматического добавления листа для свобдной таблицы, автоматически добавленному листу присваевается следующий порядковый номер....
Подскажите плиз как это обойти  (жестко указывать наименование листа для создания сводной таблицы)? 

     Range("A1").Select
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Список!R1C1:R30000C9", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="Лист22!R3C1", TableName:="СводнаяТаблица13", _
        DefaultVersion:=xlPivotTableVersion14
    Sheets("Лист22").Select
    Cells(3, 1).Select
    ActiveSheet.PivotTables("СводнаяТаблица13").AddDataField ActiveSheet. _
        PivotTables("СводнаяТаблица13").PivotFields("Сумма"), "Сумма по полю Сумма", _
        xlSum
    With ActiveSheet.PivotTables("СводнаяТаблица13").PivotFields("Название уровня")
        .Orientation = xlRowField
        .Position = 1
    End With
#14
Добрый день.

В книге Уокенбаха (програмирование ексель 2010), есть следующий код который делает следующее:
Если выделена одна ячейка то он пишет "Выделена одна ячейка"
В противном случае он пишет кол-во выделенных строк.
У меня почему то, этот макрос выдает сообщение "Выделен объект отличный от диапазона"

Так же прошу пояснить, что в данной конструкции значит - case "Диапазон" и case "Ничего"
Спасибо.

Sub SelectCase2()
Select Case TypeName(Selection)
    Case "Диапазон"
    Select Case Selection.Rows.Count
    Case 1
        MsgBox "выделенная одна ячейка"
    Case Else
        MsgBox Selection.Rows.Count & "Строк"
End Select
Case "Ничего"
        MsgBox "ничего не выделенно"
    Case Else
        MsgBox "Выделен объект отличный от диапазона"
End Select
End Sub
#15
Добрый день форумчане.
Пишу свой первый макрос (во вложени), подскажите как удалить всю строку, если в строке "Сумма" =0.
Заранее спасибо.
#16
Добрый день.

Подскажите плиз где можно найти перечень "Свойств и методов объектов VBA" на русском языке (все то, что появляется при нажатии "F1" в редакторе, но только на русском).
Спасибо.
#17
Добрый день форумчане!!
Есть вот такой полезный макрос, помогите плиз добиться его понимания (пытаюсь его самомтоятельно переработать, но некоторые строки кода/комментарии мне совсем не понятны, прошу макрописцев помочь)
Вопросы мо коду и комментариям в макросе:
   Dim wSh1 As Worksheet: Set wSh1 = [KOD1].Parent   'wSh1 делаем объектоной переменной (рабочий лист), после двоеточия указываем, что рабочий лист тот, на котором находится именованный диапазон [KOD1], я правельно понимаю? Что такое Parent?
Dim Arr(), lRow& 'Arr() это встроенная переменная (зачем там скобки, и где тип переменной)? lRow&'Arr() указываем переменную с типом Int, правельно? (зачем тогда скобки)
With CreateObject("Scripting.Dictionary") 'что значит эта строка?
  lRow = wSh1.Cells(wSh1.Rows.Count, [KOD1].Column).End(xlUp).Row - [KOD1].Row - 1 'lRow - похоже, что это переменная, но не вижу оператора объявляющего ее.
' сейчас .Items - это 1D-массив, каждый из элементов которого сам является 1D-массивом (Какой диапазон кода относится к этому комментарию и что, данный коментарий означает?)
' двойным транспонированием преобразуем 1D-массив 1D-массивов в 2D-массив (Что, этот комментарий значит? и что дает данное преобразование?)

Спасибо.
#18
Добрый день.

Установил специализированную надстройку по анализу продаж, часть функций в ней перетянуты из надстройки MyAddin, соответственно, некторые кнопки со вкладки "Надстройки"  у меня дублируются по 2 раза.
Подскажите плиз, как можно убрать дубляжи.
#19
Добрый день.

Столкнулся с интересной задачей и как ни странно мыслей как это реализовать нет...совсем нет.

В 1 строке (диапазон В1:Е1) цыфры которые являются результатом множества вычислений.

Какую формулу можно применить в строке 2 (диапазон В1:Е1), что бы получился результат как в примере..... 
#20
Добрый день формчане.


СУММПРОИЗВ(($A5='СТАРТ-1'!$C$7:$C$10000)*('СТАРТ-1'!$E$7:$E$10000="Одобрен")*('СТАРТ-1'!$I$7:$I$10000="не указана")*('СТАРТ-1'!$H$7:$H$10000-Лист1!$A$1<8)*('СТАРТ-1'!$F$7:$F$10000<>"СклПриемка")

Сделал формулу но она не работает, так как в это куске ('СТАРТ-1'!$H$7:$H$10000-Лист1!$A$1<8) - в диапазоне 'СТАРТ-1'!$H$7:$H$10000  встречаются слова......

Подскажите как енто объехать....
Яндекс.Метрика Рейтинг@Mail.ru