|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.01.2011, 20:43 | #1 |
Форумчанин
Регистрация: 31.12.2010
Сообщений: 113
|
макрос для нахождения соответствующих значений
Добрый вечер!
подскажите, пожалуйста, как исправить данный код для нахождения соответствующих значений, так чтобы он был написан без использования макрорекордера, а с помощью функции find (или любой другой функции которая смогла бы заменить vlookup). Sub m_1() Dim EndPrice As String Dim EndPricelist As String Dim FoundedCell As Excel.Range Dim Cell As Excel.Range EndPrice = Worksheets("Price").Cells.SpecialCe lls(xlCellTypeLastCell).Row EndPricelist = Worksheets("Price-list").Cells.SpecialCells(xlCellTyp eLastCell).Row For Each Cell In Worksheets("Price").Range("A1:" & "A" & EndPrice) With Worksheets("Price-list").Range("B1:" & "B" & EndPricelist) Set FoundedCell = .Find(What:=Cell.Value, LookIn:=xlValues, LookAt:=xlWhole, _ SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not FoundedCell Is Nothing Then Worksheets("Price").Cells(Cell.Row, 3).Value = _ Worksheets("Price-list").Cells(FoundedCell.Row, 17).Value End If End With Next Cell Set FoundedCell = Nothing Set Cell = Nothing End Sub |
06.01.2011, 20:49 | #2 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Весь этот код написан человеком. Цитата:
PS: зачем вообще что-то исправлять? какая цель данного исправления? |
||
06.01.2011, 20:52 | #3 |
Форумчанин
Регистрация: 31.12.2010
Сообщений: 113
|
а вот данная запись например, ее вручную было бы написать очень сложно. и я ее не могу понять. а вообще я тут разбираюсь с макросами, пытаюсь понять что к чему и научиться программировать самой.
.Find(What:=Cell.Value, LookIn:=xlValues, LookAt:=xlWhole, _ SearchOrder:=xlByColumns, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) |
06.01.2011, 21:10 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
у функции Find есть много входящих параметров
можно было записать так, так короче, но понятнее ли??? .Find(Cell.Value, Cell, xlValues, xlWhole, xlByColumns, xlNext, False, False) можно пойти еще дальше: .Find(Cell.Value, Cell, -4163, 1, 2, 1, False, False) если знать что xlValues=-4163, xlWhole=1, а xlByColumns=2 параметры можно перечислить через запятую в том порядке в котором они записаны при обьявлении функции, а можно в произвольном указав ПараметрТакойТо:=ЗначениюТакомуТо и еще, все параметры Find, кроме первого необязательны, поэтому их можно не писать и ограничится таким: Find(Cell), если еще знать, что для обьекта Range подставляется свойство Value, если свойство явно не указано. т.е. Range("A1") = range("B1") все равно что написать Range("A1").Value = range("B1").Value. и в том и в том случае в А1 из В1 попадет только значение, а не формула, не формат ячейки, не примечание из нее
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 06.01.2011 в 21:23. |
06.01.2011, 21:21 | #5 |
Форумчанин
Регистрация: 31.12.2010
Сообщений: 113
|
спасибо. теперь кое что прояснилось. до конца конечно не понятно. а можно ли в данном случае применить какую-нибудь другую функцию?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
(C++ if) нахождения значений чисел | basav1k | Помощь студентам | 0 | 24.05.2010 14:30 |
Макрос для обработки диапазона значений в цикле | as-is | Microsoft Office Excel | 5 | 08.03.2010 12:39 |
Макрос на проверку значений | serafim09 | Microsoft Office Excel | 12 | 08.09.2009 13:57 |
Макрос для формата значений | segail | Microsoft Office Excel | 3 | 13.06.2009 20:54 |
ребят может у кого-нибудь есть исходники для программы поиска файлов соответствующих шаблону? | andreww | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 31.05.2009 10:18 |