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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2011, 00:06   #1
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию скрипт для сравнения чисел в двух столбцах

Скажите, пожалуйста, почему в этом скрипте надо писать
For i = 2 To n + 1, а нельзя For i = 2 To n, иначе не сравниваются последние введенные числа.


Sub macro()
Dim i As Long
Dim n
Dim r1 As Range
Set r1 = Worksheets(1).Range("A:A")

n = Application.WorksheetFunction.Count A(r1)


For i = 2 To n + 1

If Application.Worksheets(1).Cells(i, 1).Value = Application.Worksheets(1).Cells(i, 2).Value Then
Worksheets(1).Cells(i, 3).Value = "TRUE"

Else

Worksheets(1).Cells(i, 3).Value = "FALSE"

End If

Next i

End Sub
Olya1985 вне форума Ответить с цитированием
Старый 02.01.2011, 01:25   #2
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

потому, что данные начинаются со второй строки, переменная n указывает только на количество значений в диапазоне. Тоесть значений 5, а находятся они со 2-й по 6-ю строку. Поэтому For i = 2 To n закончит цикл только на 5-й строке, шестая не будет обработана.
EugeneS вне форума Ответить с цитированием
Старый 02.01.2011, 01:29   #3
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию

а в случае если данные начнутся с 5 строки? можно как-нибудь сделать чтобы можно было писать for i = 2 to n?
Olya1985 вне форума Ответить с цитированием
Старый 02.01.2011, 01:35   #4
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

нужно иначе определять границы диапазона, например,
Код:
n = [a65536].end(xlup).row
укажет на последнюю строку таблицы

Если цикл начинается со второй строки и могут буть пустые строки, можно указать проверку на наличие числа в ячейке.

Последний раз редактировалось EugeneS; 02.01.2011 в 01:38.
EugeneS вне форума Ответить с цитированием
Старый 02.01.2011, 01:39   #5
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию

n = activesheet.usedrange.rows.count
так все равно почему то последние строки не сравнивает
Olya1985 вне форума Ответить с цитированием
Старый 02.01.2011, 01:41   #6
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

ошибся..исправил
EugeneS вне форума Ответить с цитированием
Старый 02.01.2011, 01:49   #7
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию

теперь работает. спасибо. а вы программы на заказ пишете?
Olya1985 вне форума Ответить с цитированием
Старый 02.01.2011, 01:51   #8
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

смотря что нужно...пишите в личку
EugeneS вне форума Ответить с цитированием
Старый 02.01.2011, 01:58   #9
Olya1985
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 113
По умолчанию

на данный момент ничего конкретного. я вот изучаю vba.
Olya1985 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel -скрипт сравнения двух файлов и копирования данных из одного в другой Snake_ Microsoft Office Excel 11 29.08.2010 13:19
Формула для сравнения двух столбцов с выводом результат в третьем ramiras777 Microsoft Office Excel 23 19.03.2010 20:52
Сопоставление данных в двух столбцах plasticman Microsoft Office Excel 4 12.03.2009 17:45
сравнение данных в двух столбцах в Excel 2003 grinders Microsoft Office Excel 4 25.11.2008 16:58