Tag: 命名范围

当另一个工作簿处于活动状态时,UDF引用已命名的表错误

现在已经确定解决scheme了 我是一个build立UDF的VBA新手。 这个UDF包含许多在工作簿中的其他工作表上引用Excel表格的查找函数,比如: Twirecol = Application.WorksheetFunction.VLookup(i, Range("iterationtable"), 2, False) 麻烦的是,如果另一个工作簿处于活动状态,那么当Excel重新计算公式时,将返回一个#VALUE错误。 我看到很多关于如何引用VBA和UDF中的其他工作簿和工作表的解决scheme,但是我不知道如何适当地限制这些表对象,以便他们将注意力集中在UDF所在的工作簿上。 请注意,我正在寻找一个不依赖于工作表名称或工作簿文件名或path的解决scheme,因为所有这些都可能随时间而改变。 这是我的名字经理这个工作簿: 名称经理 这是整个UDF代码: Public Function voltagedrop(trenchlength As Integer, intlength As Integer) As String Application.Volatile Dim TLX As Integer Dim ILX As Integer Dim TVD As Single Dim IVD As Single Dim VD As Single Dim Twirecol As Integer Dim Iwirecol As Integer Dim […]

在Excel中使用vba来确定命名范围数组中的最小值

我有一个有多个dynamic命名范围的电子表格,如HR_B1,HR_B10等 我试图创build一个函数,可以从函数中插入任何一个范围中find最小值,也就是说,用户函数将input两个值到函数say 3和6中,它将在范围HR_B3到HR_B6上find最小值。 我已经创build了一个数组和for循环来存储数组中指定范围的名称。 但是,我不能得到WorksheetFunction.Min代码作为命名区域读取数组的内容并输出最小值。 我的代码是: Public Function HR_Min_Range(minval As Integer, maxval As Integer) As Variant Dim fullrange() As Variant Dim total_birds As Integer Dim i As Long total_birds = (maxval – minval) ReDim fullrange(total_birds) For i = 0 To total_birds fullrange(i) = "HR_B" & (i + minval) Next i HR_Min_Range = WorksheetFunction.Min(Sheets("HR_Depths").Range(fullrange)) End Function

VBA-查找指定范围中的第一个单元格的位置,以引用电子表格的标题行

我所拥有的部分描述是我已经拆分成不同的栏目。 所有列都有标题,但不是所有列都包含每个部分的信息,例如:一些列可能具有大小,材质和温度,而另一列可能只有大小和温度。 我有一个函数来连接它们忽略空格。 我想在每个连接的单元格之前引用列标题。 预期结果: 在B6 = ConcatenateRangeValve(G6:J6,“,”)中input以下内容 我想看看这些结果。 [项目]阀,[types]门,[DIM] 28英寸 []中的项目是在行1:1,我有麻烦让我的函数引用该行与我在拉相同的列的标题。 我认为它需要的是确定我在哪里工作的单元在整个电子表格中。 我试图通过定义C,将其值设置为我范围内第一个单元格的列号,然后在循环中逐步增加1。 我无法得到它的工作。 所有其他部分都很好。 见下文: Function ConcatenateRangeValve(ByVal cell_range As Range, _ Optional ByVal seperator As String) As String Dim newString As String Dim cellArray As Variant Dim i As Long, j As Long Dim C As Long cellArray = cell_range.Value With Range("cell_range") C […]

获取命名范围的列和行号

我有一个引用名称范围旁边的列的问题(NamedRange只有1列宽)。 我已经使用下面的代码来插入一列: .sheets("sheet1").Range("NamedRange:NamedRange").EntireColumn.Insert 这工作,但在NamedRange之前插入列。 如果我添加没关系 shift:=xlToRight或shift:=xlToLeft 它会忽略我并将列插入到左侧。 几个问题: 我怎样才能在NamedRange右边插入一列? 我如何引用新列的第1行,将标题放到我的新列中? 换句话说,我如何find新的列单元格(row1,列???)的地址? 我怎样才能提取NamedRange的新列地址?

如何使用vba创build表?

我正在写一个简单的代码来从数据库导入/导出中获取一些关键数字。 我想把它变成用户友好的,基本上是“一键点击”给出结果。 当我编写代码时,我使用Alt + F11和“Play”=>它工作。 但是当我插入Active X控制“CommandButton1_Click”macros停止。 这里是(第一行): ActiveSheet.ListObjects.Add(xlSrcRange, Range("A$1:$Be$1500"), , xlYes).Name = _ "Table1" Range("Table1[#All]").Select ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleLight1" 这是与播放button相同的代码 。 我收到错误消息: “运行时错误1004: 表格数据的工作表范围必须与创build的表格在同一张表上。“ 有没有人有一个想法? 对我的代码的一个改进就是使表的长度变化:在一个集合中可能有更多的行,而另一个数据集中可能有更less的行。

在VBA中创build引用ListObjects表的dynamic命名范围

我需要创build一个指向ListObject表中最后几行数据的命名范围。 虽然我可以手动从function区(公式>定义名称),我必须做20个工作表,每个3个范围。 当我尝试使用VBA时,出现错误1004,并提示公式存在问题,如果我不想input公式,则删除“=”。 任何想法如何解决这个问题? 打开一个新的Sheet1来尝试我的代码。 它将创build一个ListObjects表并尝试创build命名范围。 Sub test2() Dim wks As Worksheet, tbl As ListObject Dim arr() arr = [{"Date","1/1/2016","2/1/2016","3/1/2016","4/1/2016";"Green",100,200,300,400;"Yellow",350,250,150,50;"Red",10,7,5,3}] Set wks = ActiveSheet wks.Range("a1:d5") = WorksheetFunction.Transpose(arr) Set tbl = wks.ListObjects.Add(xlSrcRange, wks.Range("a1").CurrentRegion, , xlYes) tbl.Name = "tblTix" ActiveWorkbook.Names.Add "rngRedLast3Mos", "=OFFSET(tblTix,MATCH(MAX(tblTix[Date]),tblTix[Date],1)-3,MATCH(""Red"",tblTix[#Headers],0)-1,3,1)" 'THIS FAILS ActiveWorkbook.Names.Add "rngRedLast3Mos", "=OFFSET(Sheet1!$A$1,2,3,3,1)" 'THIS WORKS ActiveWorkbook.Names.Add "rngRedLast3Mos", "=Sheet1!$D$3:$D$5" 'THIS ALSO WORKS Debug.Print ActiveWorkbook.Names("rngRedLast3Mos").RefersTo […]

在Excel中使用有条件的命名范围

让我再试一次,我一直在网上search,似乎无法find任何东西。 我想要做的是在Excel中有一个基于另一个单元格的值有条件的命名范围列表。 当我设置数据validation并将所有IF语句放在源文本框中时,我遇到的字符限制问题。 如果我只是把两个条件,似乎工作正常,但这不会对我工作。 这里是我的示例数据,基于B列值我想要显示它的有效子项。 就像我刚才提到的那样,我有20多个不同的可能值,可能在B列。 BC 1 ENG dropdown of all engineering sub-categories 2 PRO dropdown of all production sub-categories 3 PER … 4 PAY 5 ENG dropdown of all engineering sub-categories 6 ENG dropdown of all engineering sub-categories 当我尝试在列C1上设置我的数据validation列表时,我放入以下内容… =IF($E$5="CAR", CA, IF($E$5="DCC", DCC, IF($E$5="ENG", ENG, IF$E$5="ENV", ENV, IF$E$5="FBI", BI, IF$E$5="FGL", GL, IF$E$5="FAP", AP, […]

在Excel中设置命名范围的值

我很抱歉,如果这是一个总问题。 我正在为Excel编写插件。 我有一个子类,打开一个excel文件,在这个sub1我有一个sub2的参考下面。 所有我想要做的是挂钩到Excel的活动实例,更改命名的范围值并退出。 但是,无论我尝试哪种方式,我都会收到错误。 这是我的。 告诉我我哪里出了错。 忘了提及,这是在VB.NET中。 Private Sub SetRangeValue(ByVal RangeName As String, ByVal RangeValue As String) Dim ExcelApp As Excel.Application Dim TheRange As Excel.Range Dim TheRangeName As String = "" 'Hook into running excel instance ExcelApp = CType(Marshal.GetActiveObject("Excel.Application"), Excel.Application) 'First Attempt Here TheRange = ExcelApp.ActiveWorkbook.Names.Item(RangeName) TheRange.Value = RangeValue 'Second Attempt TheRange = ExcelApp.Range(RangeName) […]

AVERAGEIFS不起作用,但是AVERAGE(IF(确实)

我们有一个很大的电子表格,用来计算赛车手的performance。 它已经稳定了很长时间了。 今天,我打开它,发现其中一个表格计算不正确。 我尝试重新计算表(它被设置为手动计算),并试图重build树(ctl + alt + shift + f9)无济于事。 与其他使用平均值的公式相比,其他公式引用相同的命名范围的function正确。 variables list_of_names =从CSV文件导入的单个文本string中的名字和姓氏列表 local_name =一个名称(100%保证包含在list_of_names中)来计算轨道给定扇区中的驱动程序性能的平均值 sector_percent =驾驶员通过特定部门的预定范围内的百分比 sector_count =驾驶员通过一个扇区旅行的次数 我原来的公式返回一个#Value错误。 这是原始公式(实际公式包含一个IFERROR语句,但为了清晰起见,我已将其删除)#VALUE错误以任一方式发生。 {= AVERAGEIFS( sector_percent , list_of_names , local_name , sector_percent ,“> 0”, sector_count ,“>”和min_number_sectors )} 经过一番实验,我发现下面的公式成功地报道了正确的答案: {= AVERAGE(IF( list_of_names = local_name ,IF( sector_percent > 0,IF( sector_count > min_number_sectors , sector_percent ,0))))} 如果从AVERAGEIFS公式中除去 list_of_names和local_namevariables,则performance正确(给定满足条件的数据)。 这使我相信,名称和本地名称列表不是匹配的数据types。 […]

Excel:总结这一行的命名的范围列

我有一个dynamic数量的列,我通过VBA添加。 这些列是一个命名的范围。 我如何总结该命名区域中所有列的当前行? 例: ____| A | B | C | D | E | 1 | | 123 | 100 | aaa | 223 | 2 | | 111 | 101 | eee | 212 | 3 | | 112 | 102 | xxx | 214 | 4 | | 197 | 103 | […]