stalber
Дата: Вторник, 30.04.2019, 16:11 |
Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 370
Репутация:
7
±
Замечаний:
40% ±
Excel 2007
День добрый, подскажите пожалуйста формулу. Имеется такая формула:Код
=ЕСЛИОШИБКА(ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);Лист1!D2:D9999);"")
Данная формула, выводит нижние числа из Лист1 если вся нижняя строка имеет число больше 0, если одно из чисел имеет 0 то формула берёт выше данные, там где все заполнены числа и они больше нуля. Эту формулу необходимо отредактировать, нужно добавить в неё дополнительное условие: Формула сначала смотрит нижнюю строку в Лист1, если она заполнена, то берёт её, если там обнаруживает 0, то обращается к Лист2 к такой же строке, если там заполнена то выводит, если там обнаруживает 0, смотрит выше данные в Лист1 и так поочерёдно ищет заполненную нижнюю строку из двух листов. То есть формуле необходимо смотреть нижнюю строку в ДВУХ листах, и там где заполнены числа больше 0, ту строку и вывести. Я заполняю данные поочерёдно, сначала Лист1 затем Лист2, если в Лист1 все числа >0 то формула их выводит, затем заполняю Лист2 если и там все >0 то тогда эти числа выводит.
День добрый, подскажите пожалуйста формулу. Имеется такая формула:Код
=ЕСЛИОШИБКА(ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);Лист1!D2:D9999);"")
Данная формула, выводит нижние числа из Лист1 если вся нижняя строка имеет число больше 0, если одно из чисел имеет 0 то формула берёт выше данные, там где все заполнены числа и они больше нуля. Эту формулу необходимо отредактировать, нужно добавить в неё дополнительное условие: Формула сначала смотрит нижнюю строку в Лист1, если она заполнена, то берёт её, если там обнаруживает 0, то обращается к Лист2 к такой же строке, если там заполнена то выводит, если там обнаруживает 0, смотрит выше данные в Лист1 и так поочерёдно ищет заполненную нижнюю строку из двух листов. То есть формуле необходимо смотреть нижнюю строку в ДВУХ листах, и там где заполнены числа больше 0, ту строку и вывести. Я заполняю данные поочерёдно, сначала Лист1 затем Лист2, если в Лист1 все числа >0 то формула их выводит, затем заполняю Лист2 если и там все >0 то тогда эти числа выводит. stalber
Сообщение отредактировал stalber - Вторник, 30.04.2019, 16:12
Ответить
Сообщение День добрый, подскажите пожалуйста формулу. Имеется такая формула:Код
=ЕСЛИОШИБКА(ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);Лист1!D2:D9999);"")
Данная формула, выводит нижние числа из Лист1 если вся нижняя строка имеет число больше 0, если одно из чисел имеет 0 то формула берёт выше данные, там где все заполнены числа и они больше нуля. Эту формулу необходимо отредактировать, нужно добавить в неё дополнительное условие: Формула сначала смотрит нижнюю строку в Лист1, если она заполнена, то берёт её, если там обнаруживает 0, то обращается к Лист2 к такой же строке, если там заполнена то выводит, если там обнаруживает 0, смотрит выше данные в Лист1 и так поочерёдно ищет заполненную нижнюю строку из двух листов. То есть формуле необходимо смотреть нижнюю строку в ДВУХ листах, и там где заполнены числа больше 0, ту строку и вывести. Я заполняю данные поочерёдно, сначала Лист1 затем Лист2, если в Лист1 все числа >0 то формула их выводит, затем заполняю Лист2 если и там все >0 то тогда эти числа выводит. Автор - stalber Дата добавления - 30.04.2019 в 16:11
Karataev
Дата: Вторник, 30.04.2019, 22:48 |
Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация:
533
±
Замечаний:
0% ±
Excel
Может быть будет достаточно макроса (не знаю, как сделать формулой).
[vba]
Код
Sub Вывести_нижнюю() Dim sh1 As Worksheet, sh2 As Worksheet, shRes As Worksheet Dim r1 As Long, r2 As Long, j As Long Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") Set shRes = Worksheets("Формула") shRes.Range("C12:E12").ClearContents r1 = sh1.Cells(sh1.Rows.Count, "D").End(xlUp).Row r2 = sh2.Cells(sh2.Rows.Count, "D").End(xlUp).Row Do If r1 = 1 And r2 = 1 Then Exit Do End If If r1 > 1 Then If Проверка_строки(sh1.Cells(r1, "D").Resize(, 3), shRes) = True Then Exit Do End If r1 = r1 - 1 End If If r2 > 1 Then If Проверка_строки(sh2.Cells(r2, "D").Resize(, 3), shRes) = True Then Exit Do End If r2 = r2 - 1 End If Loop MsgBox "Готово!", vbInformation End Sub Private Function Проверка_строки(objRow As Range, shRes As Worksheet) As Boolean Dim j As Long For j = 1 To objRow.Cells.Count If objRow.Cells(1, j).Value <= 0 Then Exit Function End If Next j shRes.Range("C12:E12").Value = objRow.Value Проверка_строки = True End Function
[/vba]
Может быть будет достаточно макроса (не знаю, как сделать формулой).
[vba]
Код
Sub Вывести_нижнюю() Dim sh1 As Worksheet, sh2 As Worksheet, shRes As Worksheet Dim r1 As Long, r2 As Long, j As Long Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") Set shRes = Worksheets("Формула") shRes.Range("C12:E12").ClearContents r1 = sh1.Cells(sh1.Rows.Count, "D").End(xlUp).Row r2 = sh2.Cells(sh2.Rows.Count, "D").End(xlUp).Row Do If r1 = 1 And r2 = 1 Then Exit Do End If If r1 > 1 Then If Проверка_строки(sh1.Cells(r1, "D").Resize(, 3), shRes) = True Then Exit Do End If r1 = r1 - 1 End If If r2 > 1 Then If Проверка_строки(sh2.Cells(r2, "D").Resize(, 3), shRes) = True Then Exit Do End If r2 = r2 - 1 End If Loop MsgBox "Готово!", vbInformation End Sub Private Function Проверка_строки(objRow As Range, shRes As Worksheet) As Boolean Dim j As Long For j = 1 To objRow.Cells.Count If objRow.Cells(1, j).Value <= 0 Then Exit Function End If Next j shRes.Range("C12:E12").Value = objRow.Value Проверка_строки = True End Function
[/vba]
Karataev
Ответить
Сообщение Может быть будет достаточно макроса (не знаю, как сделать формулой).
[vba]
Код
Sub Вывести_нижнюю() Dim sh1 As Worksheet, sh2 As Worksheet, shRes As Worksheet Dim r1 As Long, r2 As Long, j As Long Set sh1 = Worksheets("Лист1") Set sh2 = Worksheets("Лист2") Set shRes = Worksheets("Формула") shRes.Range("C12:E12").ClearContents r1 = sh1.Cells(sh1.Rows.Count, "D").End(xlUp).Row r2 = sh2.Cells(sh2.Rows.Count, "D").End(xlUp).Row Do If r1 = 1 And r2 = 1 Then Exit Do End If If r1 > 1 Then If Проверка_строки(sh1.Cells(r1, "D").Resize(, 3), shRes) = True Then Exit Do End If r1 = r1 - 1 End If If r2 > 1 Then If Проверка_строки(sh2.Cells(r2, "D").Resize(, 3), shRes) = True Then Exit Do End If r2 = r2 - 1 End If Loop MsgBox "Готово!", vbInformation End Sub Private Function Проверка_строки(objRow As Range, shRes As Worksheet) As Boolean Dim j As Long For j = 1 To objRow.Cells.Count If objRow.Cells(1, j).Value <= 0 Then Exit Function End If Next j shRes.Range("C12:E12").Value = objRow.Value Проверка_строки = True End Function
[/vba]
Автор - Karataev Дата добавления - 30.04.2019 в 22:48
stalber
Дата: Четверг, 02.05.2019, 12:37 |
Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 370
Репутация:
7
±
Замечаний:
40% ±
Excel 2007
Может быть будет достаточно макроса (не знаю, как сделать формулой).
Спасибо за помощь. Тему подниму всё таки, хотелось бы формулу получить, помогите пожалуйста.
Может быть будет достаточно макроса (не знаю, как сделать формулой).
Спасибо за помощь. Тему подниму всё таки, хотелось бы формулу получить, помогите пожалуйста.stalber
Ответить
Сообщение Может быть будет достаточно макроса (не знаю, как сделать формулой).
Спасибо за помощь. Тему подниму всё таки, хотелось бы формулу получить, помогите пожалуйста.Автор - stalber Дата добавления - 02.05.2019 в 12:37
Pelena
Дата: Четверг, 02.05.2019, 14:08 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация:
4413
±
Замечаний:
±
Excel 365 & Mac Excel
Так подойдёт?Код
=ЕСЛИОШИБКА(ЕСЛИ(ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);СТРОКА(Лист1!$D$2:$D$9999))>ПРОСМОТР(;-1/(Лист2!$D$2:$D$9999>0)/(Лист2!$E$2:$E$9999>0)/(Лист2!$F$2:$F$9999>0);СТРОКА(Лист2!$D$2:$D$9999));ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);Лист1!D2:D9999);ПРОСМОТР(;-1/(Лист2!$D$2:$D$9999>0)/(Лист2!$E$2:$E$9999>0)/(Лист2!$F$2:$F$9999>0);Лист2!D2:D9999));"")
Так подойдёт?Код
=ЕСЛИОШИБКА(ЕСЛИ(ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);СТРОКА(Лист1!$D$2:$D$9999))>ПРОСМОТР(;-1/(Лист2!$D$2:$D$9999>0)/(Лист2!$E$2:$E$9999>0)/(Лист2!$F$2:$F$9999>0);СТРОКА(Лист2!$D$2:$D$9999));ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);Лист1!D2:D9999);ПРОСМОТР(;-1/(Лист2!$D$2:$D$9999>0)/(Лист2!$E$2:$E$9999>0)/(Лист2!$F$2:$F$9999>0);Лист2!D2:D9999));"")
Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Сообщение Так подойдёт?Код
=ЕСЛИОШИБКА(ЕСЛИ(ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);СТРОКА(Лист1!$D$2:$D$9999))>ПРОСМОТР(;-1/(Лист2!$D$2:$D$9999>0)/(Лист2!$E$2:$E$9999>0)/(Лист2!$F$2:$F$9999>0);СТРОКА(Лист2!$D$2:$D$9999));ПРОСМОТР(;-1/(Лист1!$D$2:$D$9999>0)/(Лист1!$E$2:$E$9999>0)/(Лист1!$F$2:$F$9999>0);Лист1!D2:D9999);ПРОСМОТР(;-1/(Лист2!$D$2:$D$9999>0)/(Лист2!$E$2:$E$9999>0)/(Лист2!$F$2:$F$9999>0);Лист2!D2:D9999));"")
Автор - Pelena Дата добавления - 02.05.2019 в 14:08