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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2011, 19:16   #1
Екатрина
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 26
По умолчанию подсчет строк в таблице

всем доброго времени суток.
прошу вашей помощи.

имеется форма в листе excel.
в ней таблица, которая начинается с 16 строки.
а заканчивается ... когда как ))
но всегда заканчивается строкой, содержащей слово "всего".
как подсчитать количество строк в таблице до всего ?

прилагаю для наглядности файл с табличкой.
заранее спасибо !
Вложения
Тип файла: rar макрос 6 целей.rar (11.4 Кб, 31 просмотров)
Екатрина вне форума Ответить с цитированием
Старый 18.04.2011, 19:33   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

=МАКС((C1="всего")*СТРОКА(C1))-16
или
=МАКС(($A:$A="всего")*СТРОКА($A:$A) )-16
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.04.2011, 19:56   #3
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Код:
=ПОИСКПОЗ("всего";A:A;)-16
=ПОИСКПОЗ("всего";A16:A100;)-1
vikttur вне форума Ответить с цитированием
Старый 18.04.2011, 20:34   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Код:
Sub tt()
MsgBox "В текущем диапазоне " & [a16].CurrentRegion.Rows.Count - 1 & " строк."
End Sub
Может быть нужно -2 или вообще не отнимать - смотря на то, нужно Вам считать и заголовок и строку с "всего" или не нужно.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 18.04.2011 в 20:38.
Hugo121 вне форума Ответить с цитированием
Старый 19.04.2011, 09:52   #5
Екатрина
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 26
Печаль

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
Sub tt()
MsgBox "В текущем диапазоне " & [a16].CurrentRegion.Rows.Count - 1 & " строк."
End Sub
Может быть нужно -2 или вообще не отнимать - смотря на то, нужно Вам считать и заголовок и строку с "всего" или не нужно.
всем спасибо большое
что значит текущий диапазон? к сожалению вывести значение на лист или записать в переменнную не получается.
задача в целом следующая:
у меня несколько листов и лист свод.
вот я в свод макросом переношу эти цели с каждого листа.
простым перебором это нельзя сделать так как у всех разное количество целей.
соотв-но хотела в макрос вписать функцию по поиску всего, определить кол-во строк, и сделать цикл по переносу данных.

я не могу понять как в макросе на листе свод написать формулу ПОИСКПОЗ для всех листов?
у меня выдает ошибку (Н/Д)
Екатрина вне форума Ответить с цитированием
Старый 19.04.2011, 10:10   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Насчёт "текущий диапазон" - это не Вы писали:

MsgBox "В текущем диапазоне " & z & " строк."

Я просто взял фразу из Вашего файла.

Ну и поиск и перенос (т.е. скорее всего нужно копирование) можно так организовать:
Код:
Sub tt()
Dim x As Range, rr As Range

Set x = Cells.Find("всего", , , xlWhole)
If Not x Is Nothing Then
'MsgBox "В текущем диапазоне " & x.CurrentRegion.Rows.Count - 1 & " строк."
Set rr = Range(Cells(x.CurrentRegion.Row + 1, 1), Cells(x.CurrentRegion.Row + x.CurrentRegion.Rows.Count - 2, 15))
With Workbooks.Add.Sheets(1)
rr.Copy .[a1]
End With
End If

End Sub
Или так:
Код:
Sub ttt()
Dim x As Range, rr As Range

Set x = Cells.Find("всего", , , xlWhole)
If Not x Is Nothing Then
'MsgBox "В текущем диапазоне " & x.CurrentRegion.Rows.Count - 1 & " строк."
Set rr = x.CurrentRegion
Set rr = rr.Offset(1, 0).Resize(rr.Rows.Count - 2, rr.Columns.Count) 'сдвиг выбора таблицы на  строку ниже и низ затем на 2 строки выше
With Workbooks.Add.Sheets(1)
rr.Copy .[a1]
End With
End If

End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 19.04.2011 в 10:35.
Hugo121 вне форума Ответить с цитированием
Старый 19.04.2011, 10:12   #7
Екатрина
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 26
По умолчанию

вот такой пишу макрос и не считает
Sub макрос3()
'
'
Application.ScreenUpdating = False: Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'Set ws = ActiveWorkbook.Worksheets("свод")
nm = ActiveSheet.Name ' nm yoi naia
i = 0
For Each ws In Worksheets
i = i + 1
If ws.Name = nm Then

Exit For
End If
r = 3
Sheets(nm).Cells(1, r).Formula = "=MATCH(""sheets(ws)!всего"",A16:A2 3,)"

r = r + 1
Next ws

Application.ScreenUpdating = True: Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub

диапазон A16 A23 - написан без пробелов, это так здесь разместилось

Последний раз редактировалось Екатрина; 19.04.2011 в 10:18.
Екатрина вне форума Ответить с цитированием
Старый 19.04.2011, 10:20   #8
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Зачем вставлять функцию листа? Почему не хотите CurrentRegion?
vikttur вне форума Ответить с цитированием
Старый 19.04.2011, 10:27   #9
Екатрина
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 26
По умолчанию

задача в целом следующая:
у меня несколько листов с целями и лист свод.
вот я в свод макросом переношу эти цели с каждого листа.
простым перебором это нельзя сделать, так как на всех листах разное количество целей.
соотв-но хотела в макрос вписать функцию по поиску всего, определить кол-во строк с целями, и сделать цикл по переносу данных.

я не понимаю, как я могу применить currentregion в принципе, тк я не знаю как он работает при моей проблеме.
и синтаксиса его не знаю.

в общем стараюсь решить так, как могу )

а насколько я понимаю, currentregion - только для выделенного диапазона. а у меня такого не имеется. листов несколько и активный лист - лист свод
Екатрина вне форума Ответить с цитированием
Старый 19.04.2011, 10:34   #10
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Придут знатоки, объяснят более подробно.
Hugo121 предложил:
[a16].CurrentRegion.Rows.Count
Относительно [a16]. Весь диапазон. Строки.Количество, т.е. количество строк заполненного диапазона.
А функции листа в макросе работают медленно.
vikttur вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет в таблице Deni55 Microsoft Office Excel 7 25.05.2011 14:10
Макрос на сравнение и подсчет в первом столбце строк, и сумирование значений этих строк в другом столбце Shpr0T Microsoft Office Excel 8 30.08.2010 17:52
Подсчет результатов в турнирной таблице. vladi Microsoft Office Excel 5 29.06.2010 13:45
Подсчет количества совпадений в таблице aval Microsoft Office Excel 8 08.11.2009 21:50
Подсчет полей в таблице Arkatic Общие вопросы C/C++ 0 10.05.2009 22:52