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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 24 След.
Удаление гиперссылок не затрагивая формат ячейки, Помогите подправить макрос
 
Вероника Суворова, макрорекордером сгенерировал недостающие пожелания и добавил в файл :D  
Удаление гиперссылок не затрагивая формат ячейки, Помогите подправить макрос
 
Вероника Суворова, добрый день. Может так?
Извлечь строку текста из ячейки
 
Holms, массивная
=ПСТР(A1;НАИБОЛЬШИЙ(ЕСЛИ(ЕСЛИОШИБКА(КОДСИМВ(ПСТР(A1;СТРОКА(H:H);1));0)=32;СТРОКА(H:H);0);1) + 1;99999)
Поиск среднего по двум значениям исключая максимум
 
gortenzia, добрый вечер. Если правильно понял
=СРЗНАЧ(ФИЛЬТР(ИНДЕКС(Лист4!$D$3:$M$48;0;ПОИСКПОЗ(C$2&C$3;Лист4!$D$1:$M$1&Лист4!$D$2:$M$2;0));(Лист4!$A$3:$A$48=Лист3!$A4)*(Лист4!$B$3:$B$48=Лист3!$B4)*(ИНДЕКС(Лист4!$D$3:$M$48;0;ПОИСКПОЗ(C$2&C$3;Лист4!$D$1:$M$1&Лист4!$D$2:$M$2;0))<>МАКС(ФИЛЬТР(ИНДЕКС(Лист4!$D$3:$M$48;0;ПОИСКПОЗ(C$2&C$3;Лист4!$D$1:$M$1&Лист4!$D$2:$M$2;0));(Лист4!$A$3:$A$48=Лист3!$A4)*(Лист4!$B$3:$B$48=Лист3!$B4);0)));0))
Изменено: Alex - 26.06.2025 19:07:01
Как проверить наличие трех значений в столбце Excel, Как проверить наличие трех значений в столбце Excel
 
Bobrik, здравствуйте.
Сопоставление строк между списками
 
Max2651max, добрый день. Может поможет: https://www.planetaexcel.ru/techniques/14/7203/  
Устройство позиций план-факт в графике производства работ Ганта, Имеется график производства работ по типу Ганта и все работы выстроены в виде таблицы сверху вниз построчно. Требуется часть каждой строки разделить на 2 строки и выполнить это для более чем 1000 строк
 
strimax, рад, что у Вас получилось.
Цитата
написал:
этот макрос поможет очень многим!
Сомневаюсь. Универсальных случаев мало, обычно у всех разные входные данные, поэтому все нужно дорабатывать под конкретные собственные исходники.
Перенести из одной колонки в другую часть цифр, формулой
 
=ЕСЛИОШИБКА(ПСТР(A2;ПОИСК("_457";A2)+1;10);"")
Устройство позиций план-факт в графике производства работ Ганта, Имеется график производства работ по типу Ганта и все работы выстроены в виде таблицы сверху вниз построчно. Требуется часть каждой строки разделить на 2 строки и выполнить это для более чем 1000 строк
 
strimax,
Цитата
написал:
то будет уже 3000 строк, верно?
Да, макрос добавляет после каждой строки еще одну, и делает объединение.
Ограничений по формулам нет. Но  
Цитата
написал:
они будут продолжать считать корректно при применении.
не уверен, не видя ваших формул. Но формулы в графе "№ п/п" изменились, на мой взгляд, не совсем корректно. Считаю, что прежде чем разделять строки, нужно все перевести из формул в значения.
Но это уже на Ваше усмотрение.
Цитата
Ваш макрос исполняемый при довольно большом количестве строк пока они не закончатся, верно?
Макрос определяет последнюю заполненную ячейку в столбце, выбранной вами ячейки, и работает до этой строки включительно.

Удачи
Изменено: Alex - 24.06.2025 13:31:23
Ошибка в формуле индекс + поискпоз с типом сопоставления 1 и -1
 
trolleks, в ячеке А5 вот такое значение "0.30000000000000004"
Крайний раз обсуждалось здесь
Как посчитать число лет между датами, игнорируя месяцы и дни
 
LyubovK, =ГОД(Дата2)-ГОД(Дата1) ?
Устройство позиций план-факт в графике производства работ Ганта, Имеется график производства работ по типу Ганта и все работы выстроены в виде таблицы сверху вниз построчно. Требуется часть каждой строки разделить на 2 строки и выполнить это для более чем 1000 строк
 
Вариант макросом. Нужно выбрать крайнюю левую верхнюю ячейку после заголовков. Лист шаблон не удалять. Диапазоны настроите сами (оставил комментарии), т.к. в файле примере одни диапазоны, на картинке другие. По производительности не оптимально, но все же быстрее чем вручную.
Код
Sub Plan_Fact()

    Const shablon_sh As String = "шаблон" 'название листа с шаблоном копируемых строк
    Const shablon_rng As String = "I6:AN7" 'диапазон шаблона копируемых строк
    Dim shablon_range As Range
    Set shablon_range = ThisWorkbook.Worksheets(shablon_sh).Range(shablon_rng)
    
    Const cell_plan_fact As String = "I" ' столбец  План/факт для старта копирование

    Const merged_cells As String = "B:H" ' столбцы объединения ячеек
    Const n_rows As Long = 1 ' кол-во строк добавления и объединения после каждой
    
    Dim src_rng As Range
    On Error Resume Next
    Set src_rng = Application.InputBox("Выбрать стартовую ячейку", Type:=8) ' выбор крайней левой верхней ячейки таблицы
    On Error GoTo 0
    If src_rng Is Nothing Then
        MsgBox "не выбрана ячейка"
        Exit Sub
    End If
    
    
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .DisplayAlerts = False
    End With
    
    Dim lastRow As Long, i As Long
    Dim rng As Range
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, src_rng.Column).End(xlUp).Row
        For i = lastRow To src_rng.Row Step -1
            With .Cells(i, src_rng.Column)
                .Offset(1).Resize(n_rows).EntireRow.Insert Shift:=xlShiftDown
            End With
            shablon_range.Copy .Cells(i, cell_plan_fact)
            For Each rng In Intersect(.Cells(i, src_rng.Column).Resize(n_rows + 1).EntireRow, .Range(merged_cells)).Columns
                rng.Merge
                rng.BorderAround xlContinuous
            Next rng
        Next i
    End With
    
    With Application
        .CutCopyMode = False
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
        .DisplayAlerts = True
    End With
       
End Sub
Как передать ParamArray() в массив объекта.
 
crjk, Добрый день. А если Variant использовать:
Код
Public ID As String
Private pValues As Variant

' Публичное свойство для чтения массива
Public Property Get Values() As Variant
    Values = pValues
End Property

' Публичное свойство для записи массива
Public Property Let Values(ByVal arr As Variant)
    pValues = arr
End Property
Расширенный фильтр не работает
 
Денис Зуев, добрый день. А вы статью до конца читали?
Цитата

Тонкие моменты:

  • Знак * подразумевает под собой любое количество любых символов, а ? - один любой символ.
  • Логика в обработке текстовых и числовых запросов немного разная. Так, например, ячейка условия с числом 5 не означает поиск всех чисел, начинающихся с пяти, но ячейка условия с буквой Б равносильна Б*, т.е. будет искать любой текст, начинающийся с буквы Б.
  • Если текстовый запрос не начинается со знака =, то в конце можно мысленно ставить *.
  • Даты надо вводить в штатовском формате месяц-день-год и через дробь (даже если у вас русский Excel и региональные настройки).
Изменено: Alex - 12.06.2025 13:08:53
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
puh840, добрый вечер.
Цитата
написал:
не дадут поставить на локальных ПК
А Selenium?
На всякий случай вариант через Selenium во вложении
Изменено: Alex - 06.06.2025 20:21:44
DAX функция с условием, Подсчет количества значений с несколькими условиями.
 
Ivan.Z,
Цитата
написал:
А можно сделать такую же меру, чтобы она считала по такой же логике и сумму
Не зная структуры данных, сложно писать меры, т.к. не понятно может ли быть такое, что, например в марте есть 2 разных даты  и в апреле 2 разных даты, по каким нужно брать суммы, или если в разных месяцах, то всегда только по одной дате? Ниже мера:
Код
_Sum:=
=var _client = VALUES('Таблица1'[Клиент])
var _result = SUMX(_client; 
         var _tab = CALCULATETABLE('Таблица1'; 
                  'Таблица1'[Анкета]= BLANK() ;
                   NOT 'Таблица1'[Тип дистанционной заявки]  IN {"Сайт";  "Яндекс"}
                )
         var _not_tech = SUMX(FILTER(_tab; 'Таблица1'[Состояние]<>"Технически нет");'Таблица1'[Сумма])
         var _tech = FILTER(_tab; 'Таблица1'[Состояние] = "Технически нет")
         var _cond = COUNTROWS(_tech) > 1
         var _sum_tech = IF(_cond; 
                  var _add= ADDCOLUMNS(_tech; "@MaxDate"; 
                              var _m = MONTH('Таблица1'[Дата создания])
                              var _y = YEAR('Таблица1'[Дата создания])
                              var _f = MAXX(FILTER(_tech; MONTH('Таблица1'[Дата создания]) = _m && YEAR('Таблица1'[Дата создания]) = _y);'Таблица1'[Дата создания])
                              return
                              _f
                        )         
                  var _col = SELECTCOLUMNS( _add;"@M"; [@MaxDate])
                  var _filter_date = DISTINCT( _col)
                  var _res = SUMX(FILTER(_tech;'Таблица1'[Дата создания] IN _filter_date);'Таблица1'[Сумма])
                  return 
                  _res
                  ;
                  0
                  )
                     
         return _not_tech + _sum_tech
      )
return 
_result
И скорректируйте прошлую меру, а то вдруг месяц один и тот же, но в разных годах (во вложении).

Цитата
написал:
мера работает в общем массиве данных и если фильтровать по месяцам, например за апрель, то клиент Карева не попадет в сводную, т.к. при выбранном фильтре, заказ этого клиента будет уникальным, верно же?((
Не исключено, если связь по столбцу [Дата создания]. Но это уже другая история, и особого желания переписывать меры под ваши новые условия у меня нет.
 
Изменено: Alex - 05.06.2025 10:57:40
DAX функция с условием, Подсчет количества значений с несколькими условиями.
 
Ivan.Z, добрый день. Так подойдет?
Код
Кол-во:=
var _client = VALUES('Таблица1'[Клиент])
var _result = SUMX(_client; 
         var _tab = CALCULATETABLE('Таблица1'; 
                  'Таблица1'[Анкета]= BLANK() ;
                   NOT 'Таблица1'[Тип дистанционной заявки]  IN {"Сайт";  "Яндекс"}
                )
         var _not_tech = COUNTROWS(FILTER(_tab; 'Таблица1'[Состояние]<>"Технически нет"))
         var _tech = FILTER(_tab; 'Таблица1'[Состояние] = "Технически нет")
         var _cond = COUNTROWS(_tech) > 1
         var _count_tech = IF(_cond; 
                  var _add= ADDCOLUMNS(_tech; "@Month"; MONTH('Таблица1'[Дата создания]))
                  var _col = SELECTCOLUMNS( _add;"@M"; [@Month])
                  var _res = COUNTROWS( DISTINCT( _col))
                  return 
                  _res
                  ;
                  0
                  )
                     
         return _not_tech + _count_tech
      )
return 
_result
Только не совсем понял, в чем смысл
Цитата
Вот в этом случае мне нужно, чтобы в расчет пошла только одна заявка (т.к. месяц создания один) с более поздней датой и никак иначе, т.е. учитывалась заявка с датой создания от 15.01.2025
если нужно только количество.
Если вы дальше хотите проваливаться в таблицу для отбора строк, то с мерами это не работает, получите все равно всю таблицу.
Изменено: Alex - 05.06.2025 09:40:29
Вставка формулы в ячейку с помощью VBA
 
astepaa, для динамических функций

Range("A1").Formula2Local = "=ФИЛЬТР(Лист2!A1:A7;ЕЧИСЛО(ПОИСК(C1;Лист2!A1:A7)))"

Вставка формулы в ячейку с помощью VBA
 
astepaa, отключайте обработчик событий
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    
    Application.EnableEvents = False
    Range("A1").FormulaLocal = "=СЕГОДНЯ()"
    Application.EnableEvents = True

End Sub
СчетЕсли по определенным столбцам в PQ
 
Soni, добрый день. Странно, что у Вас не получилось с кодом от Garrys, он рабочий
Код
let
    src = Excel.CurrentWorkbook(){[Name="Таблица4"]}[Content], 
    col_name = {"П1","П2","П3","П4"},
    add = Table.AddColumn(src,"not_0", (x)=>List.Count(List.Select(Record.ToList(Record.SelectFields(x, col_name)), (x)=> x > 0 )))
in
    add
Изменено: Alex - 04.06.2025 16:50:11
Вставка формулы в ячейку с помощью VBA
 
astepaa, добрый день.

Range("A1").FormulaLocal = "=СЕГОДНЯ()"

Вписать в одну ячейку название комплекта и его состав из длинного списка таковых., Есть комплекты и их состав. Все артикулы вписаны в один столб.
 
Евгения1975, добрый день. с доп столбцом для эксель 2021+
=ЕСЛИ(C2<>C1;ОБЪЕДИНИТЬ(",";ИСТИНА;ФИЛЬТР($A$1:$A$54;$C$1:$C$54=C2));"")
Функция ФИЛЬТР внутри СЧЁТЕСЛИ
 
brave, так?
=LET(arr;ФИЛЬТР($A:$F;($G:$G=G3));row;A3:F3; result;  СУММ(MAP(row;LAMBDA(cell;СУММПРОИЗВ(--(arr = cell)))));result)
Функция ФИЛЬТР внутри СЧЁТЕСЛИ
 
brave, Результат в столбце X устраивает? Если да, то для новых версий эксель
=LET(arr;ФИЛЬТР($A:$F;($G:$G=I4));row; BYROW(arr;LAMBDA(r; СУММ(MAP(r;LAMBDA(cell;СУММПРОИЗВ(--(arr = cell)))))));row)
Изменено: Alex - 04.06.2025 15:44:18
Путем упрощения примера с ошибкой пришел к неожиданному открытию и не знаю как решить эту проблему, Бонус: способ как устроить ошибку "Разрушительный сбой" в абсолютно новом файле
 
Сергей Юрьевич, добрый день.  
Цитата
написал:
у вас возникнет «Разрушительный сбой»,
Не воспроизвелось не с Вашим файлом не с новым. Win10 Pro + Офис 365
Изменено: Alex - 04.06.2025 13:54:41
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
puh840, файл пустой же, там таблицы нет. Может у Вас какая-то блокировка на выгрузку с данного сайта.
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
puh840, не уверен, но может дело в windows, у меня Win10. Других догадок нет.
Еще вот такой код работает у меня
Код
Sub SaveWebPageToEdisclosureFolder()
    Dim URL As String
    Dim FileName As String
    Dim DateStamp As String
    Dim FolderPath As String
    Dim FilePath As String
    Dim http As Object
    Dim stream As Object
    Dim FSO As Object
    Dim oFolder As Object
 
    ' Адрес сайта
    URL = "https://www.e-disclosure.ru/portal/files.aspx?id=1976&type=3"
 
    ' Формируем отметку времени
    DateStamp = Format(Now, "yyyy-mm-dd_HH-MM-SS")
 
    ' Путь к папке "E-disclosure" на рабочем столе
    FolderPath = Environ("USERPROFILE") & "\Desktop\E-disclosure\"
    FolderPath = ThisWorkbook.Path
     
    ' Проверка и создание папки, если её нет
    Set FSO = CreateObject("Scripting.FileSystemObject")
    If Not FSO.FolderExists(FolderPath) Then
        Set oFolder = FSO.CreateFolder(FolderPath)
    Else
        Set oFolder = FSO.GetFolder(FolderPath)
    End If
 
    ' Полное имя файла
    FileName = "siteДАААААААА_" & DateStamp & ".html"
    FilePath = oFolder.Path & Application.PathSeparator & FileName
 
    ' Загружаем страницу
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", URL, False
    http.Send
 
    ' Проверка статуса и сохранение
    If http.Status = 200 Then
'        Dim txtFile As Scripting.TextStream
'        Set txtFile = FSO.OpenTextFile(FilePath, 2, True, -1)
'        txtFile.Write http.responsetext
'        txtFile.Close
        
        
        Set stream = CreateObject("ADODB.Stream")
        stream.Type = 2 ' text
        stream.Charset = "UTF-8"
        stream.Open
        stream.WriteText http.responsetext
        stream.SaveToFile FilePath, 2 ' 2 = adSaveCreateOverWrite
        stream.Close
        
        MsgBox "Файл успешно сохранён:" & vbCrLf & FilePath, vbInformation
    Else
        MsgBox "Ошибка загрузки страницы. Код: " & http.Status, vbExclamation
    End If
End Sub
Изменено: Alex - 03.06.2025 11:57:41
Сохранить веб-страницу (VBA) + PQ обработка таблицы
 
puh840,
Цитата
написал:
Увы не помогло. Файл формируется, но в PQ таблицу не видит
Просто уточню. А вы после выгрузки меняете ссылку на вновь выгруженный файл в PQ (в коде жесткая привязка)? Проверял на 2 разных ПК, офис 365. Все работает (см вложение)
Ранг по всей таблице в Power Pivot, Ранг по всей таблице в Power Pivot
 
MadG ., доброе утро.
Цитата
написал:
будет необходимо перечислять все столбцы по которым необходимо выполнять усреднение?
Да.
По хорошему таблицу нужно приводить в нормализованный вид, а модель делать как положено (со справочниками дат и прочего)
как посчитать стаж работы
 
alenkabezlunnaya,
Код
<3 мес = 
var _end_year = ENDOFYEAR('Календарь'[Date])
var _min_date = MIN(DATE(2024;09;13);_end_year)
var _tab = CALCULATETABLE('таб'; 'Календарь'[Date]<=_min_date;'таб'[Дата увольнения] = BLANK() ||'таб'[Дата увольнения] > _min_date)
var _result = SUMX(_tab; INT(DATEDIFF([Дата приема]; _min_date;MONTH)<3))
return _result

переменная  _end_year - определяем последнюю дату года
переменная   _min_date - сравниваем  _end_year с последней датой из задания 13.09.2024, для того чтоб до 2024 года брались сотрудники на конец года, а в 2024 эта дата из задания
переменная   _tab - таблица с наложенными фильтрами, то есть получаем всю таблицу до даты _min_date, где   [Дата увольнения] = пусто или  [Дата увольнения] > _min_date
переменная   _result итоговая, то есть пробегаемся по таблице _tab построчно и находим разницу в месяцах между [Дата приема] и _min_date, сравниваем <3 и преобразовываем в 1 (true) или 0(false) и суммируем.
как-то так
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 24 След.
Наверх