• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как подправить код макроса?

  • Автор темы tkaterina89
  • Дата начала
T

tkaterina89

Есть excel файл, в ячейках A1:A96 стоят фразы, в ячейках F1:F96 стоят те же фразы, но в другом порядке. В ячейках G1:G96, H1:H96, I1:I96 информация по этим фразам.
Я написала код:
Код:
Sub Find_Matches()
Dim CompareRange As Variant, X As Variant, Y As Variant, N As String
Set CompareRange = Range("F1:I96")
For Each X In Selection
For Each Y In CompareRange
If X = Y Then X.Offset(0, 1) = X
Next Y
Next X
End Sub
Он делает следующее: я выбираю слово из столбца А, он ищет его в столбце F и вставляет рядом с выбранным словом в столбце В.

Теперь проблема такая:

Как сделать так, чтобы копировалась информация из соседних ячеек (найденного слова) G, H и I в последующие ячейки C, D и E?
В моем примере это будет 3 ячейки, а как сделать так чтоб назначать количество копируемых ячеек?
 

Вложения

  • ______.JPG
    ______.JPG
    54 КБ · Просмотры: 334
A

alex77755

А не проще воспользоваться формулой ВПР?
 
H

hosm

Он делает следующее: я выбираю слово из столбца А, он ищет его в столбце F и вставляет рядом с выбранным словом в столбце В.
...
Set CompareRange = Range("F1:I96")
1. он ищет его в диапазоне F1:I96, т.е. во всех 4х столбцах. задавайте столбец F1:F96
2. пробовать как-то так
Код:
If X = Y Then 
X.Offset(0, 1) = X
X.Offset(0, 2) = Y.Offset(0, 1).Value
X.Offset(0, 3) = Y.Offset(0, 2).Value
X.Offset(0, 4) = Y.Offset(0, 3).Value
end if
т.е. задали kolvo =3 и вперед...
Код:
If X = Y Then 
X.Offset(0, 1) = X
For i=1 to kolvo
X.Offset(0, i+1) = Y.Offset(0, i).Value
Next
end if
кстати, есть стандартные функции для поиска.
 
T

tkaterina89

Ой, спасибо огромное!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ПОЛУЧИЛОСЬ!!!!!! :YES:
А можно сделать так, чтоб не нажимать на каждое слово и не вызывать макрос.
Т е чтоб он автоматически выполнялся для всех слов в слолбце А??
 
T

tkaterina89

Все, сама исправила!!! Всем БОЛЬШОЕ СПАСИБО!!!!
 
V

VBAaddict

Самое интересное в этом всем, что эта задача элементарно решается в Access без всякого программирования
1) Таблица на основе столбца А
2) Таблица на основе остальных непустых столбцов
3) Связывание в запросе по полю (1)
4) Вывод запроса с экспортом в Эксель

Вообще, плохо мы знаем офис, товарищи... Сам такой же...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!