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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 293 След.
создание массива неповторяющихся комбинаций ячеек из двух и более диапазонов, Добрый день. Есть монотонная задача подставления к списку торговых точек списка товаров, оба списка состоят из двух ячеек - код и название
 
Вариант формулами.
В ячейку 'совмещение!'A2 вставьте формулу и протяните до ячейки B27:
Код
=ИНДЕКС(магаз!A$2:A$27;ОСТАТ(СТРОКА()-2;ЧСТРОК(магаз!$A$2:$A$27))+1)

В ячейку 'совмещение!'C2 вставьте формулу и протяните до ячейки D27:
Код
=ИНДЕКС(товар!A$2:A$5;ЦЕЛОЕ((СТРОКА()-2)/ЧСТРОК(магаз!$A$2:$A$27))+1)
Выделить цветом одинаковые по строкам значения в разных столбцах
 
Код
=(СЧЁТЕСЛИМН($G$8:$G$11;G8)+СЧЁТЕСЛИМН($J$8:$J$11;G8)+СЧЁТЕСЛИМН($L$8:$L$11;G8))>1
Применяется к
Код
=$G$8:$M$11
Фильтрация по дню и событию, Как выявить через формулу или PQ, что есть вход, но нет выхода или наоборот
 
Вариант с визуализацией, кто находится на территории.
ссылки на исходные файлы через формулы, ссылки на исходные файлы через формулы
 
Код
=ВПР(A2;ДВССЫЛ(B11&"B2:E5");4;0)
Распределение суммы по месяцам с помощью формулы, Формула для разброса суммы по месяцам
 
В ячейку D10 вставьте формулу и протяните до ячейки D13:
Код
=D5

В ячейку E10 вставьте формулу и протяните до ячейки Q13:
Код
=$D10-(СУММ($E$4:E$4))

В ячейку E5 вставьте формулу и протяните до ячейки Q8:
Код
=МАКС(0;D10)-МАКС(0;E10)
Суммирование кол-ва ячеек по цвету заливки и текста, Суммирование кол-ва ячеек по заливке и частичному совпадения текста
 
В строке с отметкой "<-     ТУТ"
:D  
Суммирование кол-ва ячеек по цвету заливки и текста, Суммирование кол-ва ячеек по заливке и частичному совпадения текста
 
Понятно, продолжайте наблюдения  :D  
Суммирование кол-ва ячеек по цвету заливки и текста, Суммирование кол-ва ячеек по заливке и частичному совпадения текста
 
Код в Вашем сообщении и код в файле отличается.
Код
Function СуммДДУ(CheckRange As Range, SampleCell As Range) As Long
    Dim cell As Range
    Dim count As Long
    Dim sampleColor As Long
    Dim sampleText As String
    
    ' Получаем цвет заливки и текст эталонной ячейки B2
    sampleColor = SampleCell.Interior.Color
    sampleText = CStr(SampleCell.Value)
    
    count = 0
    
    ' Перебираем каждую ячейку в диапазоне A1:A10
    For Each cell In CheckRange
        ' Проверяем совпадение цвета заливки И текста
        If cell.Interior.Color = sampleColor And (InStr(1, CStr(cell.Value), sampleText, vbTextCompare) > 0) Then '           <- ТУТ
            count = count + 1
        End If
    Next cell
    
    СуммДДУ = count
End Function
График сменности, Вопрос со звездочкой*
 
Написал в личку.
Суммирование кол-ва ячеек по цвету заливки и текста, Суммирование кол-ва ячеек по заливке и частичному совпадения текста
 
Сколько по Вашим расчётам зелёных ячеек, содержащих букву к?
Обрезать строку после второго пробела СПРАВА
 
Код
=СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(A1;" ";ПОВТОР(" ";СТЕПЕНЬ(10;ЦЕЛОЕ(LOG10(ДЛСТР(A1)))+1)));2*СТЕПЕНЬ(10;ЦЕЛОЕ(LOG10(ДЛСТР(A1)))+1)))
для обработки пробела 160
Код
=СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ");" ";ПОВТОР(" ";СТЕПЕНЬ(10;ЦЕЛОЕ(LOG10(ДЛСТР(A1)))+1)));2*СТЕПЕНЬ(10;ЦЕЛОЕ(LOG10(ДЛСТР(A1)))+1)))
Изменено: МатросНаЗебре - 28.11.2025 16:37:02
График сменности, Вопрос со звездочкой*
 
Формулами обязательно? Макросом не так громоздко будет.
Изменено: МатросНаЗебре - 28.11.2025 15:19:10
График_дежурства_$ЕСЛИ_И$_, функция ЕСЛИ
 
Код
=ЕСЛИОШИБКА(ЕСЛИОШИБКА(ВПР(C2;$X$3:$Z$7;2;0);ВПР(B2;$X$4:$Z$5;3;0));"")
Скопировать данные во все книги папки
 
Добавьте удаление имён и после копирования листа.
Код
            DeleteNames_IL_PR wb 'копировать формулы без деспетчера имён->продолжене см. Private Sub DeleteNames
            ThisWorkbook.Worksheets("Информация_ИЛ").Cells.Copy wb.Worksheets("Информация_ИЛ").Cells 'копируем все данные с листа
            DeleteNames_IL_PR wb 'копировать формулы без деспетчера имён->продолжене см. Private Sub DeleteNames
Скопировать данные во все книги папки
 
Стало сложно без файла-примера.
как вписать массив в середину фомулы, как вписать массив в середину фомулы
 
Неочевидная сила Excel: константы массивов, которые решат кучу задач
Скопировать данные во все книги папки
 
Код
Set wb = Workbooks.Open(iCl.Value)
DeleteNames wb
...
End Sub

Private Sub DeleteNames(wb As Workbook)
    On Error Resume Next
    Dim nn As Name
    For Each nn In wb.Names
        nn.Delete
    Next
    On Error GoTo 0
End Sub
Скопировать данные во все книги папки
 
Код
Private Function sInitialFileName() As String
    sInitialFileName = ThisWorkbook.Sheets("Прог").Range("G12").Value
    If Right(sInitialFileName, 1) <> "\" Then sInitialFileName = sInitialFileName & "\"
End Function
Подтягивание данных из одного листа в другой
 
Код
=СУММЕСЛИМН(Лист1!C:C;Лист1!$A:$A;$A:$A)
Сводная таблица-отчет, помогите сделать)
 
Пишу в личку.
Сделал. Оплату получил.
Изменено: МатросНаЗебре - 27.11.2025 14:22:28
Скопировать данные в книги по названию из ячеек находящихся в одной папке
 
Эту строку
Код
Set wb = Workbooks.Open(iPath & iCl.Value)
Замените на эту
Код
Set wb = Workbooks.Open(iCl.Value)
Тогда на листе "Груша", в ячейках "A4,O4,S4,W4" ожидается полное имя файла, путь плюс имя.
Альтернативные способы выбора числа по нескольких условиям, Помогите разобраться начинающему нубу
 
Цитата
написал:
Формула Матроса вполне рабочая
Цитата
написал:
неуд ... оценка относилась к поведению на форуме
С обеими оценками согласен. Впредь обещаю)
Структура файлов из 1С в виде таблицы
 
Цитата
написал:
Только значения на кириллице заменил на латиницу в тексте
Если при копировании кода появились нечитаемые символы, то переключите раскладку на русскую.
Структура файлов из 1С в виде таблицы
 
Код
Option Explicit

Sub Преобразовать_активный_лист()
    CloseEmptyWb ""
    RangeJob ActiveSheet.UsedRange, Workbooks.Add(1).Sheets(1).Cells(1, 1)
End Sub

Private Sub RangeJob(rSource As Range, rTarget As Range)
'    Application.ScreenUpdating = False
    Dim Application_Calculation As XlCalculation: Application_Calculation = Application.Calculation: Application.Calculation = xlCalculationManual
    
    CloseEmptyWb rTarget.Parent.Parent.Name
        
    Dim ys As Long, ii As Long
    For ys = 1 To rSource.Rows.Count
        If ii < rSource.Rows(ys).OutlineLevel Then ii = rSource.Rows(ys).OutlineLevel
    Next
    If ii = 0 Then Exit Sub
    
    Dim arr As Variant, xt As Long, xs As Long, jj As Long
    ReDim arr(1 To ii)
    
    For ys = 1 To rSource.Rows.Count
        ii = rSource.Rows(ys).OutlineLevel
        arr(ii) = rSource.Cells(ys, 1).Value
        For jj = ii + 1 To UBound(arr)
            arr(jj) = Empty
        Next
        
        xt = 0
        For ii = 1 To UBound(arr)
            xt = xt + 1
            rTarget.Cells(ys, xt).Value = arr(xt)
        Next
        xs = 1
        Do
            With rSource.Cells(ys, xs).MergeArea
                xs = .Column + .Columns.Count
            End With
            If xs > rSource.Columns.Count Then Exit Do
            
            xt = xt + 1
            rTarget.Cells(ys, xt).Value = rSource.Cells(ys, xs).Value
            
            DoEvents
        Loop
    Next
    rTarget.Parent.UsedRange.EntireColumn.AutoFit

    Application.Calculation = Application_Calculation
    Application.ScreenUpdating = True
End Sub

Private Sub CloseEmptyWb(newName As String)
    Dim wb As Workbook
    For Each wb In Application.Workbooks
        If wb.Path = "" Then
            If wb.Name <> newName Then
                wb.Close False
            End If
        End If
    Next
End Sub
Вопрос по датам
 
Цитата
написал:
тут вопрос стит про целый год
- Кто поставил этот вопрос?
- А он вместе с другими буквами в кладовке лежал.
- Вопрос снять! :D

Либо используйте 12 замен(январь-января, ферваль-февраля,...), либо следуйте совету из сообщения #5 - используйте месяц в именительном падеже.
Вопрос по датам
 
Для месяца
Код
=ПОДСТАВИТЬ(СТРОЧН(ТЕКСТ(ДАТАЗНАЧ(E2&" "&ПОДСТАВИТЬ(H2;"ября";"ябрь")&" "&M2)+1;"ММММ"));"ябрь";"ября")
Для года
Код
=ЗНАЧЕН(ТЕКСТ(ДАТАЗНАЧ(E2&" "&ПОДСТАВИТЬ(H2;"ября";"ябрь")&" "&M2)+1;"ГГГГ"))

*) формулы несколько упростятся, если использовать месяц в именительном падеже "ноябрь", а не "ноября".
Вопрос по датам
 
Код
=ЗНАЧЕН(ТЕКСТ(ДАТАЗНАЧ(E2&" "&ПОДСТАВИТЬ(H2;"ября";"ябрь")&" "&M2)+1;"ДД"))
Вариант названия темы
Как вывести дату при смене месяца, прибавив +1
Перенести данные из открытой книги в закрытую в определенные листы
 
Цитата
написал:
А что если на несколько записей меньше стало?
Вы попробовали, макрос не сделал, как Вы хотели и задали вопрос?
Или просто задали вопрос?

Если первый вариант, попробуйте
Код
Вместо
If cd.Row - 1 <= rr.Row + nRows Then Exit Do
Напишите
If cd.Row <= rr.Row + nRows Then Exit Do
Изменено: МатросНаЗебре - 26.11.2025 15:50:12
Перенести данные из открытой книги в закрытую в определенные листы
 
Код
Option Explicit
 
Sub Копировать_значения_только_в_путь_в_определенной_ячейки()
    Dim rSheets As Range, journalFullname As String, sourceRange As Range
    Set rSheets = ThisWorkbook.Sheets("Подборка").UsedRange.Rows(1)
    journalFullname = ThisWorkbook.Sheets("Расположение").Range("G4").Value
    Set sourceRange = ThisWorkbook.Sheets("Данные").UsedRange
     
    CopyRange rSheets, journalFullname, sourceRange
End Sub
 
Private Sub CopyRange(rSheets As Range, journalFullname As String, sourceRange As Range)
    Dim Application_Calculation As XlCalculation: Application_Calculation = Application.Calculation: Application.Calculation = xlCalculationManual
     
    Dim journal As Workbook
    On Error Resume Next
    Set journal = Workbooks.Open(journalFullname)
    If journal Is Nothing Then
        MsgBox Err.Description, vbExclamation, "Ошибка открытия файла"
    End If
    On Error GoTo 0
    If Not journal Is Nothing Then
        Set rSheets = Intersect(rSheets, rSheets.Parent.UsedRange)
        Set sourceRange = Intersect(sourceRange, sourceRange.Parent.Range("A3").Resize(sourceRange.Parent.UsedRange.Rows.Count, sourceRange.Parent.UsedRange.Columns.Count))
         
        CopyJournal rSheets, journal, sourceRange
        Application.Calculation = Application_Calculation
         
        journal.Close True
    Else
        Application.Calculation = Application_Calculation
    End If
End Sub
 
Private Sub CopyJournal(rSheets As Range, journal As Workbook, sourceRange As Range)
    Dim clSheet As Range, shTarget As Worksheet, rTarget As Range
    For Each clSheet In rSheets.Cells
        On Error Resume Next
        Set shTarget = journal.Worksheets(clSheet.Value)
        On Error GoTo 0
        If Not shTarget Is Nothing Then
            Set rTarget = GetTargetRange(shTarget, sourceRange)
            Set rTarget = rTarget.Resize(sourceRange.Rows.Count, sourceRange.Columns.Count)
            sourceRange.Copy rTarget
            Application.CutCopyMode = False
            rTarget.Value = sourceRange.Value
             
            Set shTarget = Nothing
        End If
    Next
End Sub
 
Private Function GetTargetRange(sh As Worksheet, sourceRange As Range) As Range
    Set GetTargetRange = GetTargetRange_Exists(sh, sourceRange)
    If Not GetTargetRange Is Nothing Then Exit Function
    Set GetTargetRange = GetTargetRange_New(sh)
End Function

Private Function GetTargetRange_Exists(sh As Worksheet, sourceRange As Range) As Range
    Dim yy As Long
    For yy = 2 To sh.UsedRange.Rows.Count
        If sh.Cells(yy, 1).Value = sourceRange.Cells(1, 1).Value Then
        If sh.Cells(yy, 2).Value = sourceRange.Cells(1, 2).Value Then
        If sh.Cells(yy, 3).Value = sourceRange.Cells(1, 3).Value Then
            Set GetTargetRange_Exists = sh.Cells(yy, 1)
            AddRows sh.Cells(yy, 1), sourceRange.Rows.Count
            Exit Function
        End If
        End If
        End If
    Next
End Function

Private Sub AddRows(rr As Range, nRows As Long)
    Dim sh As Worksheet
    Set sh = rr.Parent
    
    Dim cd As Range
    Set cd = rr.End(xlDown)
    If cd.Row >= sh.Rows.Count - 2 Then Exit Sub
    
    Do
        If cd.Row >= rr.Row + nRows Then Exit Do
        cd.EntireRow.Insert
        DoEvents
    Loop
    
    Do
        If cd.Row - 1 <= rr.Row + nRows Then Exit Do
        cd.Cells(0, 1).EntireRow.Delete
        DoEvents
    Loop
End Sub

Private Function GetTargetRange_New(sh As Worksheet) As Range
    Dim cl As Range, yy As Long, ym As Long
    ym = 1
    For Each cl In sh.UsedRange.Rows(sh.UsedRange.Rows.Count + 2).Cells
        yy = cl.End(xlUp).Row + 1
        If ym < yy Then ym = yy
    Next
    Set GetTargetRange_New = sh.Cells(ym, 1)
End Function
Альтернативные способы выбора числа по нескольких условиям, Помогите разобраться начинающему нубу
 
Код
=ОКРУГЛ(0,5*(E10+0,5)-5,5;0)
Аналог без ЕСЛИ.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 293 След.
Наверх