Доброго вечера, уважамые ГУРУ Excel и просто посетители!
Прошу Вашей помощи в корректировке функции ВПР в макросе.
См. файл.
С уважением,
Прошу Вашей помощи в корректировке функции ВПР в макросе.
См. файл.
С уважением,
31.10.2010 00:32:24
Доброго вечера, уважамые ГУРУ Excel и просто посетители!
Прошу Вашей помощи в корректировке функции ВПР в макросе. См. файл. С уважением, |
|
|
|
31.10.2010 00:57:27
Если уж макрос, то зачем формулы?
|
|
|
|
31.10.2010 00:58:06
Это я охотника спросил :-)
|
|
|
|
31.10.2010 01:02:18
{quote}{login=Юрий М}{date=31.10.2010 12:58}{thema=}{post}Это я охотника спросил :-){/post}{/quote}
это я понял :) только не понял что он хочет или vlookup в vba или то что я написал ?
|
|||
|
|
31.10.2010 01:05:37
А я не понял, почему Пахома зовут Любовь.
|
|
|
|
31.10.2010 01:19:53
{quote}{login=Юрий М}{date=31.10.2010 01:05}{thema=}{post}А я не понял, почему Пахома зовут Любовь.{/post}{/quote}
Доброй ночи, Юрий М и R Dmitry! Мне необходимо проверить условие: равно ли значение формулы - условию "жилая", и если да, то выдать сообщение ОК, если нет, то Неокей. Т.е. необходима связка ВПР и функции If then Всё. |
|
|
|
31.10.2010 01:26:29
Доброй ночи! Сейчас Дмитрий нарисует без ВПР проверку, а я пошёл спать - завтра на сутки.
|
|
|
|
31.10.2010 01:27:56
{quote}{login=Юрий М}{date=31.10.2010 01:26}{thema=}{post}Доброй ночи! Сейчас Дмитрий нарисует без ВПР проверку, а я пошёл спать - завтра на сутки.{/post}{/quote}
Ого! Приятный Вам снов. ПС: а Вы на какую работу ходите? Простите за нескромность, просто интересно. ПС: у меня компьютер носит имя Любовь. С уважением, |
|
|
|
31.10.2010 01:43:05
Option Explicit
Sub ВПР() ' помогите убрать ошибку Dim i As Integer For i = 1 To 3 If WorksheetFunction.VLookup(Cells(i + 1, 1), Sheets(1).Range("A2:C4"), 3, False) = "жилая" Then Cells(i + 1, 3) = "истина" Else Cells(i + 1, 3) = "ложь" End If i = i + 1 Next i End Sub |
|
|
|
31.10.2010 11:29:01
i = i + 1 зачем?
|
|
|
|
31.10.2010 12:03:58
{quote}{login=Hugo}{date=31.10.2010 11:29}{thema=}{post}i = i + 1 зачем?{/post}{/quote}
всем доброго утра! немаленькая функция получается ... но ! главное чтоб работала :) а функцию нельзя изобразить в одну строчку как эту функцию: If WorksheetFunction.CountIf(Sheets("Квартал").Cells.Columns(2), Target) > 1 Then С уважением, |
|
|
|
31.10.2010 12:13:31
i = i + 1
эту строчку надо убрать |
|
|
|
31.10.2010 12:22:07
искомое значение Cells(i + 1, 1) - объясните пожалуйста эту часть кода
|
|
|
|
31.10.2010 12:29:53
если перечень этажей на листе 2 не совпадает с перечнем на листе 1, то выдаётся ошибка.
Суть ещё раз: Мне просто нужно найти по этажу значение в соседнем столбце, и если это значение равно "жилая" сделать одно действие (True), иначе другое (Else). С уважением, |
|
|
|
31.10.2010 12:57:21
Исходный текст макроса записан на листе 2
формулой вы пишите ВПР(A2;Лист1!A2:C4;3;ЛОЖЬ) в макросе Cells(i + 1, 1) - это ячейка столбца А на листе 2, где у вас отображается этаж ( при i=1 это ячейка А2) Sheets(1).Range("A2:C4") это Лист1!A2:C4 Мне кажется, что поиск соответствия лучше проводить по столбцу квартира |
|
|
|
31.10.2010 13:03:32
Благодарю Вас.
Всё понятно объяснили. Но есть ошибка при работе макроса - см. пожалуйста файл. можно ли поправить? |
|
|
|
31.10.2010 13:36:46
{quote}{login=Kuzmich}{date=31.10.2010 12:57}{thema=Re}{post}Исходный текст макроса записан на листе 2
формулой вы пишите ВПР(A2;Лист1!A2:C4;3;ЛОЖЬ) в макросе Cells(i + 1, 1) - это ячейка столбца А на листе 2, где у вас отображается этаж ( при i=1 это ячейка А2) Sheets(1).Range("A2:C4") это Лист1!A2:C4 Мне кажется, что поиск соответствия лучше проводить по столбцу квартира{/post}{/quote} Всё, я разобрался, теперь буду эксперементировать. Благодарю Вас, ГУРУ Excel! С уважением, |
|
|
|
31.10.2010 13:37:35
На листе 1 у вас диапазон данных А2:C24
этот же диапазон должен быть и в макросе Sheets(1).Range("A2:C24") Sub ВПР() ' помогите убрать ошибку Dim i As Integer For i = 1 To 100 If Cells(i + 1, 1) <> "" Then If WorksheetFunction.VLookup(Cells(i + 1, 1), Sheets(1).Range("A2:C24"), 3, False) = "жилая" Then Cells(i + 1, 3) = "истина" Else Cells(i + 1, 3) = "ложь" End If End If Next i End Sub Но это не убережет макрос от ошибки, если номера этажа на листе 2 вдруг не окажется на листе 1 |
|
|
|
31.10.2010 13:57:38
Убережет on error resume...
Я сам - дурнее всякого примера! ...
|
|
|
|
31.10.2010 14:08:55
On Error Resume Next
|
|
|
|
31.10.2010 14:33:48
{quote}{login=Kuzmich}{date=31.10.2010 02:08}{thema=Re}{post}On Error Resume Next{/post}{/quote}
спасибо :) |
|
|
|
31.10.2010 15:20:34
Поиск соответствия по номеру квартиры
|
|
|
|
31.10.2010 15:21:19
не коротко но быстро :) Юрий просил без ВПР ...:)
Sub Макрос1() Dim lR&, lR1&, i&, j&, arr, arr1, arrF lR = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row lR1 = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row ReDim arrF(1 To lR1 - 1, 1 To 1) arr = Sheets(1).Range("A2:C" & lR).Value arr1 = Sheets(2).Range("A2:A" & lR1).Value For i = 1 To UBound(arr1) For j = 1 To UBound(arr) If arr1(i, 1) = arr(j, 1) Then If arr(j, 3) = "жилая" Then arrF(i, 1) = "ИСТИНА" If arr(j, 3) = "нежилая" Then arrF(i, 1) = "ЛОЖЬ" End If Next j Next i Sheets("Лист2").Range("C2:C" & lR1) = arrF End Sub
|
|||
|
|
31.10.2010 17:36:31
{quote}{login=R Dmitry}{date=31.10.2010 03:21}{thema=}{post}не коротко но быстро :) Юрий просил без ВПР ...:)
Sub Макрос1() Dim lR&, lR1&, i&, j&, arr, arr1, arrF lR = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row lR1 = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row ReDim arrF(1 To lR1 - 1, 1 To 1) arr = Sheets(1).Range("A2:C" & lR).Value arr1 = Sheets(2).Range("A2:A" & lR1).Value For i = 1 To UBound(arr1) For j = 1 To UBound(arr) If arr1(i, 1) = arr(j, 1) Then If arr(j, 3) = "жилая" Then arrF(i, 1) = "ИСТИНА" If arr(j, 3) = "нежилая" Then arrF(i, 1) = "ЛОЖЬ" End If Next j Next i Sheets("Лист2").Range("C2:C" & lR1) = arrF End Sub{/post}{/quote} Ого! Спасибо :) |
|
|
|
31.10.2010 17:39:48
{quote}{login=Kuzmich}{date=31.10.2010 03:20}{thema=Re}{post}Поиск соответствия по номеру квартиры{/post}{/quote}
Псибо Kuzmich :) С уважением, |
|
|
|
31.10.2010 17:55:53
Дык, пора определиться: Василий - Пахом - Охотник.
С уважением, Сергей. 99993 - каре?
Я сам - дурнее всякого примера! ...
|
||||
|
|
|||