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

Вход

Регистрация

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

 

= Мир MS Excel/возврат значения в ячейке, которая на две строки ниже - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
возврат значения в ячейке, которая на две строки ниже
Iater Дата: Суббота, 27.07.2013, 14:25 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте!

Во-первых, мне надо найти максимальное значение среди ячеек B33, C33, D33
А потом вернуться значение ячейки под максимальным.

т.е. если макс это C33, то мне должно вернуться C35

как это сделать?
 
Ответить
СообщениеЗдравствуйте!

Во-первых, мне надо найти максимальное значение среди ячеек B33, C33, D33
А потом вернуться значение ячейки под максимальным.

т.е. если макс это C33, то мне должно вернуться C35

как это сделать?

Автор - Iater
Дата добавления - 27.07.2013 в 14:25
SkyPro Дата: Суббота, 27.07.2013, 14:38 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Код
=ЕСЛИ(МАКС(B33;C33;D33)=B33;B35;ЕСЛИ(МАКС(B33;C33;D33)=C33;C35;ЕСЛИ(МАКС(B33;C33;D33)=D33;D35;"х**н там")))


Или обязательно макросом?


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Суббота, 27.07.2013, 14:40
 
Ответить
Сообщение
Код
=ЕСЛИ(МАКС(B33;C33;D33)=B33;B35;ЕСЛИ(МАКС(B33;C33;D33)=C33;C35;ЕСЛИ(МАКС(B33;C33;D33)=D33;D35;"х**н там")))


Или обязательно макросом?

Автор - SkyPro
Дата добавления - 27.07.2013 в 14:38
Iater Дата: Суббота, 27.07.2013, 14:59 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
maxval = Application.WorksheetFunction.Max(Range("B33:33"))
нашел максимальное...

а дальше как?
 
Ответить
Сообщениеmaxval = Application.WorksheetFunction.Max(Range("B33:33"))
нашел максимальное...

а дальше как?

Автор - Iater
Дата добавления - 27.07.2013 в 14:59
Iater Дата: Суббота, 27.07.2013, 14:59 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
макросом да обязательно - это лишь часть кода
 
Ответить
Сообщениемакросом да обязательно - это лишь часть кода

Автор - Iater
Дата добавления - 27.07.2013 в 14:59
SkyPro Дата: Суббота, 27.07.2013, 15:07 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
Если вы используете функции листа, то я выше написал формулу. Переделайте её в макрос. (ЕСЛИ = IF)

Лучше приложите пример с исходными данными + результат.


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Суббота, 27.07.2013, 15:08
 
Ответить
СообщениеЕсли вы используете функции листа, то я выше написал формулу. Переделайте её в макрос. (ЕСЛИ = IF)

Лучше приложите пример с исходными данными + результат.

Автор - SkyPro
Дата добавления - 27.07.2013 в 15:07
Michael_S Дата: Суббота, 27.07.2013, 15:10 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Iater, потрудились бы пример вложить. Вопрос хоть и понятный, но правила хорошего тона вроде как обязывают...
 
Ответить
СообщениеIater, потрудились бы пример вложить. Вопрос хоть и понятный, но правила хорошего тона вроде как обязывают...

Автор - Michael_S
Дата добавления - 27.07.2013 в 15:10
SkyPro Дата: Суббота, 27.07.2013, 15:23 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub max()
If [b33].Value = Application.WorksheetFunction.max([b33:d33]) Then
MsgBox [b35].Value
End If
If [c33].Value = Application.WorksheetFunction.max([b33:d33]) Then
MsgBox [c35].Value
End If
If [d33].Value = Application.WorksheetFunction.max([b33:d33]) Then
MsgBox [d35].Value
End If
End Sub
[/vba]


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
Sub max()
If [b33].Value = Application.WorksheetFunction.max([b33:d33]) Then
MsgBox [b35].Value
End If
If [c33].Value = Application.WorksheetFunction.max([b33:d33]) Then
MsgBox [c35].Value
End If
If [d33].Value = Application.WorksheetFunction.max([b33:d33]) Then
MsgBox [d35].Value
End If
End Sub
[/vba]

Автор - SkyPro
Дата добавления - 27.07.2013 в 15:23
Michael_S Дата: Суббота, 27.07.2013, 15:25 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Как-то так так. Желтый - формула, синий - UDF (макрос)
К сообщению приложен файл: Iater.xls (66.0 Kb)
 
Ответить
СообщениеКак-то так так. Желтый - формула, синий - UDF (макрос)

Автор - Michael_S
Дата добавления - 27.07.2013 в 15:25
ShAM Дата: Воскресенье, 28.07.2013, 06:10 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
 
Ответить
СообщениеКросс: http://programmersforum.ru/showthread.php?t=241319

Автор - ShAM
Дата добавления - 28.07.2013 в 06:10
_Boroda_ Дата: Воскресенье, 28.07.2013, 08:09 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16738
Репутация: 6534 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
Sub tt()
n_ = Cells(35, WorksheetFunction.Match(WorksheetFunction.Max(Range("B33:D33")), Range("B33:D33")) + 1)
End Sub
[/vba]
О, блин, сходил в кросс по ссылке выше - там уже почти то же самое написали, только с ноликом


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
Sub tt()
n_ = Cells(35, WorksheetFunction.Match(WorksheetFunction.Max(Range("B33:D33")), Range("B33:D33")) + 1)
End Sub
[/vba]
О, блин, сходил в кросс по ссылке выше - там уже почти то же самое написали, только с ноликом

Автор - _Boroda_
Дата добавления - 28.07.2013 в 08:09
Iater Дата: Вторник, 20.08.2013, 12:44 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
работает, вот только я не понял как ))

кто может на пальцах объяснить?

я понял только, что:

1) цифра 35 - это номер строки где мои возвращаемые значения
2) в функции Match понял только что первый аргумент - это макс. среди диапазона B33:D33, а второй аргумент в упор не понимаю ((
 
Ответить
Сообщениеработает, вот только я не понял как ))

кто может на пальцах объяснить?

я понял только, что:

1) цифра 35 - это номер строки где мои возвращаемые значения
2) в функции Match понял только что первый аргумент - это макс. среди диапазона B33:D33, а второй аргумент в упор не понимаю ((

Автор - Iater
Дата добавления - 20.08.2013 в 12:44
Iater Дата: Вторник, 20.08.2013, 13:31 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
погорячился - теперь не работает )))

решил увеличить диапазон вместо B33:D33 написал A33:E33 и оно сломалось :'(
К сообщению приложен файл: 3938816.xlsm (53.8 Kb)
 
Ответить
Сообщениепогорячился - теперь не работает )))

решил увеличить диапазон вместо B33:D33 написал A33:E33 и оно сломалось :'(

Автор - Iater
Дата добавления - 20.08.2013 в 13:31
Serge_007 Дата: Вторник, 20.08.2013, 13:53 | Сообщение № 13
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
В Cells(35, 6) - пусто


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеВ Cells(35, 6) - пусто

Автор - Serge_007
Дата добавления - 20.08.2013 в 13:53
Iater Дата: Вторник, 20.08.2013, 14:23 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
а если в A33 поставить максимальное значение, то тоже не работает
в Cells (35,1) не пусто ведь, но всё равно не выдает результат
 
Ответить
Сообщениеа если в A33 поставить максимальное значение, то тоже не работает
в Cells (35,1) не пусто ведь, но всё равно не выдает результат

Автор - Iater
Дата добавления - 20.08.2013 в 14:23
Serge_007 Дата: Вторник, 20.08.2013, 14:40 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
[vba]
Код
Sub test()
      Dim t As Long
          t = Cells(35, WorksheetFunction.Match(WorksheetFunction.Max(Range("a33:e33")), _
          Range("a33:e33"), 0) + 1)
      ActiveSheet.Range("e37").Value = t
End Sub
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение[vba]
Код
Sub test()
      Dim t As Long
          t = Cells(35, WorksheetFunction.Match(WorksheetFunction.Max(Range("a33:e33")), _
          Range("a33:e33"), 0) + 1)
      ActiveSheet.Range("e37").Value = t
End Sub
[/vba]

Автор - Serge_007
Дата добавления - 20.08.2013 в 14:40
Iater Дата: Вторник, 20.08.2013, 14:49 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
а вот так выбирает не самое максимальное - цифру 9 в 33 строке
К сообщению приложен файл: 6997586.xlsm (53.9 Kb)


Сообщение отредактировал Iater - Вторник, 20.08.2013, 14:49
 
Ответить
Сообщениеа вот так выбирает не самое максимальное - цифру 9 в 33 строке

Автор - Iater
Дата добавления - 20.08.2013 в 14:49
Serge_007 Дата: Вторник, 20.08.2013, 14:55 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
А зачем у Вас +1 в коде?
Я тему не читал, поэтому поправил уже имеющийся код
Если сдвиг на один столбец от содержащего максимум не нужен - уберите +1


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеА зачем у Вас +1 в коде?
Я тему не читал, поэтому поправил уже имеющийся код
Если сдвиг на один столбец от содержащего максимум не нужен - уберите +1

Автор - Serge_007
Дата добавления - 20.08.2013 в 14:55
Iater Дата: Вторник, 20.08.2013, 14:56 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
ааа, так это оказывается сдвиг! теперь понял, спасибо )
 
Ответить
Сообщениеааа, так это оказывается сдвиг! теперь понял, спасибо )

Автор - Iater
Дата добавления - 20.08.2013 в 14:56
_Boroda_ Дата: Вторник, 20.08.2013, 23:24 | Сообщение № 19
Группа: Админы
Ранг: Местный житель
Сообщений: 16738
Репутация: 6534 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
А зачем у Вас +1 в коде?

Сдвиг был затем, что первоначально диапазон начинался с В. Правда, потом он поменялся на А, а 1 почему-то не стерли.
Iater, если другой диапазон будет начинаться, например, с D, то нужно написать не -1, а -3
В общем случае
[vba]
Код
Sub tt()
Dim d_ As Range
Set d_ = Range("d33:f33")
n_ = Cells(d_.Row + 2, WorksheetFunction.Match(WorksheetFunction.Max(d_), d_) + d_.Column - 1)
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
А зачем у Вас +1 в коде?

Сдвиг был затем, что первоначально диапазон начинался с В. Правда, потом он поменялся на А, а 1 почему-то не стерли.
Iater, если другой диапазон будет начинаться, например, с D, то нужно написать не -1, а -3
В общем случае
[vba]
Код
Sub tt()
Dim d_ As Range
Set d_ = Range("d33:f33")
n_ = Cells(d_.Row + 2, WorksheetFunction.Match(WorksheetFunction.Max(d_), d_) + d_.Column - 1)
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 20.08.2013 в 23:24
  • Страница 1 из 1
  • 1
Поиск:

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