Если имя не соответствует листу 2 с листа 1, добавьте имя на лист 2

#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