Tag: 命名范围

Excel VBA。 你如何得到与范围相关的特定名称?

我有一个单元格,它有多个与之相关的命名范围。 我如何得到它返回一个特定的名称,而不必循环工作簿中的所有名称? Sub Test() ActiveWorkbook.Names.Add Name:="AUserDefinedName1", RefersTo:="='Sheet1'!$A$1", Visible:=True ActiveWorkbook.Names.Add Name:="AUserDefinedName2", RefersTo:="='Sheet1'!$A$1", Visible:=True ActiveWorkbook.Names.Add Name:="MyName", RefersTo:="='Sheet1'!$A$1", Visible:=True Dim n As Name Set n = Range("A1").Name Debug.Print n.Name End Sub 如果你运行上面的单元格A1,它只会返回第一个名字。 然而,我怎么会得到它返回与单元格A1相关的其他名称以及具体返回“我的名字”? 我可以遍历工作簿中的所有名称,并查看Name对象的“RefersTo”属性是否与单元格A1的地址匹配,但是如果可能的话,我希望有更快的解决scheme。 这个线程给出了一个部分的答案,但是如果有多个名字,需要什么呢? 你如何得到一个范围返回它的名字?

用命名范围填充列表框

我正在开展我的第一个VBA项目,需要一些绝对的新手指导。 我有一个工作人员将用来提交每日KPI的提交表格。 我有一个名为“lstName”的用户表单中的列表框控件,员工将在提交表单之前使用它们select其名称 员工姓名存储在名为“EmpName”的“Sheet11”上的命名范围内。 我想指示列表框从Sheet11上的“EmpName”范围中绘制名称列表; 但不知道如何在VBA中做到这一点。 我打算使用RowSource将列表框指向数据,但是我失去了如何做到这一点。 真的很简单的问题,我知道,它可能已经在网站上以某种方式回答,但由于我是VBA的新手,答案是超出了我的。 如果有人可以提供一个解决什么代码是做得很出色的答案。

在另一张纸上使用间接引用一个名为范围的excel

假设我有三张纸(比如说Sheet1 , Sheet2和Sheet3 )。 Sheet1和Sheet2包含每个名为MyRange的图纸级范围。 在Sheet3 ,如果我想从Sheet1访问MyRange ,我将只能使用='Sheet1'!MyRange 。 但现在,我希望Sheet3包含通用代码,并能够引用Sheet1或Sheet2 。 所以我希望能够使用相同的东西 = INDIRECT(“'”&MySheetName&“'!MyRange”) 但是,当我这样做时,我收到了错误#REF 。 我做错了什么? 我该如何解决这个问题?

Excel – 是否有可能抵消一系列的范围?

基本上我已经定义了 mydata = {$E$2:$H$6,$J$2:$M$6,$O$2:$S$6,$V$2:$Y$6,$AA$2:$AE$6,$AG$2:$AJ$6,$AM$2:$AP$6, $AR$2:$AV$6,$AX$2:$BA$6,$BD$2:$BG$6,$BI$2:$BM$6,$BO$2:$BR$6} 这个范围的数组。 有没有办法来抵消(mydata,x,y)? 背景:我要问的原因是我必须在评论中定义受保护的范围 – >允许用户编辑范围部分。 而对于一些文件,他们甚至可以定义80个范围。 所以我想我只是手动定义第一个,然后只是抵消其余的50 – 80范围。 但抵消不支持不相邻的单元格,所以有没有解决这个限制? :/

Excel VBA硬编码中的每个命名范围

我目前复制一个工作表,其中包含工作簿和工作表特定的命名范围。 工作表特定的引用需要是它们的方式,工作簿需要被硬编码。 我正在寻找一种方法来修复每个包含外部引用的命名区域。 我目前的代码看起来像这样,但它不是真正的我: Sub HardcodeValuesInExternalNamedRanges(wb As Workbook, ws As Worksheet) Dim namCur As Name For Each namCur In wb.Names If (InStr(1, namCur.RefersTo, ThisWorkbook.Name) > 0) Then namCur.RefersTo = "=" & ws.Evaluate(namCur.RefersTo) End If Next namCur End Sub 我无法find正确固定值的方法。 现在做的方式,在一定程度上做这项工作,但我宁愿如果在单元格内正确转换的值,而不是在一个命名的范围内。 另一个select是遍历所有的单元格,看看它是否包含一个命名的范围,但我认为这太耗时。 有没有办法更有效地做到这一点?

获取与给定范围对应的命名范围的名称

我怎样才能从单元格区域获取名为范围的Excel的名称 ? 例如,我在Excel编辑器中将“A1”单元格命名为“Test”,然后我想从“A1”Excel范围的C#中获取这个名称。 以下是我的尝试,但没有给我我需要的结果。 Xcelrng = (Excel.Range)Excel.Application.Cells[XcelRow, XcelCol]; 从我使用的任何其他Excel元素,如值,公式,地址,我也无法得到命名范围的名称。

使用命名范围进行条件数据validation

我有一个名为“myList”的命名范围定义为Sheet1的行1到200。 有20栏,第8栏是员工的信息,而最后12栏是员工每个月的0或1。 现在,我想创build一个下拉菜单,如果我的命名范围的第9-20列至less有1,那么将显示雇员的名字。 现在,我使用下面的公式作为数据validation: =INDEX(myList,,1) ,它向我显示myLast中的每一个名字,不pipe列9-20中是否有1。 我怎么能改变这个,以便在数据validation创build一个下拉菜单中显示的唯一名称是myList的第1列的名称,其中myList> = 1的第9-20列的相应的SUM()?

在Excel中使用命名范围的逻辑操作

当我试图在我的电子表格中使用更好的名字时遇到了这个问题 以这个例子使用布尔逻辑 列A具有指定范围“Include1”列B具有指定范围“Include2” 公式是: 我所看到的是,如果我直接使用命名的范围,它会提取值,但是当我将它包含在布尔比较(AND,OR)中时,它不起作用。 (F栏和I栏应该像G栏和J栏一样) 我做错了什么或这是一个已知的问题? 如果我做错了什么,我将如何让布尔comparrisions使用命名范围? – 编辑 我刚刚发现有以下工作: =AND(Include1=TRUE, Include2=TRUE) =OR(Include1=TRUE, Include2=TRUE) 这不是太直观,但这是由Excel的devise?

使用FIND函数返回VBA中的最后一个值

我正在尝试编写一个函数来search列,并返回包含最后一个匹配的单元格。 例如,如果我有单元格A5作为我的活动单元格 A1 -> Text A2 -> wefwqef A3 -> Text A4 -> eorbebr 我想要通过数组search“文本”,并为它返回单元格A3,因为这是最后一场比赛。 但如果我有单元格A7作为我的活动单元格 A1 -> Text A2 -> wefwqef A3 -> Text A4 -> eorbebr A5 -> fhyeher A6 -> Text 然后它会返回A6作为我的结果。 我一直在玩FIND函数试图让它工作,但我不断收到错误(应用程序或基于对象的错误)。 我的计划是作为一个更大的循环的一部分执行这个代码,在每种情况下,它返回最接近活动单元格的值。 (我希望这是有道理的) 这是迄今为止的代码: Range("A19:I19").Select 'ActiveCell.FormulaR1C1 = Sheets("Sheet1").Cells(9, 5).Value & ":5 CTs, O/C " & _ 'Sheets("Sheet1").Cells(9, 8).Value * 100 […]

dynamic范围再次 – 与文本string

我有一系列的数据集(稍后将被用于填充combobox),并且我已经尝试设置dynamic范围来仅列出具有有用数据的单元格。 总共有160行数据,但是将要填充的行数将大不相同。 如果它对它有影响(例如,如果dynamic范围检测为非空白,例如),用于填充范围中单元格的公式 {=IF(ROW()-ROW(StartPort_NoBlanks)+1>ROWS(StartPort_Blanks)-COUNTBLANK(StartPort_Blanks),"",INDIRECT(ADDRESS(SMALL((IF(StartPort_Blanks<>"",ROW(StartPort_Blanks),ROW()+ROWS(StartPort_Blanks))),ROW()-ROW(StartPort_NoBlanks)+1),COLUMN(StartPort_Blanks),4)))} (基于@ DennisWilliamson的答案在https://superuser.com/questions/189737/dynamically-updating-list-of-unique-column-entries-in-excel ) 到目前为止,我已经尝试了两个 ='Saves_FilterLookups'!$C$3:INDEX('Saves_FilterLookups'!$C$3:$C$162, COUNTA('Saves_FilterLookups'!$C$3:$C$162)) 和 =OFFSET('Saves_FilterLookups'!$C$3,0,0,COUNTA('Saves_FilterLookups'!$C:$C),1) …但都给了我整个列表,包括“空白”单元格。 大部分范围包含文本string; 其他范围之一包含date。 我错过了什么? 我如何解决它? 编辑:给一点上下文,这里是一个列表。 完整列表包含沿其长度分散的条目,重复项被移除到第二列中,并且它们全部合并到第三列中的单个块中。 然后它们被填充到用户表单中的combobox中,但是所有的空白也都进入了…