Как сопоставить имена листов (tab) в диапазоне на отдельном листе и возвращать определенный текст на каждый лист

У меня есть книга с несколькими листами. На одном листе есть 2 столбца данных. Этот лист называется «Примечания», в то время как остальные из них имеют заголовок, который соответствует значениям, введенным в диапазоне A1: A6 листа «Примечания». Столбец B содержит примечания, которые должны отображаться на каждом соответствующем листе из столбца A.

Например, если 2-й лист в книге озаглавлен «Изготовление Gpu», а значение в A1 листа «Примечания» также является «Изготовлением Gpu», тогда я хочу, чтобы значение в ячейке B1 «Примечания» было введено в ячейку F1 листа «Изготовление Gpu».

Затем, если 3-й лист в книге называется «Tesla GPU», а значение в A2 листа «Notes» также является «графическим процессором Tesla», тогда я хочу, чтобы значение в ячейке B2 «Примечания» было введено в ячейку F1 листа «Tesla GPUs».

Промыть и повторить, чтобы вытащить данные из листа «Примечания» в другие листы, основываясь на их имени или названии.

Вот что я имею до сих пор:

Sub example() Dim wkSht As Worksheet For Each wkSht In Sheets For Each Cell In Sheets("Reporting").Range("B2:B200") If Cell.Value = wkSht.Name Then wkSht.Range("D15").Copy Destination:=Cell.Offset(0,1) End If Next Cell Next wkSht End Sub 

Редактировать для BruceWayne:

это то, что показывает мое приложение VBA:

Окно VBA

Вы сначала писали:

«Например, если 2-й лист в WB называется« Изготовление Gpu », а значение в A1 листа« Примечания »также является« Изготовлением Gpu », тогда я хочу, чтобы значение в ячейке B1« Примечания »вводилось в ячейку F1 листа «Изготовление Gpu».

Из которого он выводит следующий код:

 Sub Main() Dim cell As Range For Each cell In Worksheets("Notes").Range("A1:A6") Worksheets(cell.Value).Range("F1") = cell.Offset(,1) Next cell End Sub 

Тогда вы написали в комментарии к BruceWayne ответ:

«однако он все равно ничего не возвращает в ячейке F2 каждого листа»

Какие изменения (от «F1» до «F2») ячейки назначения в листах, отличных от «Примечания», где можно вставить свои значения из столбца «B»,

Если это последнее будет реальным случаем, то просто замените:

 Worksheets(cell.Value).Range("F1") = cell.Offset(,1) 

с:

 Worksheets(cell.Value).Range("F2") = cell.Offset(,1) 

Наконец, вы написали в другом комментарии к BruceWayne:

«это всего лишь тестовая книга, чтобы получить макрос, который работает, потому что на самом деле мне нужно будет использовать его в книге, содержащей 700 листов, чтобы соответствовать столбцу и возвращать определенные данные для этого листа из второго столбца в разделе« Заметки "Лист – Уильям Кроуфорд 1 час назад"

Что совсем другое

Мой код здесь отвечает на ваш первоначальный вопрос

Если ваша потребность изменилась, чем другой вопрос

 Sub example() Dim wkSht As Worksheet Dim cel As Range For Each wkSht In ActiveWorkbook.Worksheets For Each cel In Sheets("Reporting").Range("B2:B200") If cel.Value = wkSht.Name Then wkSht.Range("D15").Copy Destination:=cel.Offset(0, 1) End If Next cel Next wkSht End Sub 

В основном, я добавил Acitveworkbook.Worksheets вместо простого Sheets . Это должно сделать так, чтобы активная книга была запущена. Кроме того, убедитесь, что у вас есть лист под названием «Отчетность». Если это не сработает, дайте мне знать, как это сделать.

Также понимайте, что он будет проходить через 200 ячеек на каждом рабочем листе. Это самый эффективный способ сделать это? Вы делаете этот большой цикл, потому что значение находится где-то в этом диапазоне? Или вам действительно нужно проверить каждый? (Я думаю, что find может быть лучше)

Edit: Как это, я переключил его после ваших комментариев:

 Sub example2() Dim wkSht As Worksheet Dim cel As Range Dim curShtName As String For Each sht In ActiveWorkbook.Worksheets sht.Name = Trim(sht.Name) Next sht For i = 1 To 6 ' Since we go from A1/B1 to A6/B6 curShtName = Worksheets("Notes").Cells(i, 1).Value If curShtName <> "Notes" Then Worksheets(curShtName).Cells(2, 6).Value = Worksheets("Notes").Cells(i, 2).Value End If Next i End Sub 

Изменить: просто понял, что это в основном то, что сделал user3598756: P

Редактирование 3: Хорошо, во-первых, убедитесь, что второй бит кода, который я добавил выше, находится в модуле рабочей книги в книге с вашими листами. Это должно сработать для вас, это было для меня: введите описание изображения здесь

Затем после запуска:

введите описание изображения здесь введите описание изображения здесь

etc и т. д.

За ваши последние комментарии:

 Sub copyInfo() Dim lastRow As Long Dim notesWS As Worksheet Set notesWS = ActiveWorkbook.Worksheets("Notes") ' This is the worksheet with the info. you want to copy over to other sheets lastRow = notesWS.Cells(notesWS.Rows.Count, 2).End(xlUp).Row ' Assuming your Col. B has the most info Dim myFacts() As Variant myFacts = notesWS.Range(notesWS.Cells(1, 2), notesWS.Cells(lastRow, 2)) Dim i As Long i = 1 For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Notes" Then ws.Cells(2, 6).Value = myFacts(i, 1) 'This loops through our Array that we created above. i = i + 1 End If Next ws End Sub 
Interesting Posts

Есть ли альтернатива Scripting.FileSystemObject в Excel 2011 VBA для Mac?

Значение ячейки ячейки из встроенного листа excel в документ слова 2013

Как обратиться к Excel NamedRange в Visual Studio с помощью Microsoft.Office.Interop

shape.addpicture дает 1004 ошибку

«Невозможно назначить ошибку массива» при заполнении массива с массивными массивами

UnicodeDecodeError при попытке сохранить файл Excel с помощью Python xlwt

Импорт файла Excel XLS в SSIS – преобразование строки заголовка и добавление в базовые записи

Преобразование имен в правильный формат

Цикл цикла VBA CountIf () / Countifs ()

Ошибка только для Azure – поставщик «Microsoft.ACE.OleDb.12.0» не зарегистрирован на локальной машине

Является ли свойство приложения Excel.Hwnd пригодным для использования с 64-битным VBA?

Сохраните каждый рабочий лист в книге как отдельный файл pdf

Скопировать формат столбца на основе строки заголовка Excel

Ошибка сброса кода VBA: ошибка времени выполнения 1004 Ошибка метода автозаполнения класса диапазона

Как рассчитать время остановки

Давайте будем гением компьютера.