Страницы: 1
RSS
Rows.Count - проблемка.
 
Добрый день!  
Есть краткая операция    
типа (iR = Worksheets(A).Cells(Rows.Count, 15).End(xlUp).Row)  
, чтоб определял последнию незаполненную ячейку (значение)!  
эта команда ((iR = Worksheets(A).Cells(Rows.Count, 15).End(xlUp).Row))    
оказывается не останавливается на знечений и берет еще и формулу!  
Заранее спасибо!
With my best regards,      Inter_E
 
что-то я не понял вопроса)
 
А если формула возвращаем "пусто" это разве не значение?
 
Я хотел найти последнию заполнееную значением ячейку в столбе, но так как у меня там в ячейках формулы, хотя показывают пустоту. И этот код уже непомогает  
iR = Worksheets(A).Cells(Rows.Count, 15).End(xlUp).Row  
Когда у меня были просто значения без формул, этот код без проблем работал.  
Я хотел бы краткий код для этого, не вмешиваю сюда циклы.  
Надеюсь, обЪяснил!  
Заранее спасибо!
 
Надеюсь сумел объснить, Павел..  
Поможешь?  
Заранее благодарен!
 
А попробовать посчитать количество не пустых строк через СЧЕТЕСЛИ(диапазон(А:А);"*?*") и эту формулу в ВБА-?  
Ведь "*?*" - бедет любой знак возвращенный формулой, не пустая строка. Тогда результат формулы - последняя заполненая строка.
 
А я могу предложить только найти вашим методом последнюю стрку (хоть и с формулой), а потом просто пошагово подниматься наверх и проверять не содержил ли ячейка формулу (как пример, Cells(50,15).HasFormula)
 
Оказывается, у меня там значения и "", являются результатом формулы в этом столбце. Получаются там везде формулы. Мне надо только через ВБА это зделать. Короче мне надо узнать номер строки где стоит последнее значение, которая дала формула.  
Заранее спасибо!..
 
Может пример дадите? 1 столбец с формулами и данными, остальное удалите
 
Попробуйте так  
Set UsRange = Worksheets(A).Range("A1:A500")  
                           
iR = WorksheetFunction.CountIf(UsRange, "*?*")
 
{quote}{login=Pavel55}{date=25.08.2008 03:26}{thema=}{post}Может пример дадите? 1 столбец с формулами и данными, остальное удалите{/post}{/quote}  
 
 
Добрый день! Вот примерчик прикрепил...  
Заранее спасибо!
 
Sub Макрос1()  
Dim iLastRow&, i&  
   i = Cells(Rows.Count, 3).End(xlUp).Row  
   For iLastRow = i To 1 Step -1  
       If Cells(iLastRow, 3).Value <> "" Then Exit For  
   Next iLastRow  
   If iLastRow = 0 Then iLastRow = 1  
   MsgBox iLastRow  
End Sub
 
{quote}{login=Pavel55}{date=26.08.2008 11:32}{thema=}{post}Sub Макрос1()  
Dim iLastRow&, i&  
   i = Cells(Rows.Count, 3).End(xlUp).Row  
   For iLastRow = i To 1 Step -1  
       If Cells(iLastRow, 3).Value <> "" Then Exit For  
   Next iLastRow  
   If iLastRow = 0 Then iLastRow = 1  
   MsgBox iLastRow  
End Sub{/post}{/quote}  
 
 
 
Спасибо Павел!  
Но все-таки я думал что есть команда состоящий из одной строки только!?  
Вот именно я этого боялся, что надо писать целую процедуру.  
У меня тоже примерно такой объем получился!  
Все равно спасибо!
 
Крайний раз, когда видел Ваш проект, Вы в основном обрабатывали текстовые значения а не цифры...  
По тексту Все-же работает....
 
Чуть доработал, теперь можно через пользовательскую функцию, которая определяет тип данных Текст/не текст и считает или по СЧЕТ() или по СЧЕТЕСЛИ()
 
Вопросик.  
Чтобы значение в последней строки отражалось в TextBox?
 
R = ActiveSheet.UsedRange.Rows.Count+1  
R получит значение последней чистой строки
 
{quote}{login=Ан13}{date=27.08.2008 12:32}{thema=}{post}Вопросик.  
Чтобы значение в последней строки отражалось в TextBox?{/post}{/quote}  
Не совсем понял вопрос, если к функции - то может просто так  
Me.TextBoxNr = poslednStroka(Worksheets("Лист1").Range("C4:C500"))
 
Me.TextBoxNr = poslednStroka(Worksheets("Лист1").Range("C4:C500")) - неподходит.  
 
В последнем примере в В18 число 39.  
Чтобы число 39 (последняя) отображалась в TexBox
 
Но ведь Вы всегда можете сосчитать значение ячейки зная ее координаты...  
Тем более Вам этот огород нужен? Ведь вопрос идет как расчитать строки в которых уже есть значение возвращенное функцией, но при этом сам диапазон намного больше и формула в этом диапазоне выдает "" пустую строку на отображение.  
А значение наверное можно и так ....  
Me.TextBoxNr = Range("B" & poslednStroka(Worksheets("Лист1").Range("C4:C500"))).Value
Страницы: 1
Читают тему
Наверх