В exel 2016 появились новые типы диаграмм( Солнечные лучи ... Ящик с усами ... Диаграмма Парето ... Частотная гистограмма) Подскажите возможно ли эти диаграммы построить с помощью VBA? В списке с типами диаграмм я нашел только диаграммы от 1997 года хотелось бы создать диаграмму солнечные лучи программно, но вот даже хз как это сделать. https://bettersolutions.com/excel/charts/vba-chart-types.htm
Есть файл с таблицей, которую нужно отсортировать по датам от максимальной к минимальной и код VBA Но строка Sh2.ListObjects("Tablica11").Sort.SortFields.Add Key... выдает ошибку. Method Range of Object Global failed подскажите в чем может быть проблема файл для примера во вложении.
Код
Sub Макрос7()
wb2 = ActiveWorkbook.Name
Set Sh2 = Workbooks(wb2).Sheets(1)
bbb = Sh2.Name
With Sh2
LastRow2 = .Cells(Rows.Count, 1).End(xlUp).Row 'последняя строка таблицы
LastCollumn2 = .Cells(1, Columns.Count).End(xlToLeft).Column ' последний столбец таблицы
.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(LastRow2, LastCollumn2)), , xlYes).Name = "Tablica11"
End With
Sh2.Activate
Sh2.ListObjects("Tablica11").Sort.SortFields.Clear
Sh2.ListObjects("Tablica11").Sort.SortFields.Add Key:=Range("Tablica11[[#All],[Дата операции]]"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With Sh2.ListObjects("Tablica11").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Файл с рабочей единой формулой для всех ячеек во вложении. Хотя использовать такое количество вложений, конечно, форменный мазохизм) суммы заменены на универсальную формулу АГРЕГАТ(9;7;D2;E2) Еще в ячейках с числами должен быть именно числовой формат, т.к. часть "цифр" были с проб ела ми т.е фактически текстом, поэтому их формулы не считали и при замене на нормальный формат отскочили в левый край ячейки, выдав себя.
Jykermann написал: Если Вы хотите получить числовое значение, то столбцы D и Е должны содержать суммы, а не "Нет". В противном случае формула проставляет "Нет".
Не обязательно. В формулах можно заменить D3+E3 на АГРЕГАТ(9;6;D3:E3). Она хавает все что можно суммировать пропуская мусор.
даже если изменить переменную, код всё равно не заработает
Код
Sub SORT()
Dim r As Range, wb1 As String, Sh1 As Worksheet
wb1 = ActiveWorkbook.Name
Set Sh1 = Workbooks(wb1).Sheets(1)
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastcollumn = Cells(1, Columns.Count).End(xlToLeft).ColumnCells.AutoFilter
With Sh1
Set r = .Range(Cells(1, 1), Cells(LastRow, lastcolumn))
With .SORT
.SortFields.Clear
.SortFields.Add Key:=Range("O1:O" & LastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange r
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
А какие названия осей? Как вариант, через VBA циклом от начала графика к концу, если сумма нескольких данных через равный промежуток отличается от суммы предыдущих значений на определенную константу(0,02 или 0,017 и тд) то данные после определенного значения удаляются. Конкретную формулу можно будет сделать только при наличии каких либо данных
Пробую первый раз сделать сортировку по столбцу, но VBA выдает ошибку Run Time error 1004. Недопустимая ссылка для сортировки. Просьба подсказать где ошибка в коде. Я хочу сделать так что бы таблица сортировалась по 15 столбцу O, по возрастанию, при этом формулы в столбце P не должны сбиваться.
Код
Sub SORT()
Dim r As Range, wb1 As String, Sh1 As Worksheet
wb1 = ActiveWorkbook.Name
Set Sh1 = Workbooks(wb1).Sheets(1)
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastcolumn = 13
Cells.AutoFilter
With Sh1
Set r = .Range(Cells(1, 1), Cells(LastRow, lastcolumn))
With .SORT
.SortFields.Clear
.SortFields.Add Key:=Range("O1:O" & LastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange r
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
alextlt написал: Я единственное не понял, как тогда он определяет, что надо пройтись по листам, а не ячейкам, или чему-нибудь еще...?Код ? 1for wsN = 1 to 16
Там два цикла, первый: for WorksheetsN =1 to 16 next worksheesN и внутри него Select Case Range("V7").Value макрос сначала выбирает лист потом меняет ячейки, потом выбирает следующий лист снова меняет и так до 16го листа
Подскажите как в vba с помощью функции ВПР или Vlookup искать значения не на каком то конкретном листе, а на последнем. Что ни напишу постоянно ошибка возникает.
Подскажите пожалуйста, как в столбец J вставить формулу из столбца L без ссылки на столбец M. То есть я хочу что бы в одном столбце считалось итоговое место без промежуточных вычислений) А как это сделать не пойму Возможно там нужна формула массива, но у меня почему-то возникает ошибка.
Подскажите как транспонировать вертикальную таблицу, с постоянно повторяющимися "шапками" в нормальную. Как во вложении Думаю проще всего сделать это через VBA но не могу придумать легкий макрос, который бы не положил слабый комп на пару часов, т.к. в изначальной таблице несколько десятков тысяч записей) Макрос грубо говоря должен на новом листе или просто рядом с изначальным списком создать нормальную таблицу.
RAN еще вопрос, а если нужных мне значений много. Как задать все города начинающиеся на "М" и "Т" или заканчивающиеся на "А" поменял таким образом, появился рантайм 1004 Нельзя установить свойство Visible класса PivotItem
Код
Sub Макрос123()
For Each PivotFields In ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("город").PivotItems
Select Case PivotFields.Name
Case "Т*", "М*"
Case Else
PivotFields.Visible = False
End Select
Next
End Sub
Как заставить макрос выбирать конкретные позиции в фильтре сводной таблицы? Пробую записать макрорекодером но он не выбирает конкретные позиции а скрывает ненужные. Пример:
Код
With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("город")
.PivotItems("Тула").Visible = False
.PivotItems("(blank)").Visible = False
End With
Проблема в том, что у меня выгружается всегда разное количество данных, иногда много лишних, иногда лишних почти нет. То есть если выгрузятся лишние, то они не будут скрыты макросом. А если те позиции которые прописаны в коде не выгрузятся, то будет рантайм. прикрепил файл примера если кому-то нужен)
Ребят, в Access я совсем не разбираюсь, но срочно нужно решить вопрос. Есть текстовая выгрузка в которой больше миллиона строк и куча лишних данных, соответственно напрямую в Excel импортировать данные не получится, excel обрезает данные. Но в access насколько я понимаю такого ограничения нет. Я импортирую данные в access делаю фильтр по нужным мне строкам, пробую экспортировать результат в excel, но возникает ошибка: "одновременно выделено больше записей чем допускается копировать в буфер обмена разделите записи на две или несколько групп, а затем скопируйте группы поочередно... и что-то про 65 000". Версия офиса 2010. каким образом можно сделать экспорт только отфильтрованных данных в эксель если строчек там например где-то в районе 400 000.
Sanja пишет: У меня Ваш макрос отработал без проблем. Может дело в исходных данных? Покажите Ваш файл
В 2013 версии у меня тоже все прекрасно работает. Если бы дело было в исходных данных возникала бы совершенно другая ошибка, связанная именно с ошибкой данных вроде run time 1027 или 1024. А тут (в Exce2010) ошибка типа данных. Как она может возникать я хз
Помогите найти ошибку в коде, скоро мозг взорвется вроде все делаю правильно, но при попытке создания сводной в VBA возникает рантайм '13': Type mismatch версия еxcel 2010.
Код
Sub aaa()
Dim PTdat As Range, x As Long, y As Byte
With Sheets("Лист1").Range("a1").CurrentRegion
x = .Rows.Count
y = .Columns.Count
End With
Set PTdat = Sheets("Лист1").Cells(1, 1).Resize(x, y)
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PTdat, _
Version:=xlPivotTableVersion14).CreatePivotTable tabledestination:=Cells(3, 1), Defaultversion:=xlPivotTableVersion14
End Sub
еще пробовал в источнике данных для сводной указать путь на прямую на массив данных но результат тот же
Помогите написать функцию или макрос, который бы менял данные в столбце, не выходя за область таблицы в зависимости от того равны ли между собой другие ячейки. Понимаю что описание корявое, но голова под вечер плохо соображает. Еще понимаю, что там простой цикл нужен, но я с ними пока еще совсем не умею работать. Пример в приложении