Tag: 命名范围

使用代码在Excel的名称pipe理器中对命名范围进行sorting

我使用VSTO从Excel电子表格中获得命名范围列表: public List<Name> GetNamedRanges(Workbook activeWorkbook) { List<Name> namedRanges = new List<Name>(); Name name; for (int i = 0; i < activeWorkbook.Names.Count; i++) { name = activeWorkbook.Names.Item(i + 1); if (!name.Value.Contains("#REF")) { namedRanges.Add(name); } } return namedRanges; } 这会以奇怪的顺序返回名称: 有没有人有一个简单的方法按列顺序对名称范围进行sorting。 例如: 工作表Sheet1 = $ A $ 9:!$ B $ 172 工作表Sheet1 = $ C $ 9:$!d […]

Excel VBA – 工作表类的ShowAllData方法失败

我已经自动将正确的logginginput到我用作数据库的表中,并且在过滤表时,input不起作用。 所以我有这样的代码,在每个logginginput之前不要过滤数据库。 Public Sub UnFilter_DB() Dim ActiveS As String, CurrScreenUpdate As Boolean CurrScreenUpdate = Application.ScreenUpdating Application.ScreenUpdating = False ActiveS = ActiveSheet.Name Sheets("DB").Activate Sheets("DB").Range("A1").Activate Sheets("DB").ShowAllData DoEvents Sheets(ActiveS).Activate Application.ScreenUpdating = CurrScreenUpdate End Sub 但现在,它仍然停留在Sheets("DB").ShowAllData说: 工作表类的ShowAllData方法失败 因为桌子已经过滤了 而且我不知道是否最好使用像On Error Resume Next一样的error handling程序,或者如何检测是否有filter或没有filter 。 任何指针将受到欢迎!

创build条件范围,在Excel中修改列和高级过滤

我努力在Excel中为我的数据库创build适当的标准范围。 这个问题对我来说相当复杂。 这是问题的样子: 将名为数据库的范围名称分配给范围A14:J26 。 将名为Criteria的范围名称分配给范围A7:J9 。 ( 这一部分完成 )。 为Criteria范围创build列标签,并将版本大小replace为第二个发行date列标签。 在条件范围中设置以下条件 : – 于二○○○年一月一日及二○○三年十二月三十一日前发售的限量版油画售罄 – 2000年1月1日之后和2003年12月31日之前发行的售罄限量版印刷品 使用数据库列表和Criteria范围创build一个高级filter。 过滤一切到位。 所以这将是问题。 大胆的斜体部分是我最大的困惑。 我真的不知道如何做到这一点。 请参阅下面的表格: https://docs.google.com/spreadsheets/d/1xjZ62WK7gqbo58JBCfwYaMV7xLZkhBMPiUQsGdt7WUo/edit?usp=sharing 编辑 我已经从数据库logging中复制了所有列名,并将它们粘贴到条件范围中。 然后我在K7中join下面的公式: =AND(OR(F15>E$8, F15<F$8), OR(D15="Limited Edition Print", D15="Limited Edition Canvas")) 但不幸的是,这不是过滤我的结果,因为我想要他们。 有任何想法吗?

为什么我的“已定义的名称”(范围)值没有使用此Spreadsheet Light代码设置?

我有这个代码将一个“标题”(大,顶部的“标题”)应用于表单: // Initialize private static SLDocument sl; . . . sl = new SLDocument(); // Create a Style SLStyle styleHeading = sl.CreateStyle(); styleHeading.SetFont(FontSchemeValues.Major, 36); styleHeading.Font.Italic = true; styleHeading.Font.FontName = "Candara"; // Create a Defined Name (Range) and give it a value and style sl.SetDefinedName("UnitName", "Sheet1!$A$1:$A$13"); sl.SetCellValue("UnitName", "Pennsylvania Platypi Presumptuously Parasailing"); sl.SetCellStyle("UnitName", styleHeading); // Save the […]

Excel 2010 VBA范围不会从命名表中select正确的数据

我尝试从命名范围中select多个列。 我build立的string应该select一些variables: Dim onecolumn as Integer, lastcolumn as Integer Dim tblTable as ListObject Dim strforrange as String Set tblTable = Sheet1.ListObjects("Table1") onecolumn = 3 lastcolumn = tblTable.Range.Columns.Count strforrange = tblTable & "[[#All],[Column" & onecolumn & "]:[Column" & lastcolumn – 1 & "]]" Range(strforrange).Select 我一步一步地运行代码,并检查“strforrange”variables。 即使是正确的,选定的列也不同于string中列出的列。 有没有其他的方式来获得命名表的范围或有人知道这个解决scheme?

使用命名范围(Excel VBA)中的特定列

请看这张我命名为“任务”的表格: 这是一个非常基本的甘特图表。 使用VBA我使用这个表中的数据来执行其他工作表中的一些任务。 我有一个For循环遍历每一行像这样: For i = 1 To Range("Tasks").Rows.Count Worksheets("Calendar").Cells(i,2).Value = Range("Tasks").Cells(i,2) End For For循环中还有许多其他操作,但这超出了我的问题的范围。 基本上,它所做的是循环遍历整个表格,并执行各种操作和计算(如果适用),从而导致在其他工作表中填充其他单元格。 我的问题是这样的: 由于表中的所有列都被标记,所以我想以某种方式引用列名,而不是循环中的列号,如果可能的话。 例如: Worksheets("Calendar").Cells(i, 2).Value = Range("Tasks").Cells(i, "Title") 这有助于代码的可读性,因为我知道这个引用了“标题”列,而不是来回查看哪个列是例如数字“2”。 我知道这种引用可以在Excel中使用 =Tasks[Title] (例如,这个expression式可以用于数据validation) 是否可以引用这样的列? 我对VBA很感兴趣,所以我不太确定。 期待您的回答。

通过r1c1公式参考预定义的范围

我必须从另一个工作表中的另一个范围查找一些值。 我已经将范围定义为“x”,我想在r1c1公式中使用它,参见示例: Set x = extwbk.Worksheets("ark1").Range("A1:d400") With twb.Sheets(filename) .Range("k2:k" & n).FormulaR1C1 = "=VLOOKUP(RC[-10],x,4,False)" .Range("l2:l" & n).FormulaR1C1 = "=VLOOKUP(RC[-11],x,4,False)" 我试图做的application.vlookup,它的工作原理,但太慢了,因为我必须循环4000+行两次我将需要使用范围x,作为范围应灵活取决于查找表,例如: Set x = extwbk.Worksheets("ark1").Range("A1:d" & rows) 任何build议如何我可以参考我的查找function的范围x? 谢谢!

在VBA中通过dynamic命名范围循环

我有一个嵌套循环dynamic命名范围在Sheet2“TransTypes”,我定义为: =OFFSET(Sheet2!$A$1,0,0,COUNTA(Sheet2!A:A),1) 我的循环如下: Sub Repeat_trans_type() Dim Trans_type_count As Integer, wb As Workbook, wsMain As Worksheet, nwb As Workbook Dim i As Integer, nws As Worksheet, wsSheet2 As Worksheet, j As Integer, cell As Range Dim k As Integer Trans_type_count = Sheet2.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count Application.ScreenUpdating = False Set wb = Workbooks("Book1.xlsm") Set wsMain = wb.Sheets("Sheet1") Set wsSheet2 = […]

评估命名范围上的函数,通过EVALUATE自己定义

在Excel 2010中。 给定一个命名范围的名称,我试图评估这个命名范围的公式,当它本身已经通过评估定义。 举个例子可能会更好: 使用这个vba函数: Function eval(str As String) As Variant eval = ActiveSheet.Evaluate(str) End Function 并定义命名范围_xyz(公式选项卡>名称pipe理器,或Alt,I,N,D)(下划线在这里以避免与单元名称冲突): 名称:_xyz 范围:Sheet1 指的是: =ROW(Sheet1!$A$1:$A$10) 如果使用公式= _xyz (然后按Ctrl-Shift-Enter)在Sheet1(作为垂直的1列行)中的某个位置创build一个数组公式,则可以得到值1,2,3 …… 10柱。 然后公式如=AVERAGE(_xyz)或=MAX(_xyz)工作(相应的结果为5.5和10)。 因此,给定名称的范围(这里是“_xyz”)和适当的函数(平均或最大): =eval("AVERAGE(_xyz)")返回5.5和=eval("MAX(_xyz)")返回10.到目前为止这么好。 现在我定义一个新的命名范围_xyz2为: 名称:_xyz2 范围:Sheet1 指的是: =EVALUATE("_xyz*_xyz") 如果用公式= _xyz2 (然后按Ctrl-Shift-Enter)在Sheet1的某个位置(作为垂直的1列的行)创build一个数组公式,则可以得到值= _xyz2 … 100列(即_xyz的值的平方)。 公式如=AVERAGE(_xyz2)或=MAX(_xyz2)都可以正常工作(相应的结果为38.5和100), 但是 eval函数不再有效:公式如=eval("AVERAGE(_xyz2)")和=eval("MAX(_xyz)")现在返回#VALUE !. 我已经尝试了其他types的eval函数。 例如: Function eval2(str As String) As Variant eval2 = Application.WorksheetFunction.Average(ActiveSheet.Evaluate(str)) […]

用VLookup和命名范围设置variables

使用命名区域时无法使VLookup函数正常工作。 我相信它与我如何引用"COA_Range"但找不到"COA_Range"的解决scheme 我努力了 [], ([]), (””), [””],([””])…… ( 以下是代码的更新和扩展部分 ) If Transaction_Type = 1 Then Debug.Print "Transaction Type :"; Transaction_Type Range("n10").Value = "Income" Debug.Print "COA # = "; TransactionInfo.Income_COA_Number.Value COA_Number = TransactionInfo.Income_COA_Number.Value Debug.Print COA_Number Range("n12").Value = TransactionInfo.Income_COA_Number.Value 'thought from STACK OVERFLOW Debug.Print Range("COA_Range").Address() COA_1 = Application.WorksheetFunction.VLookup(COA_Number, Range("COA_Range"), 2, False) Debug.Print COA_1 Range("n13").Value = COA_1