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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 527 След.
Объединение ячеек столбца в строку по условию с разделителем
 
Цитата
pps2703 написал:
чтобы не объяснять потом это папуасам
ну-ну. Т.е. читать про Power Query лень, сказать свою версию Excel лень, объяснять чего-то тоже. Интересный подход к решению задачи.
Для информации: про работу макросов тоже надо будет объяснять, если кто-то их не разрешит на своем ПК. С формулами - тоже. Ведь там свои нюансы.
С Power Query такого не надо делать, если версия Excel от 2016 и новее. Внедрили запрос, сказали - жмем Обновить. В чем проблема я лично плохо понимаю.

А какими средствами Вы видите решение вообще, чтобы ничего никому не объяснять? Это-то Вы можете нам сказать или мы тоже должны как всякие папуасы сами обо всем догадаться? :)
В общем во вложении файл - таблица с желтыми заголовками создана при помощи формул. Таблица специально продлена на строку больше - чтобы было видно поведение формулы, если значений будет меньше, чем строк в итоговой таблице.
Изменено: Дмитрий(The_Prist) Щербаков - 25.02.2026 15:16:43 (добавлен файл)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Объединение ячеек столбца в строку по условию с разделителем
 
Это и есть стандартный функционал Excel, если у Вас, конечно, не 2007 Excel или еще старее. Наберите хотя бы в поиске(яндекс, гугл и т.п.) - "Что такое Power Qwery" и изучите теорию. Пригодится.
Если не хотите использовать Power Qwery - то озвучивайте свою версию Excel. Т.к. если это 2007 - то процесс автоматизации упрется либо в не очень оптимальные формулы, либо в макросы. А макросы, возможно, тоже Вас не устроят в силу опять же не знания предмета. Ну а если макросы устроят - придется ждать того, кто напишет с нуля. И любое изменение в исходных данных может повлечь отказ работы макросы или получение в итоге неверного результата.
Изменено: Дмитрий(The_Prist) Щербаков - 25.02.2026 14:53:26
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Группировка строк в PQ, с выводом данных в одной ячейке построчно, Группировка строк в PQ, с выводом данных в одной ячейке построчно по типу Alt+ Enter (в Excel)
 
Код
= Table.TransformColumns(#"Добавлен пользовательский объект", {"по строчно", each Text.Combine(List.Transform(_, Text.From), "#(lf)"), type text})
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Сбивается путь к собственной функции (UDF) из надстройки
 
Попробуйте такой вариант: Сбивается путь к UDF из надстройки

P.S. При таком кол-ве сообщений можно было бы уже названия тем научиться четче формулировать :) Для модераторов: Сбивается путь к собственной функции из надстройки
Изменено: Дмитрий(The_Prist) Щербаков - 25.02.2026 13:39:53
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
[ Закрыто] Формулы сортировка и фильтр в экселе все работает сортирует, а в облачной таблице R7 при тех же данных, выводит на сортировку только первое значение, остальные не показывает.
 
Цитата
написал:
в экселе все работает
а почему тогда тема в ветке по Excel, если в нем все работает? :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
[ Закрыто] Вызов публичной процедуры модуля формы из другого проекта
 
В Test2.doc переходите в редактор VBE -Tools -References - делаете там ссылку на VB проект Test1.doc. Тогда его процедуры будут доступны из Test2.doc. Перед этим правильнее всего дать вменяемое имя VB проекту файла Test1.doc. Например VBProj_Doc1. Тогда сразу будет понятно, какие процедуры вызываете и откуда. Например, так:
Код
VBProj_Doc1.Msg
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
где в xml данных файла xlsx - находится указание цвета конкретных ячеек
 
Ну тут не все так просто. В схеме по пути "\xl\worksheets" берете нужный лист. Находите нужную ячейку(как не будут описывать - надеюсь разберетесь) и берете у неё значение атрибута "s". Это указание на стиль ячейки. А стиль этот записан в файле по пути "\xl\styles.xml". При этом номер из "s" это порядковый номер стиля "styleSheet\cellXfs"(узел "xf"). Каждый "xf" содержит числовые указатели на id стилей(заливка, шрифт, границы), которые он в свою очередь собирает из узлов этого же файла, расположенных чуть выше: "styleSheet\fills\", "styleSheet\fonts\", "styleSheet\borders\". Эти секции содержат указания на перечень уникальных стилей заливок, шрифтов, границ.
При этом надо помнить, что цвета в стилях указываются как посредством hex-кода цвета(fgColor rgb="FFFFFF00"), так и посредством указания на имя стиля из библиотеки офиса(вроде такого: patternType="gray125").
Ну и напоследок - это лишь вершина айсберга. если хотите через XML все тащить - то надо будет очень серьезно со всем этим сначала поразбираться. С наскоку точно не получится.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Не открывается файл, Ошибка при попытке открытия файла
 
Цитата
написал:
обнаружил, что размер файла равен нулю
при таком размере файла вероятность вернуть информацию именно из него равна примерно такому же значению, как он весит.
Ибо если бы была информация - она бы хоть что-то весило. Здесь либо поломка при сохранении, либо вирус.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос для удаления кода на определенную дату, удаления кода на определенную дату
 
Вячеслав сам обратился ко мне в личку. Пока на стадии "переписка" :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос для удаления кода на определенную дату, удаления кода на определенную дату
 
Решения-то есть, только...Вы в платной ветке вопрос разместили.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Может ли запуск PQ-скриптов из VBA увеличить их время выполнения против обычного запуска?, Теоретический вопрос
 
Цитата
написал:
зачем убирать отключение\возврат пересчета, обновления экрана и т.д. в процедуре проверки
Не знаю. В Вашем коде это изначально было - оставил там, где должно быть :)
Потому что именно в начале, перед RуfreshAll, у Вас все это и отключалось. Я эту логику и перенес в примере, но понятно, что чисто относительно, чтобы код по минимуму править. На мой взгляд, т.к. обновление всех запросов происходит в фоне - то смысла отключать эти события вообще нет - они на это не влияют.
Ну раз ничего не помогает - я бы посоветовал поиграться с OnTime, запуская процедуру проверки до тех пор, пока все запросы не будут проходить проверку. Т.е. условно, каждые 3-5 секунд проверяете, а переменную refreshing делаете на уровне модуля. Ну вот что-то вроде того:
Код
Option Explicit

Dim wb As Workbook
Dim IsRefreshing As Boolean
Dim tRefreshTime

Private Sub Main_UpdateAllData_WaitPQ()
    Dim calcMode As XlCalculation

    Set wb = ThisWorkbook
'    Application.ScreenUpdating = False
'    calcMode = Application.Calculation
'    Application.Calculation = xlCalculationManual
'    Application.DisplayAlerts = False

    wb.RefreshAll
    Application.OnTime Now + TimeSerial(0, 0, 0), "'" & ThisWorkbook.Name & "'!UpdateAllData_WaitPQ"

'    Application.Calculation = calcMode
'    Application.ScreenUpdating = True
'    Application.DisplayAlerts = True
End Sub

Private Sub UpdateAllData_WaitPQ()
Dim qt As QueryTable
Dim ws As Worksheet
Dim lo As ListObject
Dim pt As PivotTable

Dim toolong As Boolean
Dim t As Date


    t = Now

    On Error GoTo fin

'    Do
        If Now - t > TimeSerial(0, 0, 30) Then
            If MsgBox("Для обновления необходимо еще какое-то время. Продолжить?", vbQuestion + vbYesNo) = vbNo Then
'                toolong = True
                Exit Sub
            Else
                t = Now
            End If
        End If

        IsRefreshing = False

        For Each ws In wb.Worksheets
            For Each lo In ws.ListObjects
                Set qt = getLoQueryTable(lo)
                If Not qt Is Nothing Then
                    IsRefreshing = qt.refreshing
                    Debug.Print qt.Connection & " " & IsRefreshing
                    If IsRefreshing Then Exit For
                End If
                DoEvents
            Next lo
            If IsRefreshing Then Exit For
        Next ws

'    Loop Until Not IsRefreshing Or toolong

    If IsRefreshing Then
'        Err.Raise vbObjectError + 513, , "Обновление не завершено!"
        'запросы не обновились - даем еще время, при этом Excel будет запросы обрабатывать
        DoEvents
        tRefreshTime = Now + TimeSerial(0, 0, 5)
        Application.OnTime tRefreshTime, "'" & ThisWorkbook.Name & "'!UpdateAllData_WaitPQ"
        
    Else
        On Error Resume Next
        Application.OnTime tRefreshTime, "'" & ThisWorkbook.Name & "'!UpdateAllData_WaitPQ", 0, False
        On Error GoTo 0
        If Not wb.Model Is Nothing Then
            wb.Model.Refresh
        End If
    
        For Each ws In wb.Worksheets
            For Each pt In ws.PivotTables
                pt.PivotCache.Refresh
                pt.RefreshTable
            Next pt
        Next ws
    
        MsgBox "Обновление завершено!", vbInformation
    End If

fin:
    If Err.Number <> 0 Then MsgBox "Внимание: " & Err.Description, vbCritical
End Sub

Private Function getLoQueryTable(lo As ListObject) As QueryTable
On Error Resume Next
    Set getLoQueryTable = lo.QueryTable
On Error GoTo 0
End Function
если что сами там допилите где надо - у меня сейчас под рукой нет долгоиграющих запросов на тесты.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Может ли запуск PQ-скриптов из VBA увеличить их время выполнения против обычного запуска?, Теоретический вопрос
 
Как и говорил - в случае с QueryTable все не так однозначно - у них есть нюансы. Попробуйте выполнить так:
Код
Option Explicit

Dim wb As Workbook
Private Sub Main_UpdateAllData_WaitPQ()
    Dim calcMode As XlCalculation
    
    Set wb = ThisWorkbook
    Application.ScreenUpdating = False
    calcMode = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.DisplayAlerts = False
    
    wb.RefreshAll
    Application.OnTime Now + TimeSerial(0, 0, 1), "'" & ThisWorkbook.Name & "'!UpdateAllData_WaitPQ"
    
    Application.Calculation = calcMode
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Private Sub UpdateAllData_WaitPQ()
Dim qt As QueryTable
Dim ws As Worksheet
Dim lo As ListObject
Dim pt As PivotTable
Dim refreshing As Boolean

Dim toolong As Boolean
Dim t As Date
 
    
    t = Now
     
    On Error GoTo fin

    Do
        If Now - t > TimeSerial(0, 0, 30) Then
            If MsgBox("Для обновления необходимо еще какое-то время. Продолжить?", vbQuestion + vbYesNo) = vbNo Then
                toolong = True
            Else
                t = Now
            End If
        End If
         
        refreshing = False
         
        For Each ws In wb.Worksheets
            For Each lo In ws.ListObjects
                Set qt = getLoQueryTable(lo)
                If Not qt Is Nothing Then
                    refreshing = qt.refreshing
                    Debug.Print qt.Connection & " " & refreshing
                    If refreshing Then Exit For
                End If
                DoEvents
            Next lo
            If refreshing Then Exit For
        Next ws
         
    Loop Until Not refreshing Or toolong
     
    If refreshing Then Err.Raise vbObjectError + 513, , "Обновление не завершено!"
    If Not wb.Model Is Nothing Then
        wb.Model.Refresh
    End If
     
    For Each ws In wb.Worksheets
        For Each pt In ws.PivotTables
            pt.PivotCache.Refresh
            pt.RefreshTable
        Next pt
    Next ws
     
    MsgBox "Обновление завершено!", vbInformation
     
fin:
    
     
    If Err.Number <> 0 Then MsgBox "Внимание: " & Err.Description, vbCritical
     
End Sub
 
Private Function getLoQueryTable(lo As ListObject) As QueryTable
On Error Resume Next
    Set getLoQueryTable = lo.QueryTable
On Error GoTo 0
End Function
Т.е. разделить RefreshAll и проверку запросов. При этом для OnTime выставлена задержка выполнения в 1 секунду - можно не менять, даже если запросы выполняются по минуте. Это просто финт такой.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Может ли запуск PQ-скриптов из VBA увеличить их время выполнения против обычного запуска?, Теоретический вопрос
 
Цитата
dhead написал:
но вручную все обновляется, как надо
так может имеет смысл где-то в этом направлении пошуршать?
Как дождаться обновления выполнения запроса
Как обновить запросы Power Query(и не только) в указанном порядке?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Может ли запуск PQ-скриптов из VBA увеличить их время выполнения против обычного запуска?, Теоретический вопрос
 
Цитата
dhead написал:
Не понял наезда..)
это не наезд, а пояснение причины потери интереса к теме. Все просто - в теме обсуждаются запросы, которые перебираются путем обращения к ThisWorkbook.Connections. И конкретный код под это. У Вас же идет перебор умных таблиц и проверка запросов каждой таблицы. А это разные вещи, о которых Вы сообщаете только после нескольких сообщений обсуждения.
QueryTable это хоть и запрос, но со своей спецификой. И гадать без файла здесь бессмысленно.
Для начала я бы рекомендовал назвать переменную не refreshing, а хотя бы IsRefreshing - чтобы не дублировать имя свойства. Это моветон в программировании и к тому же может как раз всякие глюки вызывать.
Убрать любые обработчики ошибок.
Далее определить: глюк проявляется на всех запросах или на одном конкретном. Если на всех - вполне вероятно, что это ошибка уже самого VBA(точнее Microsoft или совокупности обстоятельств).
Так же имеет смысл опробовал выполнить код полностью в режиме отладки с просмотром всех свойств и параметров запросов и их значений для поиска отличий. Особенно, если проблема не на всех запросах проявляется.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Может ли запуск PQ-скриптов из VBA увеличить их время выполнения против обычного запуска?, Теоретический вопрос
 
Цитата
dhead написал:
это QueryTable
Интерес к теме стремительно теряется: обсуждается всю тему один код с одними объектами, а Вы совершенно иной объект используете.
Файл прикладывайте, тогда можно будет о чем-то говорить. Иначе лично я устраняюсь. Нет желания сидеть и гадать о причинах по голому коду, когда там что-нибудь в самих запросах может нарисоваться. Вдруг еще о чем-то забыли нам рассказать - времени на все эти вытягивания информации жаль.

P.S. Вот это убрать не пробовали: wb.Model.Refresh? Зачем обновлять модель принудительно, когда она при необходимости будет обновлена через RefreshAll?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
[ Закрыто] Проверить макрос, исправит расчеты
 
Т.е. думаете, что чисто по коду можно понять - а правильно там написаны расчеты или нет, притом даже не зная, что именно должно рассчитываться и по каким критериям?
Ну, может кто и поймет без файла и без пояснений, чего хотите и сразу скажет что там не так.

P.S. Коды можно оформлять тегами - при создании сообщения это кнопочка <...>. Коды сразу начинают выглядеть аккуратно и читабельно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Установить максимальные значения осей всех диаграмм на листе равными максимальному значению первой диаграммы
 
Можно добавить заголовки месяцев и объединить ячейки - тогда визуально будет разделения хотя бы в части подписей.
Далее можно добавить еще один ряд и отформатировать так, чтобы было визуальное разделение начала месяца. Здесь уже Вам карты в руки - я сделал простое наложение серых рядов. Но можно сделать и линии проекции и цвета другие и много чего еще.
Изменено: Дмитрий(The_Prist) Щербаков - 18.02.2026 13:44:21
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Может ли запуск PQ-скриптов из VBA увеличить их время выполнения против обычного запуска?, Теоретический вопрос
 
Цитата
dhead написал:
код другой
ну вот его и надо выкладывать, а не какой-то его отдельный кусок.
Строить догадки по кускам кода не вижу смысла - потому что неизвестно вообще имеет он отношение к проблеме или нет.
Судя по тому, что вижу - мои замечания и приведенные выше коды Вы решили не изучать вовсе. Поясню:
qt - явно объект WorkbookConnection. А у него - читай выше, есть refreshing или нет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Может ли запуск PQ-скриптов из VBA увеличить их время выполнения против обычного запуска?, Теоретический вопрос
 
Для начала уберите On Error Resume Next и убедитесь, что нет ошибок.
Вполне возможно, что проходя циклом получаете ошибку и allDone всегда будет False.
Судя по коду - здесь всегда будет ошибка, т.к. у объекта WorkbookConnection нет свойства Refreshing. Как минимум должно быть так:
Код
Err.Clear
If conn.OLEDBConnection.Refreshing Then
    If Err.Number Then 'это чтобы хоть видеть есть ошибки или нет
        Debug.Print Err.Description
    End If
    allDone = False
    Exit For
End If

а еще правильнее убрать проверку на xlConnectionTypeModel, т.к. у этого типа нет свойства Refreshing вовсе. Зато могут быть запросы ODBCConnection. В итоге - попробуйте так:
Код
Sub RefreshAllAndWait()
    ' Запускаем обновление всех запросов Power Query
    ThisWorkbook.RefreshAll
    ' Ждем завершения обновления
    Dim conn As WorkbookConnection
    Dim allDone As Boolean
    Do
        DoEvents ' Позволяет Excel обновить интерфейс
        allDone = True
        For Each conn In ActiveWorkbook.Connections
            On Error Resume Next ' Игнорируем ошибки, если свойство Refreshing недоступно
            Err.Clear
            Select Case conn.Type
            Case xlConnectionTypeODBC
                If conn.ODBCConnection.Refreshing Then
                    allDone = False
                End If
            Case xlConnectionTypeOLEDB
                If conn.OLEDBConnection.Refreshing Then
                    allDone = False
                End If
            End Select
            If allDone = False Then
                Exit For
            End If
            On Error GoTo 0
        Next conn
    Loop Until allDone
    MsgBox "Все запросы Power Query успешно обновлены!", vbInformation
End Sub



P.S.
Цитата
dhead написал:
почему в RefreshAllAndWait обновляются запросы по очереди?
возможно я в тот раз просто неверно код прочитал - форматирование было никакое :) А может быть там и код был несколько иной - исходное сообщение изменяли уже после моего ответа.
Изменено: Дмитрий(The_Prist) Щербаков - 18.02.2026 12:34:03
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Задача о рюкзаке в квадрате или нет
 
Цитата
brave написал:
Как из 1000 билетов выбрать 5-ть, максимизируя шансы на победу
никак. Это вообще не задача. ЛОТО не подвергается хоть какой-то логике при выборе бочонков. Это все равно, что пытаться математическим путем определить сколько раз выпадет решка, если подбросить монету 50 раз.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
метод "align" для объекта "button" в схеме ribbon xml
 
Цитата
grigju написал:
прямого метода "align" нет в ribbon xml
ну как нет...Он есть. Но есть он только для контейнера layoutContainer, который может быть использовать только в Backstage.
По крайней мере на данный момент. Выравнивание как на первом Вашем скрине при помощи align невозможно. Но есть вот это:
Код
<group id="gr" label="Test" centerVertically="true">
   <button id="test1" label="center1" />
   <button id="test2" label="center2"/>
</group>

делает ровно то, что Вам надо.
Обращаю особое внимание: внутри groupe не должно быть других контейнеров(типа box и т.п.) - с ними выравнивание не сработает.
Изменено: Дмитрий(The_Prist) Щербаков - 17.02.2026 14:09:17
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Ошибка при отработке скрипта vba, Автоматизация обновления данных звпроса
 
Цитата
DJ_URAN написал:
в самой книге нужно при этом менять отображение
нет
Цитата
DJ_URAN написал:
имеете в виду нижнее подчеркивание?
нет. Возможно запрос на самом деле называется иначе. Попробуйте вывести список имен всех запросов кодом из этой статьи: Вывести список имен имен всех подключений на лист
и посмотреть название. Оптимально - скопировать имя запроса из полученного списка и использовать в коде.
Изменено: Дмитрий(The_Prist) Щербаков - 12.02.2026 14:40:03
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Ошибка сохранения в PDF
 
И Вы реально считаете, что по одному голому коду кто-то сразу на ошибку укажет? Вы же даже текст ошибки не приложили, не говоря уже о файле: что там откуда считывается, есть ли листы, перечисленные в А4 и прочее. Судя по скрину - в файле должно быть не менее 41 листа. Иначе в какой-то момент будет ошибка обращения к несуществующему листу.
Изменено: Дмитрий(The_Prist) Щербаков - 11.02.2026 10:47:34
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Не работают формулы в файле эксель (пустые ячейки), На одном компьютере работает, а на другом нет.
 
Цитата
sokol3346 написал:
В Чём может быть проблемма?
ЕСЛИМН - поддерживается начиная с Excel 2019. Если на ПК версия ниже - получите пустую ячейку, т.к. сработает функция ЕСЛИОШИБКА
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Виртуальный диапазон из отдельных ячеек
 
Цитата
ЭксЭль написал:
я про виртуальный диапазон
да где Вы такие понятия-то берете? Виртуальный лист, виртуальный диапазон...Можете ссылку на источник кинуть, чтобы хоть знать героев в лицо, которые такое распространяют :)
Цитата
ЭксЭль написал:
Есть же в серьёзных ЯП понятие темповых объектов,
можно поподробнее? Что они из себя представляют по Вашему? Temp - временный. И по сути все объекты временные - живут до тех пор, пока программа или процедура в них нуждается.

И не знаю, сколько раз ещё надо повторить, чтобы Вы уже окончательно поняли: в случае с БДСУММ Вы ничего не сделаете из желаемого, потому что она просто не может принимать никакой иной аргумент, кроме непрерывного диапазона ячеек. Понятия виртуального диапазона ячеек в Excel в принципе нет и никак Вы его не создадите. Я же Выше написал Вам уже - на уровне реализации кодом самой этой функции просто не заложена возможность работать ни с чем, кроме реального диапазона ячеек.

Если уж заговорили про серьезные ЯП - так создайте тогда свою БДСУММ, которая будет принимать массивы. Других вариантов нет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Виртуальный диапазон из отдельных ячеек
 
Цитата
ЭксЭль написал:
Excel создает на основе объекта Range виртуальный лист со своей собственной нумерацией
бред. Это вовсе не так. Если прям по простому: Excel создает в памяти ОС ссылку на заданный диапазон. Т.е. это даже не кусок листа из заданных ячеек - это ссылка на этот кусок.
При таком присвоении:
Код
Set oRange1 = Worksheets("Лист1").Range("C1")

мы просто делаем ссылку на ячейку С1 для быстрого доступа. Никаких виртуальных массивов не создается. Это легко проверить: удаляете столбец С и Ваша oRange1 будет недоступна, т.к. исходная ячейка, на которую ведет ссылка памяти из oRange1 - удалена.

То, что Вы называете "виртуальным массивом" в VBA очень даже осязаемый массив - эти переменные так и называются. Одна беда БДСУММ - не работает с массивами в любом виде. Я выше написал - только ссылки на ячейки. Потому что так уж заложено в её реализацию. Есть формулы, которые могут в качестве аргументов принимать исключительно ссылки на диапазоны ячеек, никаких массивов. И никак это не обойти, т.к. это приведет к ошибке типов внутри выполнения функции(в том коде, который её реализует уже на недоступном для пользователя уровне).
Изменено: Дмитрий(The_Prist) Щербаков - 09.02.2026 20:58:32
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Помесячные деления на графике
 
В Вашем случае прям вот как на скрине из первого поста вряд ли получится. Сходу точно не придумалось простого решения. Это можно сделать при помощи доп.столбца с формулой, данные которого в диаграмме надо вынести на вспомогательную ось и добавить линии проекций для этого ряда. Но там визуально будет проблема - линии проекций пересекают значение по центру, а не по линиям сетки. Т.е. будет некоторое смещение.
В общем на скрине все видно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Помесячные деления на графике
 
Судя по скринам - Вам необходимо в таблицу для каждой даты добавить номера недель, ячейки с месяцами объединить. И в конструкторе диаграмм добавить линии сетки, настроив для них шаг.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Проверка наличия заголовка в умной таблице
 
Я бы все же советовал делать как-то так:
Код
    Dim rr As Range
    Set rr = Range(ThisWorkbook.Sheets(sheetNew).ListObjects(1).Name & "[verifyFull]")
    If Not rr Is Nothing Then
        MsgBox "Yes"
    Else
        MsgBox "No!"
    End If

Почему? Потому что у умных таблиц есть такое свойство для заголовков, как Visible. Т.е. заголовок можно скрыть. И тогда ни через CountIf, ни через Find Вы этот заголовок не найдете. Однако как "именованный диапазон" он будет существовать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Совместить два графика на основании двух сводных + к каждому графику свой срез
 
Я бы на Вашем месте добавил в исходные данные новый столбец с формулой, определяющей дату. И все это добро закинул в сводную - там сразу сгруппируется все по годам, кварталам, месяцам. А их уже в столбцы и анализируйте.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 527 След.
Наверх