В MS-Excel - Есть ли способ создать индексное совпадение, используя имя текущего листа в качестве динамической ссылки? - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю рабочую книгу со многими листами, названными по номерам (пример: 1, 2, 3 ... 30).Дополнительно имеется «титульный лист», который содержит информацию на всех 30 листах.На титульном листе есть ряды информации, включая ссылку на имя листа (например, строка для листа "7", которая имеет имя, статус и т. Д.)

На каждом пронумерованном листе я бы хотелсоздать ссылку index (match ()) обратно на «титульный лист» ... Если я делаю это для листа «7», я могу сделать это успешно с помощью следующей функции:

столбец R содержит данныеЯ хочу отобразить в ячейке на листе «7» столбец X содержит ссылки, такие как «1», «2», «3», «7» и т. Д. Обратите внимание ниже, как я должен использовать абсолютную ссылку «7»в МАТЧ

=INDEX(cover sheet!R5:R200,MATCH(7,RCM!X5:X200,0))

Вместо абсолютной ссылки «7» в МАТЧЕ я бы хотел, чтобы он динамически ссылался на каждый лист, в котором находится ячейка. Я знаю, что могу получить имя листа с помощьюследующая формула ...

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)

Когда я пытаюсь использовать вышеуказанную функцию вместо абсолютной ссылки "7", я получаю # N / A

Для того, чтобы попытаться это исправитьвопрос, который я пытался преобразовать ссылку на числоs элементы в столбце X на титульном листе являются числами ...

Когда я выполняю type () для следующего, я получаю type 2 или "Text"

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)

Я считаю,чтобы справочная работа работала, мне нужно, чтобы имя листа отображалось в виде числа.Я пытался преобразовать ячейку в число, используя home -> format cell -> number ... это не сработало.

Я могу исправить ссылку, если скопирую и вставлю готовую формулу кактекст все равно не работает.Я пытался написать это в VBA, чтобы заполнить

. После копирования и вставки в виде текста единственный способ исправить ссылку - это нажать зеленую вкладку на ячейке и нажать «Преобразовать в число».исправить ссылку ...

Sub sheet_name_test()
    Dim sheet_name As String
    Dim file_name As String
    file_name = ChrW(34) & "filename" & ChrW(34) 'ASCII 34 is quotation
    sheet_name = "=MID(CELL(" & file_name & ",A1),FIND(" & ChrW(34) & "]" & ChrW(34) & ",CELL(" & file_name & ",A1))+1,255)"
    'MsgBox sheet_name & vbNewLine & Range("B11").Value
    'Cells(13, 2).Value = sheet_name

    Cells(2, 3) = sheet_name
    Cells(2, 3).Copy
    Cells(2, 3).PasteSpecial xlPasteValues
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Cells(2, 3).NumberFormat = "0"
End Sub


'when i tried to record the drop down that says "convert to number" it 
'did not record anything...
'Recorded Macro
Sub Macro1()
'
' Macro1 Macro
'

'
End Sub

Я ожидаю, что смогу использовать имя листа в индексе (Match ()), но мне просто нужно отформатировать его надлежащим образом.Моя проблема устранения неполадок до сих пор не работает.Спасибо за любую помощь или советы!

1 Ответ

0 голосов
/ 26 апреля 2019

Если вы хотите привести имя вашего листа к номеру, вы можете сделать что-то вроде этого:

MATCH(1*MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255),
      Sheet2!A1:A13,0)

или

MATCH(VALUE(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)),
      Sheet2!A1:A13,0)

В качестве альтернативы, отформатируйте названия листов на титульной странице как Текст

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...