我有一个动态命名范围,它返回一些未分配的值的列表(数组),但是一旦分配了所有值,列表返回#N / A
公式(数组):
= INDEX(EquipTable [Equip],MATCH(0,EquipTable [Flag],0),1):INDEX(EquipTable [Equip], MATCH(0,EquipTable [Flag],0)+ COUNTIF(EquipTable [Flag],0)-1,1)
问题是我使用名为Listbox.RowSource的Ranged,我找不到检查命名范围值的方法,甚至检查它是否返回错误。
我用过:
Application.WorksheetFunction.IsError(ActiveWorkbook.Names("UnassignedEquipment"))
但它总是返回False
我也用过:
IsEmpty(ActiveWorkbook.Names("UnassignedEquipment"))
和
IsError(ActiveWorkbook.Names("UnassignedEquipment"))
答案 0 :(得分:1)
一种方法是在用于命名范围的公式中使用IFERROR,这样如果命名范围不返回任何内容,则它指的是特定范围/单元格。
=IFERROR(INDEX(EquipTable[Equip], MATCH(0,EquipTable[Flag],0), 1):INDEX(EquipTable[Equip], MATCH(0,EquipTable[Flag],0)+COUNTIF(EquipTable[Flag],0)-1, 1),A1)
这里A1是指定范围将引用的单元格,如果公式未返回任何有效范围。根据您的要求更改公式中的A1。