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

Страницы: 1 2 3 4 5 6 7 След.
PowerPivot_Значения по двум срезам
 
Здравствуйте.
Если правильно поняла задачу, то ИИ предложил следующую формулу для меры Выручка_нач:
Код
=CALCULATE(
    SUM('Выгрузка'[Выручка]);
    USERELATIONSHIP('Выгрузка'[Дата_нач]; 'Календарь'[Дата]);
    FILTER(
        'Выгрузка';
        'Выгрузка'[Дата_нач] >= MIN('Выгрузка'[Дата_нач]) &&
        'Выгрузка'[Дата_нач] <= MAX('Выгрузка'[Дата_кон])
    )
)
Файл с поправленной мерой прилагаю.
Создать автоматический календарь командировок
 
Здравствуйте.
Как вариант, можно сделать так, как здесь описывает Николай Павлов, создатель этого сайте: Сводная таблица с текстом в значениях
Далее, если почитать комментарии, то предлагают решить через Power Pivot:
Код
1) добавляем таблицу в модель денных
2) делаем сводную
3 ) создаем меру в которую записываем следующую  формулу на dax :
=CONCATENATEX(Values(Table[Column]), Table[Column], ", ")
где table - название  сводной, column название столбца  откуда нужно вывести текст в область значений
4) добавляем меру в область значений.

В вашем случае, данные всё равно надо сначала через Power Query пропустить, по хорошему, а раз так, то уж и через Power Query отчёт выводить, как по мне.

Файл с примером прилагаю, но там не совсем тот вид, что нужен в идеале: не заполняются фамилии в месяцах между туда и обратно.

Изменено: turbidgirl - 08.11.2024 19:55:24
Query Отбор данных по условиям, Отбор данных по сложным условиям с учетом различных полей
 
Здравствуйте.
Пример решения задачи через Power Query прилагаю.
Код не оптимален, и, честно, есть сомнения, что корректно сработает на реальных больших данных.
С куском примера, что указан в задаче - код сработал правильно.
Возможно, специ по query подтянутся и сделают более оптимальный код.
PBI. Вопрос по сводным таблицам, используя аналог CASE WHEN
 
Здравствуйте.
Раз у вас Power BI, то что вам мешает сделать преобразование таблицы сначала в Power Query, а потом её выгрузить в нужный отчёт.
Пример вывода таблицы нужного вида прилагаю.
Сам код кустарный, скорее всего спецы здесь могут сделать короче и изящнее, но результат даёт тот, что вы указали.
Правда, что-то мне подсказывает, что на реальных больших данных будет какой-то "косяк"...
Изменено: turbidgirl - 29.10.2024 08:24:42
Перенос формул из таблицы в таблицу
 
ДРЕВНИЙ ПОСТ!!!
Как вариант можно создать промежуточный столбец, в котором будет выводится текст нужной формулы по следующей формуле:
Код
=ЕСЛИ(ЕОШИБКА(ПРАВСИМВ(Ф.ТЕКСТ(ДВССЫЛ("Лист1!E"&ПОИСКПОЗ(B2;Лист1!$B$2:$B$11;0)+1)) & "";ДЛСТР(Ф.ТЕКСТ(ДВССЫЛ("Лист1!E"&ПОИСКПОЗ(B2;Лист1!$B$2:$B$11;0)+1)) & "")-НАЙТИ("/";Ф.ТЕКСТ(ДВССЫЛ("Лист1!E"&ПОИСКПОЗ(B2;Лист1!$B$2:$B$11;0)+1)) & "")+1));"'="&ЯЧЕЙКА("адрес";D2);"'="&ЯЧЕЙКА("адрес";D2)&ПРАВСИМВ(Ф.ТЕКСТ(ДВССЫЛ("Лист1!E"&ПОИСКПОЗ(B2;Лист1!$B$2:$B$11;0)+1)) & "";ДЛСТР(Ф.ТЕКСТ(ДВССЫЛ("Лист1!E"&ПОИСКПОЗ(B2;Лист1!$B$2:$B$11;0)+1)) & "")-НАЙТИ("/";Ф.ТЕКСТ(ДВССЫЛ("Лист1!E"&ПОИСКПОЗ(B2;Лист1!$B$2:$B$11;0)+1)) & "")+1))
Далее, выделить этот столбец с полученными формулами, скопировать и вставить в нужный столбец с ценой только значения. Потом, нажать Найти и Заменить, заменить '= на = и формулы станут активными и покажут результат вычисления.
Этот способ сработает, если у вас Эксель версии 2013 и выше, т.к. в ранних версиях нет функции Ф.ТЕКСТ.
Файл прилагаю.
DAX формула суммы
 
ДРЕВНИЙ ПОСТ!!!
Чат с ИИ выдал такую меру:
Код
=CALCULATE(
    SUM('Таблица1'[Сумма]);
    FILTER(
        ALL('Таблица1');  // Игнорируем все фильтры на таблице
        'Таблица1'[Элемент3] = "Расход" &&
        'Таблица1'[Элемент1] IN VALUES('Таблица1'[Элемент2])  // Учитываем текущее значение Элемента 1
    )
)
Файл прилагаю.
Изменено: turbidgirl - 23.10.2024 16:07:47
Двухуровневая фильтрация с учетом фильтра
 
Добила таки ИИ на нормальный рабочий код пользовательской функции:
Код
Function CustomFunction(S18 As String, T18 As Range, U17 As String, Optional Reset As Boolean = False) As Variant
    Static LastValue As Double ' Храним последнее значение
    Dim TRange As Range
    Dim SRange As Range
    Dim U17Converted As Double
    Dim Result As Double
    
    ' Обнуляем LastValue, если Reset = True
    If Reset Then
        LastValue = 0
    End If

    ' Определяем динамические диапазоны на основе строки T18
    Set TRange = Range("$T$18:T" & T18.Row)
    Set SRange = Range("$S$18:S" & T18.Row)
    
    ' Пытаемся преобразовать U17 с использованием указанной формулы
    On Error Resume Next
    U17Converted = CDbl(Left(U17, Len(U17) - InStrRev(U17, ".")) & "." & (Right(U17, Len(U17) - InStrRev(U17, ".")) / 100))
    If Err.Number <> 0 Then
        U17Converted = CDbl(U17) ' Если ошибка, просто преобразуем U17 напрямую
        Err.Clear
    End If
    On Error GoTo 0 ' Сбрасываем обработку ошибок

    If S18 = "заголовок" Then
        Result = Application.WorksheetFunction.CountIfs(TRange, T18, SRange, "заголовок")
    Else
        Result = U17Converted + 0.01
    End If
    
    ' Проверяем, является ли Result целым числом или десятичным
    If IsNumeric(Result) Then
        If Result = Int(Result) Then
            CustomFunction = Result ' Если целое, возвращаем как есть
            LastValue = Result ' Обновляем последнее значение
        Else
            ' Если десятичное, применяем указанную формулу
            Dim ResultString As String
            ResultString = CStr(Result)
            Dim DecimalPosition As Integer
            DecimalPosition = InStr(ResultString, ",")

            ' Заменяем запятую на точку для десятичного разделителя
            If DecimalPosition > 0 Then
                ResultString = Replace(ResultString, ",", ".")
            End If
            
            CustomFunction = ResultString
        End If
    Else
        CustomFunction = CVErr(xlErrValue) ' Возвращаем ошибку, если Result не числовой
    End If
    
    ' Увеличиваем значение для следующей строки
    If S18 <> "заголовок" Then
        LastValue = LastValue + 0.1
        CustomFunction = Round(LastValue, 1) ' Округляем до одного знака после запятой
        ' Заменяем запятую на точку
        CustomFunction = Replace(CStr(CustomFunction), ",", ".")
    End If
End Function
Файл прилагаю.
Если вдруг будет выводить не то, просто несколько раз сделайте пересчёт формул. Так и не поняла, как устранить этот баг.
Тему бы лучше поменять на Иерархическая нумерация строк.
Изменено: turbidgirl - 18.10.2024 17:29:56
Двухуровневая фильтрация с учетом фильтра
 
Здравствуйте.
Если нет ограничения по добавлению дополнительных столбцов, то я бы эту задачу решила так:
1. сделала промежуточный столбец и посчитала бы нумерацию по следующей формуле:
Код
=ЕСЛИ(S18="заголовок";ЕСЛИ(S18="заголовок";СЧЁТЕСЛИМН($T$18:T18;T18;$S$18:S18;"заголовок");0);U17+0,01)
2. потом сделала бы столбец результат и вставила туда следующую формулу:
Код
=ЕСЛИ(S18="заголовок";U18;ЛЕВСИМВ(U18;ДЛСТР(U18)-НАЙТИ(",";ТЕКСТ(U18;"0,00"))-1)&"."&--(ПРАВСИМВ(U18;ДЛСТР(U18)-НАЙТИ(",";ТЕКСТ(U18;"0,00")))))
Не нужные столбцы потом бы просто скрыла, и без макросов обошлось, но решение не оптимально, конечно.
Конфликт между таблицами, связь между таблицами не работает
 
Прогоните, тогда, таблицу Lead через Power Query: загрузите, поменяйте формат с датывремя на дату, выгрузите в модель данных (в Power Pivot), и с ней связь делайте. Таблица исходная останется целой, без доп.столбцов, а формат на выходе будет тот, что нужен для связки.
Изменено: turbidgirl - 16.10.2024 23:15:34
Конфликт между таблицами, связь между таблицами не работает
 
Да, не увидела этот столбец с Датой, извиняюсь.
Не получится связать два столбца с разными форматами данных - не подтянутся данные корректно.
  1. Создание связи: При создании связи между таблицами Power Pivot, важно, чтобы столбцы, по которым вы связываете таблицы, имели совместимые форматы.
Надо создавать отдельный столбец - по другому никак.
Код
=ДАТАЗНАЧ(ТЕКСТ([@[Дата создания]];"ДД.ММ.ГГГГ"))
Создайте в таблице Lead новый столбец, введите туда формулу выше и по нему делайте привязку. Так корректно всё отображается в сводной.
Изменено: turbidgirl - 16.10.2024 20:51:59
Формула DAX для расчета YTD
 
Как вы здесь формулируете запрос, так и его в чате формулируете. Если не выдаёт нужный результат, пишу код ошибки или описываю, что не так. Это как общение в любом чате: иногда результат получаешь быстро, а иногда долго и нудно ведешь переписку...
Изменено: turbidgirl - 16.10.2024 17:01:37
Конфликт между таблицами, связь между таблицами не работает
 
Здравствуйте.
У вас дата создания везде стоит 15.10.2024, а в таблице календарь у вас даже нет такой даты.
Так понимаю, связь вы дела по столбцам Начало недели и Дата создания. У вас разные форматы. Плюс связь много к много, а надо, чтобы хотя бы в одной таблице данные были все уникальные. Не удивлена, что у вас не получается нужный результат.
Как вариант, надо создать таблицу с уникальными датами, связать эту таблицу с Датам создания и выводить их в сводной.
Возможно, я не правильно поняла суть задачи...
Формула DAX для расчета YTD
 
В Power Pivot сделала столбец НарастИтог:
Код
= 
CALCULATE(
    SUM(Table1[Value]);
    FILTER(
        ALL(Table1);
        Table1[Account] = EARLIER(Table1[Account]) &&
        Table1[Month] <= EARLIER(Table1[Month])
    )
)
Далее уже в самой сводной таблице меру поставила такую:
Код
=IF(
    MAX('Table1'[Account]) = "y300";
    SUM('Table1'[Value]);
    SUM('Table1'[НарастИтог])
)
Файл прилагаю.
Все формулы получены мною из чата с ИИ, он писал их, не я.
Формула DAX для расчета YTD
 
Цитата
написал:
А можно сделать, чтобы значение YTD для счетов a100, a200 зависело от выбора среза Months.  
Тогда у вас просто получатся те же значения, что и в столбце PTD для всех счетов, либо я просто не понимаю суть вопроса...
Формула DAX для расчета YTD
 
Здравствуйте.
Код
=IF(
    MAX('Table1'[Account]) = "y300";
    SUM('Table1'[Value]);
    CALCULATE(
        SUM('Table1'[Value]);
        ALL('Months')  // Игнорируем фильтры по Months
    )
)
Файл прилагаю.  
Изменено: turbidgirl - 16.10.2024 14:53:26
Проблема при вычислении общей меры или суммирование мер построчно в Power BI
 
Здравствуйте.
По теме Power BI итак на форме мало кто отвечает, а уж без файла примера вероятность получения полезного ответа сводится к нулю...
Поиск и замена в в проверке данных и условном форматировании, в своих формулах
 
Чат с ИИ выдал, что штатными инструментами поменять нельзя, только руками.
На вопрос, можно ли макросом решить проблему, выдал такой макрос:
Код
Sub FindAndReplaceInDataValidation()
    Dim ws As Worksheet
    Dim cell As Range
    Dim findText As String
    Dim replaceText As String

    findText = InputBox("Введите текст для поиска в проверке данных:")
    replaceText = InputBox("Введите текст для замены в проверке данных:")

    For Each ws In ThisWorkbook.Worksheets
        ' Обработка проверки данных
        For Each cell In ws.UsedRange
            If cell.Validation.Type <> 0 Then ' Проверка, есть ли проверка данных
                On Error Resume Next ' Игнорировать ошибки
                Dim formula1 As String
                formula1 = cell.Validation.formula1
                
                ' Проверка, является ли формула строкой и содержит ли искомый текст
                If formula1 <> "" And InStr(formula1, findText) > 0 Then
                    formula1 = Replace(formula1, findText, replaceText)
                    cell.Validation.Modify Type:=cell.Validation.Type, AlertStyle:=cell.Validation.AlertStyle, Operator:=cell.Validation.Operator, formula1:=formula1, Formula2:=cell.Validation.Formula2
                End If
                On Error GoTo 0 ' Возврат к обычной обработке ошибок
            End If
        Next cell
    Next ws
End Sub
Я попробовала поиграть - у меня меняет только в формулах в Проверке данных.
Изменено: turbidgirl - 16.10.2024 13:18:13
Поиск и замена в в проверке данных и условном форматировании, в своих формулах
 
Здравствуйте.
Как вариант можно сделать так:
1. на вкладке Формулы в разделе Зависимости формул нажать Показать формулы
2. через Найти и Заменить меняете то, что нужно
3. возвращаемся на вкладку Формулы и в разделе Зависимости формул снова нажимаем Показать формулы
В итоге, получим новый результат с новыми данными в формуле.
Перетаскивание строки умной таблицы за одну ячейку, Как перетащить строку мной таблицы за одну ячейку
 
ДРЕВНЕЙШИЙ ПОСТ!!!
Проблему можно решить, если на лист с таблицей вшить макрос с нужными функциями.
Чат с ИИ выдал такой код:
Код
Dim SourceRow As Long
Dim TargetRow As Long
Dim IsDragging As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If IsDragging Then
        TargetRow = Target.Row
        If TargetRow <> SourceRow Then
            Rows(SourceRow).Cut
            Rows(TargetRow).Insert Shift:=xlDown
            IsDragging = False
        End If
    End If
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Cells.Count = 1 Then
        SourceRow = Target.Row
        IsDragging = True
        Cancel = True
    End If
End Sub
Код нужно вставлять именно в лист с таблицей, по другому не сработает.
Как использовать макрос: теперь, когда вы дважды щелкнете на ячейку в строке, которую хотите переместить, строка будет "захвачена". Затем, когда вы выберете другую строку, она будет перемещена на место выбранной строки.
Файл прилагаю. Поиграла с переносом - на первый взгляд срабатывает нормально.
Изменено: turbidgirl - 16.10.2024 11:14:31
Размещение иконок не по левую сторону от ячейки, а в самой ячейке.
 
ДРЕВНЕЙШИЙ ПОСТ!!!
Чат с ИИ выдал такой код:
Код
Sub Макрос1()

    Dim r, lr, m, k, pat, i, f
    Dim myPic As Shape
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set sl = CreateObject("Scripting.Dictionary")
    pat = ActiveWorkbook.Path
    Search fso.GetFolder(pat)
    k = sl.keys
    With ActiveSheet
        lr = Cells(Rows.Count, 25).End(xlUp).Row
        m = .Cells(4, 24).Resize(lr - 3, 2).Value
        Dim rw&, co&
        For rw = 42 To 51 Step 3
            For co = 6 To 10 Step 1
                For r = 1 To UBound(m)
                    ' Check for exact match
                    If Cells(rw, co).Value = m(r, 1) Then
                        Dim iconExists As Boolean
                        iconExists = False
                        
                        ' Check if an icon already exists in the cell
                        For Each myPic In ActiveSheet.Shapes
                            If Not Intersect(myPic.TopLeftCell, Cells(rw, co)) Is Nothing Then
                                iconExists = True
                                Exit For
                            End If
                        Next myPic
                        
                        If Not iconExists Then
                            For i = 0 To UBound(k)
                                If InStr(1, k(i), m(r, 2), vbTextCompare) > 0 Then
                                    pat = sl(k(i))
                                    With .Cells(rw, co)
                                        Set myPic = ActiveSheet.Shapes.AddPicture( _
                                            Filename:=pat, _
                                            linktofile:=msoFalse, _
                                            savewithdocument:=msoCTrue, _
                                            Left:=.Offset(0, 0).Left + 1, _
                                            Top:=.Offset(0, -1).Top + 1, _
                                            Width:=.Offset(0, -1).Width - 2, _
                                            Height:=.Offset(0, -1).Height * 3 - 2)
                                        myPic.LockAspectRatio = msoFalse
                                    End With
                                    Exit For ' Exit after placing the first icon
                                End If
                            Next i
                        End If
                    End If
                Next r
            Next co
        Next rw
    End With
End Sub
В приложенном файле сработал правильно, если корректно понята задача.

Расчет дублируемости маршрутов
 
Цитата
AlienSx написал:
не вижу где могут пересекаться 5й и 6й, например.
У некоторых маршрутов есть такое:
Маршрут№07
АВ "Мозырь"0
АВ   "Мозырь"0,1
Маршрут№05
АВ   "Мозырь"0,7
АВ   "Мозырь"0,1
От этого получается, что маршрут 5 и 6, например, пересекаются на этом одном перегоне Мозырь, а вот 6 и 5 не пересекаются. Хотя, как-то странно это получается, уж если по честному...
AlienSx, а код, как всегда, крутой - спасибо!
Расчет дублируемости маршрутов
 
СТАРЫЙ ПОСТ!
Делала при помощи Power  Query. Код не оптимален, конечно. С тем, что привели как пример расчёта - совпало, а по другим маршрутам - судить Вам.
Результат во вложении.
Расчет значений по условию в Power Query, ссылаясь на предыдущий результат, В дополнительном столбце вычислить значения по условиям
 
СТАРЫЙ ПОСТ!
Здравствуйте.
Если правильно поняла задачу, что результат во вложении.
Сначала добавила столбец с индексом, а потом добавила столбец Расчет:
Код
= try if [Год]=2023 then [РТО] else if [Год]=2024 and [Месяц]<Date.Month(DateTime.Date(DateTime.LocalNow())) 
then (if [РТО предварительное]=0 then [РТО] else [РТО предварительное]) else [Расчет]{[Индекс]-1}*(1+[#"% откл ПМ ПГ"]) otherwise 0


Power Pivot Расчёт отклонения с группировокой по столбцам.
 
Здравствуйте.
Вот что выдал част с ИИ на ваш вопрос:
Возможные решения:
  1. Проверка наличия данных: Убедитесь, что в таблице sourmilk действительно есть данные за периоды "08.07.2024" и "01.07.2024". Если данных нет, то мера не сможет вернуть значения, что и приведет к пустым колонкам.
  2. Использование функции IF: Вы можете добавить условие, чтобы проверять наличие данных перед выполнением расчета. Например:
    =IF(COUNTROWS(FILTER('sourmilk', 'sourmilk'[Период] = "08.07.2024")) > 0,DIVIDE(CALCULATE(DIVIDE(SUMX('sourmilk', 'sourmilk'[Общая себестоимость(с НДС) (без ед. изм.)]),SUMX('sourmilk', 'sourmilk'[Количество (без ед. изм.)])),FILTER('sourmilk', 'sourmilk'[Период] = "08.07.2024")),CALCULATE(DIVIDE(SUMX('sourmilk', 'sourmilk'[Общая себестоимость (с НДС) (без ед. изм.)]),SUMX('sourmilk', 'sourmilk'[Количество (безед.изм.)])),FILTER('sourmilk', 'sourmilk'[Период] = "01.07.2024"))),BLANK())
  3. Использование COALESCE: Если вы хотите, чтобы вместо пустых значений отображалось какое-то другое значение (например, 0), вы можете использовать функцию COALESCE:
    =COALESCE(ваш_расчет_меры,0)
  4. Проверка группировки: Убедитесь, что группировка по столбцам не мешает отображению данных. Возможно, стоит пересмотреть, как вы группируете данные и какие поля используете для этого.
Попробуйте эти подходы, чтобы устранить проблему с пустыми колонками и сохранить структуру вашей сводной таблицы.
Изменено: turbidgirl - 19.09.2024 16:43:02
Расчет глубины задолженности (с помощью PQ)
 
СТАРЫЙ ВОПРОС!
Здравствуйте.
Пример кода Power Query:
Код
let
    Источник = Table.NestedJoin(ЗадолженностьИсходник, {"Контрагент"}, ОтгрузкиИсходник, {"Контрагент"}, "ОтгрузкиИсходник", JoinKind.LeftOuter),
    #"Добавлен пользовательский объект" = Table.AddColumn(Источник, "ОтфлтрТблц", each let dt = [#"Период (конец месяца)"] in Table.Sort(Table.SelectRows([ОтгрузкиИсходник], each [Дата]<=dt), {"Дата",Order.Descending})),
    #"Добавлен пользовательский объект1" = Table.AddColumn(#"Добавлен пользовательский объект", "TabNarastItog", each let tab = Table.AddIndexColumn([ОтфлтрТблц],"Index",0), lst = tab[#"Отгрузка, руб."] in Table.AddColumn(tab,"NarastItog",each List.Sum(List.FirstN(lst, [Index]+1)))),
    #"Добавлен пользовательский объект2" = Table.AddColumn(#"Добавлен пользовательский объект1", "КолвоДнейЗадолж", each let zdlzh = [#"Текущая задолженность, руб."] in Duration.TotalDays([#"Период (конец месяца)"]-List.Last(Table.SelectRows([TabNarastItog], each [NarastItog]<=zdlzh)[Дата]))),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Добавлен пользовательский объект2",{"Период (конец месяца)", "Контрагент", "КолвоДнейЗадолж"})
in
    #"Другие удаленные столбцы"
Файл прилагаю.
 
Макрос на блокировку ячеек в каждой строке по дате, Создать макрос на блокировку ячеек в каждой строке в зависимости от даты
 
Здравствуйте.
Чат GPT выдал такой код по вашим условиям.
На пробном листе сработал.
Код
Sub BlockRedFontCells()
    Dim ws As Worksheet
    Dim cell As Range
    Dim today As Date
    Dim twoDaysAgo As Date
    Dim lastRow As Long
    Dim rowRange As Range
    
    ' Устанавливаем рабочий лист
    Set ws = ThisWorkbook.Sheets("База")
    
    ' Получаем текущую дату
    today = Date
    twoDaysAgo = today - 2
    
    ' Находим последнюю непустую ячейку в столбце A
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' Сначала разблокируем все ячейки
    ws.Unprotect Password:="ваш_пароль" ' Установите свой пароль
    ws.Cells.Locked = False
    
    ' Проходим по диапазону A2 до последней непустой ячейки
    For Each cell In ws.Range("A2:A" & lastRow)
        ' Проверяем, если дата в ячейке меньше двух суток от сегодняшней
        If Not IsEmpty(cell) Then
            If cell.Value <= twoDaysAgo Then
                ' Определяем диапазон всей строки
                Set rowRange = ws.Range(cell, cell.Offset(0, 9)) ' A:J
                
                ' Меняем цвет шрифта на темно-красный для всей строки
                rowRange.Font.Color = RGB(139, 0, 0) ' Темно-красный цвет
                
                ' Блокируем всю строку, если шрифт красный
                If rowRange.Font.Color = RGB(139, 0, 0) Then
                    rowRange.Locked = True
                End If
            End If
        End If
    Next cell
    
    ' Защита листа
    ws.Protect Password:="ваш_пароль" ' Установите свой пароль
End Sub
Добавление и удаление строк с помощью макроса/конструктора, Нужен макрос для решения задачи
 
ПОСТ ВОСЬМИДНЕВНОЙ ДАВНОСТИ!
Предварительно каждую из трёх табличек выделила и присвоила им имя - Ди, Ли, Пи.
Далее на рабочем листе рядом с табличкой создавала кнопку для макроса и присваивала ей следующие коды (меняла в них только названия нужных диапазонов):
Чтобы удалить строку:
Код
Sub Кнопка6_Щелчок()
  Dim myRange As Range
    Set myRange = Range("Пи")
    Dim numRows As Long
    numRows = myRange.Rows.Count
    
    If numRows >= 2 Then
        'Delete second-to-last row in range
        myRange.Rows(numRows - 1).Delete Shift:=xlUp
    Else
        'Range has 1 or 0 rows, can't delete second-to-last row
        MsgBox "Range has 1 or 0 rows, can't delete second-to-last row."
    End I
Чтобы добавить строку:
Код
Sub Кнопка7_Щелчок()
Dim myRange As Range
    Set myRange = Range("Пи")
    Dim numRows As Long
    numRows = myRange.Rows.Count

    'Insert new row as second-to-last row in range
    If numRows >= 2 Then
        myRange.Rows(numRows - 1).Insert Shift:=xlDown
        'Copy formatting from above row to new row
        myRange.Rows(numRows - 2).Copy
        myRange.Rows(numRows - 1).PasteSpecial Paste:=xlPasteFormats
    Else
        'Range has fewer than 2 rows, so we can't insert a new row
        MsgBox "Range has fewer than 2 rows, can't insert new row."
    End If
    Application.CutCopyMode = False 'Clear clipboard
End Sub

Как-то так...

Сводная таблица - скрытие значений одного из показателей с сохранением вывода итога по столбцу
 
Цитата
написал:
С праздником!
:) Merci!  
Сводная таблица - скрытие значений одного из показателей с сохранением вывода итога по столбцу
 
СТАРЫЙ ПОСТ!!!
Рабочий код, не зависящий от расположения строки заголовок на листе:
Код
Sub HideColumnsIfContainSHTC4()
    Dim i As Long
    Dim cell As Range
        
    For i = 1 To ActiveSheet.UsedRange.Columns.Count
        For Each cell In ActiveSheet.Range(Cells(1, i), Cells(ActiveSheet.UsedRange.Rows.Count, i)).Cells
            If InStr(cell.Value, "ШтЧ") > 0 And cell.Value <> "Итог   ШтЧ" Then
                ActiveSheet.Columns(i).EntireColumn.Hidden = True
                Exit For
            End If
        Next cell
    Next i
End Sub
Изменено: turbidgirl - 08.03.2023 11:28:38
Power Query. Заменить строгую привязку к названиям столбцов на динамический список., Вставить в функцию List.Min названия нужных столбцов без их строго перечисления.
 
Alien Sphinx и surkenny, вы - КРУТЫЕ! Спасибо!
Страницы: 1 2 3 4 5 6 7 След.
Наверх