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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 276 След.
Как выделить кварталы к которым относятся даты начала и окончания этапа
 
Код
=(ДАТА(2025;3*(СТОЛБЕЦ()-4)+1;1)<=$B5)*(ДАТА(2025;3*(СТОЛБЕЦ()-3)+1;1)>$A5)
Найдите два отличия  :D  
Как выделить кварталы к которым относятся даты начала и окончания этапа
 
Код
=(ДАТА(2025;3*(СТОЛБЕЦ()-4)+1;1)<$B5)*(ДАТА(2025;3*(СТОЛБЕЦ()-3)+1;1)>=$A5)
Подсчет данных
 
Код
=ЕСЛИ(A1<1;"<1";ЕСЛИ(A1<4;"<4";ЕСЛИ(A1=4;4;(A1+B1)/11/СТЕПЕНЬ(10;-ЦЕЛОЕ(СЛЧИС()*4+2)))))
Вот вам формула, вполне соответствующая заданию.
- Формула вполне себе математическая. Кто скажет, что это химическая, пусть первый бросит в меня камень!
- Меняется в зависимости от значений в ячейке. Пусть даже в этой ячейке есть выпадающий список.
- Формула либо складывает значения и делит их на 0.11; 0.011; 0.0011 и т.д.       "и т.д." в данном случае равно 0.00011.
- Либо при определённых значениях выводит  <1, <4, 4. Будем считать, что это вполне себе стандартные значения, что бы это ни значило.

Цитата
написал:
надеюсь кто-нибудь поймет
"Подумаешь, бином Ньютона!" как сказал Коровьев. :D
Автоматическая сортировка данных в сгенерированном файле из .xltm, Автоматическая сортировка данных в сгенерированном файле из .xltm
 
Файл-Параметры-Сохранение-Сохранять в следующем формате
Формирование таблиц из строк, Шаблон Для формирования небольших табличек на основании данных из строк.
 
Вариация на макрос buildReport, приведённый выше, со вставкой картинок.

Скрытый текст
Поиск по ячейкам строки и добавление в одну ячейку по условию
 
Цитата
написал:
приветствую! ) Вы только это не поняли?
приветствую! Судя по решению, что Вы предложили, Вы не поняли меньше, чем я.  :)  
Значение из соседнего столбца
 
Цитата
написал:
=ВПР(D5;A:B;2;0)
Цитата
написал:
не совсем корректно работает, в случае если у нас есть два одинаковых значения, в ячейке В4 будет отображено значение для первого попавшегося выражения,
Значение из соседнего столбца
 
Вариант покомпактнее
Код
=СМЕЩ(ДВССЫЛ(ПСТР(Ф.ТЕКСТ(D5);2;99999));0;1)
Значение из соседнего столбца
 
Протянуть формулу вправо не подходит?
Разделение одной ячейки на несколько строк
 
Выделите ячейки, запустите макрос "Разделить".
Скрытый текст
Поиск по ячейкам строки и добавление в одну ячейку по условию
 
Вот если бы кто-то приложил пример, как должно быть.
"Последняя заполненная" имеется в виду справа или внизу?
Поиск по ячейкам строки и добавление в одну ячейку по условию
 
Думаю, откликов будет больше, если приложить небольшой пример.
Расписание движения команд
 
Пишу в личку.
Сделал. Оплату получил.
Изменено: МатросНаЗебре - 23.04.2025 13:58:31
Как обрезать определëнное колличество знаков с правой стороны?
 
Код
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ЛЕВСИМВ(ПОДСТАВИТЬ(ЛЕВСИМВ(A1;МИН(ЕСЛИОШИБКА(НАЙТИ("/";A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(0;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(1;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(2;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(3;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(4;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(5;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(6;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(7;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(8;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(9;A1);ДЛСТР(A1)))-1);" ";ПОВТОР(" ";100));ДЛСТР(ПОДСТАВИТЬ(ЛЕВСИМВ(A1;МИН(ЕСЛИОШИБКА(НАЙТИ("/";A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(0;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(1;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(2;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(3;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(4;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(5;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(6;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(7;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(8;A1);ДЛСТР(A1));ЕСЛИОШИБКА(НАЙТИ(9;A1);ДЛСТР(A1)))-1);" ";ПОВТОР(" ";100)))-100);ПОВТОР(" ";100);" "))
Найти максимальное значение на основе минимальных
 
В ячейку B6 вставьте формулу и протяните до ячейки H6:
Код
=(B5=МИН(5:5))*МАКС(B4;C6:$I6)
Вариант названия темы.
Найти минимальное в одной строке, и в найденных ячейках найти максимальное значение.
Удаление ТОЛЬКО букв, оставив цифры с сохранением разрядности, Подправить существующий макрос
 
Код
Public Sub RemoveDigits()
' Макрос удаляет текст цифры оставляет.
    Dim Cell As Range
    If TypeOf Selection Is Range Then
        For Each Cell In Selection
            If Application.WorksheetFunction.IsText(Cell.Value) Then Cell.Value = DigText(Cell.Value)
        Next
    End If
End Sub

Public Function DigText(sSource As String) As Variant
    Dim ch As String, ii As Long, flag As Boolean, sResult As String
    For ii = 1 To Len(sSource)
        ch = Mid(sSource, ii, 1)
        If (Asc(ch) >= Asc("0")) And (Asc(ch) <= Asc("9")) Then
            flag = True
        ElseIf Asc(ch) = Asc(",") Then
            flag = True
        Else
            flag = False
        End If
        If flag Then
            sResult = sResult & ch
        End If
    Next
    DigText = sResult
    
    'Уберите, если не нужно превращать в число.
    If IsNumeric(DigText) Then DigText = CDbl(DigText)
End Function
Offtop. RemoveDigits- выглядит как ненамеренная обфускация. Лучше RemoveСhar или RemoveExceptDigits.
VBA Подсчёт стоимости аренды за период по изменяющимся ставкам
 
Код
Public Function АРЕНДА(период_c As Date, период_по As Date, cтавка_аренды As Range) As Double
    Dim arr As Variant
    arr = cтавка_аренды.Value
    
    Dim ya As Long, dd As Double, dtMin As Date, dtMax As Date
    For ya = 1 To UBound(arr, 1)
        If arr(ya, 1) = 0 Then arr(ya, 1) = период_c
        If arr(ya, 2) = 0 Then arr(ya, 2) = период_по
        
        dtMin = WorksheetFunction.RoundDown(WorksheetFunction.Max(период_c, arr(ya, 1)), 0)
        dtMax = WorksheetFunction.RoundDown((WorksheetFunction.Min(период_по, arr(ya, 2))), 0)
        If dtMin <= dtMax Then
            dd = dd + (dtMax - dtMin + 1) * arr(ya, 3)
        End If
    Next
    АРЕНДА = dd
End Function
Макрос для работы со структурой, Необходимо создать макрос, который будет производить некие манипуляции со структурированным списком
 
Ещё вариант. С сохранением форматов, работает по выделенным ячейкам.
Скрытый текст
Логические условия для функции ЕСЛИ в отдельной ячейке, Можно ли заменять условия для функции если текстом из отдельной ячейки
 
Вариант 1. Формулы можно заменять с помощью окна "Найти и заменить". Ctrl+H
Вариант 2. Можно создать функцию с помощью именованного диапазона. ФОРМУЛЫ - Присвоить имя. При необходимости изменения достаточно будет изменить эту функцию.
Как скопировать строку заданное число раз
 
Цитата
написал:
то отрабатывает не правильно
Только если правильным считать, когда блоки вставлены непосредственно друг под другом, а не вставлены друг под другом.
Код
Sub Копирование()
    'v10
    Dim ya As Long, iEnd As Long, Rng As Range, RngCurrent As Range, arr As Variant, brr As Variant, sFormula As String
    On Error Resume Next
    Set Rng = Selection
    Set Rng = Intersect(Rng, Rng.Parent.UsedRange)
    On Error GoTo 0
    If Rng Is Nothing Then Exit Sub
    If Rng.Cells.CountLarge = 1 Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = Rng.Value
    Else
        arr = Rng.Value
    End If
    
    Dim shTarget As Worksheet
    Set shTarget = Rng.Parent
    
    brr = Rng.EntireRow.Cells(1, 1).Resize(shTarget.UsedRange.Rows.Count).Value
    
    Dim Application_Calculation As XlCalculation: Application_Calculation = Application.Calculation: Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    For ya = 1 To UBound(arr, 1)
        If IsNumeric(arr(ya, 1)) Then
            For iEnd = ya + 1 To UBound(brr, 1)
                If Not IsEmpty(brr(iEnd, 1)) Then Exit For
                If Not Rng.Cells(iEnd, 1).EntireRow.Hidden Then Exit For
            Next
            iEnd = iEnd - 1
            If iEnd >= ya Then
                sFormula = Rng.Cells(ya, 1).Formula
                Rng.Cells(ya, 1).Value = 1
                Set RngCurrent = Range(Rng.Rows(ya), Rng.Rows(iEnd))
                Set RngCurrent = RngCurrent.EntireRow
                RngCurrent.Copy
                
                With shTarget.UsedRange
                    yTarget = .Rows.Count + 1
                    yTarget = WorksheetFunction.Max(yTarget, RngCurrent.Row + RngCurrent.Rows.Count)
                    .Cells(yTarget, 1).Resize(RngCurrent.Rows.Count * arr(ya, 1), 1).Insert Shift:=xlDown
                End With
                Rng.Cells(ya, 1).Formula = sFormula
                ya = iEnd
            End If
        End If
    Next
    Application.ScreenUpdating = True
    Application.Calculation = Application_Calculation
End Sub
Как скопировать строку заданное число раз
 
Код
Sub Копирование()
    'v9
    Dim ya As Long, iEnd As Long, Rng As Range, RngCurrent As Range, arr As Variant, brr As Variant, sFormula As String
    On Error Resume Next
    Set Rng = Selection
    Set Rng = Intersect(Rng, Rng.Parent.UsedRange)
    On Error GoTo 0
    If Rng Is Nothing Then Exit Sub
    If Rng.Cells.CountLarge = 1 Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = Rng.Value
    Else
        arr = Rng.Value
    End If
    
    Dim shTarget As Worksheet
    Set shTarget = Rng.Parent
    
    brr = Rng.EntireRow.Cells(1, 1).Resize(shTarget.UsedRange.Rows.Count).Value
    
    Dim Application_Calculation As XlCalculation: Application_Calculation = Application.Calculation: Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    For ya = 1 To UBound(arr, 1)
        If IsNumeric(arr(ya, 1)) Then
            For iEnd = ya + 1 To UBound(brr, 1)
                If Not IsEmpty(brr(iEnd, 1)) Then Exit For
            Next
            iEnd = iEnd - 1
            If iEnd >= ya Then
                sFormula = Rng.Cells(ya, 1).Formula
                Rng.Cells(ya, 1).Value = 1
                Set RngCurrent = Range(Rng.Rows(ya), Rng.Rows(iEnd))
                Set RngCurrent = RngCurrent.EntireRow
                RngCurrent.Copy
                
                With shTarget.UsedRange
                    yTarget = .Rows.Count + 1
                    yTarget = WorksheetFunction.Max(yTarget, RngCurrent.Row + RngCurrent.Rows.Count)
                    .Cells(yTarget, 1).Resize(RngCurrent.Rows.Count * arr(ya, 1), 1).Insert Shift:=xlDown
                End With
                Rng.Cells(ya, 1).Formula = sFormula
                ya = iEnd
            End If
        End If
    Next
    Application.ScreenUpdating = True
    Application.Calculation = Application_Calculation
End Sub

Почему v9, а не v7? 7 и 8 уже есть в соседней ветке.
Поиск совсем недавно размещенного вопроса с решением
Поиск совсем недавно размещенного вопроса с решением, Прошу откликнуться разместившего файл "Разбивка по количеству"
 
Выделите столбец Количество, запустите макрос.
Скрытый текст
Изменено: МатросНаЗебре - 09.04.2025 17:37:18 (RngUsed.Cells(ya,)
Поиск совсем недавно размещенного вопроса с решением, Прошу откликнуться разместившего файл "Разбивка по количеству"
 
Цитата
написал:
Вот это скорость!
Вы ещё в ветку Работа загляните, там иногда за секунды отвечают  :D  
Поиск совсем недавно размещенного вопроса с решением, Прошу откликнуться разместившего файл "Разбивка по количеству"
 
Как скопировать строку заданное число раз
Произведение по нескольким условиям., Нужно найти произведение двух строк из таблицы по нескольким условиям.
 
И ещё можно:
- или исправить адрес. 11 изменить на строку, в которой находятся ваши данные.
- или выделить 11-й строку, добавить нужное количество строк. В эти новые строки внести новые данные.
Добавить макрос в надстройку Excel, Есть и другие задачи по VBA/Excel
 
Пишу в личку.
Сделал. Оплату получил.
Изменено: МатросНаЗебре - 10.04.2025 15:31:45
Как скопировать строку заданное число раз
 
Скрытый текст
Условным форматированием выделить выходные дни., Формат текста
 
Код
=ИЛИ(B1=1;B1=7)
Вариант названия темы:
Условным форматированием выделить выходные дни.

А вообще ДЕНЬНЕД лучше использовать так ДЕНЬНЕД(A1;2)
Произведение по нескольким условиям., Нужно найти произведение двух строк из таблицы по нескольким условиям.
 
Цитата
написал:
только не понял зачем как массивку, и так считает...
В новых версиях можно и так, а в старых нужна массивка.
Как скопировать строку заданное число раз
 
Код
Sub Копирование()
    'v5
    Dim ya As Long, iEnd As Long, Rng As Range, RngCurrent As Range, arr As Variant, sFormula As String
    On Error Resume Next
    Set Rng = Selection
    Set Rng = Intersect(Rng, Rng.Parent.UsedRange)
    On Error GoTo 0
    If Rng Is Nothing Then Exit Sub
    If Rng.Cells.CountLarge = 1 Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = Rng.Value
    Else
        arr = Rng.Value
    End If
    
    Dim shTarget As Worksheet
    Set shTarget = Rng.Parent
    
    Dim Application_Calculation As XlCalculation: Application_Calculation = Application.Calculation: Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    For ya = 1 To UBound(arr, 1)
        If IsNumeric(arr(ya, 1)) Then
            For iEnd = ya + 1 To UBound(arr, 1)
                If Not IsEmpty(arr(iEnd, 1)) Then Exit For
            Next
            iEnd = iEnd - 1
            If iEnd >= ya Then
                sFormula = Rng.Cells(ya, 1).Formula
                Rng.Cells(ya, 1).Value = 1
                Set RngCurrent = Range(Rng.Rows(ya), Rng.Rows(iEnd))
                Set RngCurrent = RngCurrent.EntireRow
                RngCurrent.Copy
                
                With shTarget.UsedRange
                    .Cells(.Rows.Count + 1, 1).Resize(RngCurrent.Rows.Count * arr(ya, 1), 1).Insert Shift:=xlDown
                End With
                Rng.Cells(ya, 1).Formula = sFormula
                ya = iEnd
            End If
        End If
    Next
    Application.ScreenUpdating = True
    Application.Calculation = Application_Calculation
End Sub
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 276 След.
Наверх