Tag: 范围

Excel在应用filter后填充单元格范围

我想对一组数据应用一个filter,之后我想将一个范围的数据填充到一个单元格范围内。 但现在如果这样做,最后两行正在获取第一个单元格的值。 -74.4398 -74.2028 -69.8689 -73.1567 -80.1015 -75.822 -75.0529 -75.9859 -79.2546 -72.8093 -71.6604 这是单元格B3到B13中的数字列表。 一个button后面带有以下VBA代码: Private Sub CommandButton1_Click() Dim arr() As Variant Dim i As Integer ReDim arr(1 To 11, 1 To 1) arr(1, 1) = "Hallo" arr(2, 1) = "Welt" arr(3, 1) = "Holla" arr(4, 1) = "verdugón" arr(5, 1) = "Hello" arr(6, 1) […]

在Excel参考文献范围内迭代最快的方法(“C20:F22”)

假设这个stringvariables是Excel中单元格的范围: string RangeReference = "C20:F22"; 所以我需要RangeReference中的引用列表像这样: List<string> GetAllReferencesInRange(string RangeReference) { } 对于这种情况,我们将有: GetAllReferencesInRange(RangeReference); //= //C20 //D20 //E20 //F20 //C21 //D21 //E21 //F21 //C22 //D22 //E22 //F22 如果RangeReference = "AG9:AI11"; 然后: GetAllReferencesInRange(RangeReference); //= //AG9 //AH9 //AI9 //AG10 //AH10 //AI10 //AG11 //AH11 //AI11 那么得到这个最快的方法是什么? 更新: 我知道这个问题根本无法与Excel相关,但是我使用OpenXML SDK 2.5来获取Excel文件和元素,所以也许在OpenXML中有一个我不知道的简单方法。

Excel Interop:你可以听取范围值的变化吗?

是否有可能,如果是的话,如何从C#中使用MS互操作库收听Excel范围内的更改? 我知道如何读取命名范围内的值,但不知道如何聆听并自动获取更改。 通过谷歌,并没有发现任何解决这个问题…

尝试访问工作表范围时VBA运行时错误1004

我正在构build一个小的vba脚本,它将多个工作簿中的表合并到另一个工作簿的单个工作表中。 当我尝试设置目标范围的值时,会引发错误: wksPivotData.Range(wksPivotData.Cells(CurrentRow, 1)).Resize(tbl.ListRows.Count, tbl.ListColumns.Count).Value = _ tbl.Range.Value 错误:“运行时错误”1004“:应用程序定义或对象定义的错误” 我经历了类似的问题,一般的答案是我在这一个中find的:所选单元格属于另一个工作表,而不是所需的单元格。 虽然这是完全有道理的,但我仍然无法确定为什么我的代码中断,因为我只使用数字引用( CurrentRow是一个Long)和Resize ,这应该阻止我做这样的错误。 另外,我在Immediate窗口中运行了几个快速testing,结果发现工作表wksPivotData存在,而我可以访问它的名字和单元格值,范围函数根本不起作用: Debug.Print wksPivotData.Name PivotData Debug.Print wksPivotData.Cells(1, 1).Value 123 这两个工作,但下一个不工作: Debug.Print wksPivotData.Range(1, 1).Value

循环select|行 范围vs行

我有一个类的门户网站 Public Function Init(Rng As Range) As Portal 它使用Rng.Item(1)和Rng.Item(2)处理Rng范围的前2个单元格。 这适用于select的第一行: Sub ProcessPortal() Dim mPortal As Portal Set mPortal = New Portal With mPortal .Init Selection End With End Sub 但是当我想循环遍历其余的行时失败了: Sub ProcessPortal() Dim mPortal As Portal Dim a As Range, b As Range Set a = Selection For Each b In a.Rows Set mPortal = […]

将范围传递到单元格内的自定义函数

您好我在Excel中使用VBA,并需要从两个范围的值传入一个单元格的公式内的自定义函数。 该函数如下所示: Public Function multByElement(range1 As String, range2 As String) As Variant Dim arr1() As Variant, arr2() As Variant arr1 = Range(range1).value arr2 = Range(range2).value If UBound(arr1) = UBound(arr2) Then Dim arrayA() As Variant ReDim arrayA(LBound(arr1) To UBound(arr1)) For i = LBound(arr1) To UBound(arr1) arrayA(i) = arr1(i) * arr2(i) Next i multByElement = arrayA End […]

Excel VBA:使用二维数组数据填充交错范围

目前,我正在通过VBA寻找一种更有效的方法,以将从一个Sub内的二维数组传输的信息转换为Excel工作簿中交错的一组范围。 我在下面的例子中提炼了我需要的东西,并附上代码。 任何帮助将不胜感激。 我已经链接了描述我正在使用(input,数组和输出)的示例的图像,并且编写了我在下面使用的代码示例。 为了简单起见,让我们在工作簿中将“input表”定义为Sheet1和“Sheet Sheet”作为Sheet2: Option Explicit Sub TransferData() Dim myArray as Variant 'Define the array to hold the data. Dim i as integer 'Define a generic loop counter variable. myArray = Sheet1.Range("A1:F7") 'Pulls all the relevant data into the array. myArray现在看起来完全像范围。 (我会张贴第三个链接,但我需要先获得更多的代表)。 我想将数据传输到我的输出文件,使它看起来像这样: 以下是我目前正在处理的情况: For i = 1 to ubound(myArray) Sheet2.Cells(i,1) = myArray(i,1) […]

基于表中的值的条件格式给出了“名称范围”错误

我正在尝试使Excel基于此公式将条件格式应用于表: =AND([Name1]="Prawn", ISBLANK([Name4])) 本质上,如果单词对象位于列Name1中,并且列4中同行单元格为空,则Excel应该应用突出显示。 当在一个单元格中testing时,公式的计算结果通常为True或False,但是当我在条件格式中input它时,Excel会抛出一个关于名称范围的错误。 我读过在条件格式中使用AND运算符可能会导致问题,但不知道如何解决这种情况。

Excel VBA范围只有可见的单元格数组

我正在尝试将所有的值从一个范围外的可见单元格中取出到一个数组中。 我的代码只是使数组携带的值,直到第一个不可见的单元格,然后停止。 Public Function ListeMaschinen() As Variant Dim Auswahl As Range With Sheets("qry_TechnischesDatenblatt") Set Auswahl = .Range(.Range("A2:B2"), .Range("A2:B2").End(xlDown)).SpecialCells(xlCellTypeVisible) End With ListeMaschinen = Auswahl End Function 如果我select范围它显示所有标记我想要得到的细胞。 Auswahl.Select 我无法弄清楚为什么,你能帮我吗? 多谢! 背风处

在VBA中dynamic范围大写

(编码新手张贴第一个问题,所以请原谅我的错误) 我试图学习简单的数据validation方法。 我读了另一篇文章,类似于我正在做的: convert-entire-range-to-uppercase,但是当我改变范围以适应我的需要时,它不起作用。 找不到解决这个问题的其他东西。 我有一个名为“块”的Excel列出现在不同的工作簿中的不同位置,我需要大写该列中出现的任何字母。 我认为代码按预期工作,直到最后一行,结果是“#NAME?”。 充满整个范围。 这是我迄今为止: Dim LastColumn As Long Dim LastRow As Long Dim BlockColumn As Long Dim BlockRange As Range 'defines LastColumn, LastRow & BlockColumn LastColumn = Cells.Find(What:="*", After:=Range("a1"), LookAt:=xlPart, LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False).Column LastRow = Cells.Find(What:="*", After:=Range("a1"), LookAt:=xlPart, LookIn:=xlFormulas, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row BlockColumn = Cells.Find(What:="Block", After:=Range("a1"), LookAt:=xlPart, […]