Tag: 命名范围

最有效的方法来检查一个数字是否在vba的大量范围内

我正在尝试编码听起来像段或间隔树,但我不知道如何在VBA中做到这一点。 基本上,我想要做的是拿一个数字列表,看看它们是否属于范围列表。 在现实世界中,数字是指客户,这些范围分配给不同的公司网站。 例如,假设我们有3个数字(又名客户)input:156000 166000和256000.站点1获得145000到149000,152300到155000和165000到165999之间的任何客户。站点2获得156000到159000之间的任何客户,162000和165000,255000到275000.站点3得到166000到180000之间的任何客户。所以我想要的function能够告诉客户一,三将去2站点,而客户2将去站点三。 所以每个站点都有大约一到八个不连续的范围。 数量(客户)数量(客户)的范围可以从1到5000不等,但范围的数量是大约3000分布在497个不同的网站,这将随着时间缓慢增加,但将静态更新。 客户编号将复制/粘贴到Excel工作表中的K列。 我将在同一工作簿中的另一个工作表中的网站范围。 起初,我试图做大量的if / then语句,但是如果做了3000个if / then语句的列表似乎不是最好的方法。 然后我考虑做一个if / then语句的分层列表,最初只是查看列L中存储的客户编号的前两个数字,如: If Worksheets("Input").Range("L" & x) >= 14 and _ If Worksheets("Input").Range("L" & x) =< 19 then If Worksheets("Input").Range("K" & x) >= 145000 and _ If Worksheets("Input").Range("K" & x) >= 146000 then [code to assign customer to specific site] End […]

当引用不是活动工作表的命名范围时,Excel VBA评估函数错误

编辑更好的例子 我正在尝试使用评估函数来评估命名范围的公式引用。 但是,使用评估函数时,如果您没有明确说明表单引用以及单元格引用,它将假定活动工作表作为单元格引用。 这会导致错误的结果 在我真正的项目中,我试图只评估命名范围公式的一部分,所以它更加棘手。 使用我想要做的基本示例,假设您在Sheet 1单元格A1中的名称为MyCell的公式如下: ="Don't evaluate this part"&"My Result Is " & A2 如果活动工作表是Sheet 2,并且运行下面的代码,它会给你错误的结果(这是一个快速而脏的例子来说明问题) Dim s As String s = Replace(Range("MyCell").Formula, """Don't evaluate this part""&", "") Debug.Print Evaluate(s) 而不是给我的单元格A2单元格中的值,它给了我单元格Sheet2单元格中的值。 任何想法呢? 这是我发现最接近,但它不是我确切的问题(尽pipe类似的标题),它不提供解决scheme: Excel VBA评估公式从另一个工作表

Excel条件格式:使用工作表范围的命名范围

最近我不得不将以前的工作簿范围的命名范围更改为Worksheet范围。 这些用于条件格式规则。 现在我似乎无法继续使用他们通过添加图纸名称的参考: Sheet1包含数据并使用条件格式。 假设Sheet2包含一个指定Sheet2:A1的命名范围“ConstantX”。 该名称的范围为Sheet2。 当试图在Sheet1中设置CF为例如=Q3 > Sheet2!ConstantX我收到错误消息“此types的引用无法在条件格式公式中使用”。 不过,如果我用Sheet2!A1replaceSheet2!ConstantX,但这不是一个可以接受的解决方法。 不幸的是,将作用域更改回工作簿同样很糟糕,因为当我运行我的自动更新时,该特定工作表被复制并粘贴,从而破坏工作簿作用域引用。 是否有解决scheme在另一个工作表的条件格式规则中使用工作表范围的命名范围?

删除命名区域中的重复项

我有一个问题,我相信你会find一个简单的解决scheme,我在这个头上 我有从另一个工作簿复制范围的代码,将其粘贴到当前的工作簿中,然后删除重复项 问题是,在删除重复项之后,它认为范围仍然和去除重复项(包括空格)一样长, 例: allcontacts是1-10行 我从另一个工作簿3粘贴10行是新的,所以它删除了7个重复 我的范围(名称经理)应该是1:13,但是它显示1:20,最下面有7个空白 'Dim currentworkbook As String 'currentworkbook = ActiveWorkbook.Name 'Workbooks.Open ("q:\mis\_estimatorm1.xlsm") 'Workbooks("_estimatorm1.xlsm").Worksheets("contacts").Range("Allcontacts").Copy 'Workbooks(currentworkbook).Activate 'Sheets("contacts").Rows("3:3").Select 'Selection.Insert Shift:=xlDown 'Application.CutCopyMode = False ' Sheets("contacts").Activate ' Cells.Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder _ ' :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False ActiveSheet.Range("allcontacts").RemoveDuplicates Columns:=Array(1, 3, 4), Header:=xlNo 'Columns("A:m").Select ' ActiveWorkbook.Worksheets("CONTACTS").Sort.SortFields.Clear 'ActiveWorkbook.Worksheets("CONTACTS").Sort.SortFields.Add Key:=Range( _ ' "A2:A2000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ […]

如何使用xlrd,Python定位和访问命名范围(全局,每个工作表)?

xlrd的文档http://www.python-excel.org/提到现在可以在最新版本中使用,但是并没有说明如何。

如何在另一个工作簿中获取已定义名称的值,使用vba for excel

我有几个包含计算的工作簿,我正在制作一个“自动概览”,结合所有这些表中的数据。 要find我使用命名范围的数据。 这些工作正常。 但是有一个定义的名称不涉及范围。 这是一个公式。 我想要的是从我的概述书中访问该公式的结果(在打开的计算书中)。 很明显, wb.Names("myNamedFormula").RefersToRange不起作用,因为名称不涉及范围。 wb.Names("myNamedFormula").Value给我公式,但不是结果。 没有名字的成员得到结果。 我尝试使用Evaluate(…)评估公式,但这不起作用,因为它应该在其他工作簿中评估。 有谁知道如何得到结果? 谢谢, ps:我知道有一种可能性,就是让这个名字引用一个范围,然后在那里进行计算,但是我不希望这样。

在Excel中创build一个dynamic的命名范围

我试图创build一个命名区域作为数据validation下拉菜单的一部分。 我从一个表创build这个,但是,我只想显示在列C中符合特定条件(true或false)的列A的值。但是,列C中的值可以更改,所以我需要命名的范围也可以改变。 我的表看起来像这样: ABC 1 .. 2 .. 0 3 .. 1 4 .. 0 5 .. 1 6 .. 1 我想命名的范围selectA的值,其中c是1 – 或者在这个例子中是1,3,5,6。

命名范围子集中的“对于每个单元格”?

我猜这是一个容易的。 我想循环遍历VBA中的命名范围,但是我想跳过范围中的第一个单元格。 谁能帮忙? (PS:我是一个VBA新手,不是一个训练有素的开发人员,自己教学,这个论坛非常有用,但是如果你以为我没有试图find解决scheme,那么你就错了。

Excel删除命名范围内的行

我有一个受保护的单元格的工作表。 有一个“添加行”button,我需要一个“删除行”button。 但是,我只希望用户能够删除该行,如果它在一个命名的范围内。 ActiveSheet.Unprotect密码:=“密码” 如果Range(“ProjectList”)中的“ selected row ”然后 Row.EntireRow.Delete Shift:=xlUp 万一 ActiveSheet.Protect密码:=“密码”

从一张纸复印范围根据另一张纸上的单元格值粘贴同一张纸上的部分范围

现在我已经创build了一个代码,可以将一个范围内的值复制到另一个范围内(基于另一个表单的值)。 但是因为这个值可以是十二个值中的一个,所以被复制和粘贴的范围变小。 由于我不擅长VBA,因此我在Excel中创build了数十个复制范围和几十个粘贴范围,以便通过VBA处理ElseIf语句来复制和粘贴,具体取决于单元格值在另一个表单中。 我很好奇,有没有办法让我的代码更加优化,并在我的工作簿有更less的命名范围? 任何帮助,将不胜感激,这里是我的代码下面粘贴(复制和粘贴的每个命名范围只是一个较less的列,由于什么select可以在第一张表): SubTest() If ws0.Range("D6") = "BUD" Then ws1.Range("CopyFormulasFT").Select Selection.Copy ws1.Range("PasteFormulasFT").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=True, Transpose:=False ElseIf ws0.Range("D6") = "F01" Then ws1.Range("CopyFormulasFTOneEleven").Select Selection.Copy ws1.Range("PasteFormulasFTOneEleven").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=True, Transpose:=False ElseIf ws0.Range("D6") = "F02" Then ws1.Range("CopyFormulasFTTwoTen").Select Selection.Copy ws1.Range("PasteFormulasFTTwoTen").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=True, Transpose:=False ElseIf ws0.Range("D6") = "F03" Then ws1.Range("CopyFormulasFTThreeNine").Select Selection.Copy […]