#excel #copy #match #vba
#excel #Копировать #совпадение #vba
Вопрос:
У меня есть 2 листа, один с именем bills, а другой с именем sheet1.
У меня есть код VBA для поиска имени и вставки информации в соответствующее имя, но как мне добавить новое имя, которого там нет?
Затем, если имя не найдено, добавьте имя в столбец счетов F строка 192 и столбец F строка 193.
пример:
счета
A B C D E F G H
xxx xxxx xxx xxx xx bill xxx
xxx xxxx xxx xxx xx bill xxx
xxx xxxx xxx xxx xx man xxx
xxx xxxx xxx xxx xx man xxx
sheet1
A B
bill 19.23
man 156.23
Вот что у меня есть до сих пор:
Dim sh1 As Worksheet, sh2 As Worksheet
Dim j As Long, i As Long, lastrow As Long
Set sh1 = Worksheets("test")
Set sh2 = Worksheets("Sheet1")
lastrow1 = sh1.Cells(Rows.Count, "F").End(xlUp).Row
lastrow2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastrow1
For j = 1 To lastrow2
If sh1.Cells(i, "F").Value = sh2.Cells(j, "A").Value Then
sh1.Cells(i, "H").Value = sh2.Cells(j, "B").Value
End If
Next j
Next i
End Sub
Комментарии:
1. Вы пытаетесь создать сводную таблицу? Может ли функция сводной таблицы Excel решить вашу проблему без использования макроса?
2. Мне нужен макрос, потому что я запускаю другие макросы в программе, которую я создал на C#
3. Вы могли бы включить сводную таблицу в свой макрос. Мне кажется, что здесь путь наименьшего сопротивления.
Ответ №1:
Я знаю, что вы пытаетесь использовать макрос и не хотите, чтобы это звучало слишком просто, но вы подумали о том, чтобы просто указать желаемый диапазон на листе ввода данных (счета), а затем на листе 1, где вы хотите отобразить данные, используя формулу поиска?
Например:
Bills.xls
A B C D E F G H
xxx xxxx xxx xxx xx счет xxx
xxx xxxx xxx xxx xx счет xxx
ххх хххх ХХХ ХХХ хх человек ХХХ
ххх хххх ХХХ ХХХ хх человек ХХХ
лист1
A B
счет 19.23
человек 156.23
…. назовите диапазон F1: F100 «ИМЕНА»
Затем, на sheet1.xls в каждой ячейке нужной строки вывода (просто скопируйте / вставьте) и используйте проверку данных с именованным диапазоном /// может быть просто формула, указывающая =if(‘NAMES’ $F $1<>»»,’NAMES’ $F $1,»»)
… то есть, если я правильно понимаю ваши потребности.
Комментарии:
1. имя добавляется каждую неделю, и мне нужно, чтобы макрос выполнял работу по добавлению нового имени с листа 1 на лист 2, если оно не найдено на листе 2