1

Я пытаюсь сделать условный подсчет "COUNTIF" из закрытой книги с именем range. Как и в примере ниже, подсчитайте количество "fruit_count", если "fruit_names" равно "яблочкам":

=SUMIF('C:\folder\test.xlsm'!fruit_names;"apples";'C:\folder\test.xlsm'!fruit_count)

Я нашел формулу getvalue(), но похоже, что она не работает с именованными диапазонами:

Private Function GetValue(path, file, sheet, ref)
'   Retrieves a value from a closed workbook
    Dim arg As String
'   Make sure the file exists
    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
'   Create the argument
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)
'   Execute an XLM macro
    GetValue = ExecuteExcel4Macro(arg)
End Function  

Идеально было бы создать функцию, которая будет выполняться на панели формул ленты Excel, но "ExecuteExcel4Macro" не позволяет этого, или способ объединить функцию getvalue с именованными диапазонами ...

Я видел много вопросов и вопросов по этой теме, но не так много ответов с именованными диапазонами.

Спасибо заранее, av9

1 ответ1

1

Это потому, что вы не ссылаетесь на лист, когда ссылаетесь на именованный диапазон, Имени диапазона должно быть достаточно. Для этого ваша переменная arg должна выглядеть примерно так:'C:\folder\thisworkbook.xlsx'!this_range или 'C:\folder\[Someotherfile.xlsx]'!that_range для именованных диапазонов для работы.

Теперь вы ExecuteExcel4Macro() с неверной строкой, поэтому эта функция прерывается.

это

GetValue(path, file, sheet, ref)

Должно быть это

GetValue(path, file, named_range)

И это

arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)

к этому

arg = "'" & path & "[" & file & "]" & "'!" & named_range
'or
arg = "'" & path & "\" & file & "'!" & named_range

Таким образом, он вернет вам диапазон. Я проверял это.

Приветствия.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .