Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в Excel узнать MAX длину заполненных ячеек? 
V
    Опции темы
Данкинг
Дата 27.5.2011, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Т..е например есть записи:

Цитата

собака
кошка
тигр
крокодил
воробей

Нужно определить длину каждой записи и результатом получить максимальную из них: 8. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
FINANSIST
Дата 27.5.2011, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Код

=МАКС(ДЛСТР(C5:C8))


про ctrl+shift+enter вместо простого enter не забываем после ввода формулы нажимать


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Данкинг
Дата 27.5.2011, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(FINANSIST @  27.5.2011,  14:30 Найти цитируемый пост)
про ctrl+shift+enter вместо простого enter не забываем 

А в чём разница? Просто мне надо программно это делать, из Дельфи. И если в самом .xls ctrl+shift+enter работает, то при вставки формулы из программы в ячейке отображается "=ИМЯ".


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
FINANSIST
Дата 27.5.2011, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Данкинг, sorry, не глянул что пост в разделе ПРОГРАММИРОВАНИЯ
тогда на vba 
Код

Sub rty()
Dim cll As Variant
Dim myval As Long
Let myval = 0
For Each cll In Selection.Cells
If Len(cll.Value) > myval Then myval = Len(cll.Value)
Next
MsgBox myval
End Sub




--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Данкинг
Дата 27.5.2011, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



FINANSIST, не, такой код я и сам бы придумал, но вопрос в том, что если взять, к примеру, таблицу в 50000 строк и 40 столбцов, то сколько времени он будет выполняться. smile Идея с функцией мне понравилась, только как бы её с программой связать.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
diadiavova
Дата 28.5.2011, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 1
Всего: 142



Цитата(Данкинг @  28.5.2011,  00:06 Найти цитируемый пост)
Идея с функцией мне понравилась, только как бы её с программой связать. 

Так собственно выбери ячейку, в которую будешь заносить результат и назначь ей программно формулу для массива. Например надо тебе просмотреть диапазон A1:C3, выдели ячейку A4 введи формулу туда
Код

Sub MaxLenCell()
    Range("a4").FormulaArray = "=MAX((LEN(R[-3]C:R[-1]C[2])))"
    MsgBox Range("a4").Value
End Sub


Это сообщение отредактировал(а) diadiavova - 28.5.2011, 16:09


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Данкинг
Дата 29.5.2011, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(diadiavova @  28.5.2011,  17:03 Найти цитируемый пост)
FormulaArray

О! smile 
Код

Excel.ActiveWorkbook.ActiveSheet.Cells[10,2].FormulaArray:='=МАКС(ДЛСТР(B1:B5))';

Вопрос решён. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Данкинг
Дата 30.5.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Ещё вопрос почти по теме. А значения Range('A1').Value и Cells[1,1].Value будут равны, т.е. всё равно, что использовать или в каком-то случае может вылезти неведомый косяк?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
diadiavova
Дата 30.5.2011, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 1
Всего: 142



Цитата(Данкинг @  30.5.2011,  16:28 Найти цитируемый пост)
Ещё вопрос почти по теме. А значения Range('A1').Value и Cells[1,1].Value будут равны, т.е. всё равно, что использовать или в каком-то случае может вылезти неведомый косяк?

У меня сейчас нет возможности проверить, но, если мне не изменяет склероз, то оба свойства(Range и Cells) возвращают объекты одного и того же типа, а именно - Range. Если так, то уж не знаю, какие могут быть различия между поведением двух одинаковых объектов(а возможно - одного и того же), указывающих на один и тот же диапазон ячеек. Просто в одном случае ты передаешь ему строку, в другом - числа. Но это все имхо ессно.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Данкинг
Дата 30.5.2011, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



В общем, я придумал принудительно ячейке с формулой задавать числовой тип (0,00), тогда значение (результат формулы т.е.) в любом случае должно быть нормальным (т.е. числовым). smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
FINANSIST
Дата 15.6.2011, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Цитата(Данкинг @  30.5.2011,  15:28 Найти цитируемый пост)
Ещё вопрос почти по теме. А значения Range('A1').Value и Cells[1,1].Value будут равны, т.е. всё равно, что использовать или в каком-то случае может вылезти неведомый косяк?



Данкинг, действительно различий между ними нет, но при их использовании  есть  замаскированные грабли, но пока не наступишь их не увидишь.



--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Данкинг
Дата 15.6.2011, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



FINANSIST, я значения cells обычно беру.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
FINANSIST
Дата 16.6.2011, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23



Цитата(Данкинг @  15.6.2011,  13:37 Найти цитируемый пост)
FINANSIST, я значения cells обычно беру.

Тут грабли не в том какой метод брать а в том - какой у метода родительский объект
К примеру
Код

MsgBox ActiveCell.Range("B2").Value

и
Код

MsgBox Activesheet.Range("B2").Value

Дадут абсолютно разные результаты
В cells - то же самое...


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0916 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.