Страницы: 1
RSS
Отображение последнего введенного значения из списка
 
Идея в том, что один человек заполняет отчёты строка за строкой в одном Excel файле раз в месяц (формирует список).
Мне же необходимо чтобы в моем Excel файле выводилась лишь последняя запись из списка из файла того человека.
Помогите пожалуйста советом как это можно организовать?
 
Макросом. Формулой. Вручную. Да как захотите можете делать.
 
Я могу это сделать вручную. Например, так
=IF(ISBLANK(G4)=FALSE,G4,(IF(ISBLANK(F4)=FALSE,F4,(IF(ISBLANK(E4)=FALSE,E4,(IF(ISBLANK(D4)=FALSE,D4,C4)))))))
Но так получается не эстетично. Уверен, что должен быть способ проще.
 
Есть конечно проще. Поищите "определить последннюю заполненную ячейку" - узнаете много интересного...
 
Vital, неплохо бы уточнить про "последнюю запись" - можно понять двояко: последняя - это в последней строке, или последняя по времени.
 
Как получить последннюю заполненную ячейку формулой?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist пишет:
Как получить последннюю заполненную ячейку формулой?
Спасибо за ссылку. Однако,
Получаем последнюю ячейку со смешанным содержимым - не работает. То есть он показывает номер строки, но не содержимое ячейки.
 
Цитата
Юрий М пишет:
Vital, неплохо бы уточнить про "последнюю запись" - можно понять двояко: последняя - это в последней строке, или последняя по времени.
Последняя запись в моём случае - это последняя запись в строке.
 
Макросом устроит?
 
Цитата
Vital пишет:
Последняя запись в моём случае - это последняя запись в строке.
Здесь тоже неясности: Нашли номер этой строки. Допустим, строка - это пять ячеек. Значение какой из них нужно отобразить?
 
Цитата
Vital пишет:
Получаем последнюю ячейку со смешанным содержимым - не работает. То есть он показывает номер строки, но не содержимое ячейки.
Логично. А ИНДЕКС Вы не пробовали применить?
=ИНДЕКС(A1:A99;ПРОСМОТР(2;1/(A1:A100<>"");СТРОКА(A1:A100)))
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
у меня Excel англоязычный, поэтому мне пришлось переписать формулу по аналогии с http://brusentsov.com/2009/12/27/3519 вот так:
INDEX(A1:A99;LOOKUP(2;1/(A1:A100<>"" ;) ;ROW(A1:A100)))
Однако, такая формула не принимается. Выделяет A99 почему-то.
 
Цитата
Юрий М пишет:
Цитата
Vital пишет:
Последняя запись в моём случае - это последняя запись в строке.
Здесь тоже неясности: Нашли номер этой строки. Допустим, строка - это пять ячеек. Значение какой из них нужно отобразить?
Самой дальней от начала. То есть самой дальней по алфавиту получается.
 
Цитата
Vital пишет:
INDEX(A1:A99;LOOKUP(2;1/(A1:A100<>"");ROW(A1:A100)))
а разве разделитель у вас не запятая должен быть?
 
Код
Sub LastRowOnSheet()
Dim Lastrow As Long, LastColumn As Integer
Lastrow = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = Cells(Lastrow, Columns.Count).End(xlToLeft).Column
MsgBox "Последняя ячейка имеет значение: " & Cells(Lastrow, LastColumn).Value
End Sub
 
В редакторе удалите квадратик (пробел) перед Value
 
Цитата
Юрий М пишет:
Код
 Sub LastRowOnSheet()
Dim Lastrow As Long, LastColumn As Integer
Lastrow = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = Cells(Lastrow, Columns.Count).End(xlToLeft).Column
MsgBox "Последняя ячейка имеет значение: " &amp; Cells(Lastrow, LastColumn).Value
End Sub 
Мне уже стало стыдно, что люди мне пишут разные формулы, а я не могу сообразить как их запустить. Извините, пожалуйста, но я не смогу такое сделать. Может есть что-то проще?
 
=LOOKUP(2;1/(A1:A100<>"");A1:A100)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Это не формула - макрос. Поместите его в стандартный модуль и выполните.
Про модули можно почитать здесь и здесь
 
Цитата
Юрий М пишет:
В редакторе удалите квадратик (пробел) перед Value
У меня просто удалять не помогает. Помогает переписать "красные" строки заново.
 
У меня помогает, но выяснилось, что кроме этого необходимо & заменить на &. Т.е. удалить amp;
 
Движок кушает символы... после амперсанда в редакторе видно "amp;"
 
Ура, разобрался. Ну, более-менее. Хоть и не совсем понимаю как, но заработала такая формула
=INDEX(A15:L15,1,(LOOKUP(2,1/(F15:L15<>""),COLUMN(F15:L15))))
Всем огромное спасибо за советы!
 
Замечание и к первой Вашей самодельной формуле и ко второй:
указывайте равные по строкам/столбцам массивы.
В первой формуле:
INDEX(A1:A99;LOOKUP(2;1/(A1:A100<>"");ROW(A1:A100)))

Во второй:
=INDEX(A15:L15,1,(LOOKUP(2,1/(F15:L15<>""),COLUMN(F15:L15))))

правильней:
=INDEX(A15:L15,1,(LOOKUP(2,1/(A15:L15<>""),COLUMN(A15:L15))))
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist пишет:
Замечание и к первой Вашей самодельной формуле и ко второй:
указывайте равные по строкам/столбцам массивы.
В первой формуле:
INDEX(A1: A99 ;LOOKUP(2;1/(A1: A100 <>"");ROW(A1: A100 )))

Во второй:
=INDEX( A15 :L15,1,(LOOKUP(2,1/( F15 :L15<>""),COLUMN( F15 :L15))))

правильней:
=INDEX(A15:L15,1,(LOOKUP(2,1/(A15:L15<>""),COLUMN(A15:L15))))

Я во втором случае указал массив F15:L15 потому, что он начинался как раз с этого столбца, а не с первого. Возможно, Вы подразумеваете другую логику при написании формулы, но я подгонял это так, чтобы работало, а не так, чтобы было красиво. Всё равно я не понял кое-какие вещи, но факт, что работает как надо. Ещё раз большое спасибо за наставления!
 
вам рассказывают как правильно, а не как красиво.
если у вас последнее заполненное окажется в Е15 то при COLUMN( F15 :L15) формула его не выдаст.
 
Цитата
Vital пишет:
но я подгонял это так, чтобы работало, а не так, чтобы было красиво. Всё равно я не понял кое-какие вещи, но факт, что работает как надо.
Конечно, я же не подгоняю формулы как Вы - мне главное красота, поэтому я лучше Вас знаю функции.
Когда разберетесь в логике формулы - может поймете, почему я написал как надо. А пока можете лелеять надежду, что функция будет возвращать именно верный результат всегда. Лично я считаю, что не условия нужно подгонять под результат, а наоборот. И если правильно написанная функция возвращает не тот результат, который ожидался - следует присмотреться к данным. В Вашем исполнении функция будет возвращать верный результат до тех пор, пока есть хоть какие-то данные в столбцах с F по L.
Попробуйте удалить данные из столбцов с F по L, а оставить лишь данные в столбце С - #Н/Д обеспечено.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Совершенно с Вами согласен по поводу вышесказанного.
И, разумеется, Вы правы, что я вижу #Н/Д когда столбцы пусты. Но, во-первых, данные вводятся начиная со столбца F, а не A (столбы с А по E заполнены другой информацией), а, во-вторых, в Вашем случае всё равно выводится #Н/Д, если все столбцы с А по L пусты.
 
Vital, цитируйте по необходимости - не нужно всё подряд.
Страницы: 1
Наверх