Вы можете использовать следующие VBA:
Dim WriteCell as Range
Set WriteCell = Sheets("New Sheet").Range("A2")
Dim MySheet as Worksheet
For Each MySheet In ThisWorkbook.Worksheets
If MySheet.Range("B2").Value <> "" Then
WriteCell.Value = MySheet.Range("B2").Value
WriteCell.Offset(0, -1).Value = MySheet.Name
Set WriteCell = WriteCell.Offset(1,0)
End If
Next
Это если это тот же самый лист в этой книге. Если вы хотите, чтобы это была какая-то другая книга, замените строку For Each
на следующую:
Workbooks.Open File:= "C:\MyBook.xlsx"
For Each MySheet in ActiveWorkbook.Worksheets
Это будет просто выполнять итерацию по всем рабочим листам, тестировать это значение и создавать рабочий лист с именем рабочего листа и значением ячейки в виде столбцов.