Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Последние сообщения

#81
Цитата: Naka9 от 13.03.2025, 16:37:42Подскажите, пожалуйста

https://docs.google.com/spreadsheets/d/1fz1udx1vjdL1W6ANuyc3j_VusWopOVKqIohGlbXM1gU/edit?gid=0#gid=0

Посчитать данные за 2024 год поквартально при условиях :
1) Компания = Солюшенс и Гудтех
2) Столбец I (Статьи ) - консалтинг
3) Столбец F (НДС) - если НДС, то то делим на 1,2, если без НДС - то оставляем

Делала на примере Статьи единовременно  и 2023 года, какая то дичь получается  >:(

Можете глянуть, пожалуйста  ???


=СУММПРОИЗВ(('Факт по продажам 2020 (акты)'!A4:A270="ГудтТех")+('Факт по продажам 2020 (акты)'!A4:A270="Солюшенс");('Факт по продажам 2020 (акты)'!I4:I270="прочее");ЕСЛИ(('Факт по продажам 2020 (акты)'!F4:F270="Без НДС");('Факт по продажам 2020 (акты)'!AY4:AY270)+('Факт по продажам 2020 (акты)'!AZ4:AZ270)+('Факт по продажам 2020 (акты)'!BA4:BA270);(('Факт по продажам 2020 (акты)'!AY4:AY270)+('Факт по продажам 2020 (акты)'!AZ4:AZ270)+('Факт по продажам 2020 (акты)'!BA4:BA270))/1,2))

Вот так считает верно, но мне не нравится что нужно выделять каждый столбец, хотелось бы автоматизировать, чтобы данные сами находились по году или хотя бы использовать названия месяцев (Январь, Февраль, Март)
#82
Цитата: Дмитрий Щербаков(The_Prist) от 27.02.2025, 20:32:49Как-то так:
=ЕСЛИОШИБКА(СУММПРОИЗВ((('Факт по продажам 2020 (акты)'!$A$4:$A$17=$A$1)+('Факт по продажам 2020 (акты)'!$A$4:$A$17=$B$1))*('Факт по продажам 2020 (акты)'!$C$4:$C$17=$A8)*СМЕЩ('Факт по продажам 2020 (акты)'!A4;0;ПОИСКПОЗ($B$3;'Факт по продажам 2020 (акты)'!1:1;0)+SWITCH(C$3;$C$3;0;$D$3;1;$E$3;2;$F$3;3)-1;14;3));0)только обращаю внимание: диапазоны указаны от 4 до 17-ой строки, т.е. 14 строк. Соответственно, если строк будет больше - надо изменить везде эти диапазоны, а так же изменить в СМЕЩ 14 на это же кол-во строк.


Подскажите, пожалуйста

https://docs.google.com/spreadsheets/d/1fz1udx1vjdL1W6ANuyc3j_VusWopOVKqIohGlbXM1gU/edit?gid=0#gid=0

Посчитать данные за 2024 год поквартально при условиях :
1) Компания = Солюшенс и Гудтех
2) Столбец I (Статьи ) - консалтинг
3) Столбец F (НДС) - если НДС, то то делим на 1,2, если без НДС - то оставляем

Делала на примере Статьи единовременно  и 2023 года, какая то дичь получается  >:(

Можете глянуть, пожалуйста  ???
#83
В этом нет необходимости.
#84
Вопросы по Excel и VBA / Парсинг сайта на MAC OS !
Последний ответ от 312kbps - 13.03.2025, 10:31:53
я делаю первые шаги, не судите строго )

суть в том что хотел написать парсинг сайта на VB MAC OS
поискал информацию в инете прежде чем к вам обратиться

дело в том что в маке это не работает
 CreateObject("InternetExplorer.Application")

подскажите пожалуйста, какой в моем случае надо создать объект ?
#85
Спасибо, огромное. :-D  Хотел бы вас отблагодарить, куда могу отправить на чай?
#86
Выделяете диапазон F1-F40, начиная с ячейки F1(это важно). И создаете формулу для условного форматирования:
=И($C1<>"";$F1="")Она будет работать именно так, как ожидаете.
Рекомендовал бы ознакомиться:
Использование формулы для определения ячеек для форматирования
Сборник формул для условного форматирования
#87
Вопросы по Excel и VBA / Re: Сбор данных из нескольких ...
Последний ответ от kosteg - 13.03.2025, 03:59:47
Проблема решена, код прилагаю. Думаю, добавлю ещё в него статус-бар, т.к. при обработке 500-700 файлов он будет очень полезен для наглядности процесса.
Sub MergeTablesFromMultipleWorkbooks()
    Dim targetSheet As Worksheet
    Dim sourceFolder As String
    Dim sourceFile As String
    Dim sourceWorkbook As Workbook
    Dim sourceRange As Range
    Dim visibleData As Range
    Dim lastRow As Long
    Dim firstFile As Boolean
    Dim startRow As Long
    Dim fileName As String
   
    ' Настройки
    Set targetSheet = ThisWorkbook.Sheets("Объединенные данные")
    sourceFolder = GetFolderPath()
    If sourceFolder = "" Then Exit Sub
   
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    firstFile = True
    sourceFile = Dir(sourceFolder & "\*.xls*")
   
    ' Инициализация целевого листа
    targetSheet.Cells.Delete
    targetSheet.Range("A1").Value = "Источник файла"
   
    Do While sourceFile <> ""
        If sourceFile <> ThisWorkbook.Name Then
            Set sourceWorkbook = Workbooks.Open(sourceFolder & "\" & sourceFile)
            fileName = Split(sourceFile, ".")(0)
           
            With sourceWorkbook.Sheets("Расчет суммы кредита") 'ТУТ ИМЯ ВАШЕГО ЛИСТА
                ' Снятие защиты листа с проверкой
                On Error Resume Next
                .Unprotect Password:="-П А Р О Л Ь-" ' Укажите ваш пароль если известен или закомментируйте блок
                On Error GoTo 0
               
                ' Проверка на пустой файл
                lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
                If lastRow < 1 Then
                    MsgBox "Файл " & sourceFile & " пуст", vbExclamation
                    GoTo CloseWorkbook
                End If
               
                Set sourceRange = .Range("A1:k" & lastRow) 'ТУТ УКАЖИТЕ ДИАПАЗОН КОПИРОВАНИЯ
            End With
           
            With targetSheet
                If firstFile Then
                    ' Копируем заголовки как значения
                    sourceRange.Rows(1).Copy
                    .Range("B1").PasteSpecial xlPasteValues
                    firstFile = False
                End If
               
                ' Получаем видимые данные с обработкой ошибок
                On Error Resume Next
                Set visibleData = sourceRange.Offset(1).Resize(sourceRange.Rows.Count - 1) _
                                  .SpecialCells(xlCellTypeVisible)
                On Error GoTo 0
               
                ' Проверяем наличие видимых данных
                If Not visibleData Is Nothing Then
                    startRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
                   
                    ' Копируем только значения
                    On Error Resume Next
                    .Range("B" & startRow).Resize(visibleData.Rows.Count, visibleData.Columns.Count).Value = _
                        visibleData.Value
                    On Error GoTo 0
                   
                    ' Заполняем колонку с именем файла
                    lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
                    If lastRow >= startRow Then
                        .Range("A" & startRow & ":A" & lastRow).Value = fileName
                    End If
                Else
                    MsgBox "В файле " & sourceFile & " нет видимых данных", vbExclamation
                End If
            End With

CloseWorkbook:
            sourceWorkbook.Close False
            Set visibleData = Nothing
        End If
        sourceFile = Dir()
    Loop
   
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    ' Форматирование результата
    With targetSheet
        .Rows(1).Font.Bold = True
'        .Columns.AutoFit
        If .Cells(1, 2) = "" Then .Cells(1, 2) = "Нет данных"
    End With
   
    MsgBox "Объединено " & targetSheet.Cells(targetSheet.Rows.Count, 2).End(xlUp).Row - 1 & " строк", vbInformation
End Sub
Function GetFolderPath() As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выберите папку с исходными файлами"
        .AllowMultiSelect = False
        If .Show = -1 Then
            GetFolderPath = .SelectedItems(1)
        Else
            GetFolderPath = ""
        End If
    End With
End Function
#88
Точно, вот я слепой.... А как это сразу прописать на промежуток С1-С40? Допустим если в С5 введу данные, то F5 выделяется цветом? Как я понимаю нужно изменить формулу и растянуть на другие ячейки? А то если сейчас растягивать F10 и ввести данные в  ячейку С10 выделяются все ячейки от F1-F40.
#89
          Добрый День Уважаемые Форумчане!

Мой заказ макроса схож с макросами находящимися на странице:
    https://www.excel-vba.ru/chto-umeet-excel/kak-udalit-stroki-po-usloviyu/
      Как удалить строки по условию?
Но они не подходят под мои условия задания.
Я не стал Вам файл присылать с примером, так как в описании задания написно подробно.
Данные с 6 числами(Например: 1 2 3 4 5 6 и так далее) будут расположенны на первом листе в столбце А,  список может быть 1.000.000 штук
Начало работы:
- Включаю макрос: ALT+F8
- Выходит окошечко для ввода данных и я ввожу пять чисел  2 3 4 5 6, так как в комбинации из 6 чисел 1 2 3 4 5 6 имеются эти числа то строка
      с комбинацией 1 2 3 4 5 6  полностью удаляется
- И наконец выходит другое окошечко в котором нужно указать номер столбца для удаления.
    Всё готово!
Дополнительная информация:
В комбинации из 6 чисел присутствует 5 уникальных, в комбинации 6 чисел присутствует 15 уникальных и так далее.
Например в столбце А Находятся комбинации из шести чисел количеством 1.000.000 штук. Я хочу удалить в этих комбинациях из шести чисел только те
строки полностью, если в этой комбинации присутствует хотя бы одна комбинация из 5 чисел, которую я задал в окошечке для удаления.
Например в столбце А есть комбинация из шести чисел:
- 1 2 3 4 5 6
Я задаю в ОКОШЕЧКЕ для удаления комбинацию из 5 чисел: 1 2 3 4 5 или 2 3 4 5 6 или 1 3 4 5 6 и так далее то строка с комбинацией 1 2 3 4 5 6 полностью
удаляется.
Здесь я дал пример с 5 числами для удаления из 6, но мне также нужно удалять 4 и 3 из 6.
Думаю я объяснил доходчиво и понятно.
Большое Вам спасибо!
#90
А почему должно работать? :)
Вопрос без подвоха: Вы условное форматирование умеете создавать? Понимаете как оно работает? Это я к чему: выделите ячейку F1 -перейдите на вкладку Главная -Условное форматирование -Управление правилами.
И посмотрите, какая у Вас там формула для этой ячейки. Ничего не смущает? В первом сообщении Вы пишете про F10, а в примере F1. Но формулу Вы все равно просто скопировали, не поменяв номера строк.
Яндекс.Метрика Рейтинг@Mail.ru