Tag: 范围

如何使用单元格值来定义图表数据的范围?

我有一组500个单元格,我使用下面的范围定义创build了一个图表: =Sheet1!$A$1:$A$500 我有2个单元格B1和B2中,我想定义开始和结束值(1-500内)的图表只显示我的数据的一个子集(假设从20到200)。 如何引用单元格B1和B2来取代我的数据范围定义中的$1和$500 ?

VBA – 范围对象只设置一次循环

我正在编写匹配date(从文件)的代码,将其放入一个集合,然后尝试在电子表格中find它。 一旦find它,它会在两个单元格的集合中放入以下两项。 当我运行这个,我得到以下错误:“对象variables或块variables未设置”。 我试图debugging我的代码,它显示在下面的代码的第一个循环后,范围对象,“rthecell”,更改为适当的值。 一旦发生循环的第二次迭代,“rthecell”的值变为“Nothing”。 例如: Set rtheCell = Range("A:A").Find(What:=LineItem1) rtheCell.Offset(, 1).Value = LineItem3 rtheCell.Offset(, 2).Value = LineItem2 Set rtheCell = Nothing 同样,在循环的第一次迭代中,一切按预期工作,但是一旦第二次迭代发生,我就会收到错误。 以下是完整的代码: Sub InputData() 'Declare variables Dim sFilePath As String Dim sLineFromFile As String Dim saLineItems() As String Dim element As Variant Dim col As Collection Dim LineItem1 As String Dim LineItem2 As […]

C#从excel文件读取数据结果在###

我用这个代码从Excel文件中读取数据 Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; Microsoft.Office.Interop.Excel.Range range; int rCnt = 0; int cCnt = 0; string[,] data; xlWorkSheet = (Worksheet)wb.Worksheets.get_Item(sheetId); range = xlWorkSheet.UsedRange; data = new string[range.Rows.Count, range.Columns.Count]; for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) { for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) { data[rCnt – 1, cCnt – 1] = (string) (range.Cells[rCnt, cCnt] as […]

从范围切换到数组并返回到VBA函数

在VBA中有很多问题和很多处理Range / Array转换的问题。 我一直没有find一个可行的答案,所以我真的会赞赏一些帮助。 以下是我想要做的: Function RangeToArrayToRange(inputRange As Range) As Range Dim inputArray As Variant inputArray = inputRange 'operations on inputArray' '…' Dim outputRange As Range outputRange = inputArray Set RangeToArrayToRange = outputRange End Function 在此先感谢您的帮助!

将数组值赋给VBA中的variables会导致我的UDF退出

我似乎无法弄清楚为什么这个UDF正在currentInput = inputArray(i)上退出。 这是相关的代码: Function OrderRange(inputRange As Range) As Variant Dim length As Integer inputHeight = inputRange.Count Dim inputArray As Variant inputArray = inputRange Dim strippedArray() As Variant ReDim strippedArray(0 To (inputHeight – 1)) Dim currentInput As String Dim i As Integer For i = 0 To (inputHeight – 1) currentInput = inputArray(i) '…computations on […]

VBA:加上不规则的范围

嗨,大家好, 我一直在使用Stackoverflow几个月,通常,我设法find解决scheme,直到现在我所有的VBA挑战: 我需要一些帮助来创build一个macros,这些macros在“avg”字的行之间添加列E上的所有值。 结果应显示在显示“Sum here”标签的单元格上。 “avg”和“sum here”两个文本仅仅是为了举例说明,“avg”可以被任何其他的词代替,“sum here”实际上应该是它上面的值的聚合。 真正的挑战是E列的范围数是可变的,所以我想find一个能够处理E列的“n”个范围的macros。 最后,列D上的值只是“求和”单元的期望值的例子。 这是我曾经试过的: Sub Macro1() ' ' Macro1 Macro ' Dim sumhere As Range Dim startingpoint As Range Dim endingpoint As Range ' Range("C17").Select Selection.End(xlDown).Select If ActiveCell = "avg" Then ActiveCell.Offset(rowoffset:=0, columnoffset:=2).Select Set sumhere = ActiveCell Set startingpoint = ActiveCell.Offset(rowoffset:=-1, columnoffset:=0) Selection.End(xlUp).Select If (ActiveCell.Value) = "Sum here" […]

将范围传递给Excel用户定义函数并将其分配给数组

我在尝试着 将两个范围( 多行单列)传递给Excel 2007中的用户定义函数, 然后将其分配给一个数组进行处理。 任何人都可以告诉我如何将这样的范围分配给一个数组? 范围不是常量,因为我在不同的单元格中使用UDF来处理不同的数据,所以我不能使用e,g, Range("A1:A10") 当我使用Data1.Rows.Cells(i, 1)而不是数组时,代码正在工作。 但是我认为使用一维数组来提高效率更好。 这是我目前的代码 Function Sample(Data1 As Range, Data2 As Range) As Double 'Size of Data1 and Data2 Dim rows As Integer rows = Data1.Rows.Count 'Declaring two one dimensional arrays Dim data1Array(rows) As Double — Getting error here Dim data2Array(rows) As Double — Getting error here Dim […]

从VBA复制范围中排除1行

我正在编写一些代码,将多个工作表(它们形成单个部件列表)合并为一个大型部件列表。 到目前为止,我有2个函数扫描每个工作表的最后一行和一列 Function LastRow(sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 End Function 和 Function LastCol(sh As Worksheet) On Error Resume Next LastCol = sh.Cells.Find(What:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column […]

Excel VBA – 使用范围作为可选参数的function?

我想编写一个范围作为一个可选参数的VBA函数。 比如像这样的东西: Public Function testfunc(S As String, Optional R As Range) As String testfunc = S For Each cell In R testfunc = testfunc + cell Next cell End Function 我试过上面的函数,但是我得到了一个#VALUE! 错误。 我也尝试在If(R)Then … End If语句中包装For循环。 如何处理一个可选的范围,如果范围存在,那么它将通过For Each循环来迭代?

如果单元格A为空,则清除列B到F的内容

我有一个工作表,其值取决于单元格A.如果A列中的一行包含一个值,那么列B到H中的单元格将相应地更改。 如果列A的单元格为空,则要重置列D至F中的单元格。 我写下了下面的VBA代码 Private Sub Worksheet_Change(ByVal Target As Range) Dim n As Integer For n = 5 To 75 Application.EnableEvents = False If VarType(Cells(n, 1)) = vbEmpty Then Cells(n, 4).ClearContents Cells(n, 5).ClearContents Cells(n, 6).ClearContents Application.EnableEvents = True End If Next n End Sub “FOR”循环令人讨厌,并且在任何进入任何单元格之后让Excel暂停1秒或更长时间,任何人都可以帮助我纠正上面的代码,以便在没有“FOR”循环的情况下执行我所需的操作。