Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вывести данные в график с датами по нескольким критериям - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вывести данные в график с датами по нескольким критериям
serena6025 Дата: Четверг, 27.10.2022, 19:20 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Добрый вечер.
Помогите, пожалуйста, с графиком поездок автомобиля.
Есть график с отображением дат. Есть транспорт и ездки этого транспорта по датам.
Необходимо в графике на Листе1 прописать формулу, чтобы проставлялись страны из колонки место разгрузки -(I), только в те даты когда тягач был в рейсе, с учетом перецепок, то есть если стоит перецепка, значит он отдал груз другому автомобилю и освободился, в графике у первого должно стоять пусто в дату после перецепки, а у второго тягоча (перецепки) началась ездка, значит у него должна быть закрашена ячейка. :'(
Заранее спасибо.
К сообщению приложен файл: 1111.xls (35.5 Kb)
 
Ответить
СообщениеДобрый вечер.
Помогите, пожалуйста, с графиком поездок автомобиля.
Есть график с отображением дат. Есть транспорт и ездки этого транспорта по датам.
Необходимо в графике на Листе1 прописать формулу, чтобы проставлялись страны из колонки место разгрузки -(I), только в те даты когда тягач был в рейсе, с учетом перецепок, то есть если стоит перецепка, значит он отдал груз другому автомобилю и освободился, в графике у первого должно стоять пусто в дату после перецепки, а у второго тягоча (перецепки) началась ездка, значит у него должна быть закрашена ячейка. :'(
Заранее спасибо.

Автор - serena6025
Дата добавления - 27.10.2022 в 19:20
msi2102 Дата: Пятница, 28.10.2022, 11:12 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Что-то башка сегодня не соображает, наверное потому что пятница, все мысли не о том :D
Получилась большая, может кто-то короче напишет (для удобства написания перенес на один лист, на новый сами перенесёте). Наверное это лучше использовать VBA или PQ
Код
=ЕСЛИОШИБКА(ИНДЕКС(H2:H9;ЕСЛИОШИБКА(ПОИСКПОЗ($B13:$B25&C$12:DC$12;$B$2:$B$9&$D$2:$D$9;0);ЕСЛИОШИБКА(ПОИСКПОЗ($B13:$B25&C$12:DC$12;$F$2:$F$9&$E$2:$E$9;0);"")));"")&ЕСЛИОШИБКА(ИНДЕКС(ВЫБОР(ЕСЛИ($E$2:$E$9="";1;2);$I$2:$I$9;$H$2:$H$9);ЕСЛИОШИБКА(ПОИСКПОЗ($B13:$B25&C$12:DC$12;$B$2:$B$9&ВЫБОР(ЕСЛИ($E$2:$E$9="";1;2);$G$2:$G$9;$E$2:$E$9);0);ЕСЛИОШИБКА(ПОИСКПОЗ($B13:$B25&C$12:DC$12;$G$2:$G$9&$E$2:$E$9;0);"")));"")

Условное форматирование не стал писать, думалка не думает
Блин, формула косячно работает если есть повторы в тягачах сцепки (удалять не буду, может исправите сами). Вот макрос написал, вроде работает правильно
[vba]
Код
Sub Макрос3()
    Dim arr1 As Variant, arr2 As Variant, rng As Range, n As Integer, i As Integer
    lr1 = Worksheets("Data").Cells(Rows.Count, 2).End(xlUp).Row
    arr1 = Worksheets("Data").Range(Worksheets("Data").Cells(2, 2), Worksheets("Data").Cells(lr1, 9))
    With Worksheets("Лист1")
        lr2 = .Cells(Rows.Count, 2).End(xlUp).Row
        lс2 = .Cells(2, Columns.Count).End(xlToLeft).Column
        arr2 = .Range(Worksheets("Лист1").Cells(3, 2), .Cells(lr2, lс2))
        .Range(Worksheets("Лист1").Cells(3, 3), .Cells(lr2, lс2)).Interior.Color = 16777215
        .Range(Worksheets("Лист1").Cells(3, 3), .Cells(lr2, lс2)) = ""
        For n = 1 To UBound(arr1)
            auto1 = arr1(n, 1)
            auto2 = arr1(n, 5)
            d1 = arr1(n, 3)
            d2 = arr1(n, 4)
            d3 = arr1(n, 6)
            pg = arr1(n, 7)
            rz = arr1(n, 8)
            For i = 1 To UBound(arr2)
                If arr2(i, 1) = auto1 Then
                    arr2(i, DatePart("y", CDate(d1)) + 1) = pg
                    If d2 = "" Then
                        arr2(i, DatePart("y", CDate(d3)) + 1) = rz
                        If rng Is Nothing Then Set rng = .Range(.Cells(i + 2, DatePart("y", CDate(d1)) + 2), .Cells(i + 2, DatePart("y", CDate(d3)) + 2)) Else Set rng = Union(rng, .Range(.Cells(i + 2, DatePart("y", CDate(d1)) + 2), .Cells(i + 2, DatePart("y", CDate(d3)) + 2)))
                    Else
                        arr2(i, DatePart("y", CDate(d2)) + 1) = pg
                        If rng Is Nothing Then Set rng = .Range(.Cells(i + 2, DatePart("y", CDate(d1)) + 2), .Cells(i + 2, DatePart("y", CDate(d2)) + 2)) Else Set rng = Union(rng, .Range(.Cells(i + 2, DatePart("y", CDate(d1)) + 2), .Cells(i + 2, DatePart("y", CDate(d2)) + 2)))
                    End If
                ElseIf arr2(i, 1) = auto2 Then
                    arr2(i, DatePart("y", CDate(d2)) + 1) = pg
                    arr2(i, DatePart("y", CDate(d3)) + 1) = rz
                    If rng Is Nothing Then Set rng = .Range(.Cells(i + 2, DatePart("y", CDate(d2)) + 2), .Cells(i + 2, DatePart("y", CDate(d3)) + 2)) Else Set rng = Union(rng, .Range(.Cells(i + 2, DatePart("y", CDate(d2)) + 2), .Cells(i + 2, DatePart("y", CDate(d3)) + 2)))
                End If
            Next
        Next
        .Range(.Cells(3, 2), .Cells(lr2, lс2)) = arr2
    End With
    If Not rng Is Nothing Then rng.Interior.Color = vbRed
End Sub
[/vba]
К сообщению приложен файл: 11112-1-.xlsm (36.8 Kb)


Сообщение отредактировал msi2102 - Пятница, 28.10.2022, 13:58
 
Ответить
СообщениеЧто-то башка сегодня не соображает, наверное потому что пятница, все мысли не о том :D
Получилась большая, может кто-то короче напишет (для удобства написания перенес на один лист, на новый сами перенесёте). Наверное это лучше использовать VBA или PQ
Код
=ЕСЛИОШИБКА(ИНДЕКС(H2:H9;ЕСЛИОШИБКА(ПОИСКПОЗ($B13:$B25&C$12:DC$12;$B$2:$B$9&$D$2:$D$9;0);ЕСЛИОШИБКА(ПОИСКПОЗ($B13:$B25&C$12:DC$12;$F$2:$F$9&$E$2:$E$9;0);"")));"")&ЕСЛИОШИБКА(ИНДЕКС(ВЫБОР(ЕСЛИ($E$2:$E$9="";1;2);$I$2:$I$9;$H$2:$H$9);ЕСЛИОШИБКА(ПОИСКПОЗ($B13:$B25&C$12:DC$12;$B$2:$B$9&ВЫБОР(ЕСЛИ($E$2:$E$9="";1;2);$G$2:$G$9;$E$2:$E$9);0);ЕСЛИОШИБКА(ПОИСКПОЗ($B13:$B25&C$12:DC$12;$G$2:$G$9&$E$2:$E$9;0);"")));"")

Условное форматирование не стал писать, думалка не думает
Блин, формула косячно работает если есть повторы в тягачах сцепки (удалять не буду, может исправите сами). Вот макрос написал, вроде работает правильно
[vba]
Код
Sub Макрос3()
    Dim arr1 As Variant, arr2 As Variant, rng As Range, n As Integer, i As Integer
    lr1 = Worksheets("Data").Cells(Rows.Count, 2).End(xlUp).Row
    arr1 = Worksheets("Data").Range(Worksheets("Data").Cells(2, 2), Worksheets("Data").Cells(lr1, 9))
    With Worksheets("Лист1")
        lr2 = .Cells(Rows.Count, 2).End(xlUp).Row
        lс2 = .Cells(2, Columns.Count).End(xlToLeft).Column
        arr2 = .Range(Worksheets("Лист1").Cells(3, 2), .Cells(lr2, lс2))
        .Range(Worksheets("Лист1").Cells(3, 3), .Cells(lr2, lс2)).Interior.Color = 16777215
        .Range(Worksheets("Лист1").Cells(3, 3), .Cells(lr2, lс2)) = ""
        For n = 1 To UBound(arr1)
            auto1 = arr1(n, 1)
            auto2 = arr1(n, 5)
            d1 = arr1(n, 3)
            d2 = arr1(n, 4)
            d3 = arr1(n, 6)
            pg = arr1(n, 7)
            rz = arr1(n, 8)
            For i = 1 To UBound(arr2)
                If arr2(i, 1) = auto1 Then
                    arr2(i, DatePart("y", CDate(d1)) + 1) = pg
                    If d2 = "" Then
                        arr2(i, DatePart("y", CDate(d3)) + 1) = rz
                        If rng Is Nothing Then Set rng = .Range(.Cells(i + 2, DatePart("y", CDate(d1)) + 2), .Cells(i + 2, DatePart("y", CDate(d3)) + 2)) Else Set rng = Union(rng, .Range(.Cells(i + 2, DatePart("y", CDate(d1)) + 2), .Cells(i + 2, DatePart("y", CDate(d3)) + 2)))
                    Else
                        arr2(i, DatePart("y", CDate(d2)) + 1) = pg
                        If rng Is Nothing Then Set rng = .Range(.Cells(i + 2, DatePart("y", CDate(d1)) + 2), .Cells(i + 2, DatePart("y", CDate(d2)) + 2)) Else Set rng = Union(rng, .Range(.Cells(i + 2, DatePart("y", CDate(d1)) + 2), .Cells(i + 2, DatePart("y", CDate(d2)) + 2)))
                    End If
                ElseIf arr2(i, 1) = auto2 Then
                    arr2(i, DatePart("y", CDate(d2)) + 1) = pg
                    arr2(i, DatePart("y", CDate(d3)) + 1) = rz
                    If rng Is Nothing Then Set rng = .Range(.Cells(i + 2, DatePart("y", CDate(d2)) + 2), .Cells(i + 2, DatePart("y", CDate(d3)) + 2)) Else Set rng = Union(rng, .Range(.Cells(i + 2, DatePart("y", CDate(d2)) + 2), .Cells(i + 2, DatePart("y", CDate(d3)) + 2)))
                End If
            Next
        Next
        .Range(.Cells(3, 2), .Cells(lr2, lс2)) = arr2
    End With
    If Not rng Is Nothing Then rng.Interior.Color = vbRed
End Sub
[/vba]

Автор - msi2102
Дата добавления - 28.10.2022 в 11:12
serena6025 Дата: Суббота, 29.10.2022, 13:22 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

msi2102, Спасибо Вам огромное! Макрос классный! Попробую перенести в рабочий файл. Я в макросах не сильна, попробую разобраться.
Я формулу написала, но она берет только последнюю дату выгрузки, не проставляет дату загрузки и промежуточную(выдает Н/Д) Сама ошибка в середине формулы, видимо что-то не учла. Может кто-нибудь сможет глянуть где ошибка.
Сама формула из раб.файла

=ЕСЛИ(СУММЕСЛИМН('1'!$A:$A;'1'!$AA:$AA;$B14&H$2>0;'1'!$X:$X;$B14&I$2=0);"";ЕСЛИ(СУММЕСЛИМН('1'!$A:$A;'1'!$AA:$AA;$B14&H$2=0;'1'!$X:$X;$B14&I$2=0);H14;ИНДЕКС('1'!$A$1:$AG$1002;ПОИСКПОЗ($B14&I$2;'1'!$AA:$AA;0);14)))

Проблема именно вот тут по моему -ЕСЛИ(СУММЕСЛИМН('1'!$A:$A;'1'!$AA:$AA;$B14&H$2=0;'1'!$X:$X;$B14&I$2=0); на неё эксель ссылается как на ошибку и я не понимаю почему он ставит только в дату разгрузки страну а остальное Н/Д
 
Ответить
Сообщениеmsi2102, Спасибо Вам огромное! Макрос классный! Попробую перенести в рабочий файл. Я в макросах не сильна, попробую разобраться.
Я формулу написала, но она берет только последнюю дату выгрузки, не проставляет дату загрузки и промежуточную(выдает Н/Д) Сама ошибка в середине формулы, видимо что-то не учла. Может кто-нибудь сможет глянуть где ошибка.
Сама формула из раб.файла

=ЕСЛИ(СУММЕСЛИМН('1'!$A:$A;'1'!$AA:$AA;$B14&H$2>0;'1'!$X:$X;$B14&I$2=0);"";ЕСЛИ(СУММЕСЛИМН('1'!$A:$A;'1'!$AA:$AA;$B14&H$2=0;'1'!$X:$X;$B14&I$2=0);H14;ИНДЕКС('1'!$A$1:$AG$1002;ПОИСКПОЗ($B14&I$2;'1'!$AA:$AA;0);14)))

Проблема именно вот тут по моему -ЕСЛИ(СУММЕСЛИМН('1'!$A:$A;'1'!$AA:$AA;$B14&H$2=0;'1'!$X:$X;$B14&I$2=0); на неё эксель ссылается как на ошибку и я не понимаю почему он ставит только в дату разгрузки страну а остальное Н/Д

Автор - serena6025
Дата добавления - 29.10.2022 в 13:22
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!