Tag: 命名范围

你如何得到一个定义的范围地址作为公式中的相对参考?

有人知道我怎样才能得到rng3的范围地址作为相对参考(例如B2:B4)而不是作为范围名称出现在我的总和公式中? 我试图使用它的总和公式给出的值为0。 我正在试图将该公式复制到D列的其余部分。 基于电子表格中最后一列的范围每周都在变化。 请忽略我的代码中的任何注释。 感谢您的阅读 Sub needhelp () Dim rng1 As Range Dim rng2 As Range Dim rng3 As Range Dim rng4 As Range Dim fillrange As Range Dim cell1 As Range Dim cell2 As Range Dim cellAddress As Range Range("G1").Select Range("G1").End(xlToRight).Select ActiveCell.Offset(1, 0).Select ActiveCell.Offset(0, -2).Select Set cell1 = ActiveCell Set rng1 = Cells.Find("*", […]

更改命名范围参考

我正在处理一个具有生成子文件的macros操作的Excel文件。 我被指示做的是为某些领域创buildselect列表。 我在父文件中创build了一个新的参考表来容纳下拉值。 然后我为这些列创build了命名范围。 当我执行子文件的导出操作时出现问题。 “引用”string更改为包含父文件的path。 我不希望这样,因为如果父母closures,子文件中的select列表function会中断。 有没有办法阻止“引用”string通过导出过程中的变化? 收集所有select列表信息的参考表格从父母到孩子被复制。 我已经尝试过直接引用单元格范围,并使用相同的结果: 如果主文件指向:='Xref'!A2:A11然后子文件指的是:='[C:…. xlsm] Xref'!A2:A11

如何使用Microsoft.Office.Interop在Visual Studio中引用Excel NamedRange

我正在使用ExcelDNA从VBA转换到VB.NET的Excel加载项。 在我的代码中,我试图通过它的名字来引用一个NamedRange(就像我可以在VBA中)来设置该名称的'ReferTo'属性。 但是,我得到一个错误,它不能转换我提供给一个整数的名称。 错误:从string“MyNamedRangeName”到types“整数”的转换无效。 在下面的代码中,您可以看到错误发生的位置以及原因。 Imports Microsoft.Office.Interop Imports ExcelDna.Integration Public Class Class1 Sub SetReferToProperty() Dim ap As Excel.Application = ExcelDnaUtil.Application Dim wb as Excel.Workbook = ap.ActiveWorkbook 'This is where the error occurs. Apparently, I can't (?) refer to 'the NamedRange by it's name. I need to use it's index. wb.Names("MyNamedRangeName").RefersTo = 0 'If I use […]

将Excel命名范围读入数组(VBA)

我想读命名的范围('NamedRange')到一个数组('NamedRangeAsArray')。 我已经尝试了一些没有成功的东西,并希望find一种方法来做到这一点,无论指定范围的长度或高度(以及扩展,然后,数组的维度)。 我努力了: Dim NamedRangeAsArray As Variant NamedRangeAsArray = Range("NamedRange").Value (只读取命名区域的第一个单元格到数组[1,1]); 也, NamedRangeAsArray = Range(Workbook.Names("NamedRange").RefersToRange.Address) (根本不工作), 无济于事。 有任何想法吗? 请分享。 谢谢! 更新: Dim NamedRangeAsArray() As Variant NamedRangeAsArray() = Range(Workbook.Names("NamedRange").RefersToRange.Address) For i = LBound(NamedRangeAsArray()) To UBound(NamedRangeAsArray()) MsgBox NamedRangeAsArray(i, 1) Next i (只读取命名区域的第一个单元格到数组[1,1]) 感谢@findwindow和@Brian的帮助。

从复制的工作表中删除命名范围的外部参照

我有一大堆的工作簿,通过​​导出两个工作表 – 数据表本身和一个名为Lookups的工作表,其中包含数据validation下拉列表的命名范围。 我遇到的最大问题是复制过程导致了那些指定的范围不是指向新工作表,而是指向原始工作簿 – TimeUnits范围应该被定义为=Lookups!$D$2:$D$4 ,它是实际上变成='\\sestofp001p\users\SEANP\WWL\Other Projects\20160531 – Ops – Port data project\Data Collection\[Port Data.xlsm]Lookups'!$D$2:$D$4 。 除了在312个不同的工作簿上有26个范围之外,这不是一个大问题,所以我正在寻找一种方便的方法去除多余的位,将其变成本书的参考。 有什么build议么?

将列的非空单元格命名为前一列的值

所以我想要的是一个button,当按下时会自动命名右侧列单元格的左侧列值,我的代码在这一刻看起来像这样, Private Sub CommandButton1_Click() Range("F3").Name = Range("E3") Range("F4").Name = Range("E4") Range("F5").Name = Range("E5") Range("F6").Name = Range("E6") End Sub 我是使用VBA的新手,并且环视了一下,但是找不到我想要达到的目标。 只需要一个简单的解决scheme,可以自动做我的代码已经做了,而不必具体细胞行。 我想,如果一个单元格是空的,将会有一个while循环或for循环重复执行多行,并且if语句代码不会运行。 基本上我想要命令运行下面的东西,但不知道如何写在Excel VBA自己。 for j=3:100 if F(j) = non empty F(j).name = E(j) else end next j end 下图显示了最终结果:

多个dynamic范围的打印

所以我得到了这个表格: 我需要Excel来在不同的纸张上打印不同的范围。 范围将永远是不同的。 我需要在一页纸上打印A1(范围A2:B3)路线,A2(范围A4:B5)打印在第二张纸上。 等等。 我正在考虑在右侧创build另一个表格并定义路线的范围,例如: 然后,我将使用名称pipe理器给A1航线B13单元参考范围的名称。 但是,如何返回路线匹配的范围呢? 请告知,如果这是一个相当可观的想法? 或者也许有更有效的东西?

为什么我的风格不适用于我的范围(Aspose Cells)?

我正在创造一个范围,赋予它一个价值,并将其devise成如下forms: private string fontForSheets = "Calibri"; Range unitNameRange = locationWorksheet.Cells.CreateRange("A1", "D1"); unitNameRange.PutValue(_unit, false, true); // val, isConverted, SetStyle. Don't know if these bools are right… CellsFactory cf = new CellsFactory(); Style style = cf.CreateStyle(); style.HorizontalAlignment = TextAlignmentType.Left; style.Font.Name = fontForSheets; style.Font.IsBold = true; style.Font.Size = 14; unitNameRange.SetStyle(style); 但风格不是“取” – 价值是一个简单的,通用的,一点点的文本; 这是Arial 10,没有粗体。 我怎样才能得到风格坚持范围? 是第二还是第三,还是两者都错了? 我猜是什么时候设置isConverted为false,SetStyle为true […]

VBAdynamic命名范围为列表框RowSource错误

我有一个dynamic命名的范围,返回一个列表(数组)的列表(数组),但没有分配,但一旦所有的值分配列表返回#N / A 公式(数组): = INDEX(EquipTable [Equip],MATCH(0,EquipTable [Flag],0),1):INDEX(EquipTable [Equip],MATCH(0,EquipTable [Flag],0)+ COUNTIF(EquipTable [Flag] )-1,1) 问题是,我正在使用这个名为Listbox.RowSource的Ranged,我找不到一个方法来检查命名范围的值,甚至检查它是否返回错误。 我用了: Application.WorksheetFunction.IsError(ActiveWorkbook.Names("UnassignedEquipment")) 但它总是返回假 我也用过: IsEmpty(ActiveWorkbook.Names("UnassignedEquipment")) 和 IsError(ActiveWorkbook.Names("UnassignedEquipment"))

在Excel中引用范围

我已经命名范围C6:C13'date'。 这是一个dynamic的范围(开始date会有所不同),实际上,这将是一个很长的专栏。 E6将从C6创build,所以单元格E6将是“=date”。 我希望能够在列E中input“= Date”,并填充行C中所填入的行数,而不是将其拖到列C中。问题是行数会有所不同,如果我只是在所有行中input'= Date'到100k或其他任何值,当然'#VALUE!' 将会在下面的许多行中input(我知道这在许多情况下是非问题的,但对我来说这是一个很大的问题)。 那么有没有办法在列E中引用'= Date',只有在C列中填充的行数?