Страница 1 из 2

Способ считать количество символов в ячейке Excel

Добавлено: 06 окт 2005, 10:08
Avsha
Хотелось бы иметь быстрый способ определения количества символов в ячейке,
подобный тому как определяется сумма, среднее и т.д. для выбранного диапазона в статусной строке внизу справа.

Например, выбрал ячейку, нажал кнопку, выдало сколько символов в текстовой строке ячейки.
Есть ли для этого какой стандартный механизм или функция в Excel?

Вариант с функцией ДЛСТР - понятен, но несколько долговат.

Добавлено: 07 окт 2005, 22:28
Naeel Maqsudov
Стандартного нет.

Только макрос

Код: Выделить всё

sub macro1()
   on error resume next
   msgbox len(activecell)
end sub
с горячей клавишей на нем

Добавлено: 08 окт 2005, 15:31
Avsha
Отличное решение !!!
полностью меня устраивает.
вытащил кнопку на панель управления, привязал ваш макрос, но ...
куда поместить макрос чтобы он работал для разных книг Excel,
а то так он выполняется только для одной книги Excel, где был создан?

Добавлено: 08 окт 2005, 16:57
pashulka
А как насчёт рабочей книги PERSONAL.XLS ...

Добавлено: 09 окт 2005, 08:12
Avsha
Спасибо, pashulka,
Ваш совет как всегда приводит к успеху.

Что у меня получилось:
1. Записываем макрос Сервис\Макрос\Начать Запись...\
При этом выбираем место сохранения макроса "Личная книга макросов"

2. В результате в среде Excel появляется скрытая книга PERSONAL.XLS,
доступная из всех других книг, с которыми работает пользователь.
Она кстати сохраняется в пути C:\Documents and Settings\User_01\Application Data\Microsoft\Excel\XLSTART
и очевидно может переноситься от одного пользователя к другому (или на другой ПК) простым копированием.

3. Теперь добавляем наш макрос в модуль PERSONAL.XLS
sub macro1()
on error resume next
msgbox len(activecell)
end sub

4. В конце создаем кнопку на новой панели инструментов Настраиваемая1, и привязываем кнопку к макросу PERSONAL.XLS!macro1

Не нашел только в справке ни слова про личную книгу макросов PERSONAL.XLS, где можно почитать?

Добавлено: 09 окт 2005, 15:48
pashulka
Avsha, Могу предложить ещё один вариант.

Найдите рабочую книгу PERSONAL.XLS, перейдите в модуль ThisWorkbook (ЭтаКнига) и скопируйте туда этот код :

Код: Выделить всё

Dim Cls As New Class1

Private Sub Workbook_Open()
With Application.CommandBars("Cell").Controls.Add _
     (Type:=msoControlEdit, Temporary:=True)
     .BeginGroup = True
     .Style = msoButtonIcon
     .Caption = "Кол-во символов"
End With
Set Cls.xlApp = Application
End Sub
Затем создайте модуль класса - Class1 и скопируйте :

Код: Выделить всё

Public WithEvents xlApp As Application

Private Sub xlApp_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Excel.Range, Cancel As Boolean)
iCount = Evaluate("Sum(Len(" & Target.Address & "))")

Application.CommandBars("Cell").Controls("Кол-во символов").Text = _
IIf(IsError(iCount), "Ошибка", iCount)
End Sub
Теперь, при следующем запуске MS Excel (если Вы конечно сохранили изменения в личной книге макросов) Вам будет достаточно выделить ячейку или диапазон ячеек и кликнуть правой кнопкой мышки.

Примечание : На самом деле можно использовать ~ любую рабочую книгу. Для этого её достаточно расположить в стандартной или альтернативной папке автозагрузки.

Стандартной является папка XLSTART, которая в MS Excel 97 располагается, как правило - \Program Files\Microsoft Office\Office\XLStart
Альтернативную папку автозагрузки можно выбрать самому (меню Сервис - команда Параметры - закладка Общие - поле Каталог автозагрузки )
Также можно использовать надстройки (.xla)

При желании, эту рабочую книгу (.xls) можно сделать скрытой (меню Окно - команда Скрыть )

P.S. Что касается литературы, то это вопрос не ко мне ...

Добавлено: 10 окт 2005, 08:46
Avsha
pashulka,
использование контекстного меню - ну это вообще высший пилотаж,
спасибо, мне понравилось ваше решение.

А главное, какая открывается дорога по предоставлению других информационных функций.

Добавлено: 10 окт 2005, 09:41
Avsha
Наткнулся на хорошие ресурсы по VBA, делюсь:

http://www.microsoft.ru/offext/developers/
http://www.vbstreets.ru/VBA/default.aspx

Добавлено: 20 окт 2006, 16:18
s2dent
А еслиБ Вы сказали, как сделать так, чтоб колличество символов считалось в ячейке с помощью формулы - Вам бы цены не было!

Т.е. у меня есть название "Яблочный сок 0,2" - в нём содержится 16символов (включая пробелы). Есть ли формула, которая подсчитает это колличество автоматом в соседней ячейке?

Добавлено: 20 окт 2006, 17:36
Pavel55
=ДЛСТР(ссылка на ячейку)