Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.06.2015, 13:48   #11
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

Ваша дискуссия очень интересна.
Могу предложить пользовательскую функцию:
Код:
Function First1(r As Range)
  Dim i As Integer, s As String
   Application.Volatile
   If TypeName(r) <> "Range" Then Exit Function
      s = Left(r.Range("A1").Address, 2)
      i = r.Range("A1").End(xlDown).Row
     First1 = Range(s & i)
       End Function
svsh2016 вне форума
Старый 16.06.2015, 17:08   #12
jimmyyong
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Serge 007 Посмотреть сообщение
0=0 - ноль равен нулю, значение: ИСТИНА
A1:A5<>"" - значение:{ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ}
ПОИСКПОЗ() ищет первое вхождение ИСТИНА в массив {ЛОЖЬ:ИСТИНА:ЛОЖЬ:ИСТИНА:ЛОЖЬ}
Первое вхождение на второй позиции
А в чем причина ошибки, если выбирается диапазон A1:B3?

SS.jpg
Вложения
Тип файла: rar Книга1.rar (5.7 Кб, 9 просмотров)

Последний раз редактировалось jimmyyong; 16.06.2015 в 17:37.
jimmyyong вне форума
Старый 16.06.2015, 17:21   #13
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если приложите не картинку, а файл - шанс получить ответ на вопрос существенно возрастает.

извините, цитирую себя, но в сообщении #7 данной темы (в приложенном файле) есть некоторое количество ответов, как минимум agregator посчитал способ изложения достойным внимания.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 16.06.2015, 17:32   #14
jimmyyong
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от svsh2016 Посмотреть сообщение
Ваша дискуссия очень интересна.
Могу предложить пользовательскую функцию:
Код:
Function First1(r As Range)
  Dim i As Integer, s As String
   Application.Volatile
   If TypeName(r) <> "Range" Then Exit Function
      s = Left(r.Range("A1").Address, 2)
      i = r.Range("A1").End(xlDown).Row
     First1 = Range(s & i)
       End Function
Можно упростить
Код:
Function First1(r As Range)
First1 = r.End(xlDown).Value
End Function
jimmyyong вне форума
Старый 16.06.2015, 17:49   #15
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

уважаемый, jimmyyong,
очистите, пожалуйста, колонку А (отметили, очистили)
в А1 пишите 1
в А5 пишите 5

выполните:
Код:
Sub Test1()
  debug.print First1 ([a1:a9])
End Sub
с учетом того что First1 это предложенный Вами "упрощенный вариант"
Код:
Function First1(r As Range)
First1 = r.End(xlDown).Value
End Function
внимание 2 вопроса:
1. какая первая не пустая ячейка в диапазоне А1:А9?
2. а что отобразит Test1, использующий Вашу First1
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 16.06.2015, 19:07   #16
jimmyyong
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
уважаемый, jimmyyong,
внимание 2 вопроса:
1. какая первая не пустая ячейка в диапазоне А1:А9?
2. а что отобразит Test1, использующий Вашу First1
Уважаемый, IgorGO у меня к Вам также 2 вопроса:
1 Какой результат возвращает функция предложенная в сообщении #11?
2 Действительно ли нужны все те действия в функции из сообщения #11 или достаточно предложенных мной для получения аналогичных результатов?

Цитата:
извините, цитирую себя, но в сообщении #7 данной темы (в приложенном файле) есть некоторое количество ответов, как минимум agregator посчитал способ изложения достойным внимания.
Вы зря думаете, что я не обратил внимания на Ваше сообщение и приложенный пример. Причина по которой я задал свой вопрос в сообщении #12 - ошибка возвращаемая формулой при передаче ей диапазона относящегося не к одному, а к двум и более столбцам.
Код:
"=ИНДЕКС(ПОИСКПОЗ(1=1;A3:B20<>"";);)"
jimmyyong вне форума
Старый 16.06.2015, 22:09   #17
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

jimmyyong,
1. не знаю. авторство не мое. смысл функции мне не интересен.
2. возможно
допускаю что Вы смогли написать существенно короче код совершенно не функциональной функции. извините за тавтологию.
За Вашу функцию глаз "зацепился" в связи с лаконичной записью, которая однозначно не решает обсуждаемую в данной теме задачу.

и по поводу ПОИСКПОЗ.
жмем F1. пишем ПОИСКПОЗ, читаем:
ПОИСКПОЗ Возвращает относительное положение элемента массива.
ПОИСКПОЗ - возвращает одно число, следовательно массив должен быть линейным (горизонтальным или вертикальным) результатом будет число - позиция искомого элемента в массиве.

позиция элемента в таблице (в двумерном массиве) определяется строкой и столбцом ДВУМЯ ЧИСЛАМИ, следовательно ПОИСКПОЗ неприменим к поиску в таблице.
используйте корректные аргументы - функция вернет корректный результат. удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 17.06.2015, 00:10   #18
jimmyyong
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
и по поводу ПОИСКПОЗ.
жмем F1. пишем ПОИСКПОЗ, читаем:
ПОИСКПОЗ Возвращает относительное положение элемента массива.
ПОИСКПОЗ - возвращает одно число, следовательно массив должен быть линейным (горизонтальным или вертикальным) результатом будет число - позиция искомого элемента в массиве.

позиция элемента в таблице (в двумерном массиве) определяется строкой и столбцом ДВУМЯ ЧИСЛАМИ, следовательно ПОИСКПОЗ неприменим к поиску в таблице.
используйте корректные аргументы - функция вернет корректный результат. удачи!
Уважаемый IgorGO дело в том, что во-первых в VBA предусмотрена возможность обращения к совершенно конкретному элементу диапазона используя лишь одно число.
Код:
Range(“A1:C10”) .Cells(15)
А во-вторых, что касается справки, то в качестве аргумента функция принимает диапазон, которому сразу дается определение.
Функция ПОИСКПОЗ выполняет поиск указанного элемента в диапазоне (Диапазон. Две или более ячеек листа. Ячейки диапазона могут быть как смежными, так и несмежными.) ячеек и возвращает относительную позицию этого элемента в диапазоне.
Кроме того, хочу обратить Ваше внимание, что функция без каких-либо ошибок преобразует любой диапазон в одномерный массив, что можно наблюдать в окне аргументов функции.
jimmyyong вне форума
Старый 17.06.2015, 00:52   #19
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

спасибо за разьяснения.

в примере, во вложении, 3 простых формулы =ПОИСКПОЗ(17;....)
если не затруднит, растолкуйте мне откуда берется #Н/Д в верхней из них? почему формула не вернула, что число 17 в данном диапазоне находится в 17-й позиции или даже, что оно там просто есть!
Вложения
Тип файла: rar ПоискПоз.rar (6.7 Кб, 12 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 17.06.2015, 02:32   #20
jimmyyong
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
спасибо за разьяснения.
в примере, во вложении, 3 простых формулы =ПОИСКПОЗ(17;....)
если не затруднит, растолкуйте мне откуда берется #Н/Д в верхней из них? почему формула не вернула, что число 17 в данном диапазоне находится в 17-й позиции или даже, что оно там просто есть!
Из пустого в порожнее. Вы мое сообщение #12 не видели?!
jimmyyong вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать ссылку на последнюю непустую ячейку в обновляемом столбце SVGuss Microsoft Office Excel 34 19.02.2013 16:12
в строке удалить первую и последнюю буквы,только записать в виде программы и тестового примера в паскаль!!! rfnthbyf Паскаль, Turbo Pascal, PascalABC.NET 9 14.02.2012 21:16
Найти и выделить по выделенной строке диапазон с такой строкой на другом листе (Excel 2003) vfv Microsoft Office Excel 8 10.03.2010 09:30
Копирование данных на первую пустую ячейку kzld Microsoft Office Excel 8 15.07.2009 14:06
как найти первую заполненную ячейку в диапазоне Bezdar Microsoft Office Excel 3 19.02.2009 11:59