Tag: 命名范围

Excel VBA从另一个名为range的工作簿中提取非空行

VBA技能薄弱的网站新手。 希望我能find一些我一直在挣扎的东西。 我发现了很多很接近的例子,似乎不能把它们结合在一起。 我正在使用Excel 2007.我有一个“Summary_Reports”WB,以及由员工命名的其他几个工作簿(例如“Jim.xls”,“bob.xls”等)。 每个员工工作簿都有一个来自工作表“任务”的命名范围“上限”。 这个在每个员工wb中的命名范围是相同的宽度(列数),但可以在高度(行数)上有所不同,有些行可能是空的。 尝试在“Summary_Reports”wb中设置一个将打开每个员工wb的macros,复制命名的范围“caps”,并将只包含第一列数据的范围的行插入/粘贴到“Report”表在“Summary_Reports”中。 我认为最简单的粘贴方法就是在顶部select一个单元格,并始终在那里插入这些行,这样,每个员工就可以在同一位置插入上一个单元格。 这种方式不计算或寻找工作表上最后填充的行。 我首先尝试打开“Jim.xls”,并直接从工作簿中复制命名的范围,但是在语法上很less成功,而且很麻烦。 所以我结束了下面的代码拉雇员表到“Summery_Reports”,然后从本身而不是另一个wb复制命名的范围。 最后可能会最终删除这些表单。 我在下面开始的工作,但我知道的数据validation是不正确的。 纠正我,如果我错了,但它只是检查右上angular左上方的单元格“帽” 如果有内容,则粘贴所有的“caps”,如果单个单元格是空的,则不粘贴任何内容。 我如何纠正validation,以检查每一行的第一列,也是如何得到它只给我的数据行? 另外,我知道还有一种更好的方法可以直接从每个员工wb获取“caps”数据,而不必先导入表格。 如果这样做容易,我会对这方面的任何build议非常感兴趣。 如果你善意的帮助我,请尽可能地减less它,因为我真的有兴趣知道代码的function,而不仅仅是复制和粘贴。 先谢谢你。 Sub Import_Sheets() Application.Workbooks.Open ("jim.xls") Workbooks("jim.xls").Activate Sheets("Tasks").Copy After:=Workbooks("Summary_Report.xlsm").Sheets("Report") Application.Workbooks("Jim.xls").Close 'Go to newly copied sheet and name it. ActiveSheet.Name = "jim" 'Copy the "caps" named range. With Range("Caps") If .Cells(1, 1).Value = "" Then Else Range("Caps").Select […]

Python xlrd命名范围值

在Python中使用XLRD从Excel读取。 简单的情况。 我有一个值的单元格,这是与一个命名的范围相关联。 NamedRange“Foo”= Sheet1!$ A $ 1 A1中的值是“Bar” book =xlrd.open_workbook("") rng = book.name_map['foo'][0] # lower case for some reason. print rng.??? # how to print the cell value bar?? 我只想在python代码中引用命名范围“Foo”并打印出单元格的值“Bar”。 编辑:这是另一个更完整的例子: import xlrd workbook = xlrd.open_workbook('/path/to/metester.xls') cell_obj = workbook.name_and_scope_map.get(('sales', -1)) # this does print Sheet1!$A$1 print cell_obj.formula_text # this raises the NoneTypeError print cell_obj.cell() […]

Excel – 根据单元格范围创build图表,同时排除空值?

我有这张基本上包含大量数据的Excel表格。 现在,此Excel工作表通过导入数据的macrosdynamic更新。 所以数据可能会改变,也就是说,一些单元格可能会被填充,而另一些则不会。 所以我在A2:A60到M2:M60的每个单元格中都有这个公式,它基本上是这样的: =IF(Sheet1!E2<>0;Sheet1!A2;"") 意思是说,如果我所在行的单元格E2是0,那么新电子表格中的复制值就是一无所获。 下一行也一样: =IF(Sheet1!E3<>0;Sheet1!A3;"") 这一直重复,直到第60行。 现在,我想要做的是select范围A2:A60并将该数据插入图表。 但事情是,图表添加了没有价值的单元格。 我想从图表中排除它,而不必更改图表的范围。 这可能使用图表select中的公式? 或者我将不得不使用macros? 编辑:现在,当我基于A2:A60创build它时,图表看起来像这样。 请注意,由于上述公式,只有A4:A17实际上有任何价值,其他则没有任何价值。

如何在Excel中移动NamedRange – VSTO不是VBA

我已经拖网,根据文档,似乎没有一种方法来移动NamedRange: http : //msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.namedrange_methods (v = VS.80)的.aspx 我有下面的代码复制单元格数据的几行: activeSheet.Range[leftColumn + startRow, rightColumn + endRow].Copy(); //activeSheet.Range[leftColumn + startRow, rightColumn + endRow].Delete(); Range newRange = activeSheet.get_Range(leftColumn + (startRow + RowsToMoveDown.Count), rightColumn + (endRow + RowsToMoveDown.Count)); newRange.PasteSpecial(XlPasteType.xlPasteAll, XlPasteSpecialOperation.xlPasteSpecialOperationNone, Missing.Value, Missing.Value); NamedRange是我正在复制和粘贴的单元格,它确实将单元格值向下移动了几行,但是因为它的副本将数据留在上述单元格中,并且Delete方法会导致exception。 然而,真正的问题是我移动单元格后,我创build的NamedRange: rnArea = activeSheet.Range[leftColumn + startRow , rightColumn + (MyData.Values.Length + startRow)]; Name name = activeBook.Names.Add(uniqueName, rnArea); […]

在非连续的命名范围上进行平均

我试图平均非连续的单元格如图所示。 我正在取每列的A和C列的平均值。 我正在尝试做同样的,但与命名范围(包括列A和C),因为我的实际数据有成千上万的列,这将是地狱编写公式,更不用说为用户了解什么是平均。 显然,我不明白如何索引命名的范围工作。 我期望这个index(RangeAC,2)能给我RangeAC中第二行的值。 相反,我得到列A中的第二行。尝试index(RangeAC,2,2)导致错误。 有可能得到这个平均值的命名范围,还是我需要一个不同的方法?

如何testingExcel文件中的任何非标题单元格是粗体还是斜体

我们使用包含一些业务逻辑的Excel工作表(因此它经常由非IT编辑)。 一些C ++代码是在VBA中从同一张表中生成的 – 傻,我知道。 我打算在这个工作表上写一堆unit testing,确保严格的格式,以利于所有人。 例如,应该按照字母顺序sorting。 以前我没做过这样的工作, 甚至不知道要使用哪个库。 为了让我的脚湿润,我想find除“自动颜色,简单样式,Arial,大小10”以外的字体 – 例如红色或粗体或大小11或ComicSans字体的所有单元格。 然后,我想检查这些单元格是否是“非标题”单元格。 “标题”单元是已知命名范围的一部分。 例如,如果这样的单元格属于一个命名的范围“XYZheaders”,那么它是好的。 如果不是,那么我希望报告一个单元格的坐标(理想的情况是每个有问题的单元格都像“D25”这样的可读取的东西,并且指出问题是否与颜色,字体types,样式或大小有关。 编辑:我只是把这个问题的赏金,因为我正在寻找一个完整的C#示例。 如果您认为我的问题含糊不清,请提问。

在Excel公式中引用dynamic命名范围

Excel中有一个表格,列标题对应于工作簿中其他位置的dynamic命名区域的一部分。 例如,我有这些列标题:“10”,“20”等,以及这些dynamic命名范围:“ExampleRange10”,“ExampleRange2”等。我想input一个VLookup公式,通过连接引用ExampleRange10string“ExampleRange”和列标题“10”。 这将允许我简单地扩展表中所有列的公式,而不是在每列公式中手动input“ExampleRange10”,“ExampleRange20”等。 我意识到了INDIRECT函数,并且在过去已经成功地使用了它的命名范围,但是在这种情况下似乎并没有使用dynamic命名范围。 我猜这是一个细微差别,与Excel定义的dynamic命名范围有关(它们不会显示在公式栏左侧的命名范围下拉列表中,并且它们在VBA中有一些有趣的属性, 例如)。 有没有一种方法可以将INDIRECT公式与dynamic命名范围结合使用,还有另外一种方法可以解决这个问题吗? 编辑 :这里是使用的确切公式。 这是主要公式: =VLOOKUP(B2,INDIRECT("ExampleRange"&C1),2,FALSE)其中C1包含“10”,我的名为“ExampleRange10”的dynamic命名范围的公式为: =OFFSET(Sheet1!$F$2,0,0,COUNTA(Sheet1!$F$2:$F$25),2) 。 主公式返回“#REF!”,但是当我删除dynamic命名范围公式并将“ExampleRange10”简单定义为静态范围时,它会正常工作。

Excel – 为什么命名合并范围不同于合并范围然后命名?

我知道,我知道,合并范围是可怕的工作。 但不pipe怎么说: 我发现了一些有趣的行为,我可以复制/粘贴一些合并范围,而不是其他人。 所以我尝试了一下。 build立: 已经很明显,这些范围不是一回事。 合并后命名的范围只包含topLeftCell引用,而命名后合并的范围则保留对所有单元格的引用。 编辑:testing代码 Option Explicit Public Sub PerformTests() Const NAME_THEN_MERGE As String = "Name_Then_Merge" Const MERGE_THEN_NAME As String = "Merge_Then_Name" Const PASTE_NAME_THEN_MERGE As String = "Paste_Name_Then_Merge" Const PASTE_MERGE_THEN_NAME As String = "Paste_Merge_Then_Name" TestNames MERGE_THEN_NAME, PASTE_NAME_THEN_MERGE '/ Result: Error 1004, cannot do that to a merged cell End Sub Public Sub […]

excel命名范围从一张到另一张复印

我有一个Excel的问题,我想知道是否有一个简单的方法来设置一个工作表中的命名范围的克隆或副本到同一工作簿中的另一个工作表。 我需要这样做,因为数据通过第三方软件工具进入。 我不是一个先进的Excel用户,并希望有一个简单的方法来做到这一点,没有macros,VBA代码等任何想法? 谢谢!

生成过滤的dynamic下拉列表

我需要两个dynamic下拉列表进行数据validation。 一个包含独特的大陆列表供select,然后是第二个列表,这个列表是根据选定的大陆dynamic生成的国家子集。 数据没有任何特定的顺序: AB — + ——————– 1 | 大陆国家 2 | 非洲阿尔及利亚 3 | 亚洲中国 4 | 非洲埃塞俄比亚 5 | 欧洲法国 6 | 欧洲德国 7 | 亚洲印度 8 | 欧洲意大利 9 | 亚洲日本 10 | 欧洲波兰 11 | 非洲南非 12 | 欧洲西class牙 我已经成功创build了第一个下拉列表,通过使用隐藏列来生成一个唯一的大陆列表,然后将它们作为命名范围进行关联。 所以那部分完成了,但是 如何基于第一个列表中select的欧洲联盟创build第二个dynamic生成的,过滤的列表(最好没有任何列表中的空白)? 我正在消化的实际数据是数千个数据点,所以性能是一个问题,如果可能,我宁愿不使用VBA。 编辑:多一点search,我发现了一个有用的链接,提供了这个公式:IFERROR(INDEX($ A $ 2:$ A $ 100,小(如果($ B […]