Tag: 数组

如何从VBA函数返回一个长度不等的数组

我试图在一个更大的macros中写一个函数来返回一个元素列表。 该数组是从电子表格中的单元格生成的: Function Elem_Array() As Variant Dim Elements() As Variant i = 1 Cells(i, 38).Select element1 = Cells(i, 38).Value element2 = "" Do While element2 <> element1 i = i + 1 Cells(i, 38).Select element2 = Cells(i, 38).Value ReDim Preserve Elements(1 To i) Elements(i) = element2 Loop Elements(1) = element1 Elem_Array= Elements End Function 当试图设置Elem_Array等于Elements数组时,它将结束没有Elem_Array的任何函数。 […]

Matlab:存储大量数据

我的csv文件看起来像这样 'have', 1436271616097.0, 33.0, 'noChange', 1436271538982.0 'four', 1436271616130.0, 466.0, 'noChange', 1436271538982.0 'have', 1436271616596.0, 467.0, 'noChange', 1436271538982.0 'four', 1436271617063.0, 100.0, 'noChange', 1436271538982.0 我试着用[num, txt, raw] = csvread('test.csv')它显示错误,说太多的输出参数。 我试图将我的CSV文件转换为.xlsx,但随后它将数字更改为此, have 1.44E+12 33 noChange 1.44E+12 four 1.44E+12 466 noChange 1.44E+12 have 1.44E+12 467 noChange 1.44E+12 four 1.44E+12 100 noChange 1.44E+12 minutes 1.44E+12 666 noChange 1.44E+12 然后我用[num, txt, raw] […]

Excelrecursion过程来创build一个数组

我有以下数据: 我的目标是做到这一点: recursion子将创build一个填充材料的数组。 每次将材质设置为“精雕细琢”时,该arrays将在同一维度上添加另一个子材质,并添加“.1”。 例如:如果我们看弓,它是精心devise的,所以当完成时数组看起来像这样:Material:array(0,0,0)= Wood,Quantity:array(0,0,1)= 2,Level:array (0,0,2)= 1。 但是,子代会变成:材料:array(0,1,0)=分支,数量:array(0,1,1)= 2,Level:array(0,1,2)= 1.1 并且由于分支是制作的:材料:数组(0,2,0)=树,数量:数组(0,2,1)= 1,级别:数组(0,2,2)= 1.1.1。 然后:材料:数组(0,3,0)=叶,数量:数组(0,3,1)= 9,级别:数组(0,3,2)= 1.2。 然后查找下一个材质“Rope”并继续:Material:array(1,0,0)= Rope,Quantity:array(1,0,1)= 1,Level:array(1,0,2 )= 1,材料:array(1,1,0)= Web,Quantity:array(1,1,1)= 10,Level:array(1,1,2)= 2.1等等。 我的主要问题是我不熟悉recursion代码,我的逻辑似乎是错误的,所以我想我会寻求帮助,并问在这里如何可以做到。 这是我的代码到目前为止,这是部分工作: Sub Look(ByRef arrayMaterials) Dim item With ActiveSheet lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row End With With ActiveSheet lastColumn = .Cells(j + 2, .Columns.Count).End(xlToLeft).Column End With For i = 0 […]

VBAarrays问题

我目前正在尝试从MS Project的输出表中input数据。 我已经在worksheet1上生成了这些数据,并且试图重现我在excel页面中创build的内容。 我处于早期阶段,我写了一些代码。 我抬头看了一下错误,我看不出错在哪里。 首先,我只想input数据的一个子部分到一个数组中,以便稍后操作。 debugging突出显示以下行: 如果Worksheets(“Sheet1”)。Cells(i,9).Value = Worksheets(“Sheet2”)。Cells(j,1).Value Then 我是一个C ++程序员,所以我认为我的数组操作是可以的,但是这是我在VBA上的第二天,所以对我来说很简单! 代码如下: Private Sub CommandButton1_Click() Dim i As Integer Dim j As Integer Dim Arr(2, 11) As Variant j = 5 For i = 1 To 10 If Worksheets("Sheet1").Cells(i, 9).Value = Worksheets("Sheet2").Cells(j, 1).Value Then Arr(0, i) = Worksheets("Sheet1").Cells(i, 4).Value And Arr(1, i) = […]

发送一个dynamic范围到一个函数

新手在这里,所以请忍受我。 我只是没有正确地把一个dynamic的值的列到数组中。 以下代码行适合我: Set RangeD = Sheets("Data").Range("D2:D15") unique2chan = UniqueItems(RangeD, False) RangeD是我将传递给函数的范围,称为“UniqueItems”。 “unique2chan”是由UniqueItems返回的值的数组。 上面的假设是值始终从D2到D15。 但是对于这些数据,范围的长度可以在每次运行中变化。 (所有的值在列中都是连续的,没有空格。) 这里是我的问题:我如何将一个不断变化的数值放入一个数组中,我可以传递给我的函数? 我添加了一个计数器,告诉我在列中填充了多less行,所以如果列中有12个值(加上标题),我有一个计数器,它将读取13.我怎样才能使用这个数字来定义一个范围所有的值(减头),我可以把数组传递给我的function? 任何帮助表示赞赏。 我已经尝试了很多我在网上find的东西,但是每个人似乎都有不同的方法,而且我还没有find一个能为我工作的东西。

Excel VBA:检测select了哪些切片器并存储到arrays中

是否有更有效的方法来检测/听取用户在切片机中select的内容? 我想将它们的select存储到一个数组中,最好是按照他们给定的sliceeritem名称,而不是由我决定的。 在这个例子中,切片机仅限于3个,但在我的实际工作表中,每个切片机只有10-20个。 Function slicerReader() Dim slicerArray(2) As Variant ' 0 for Age, 1 for State Worksheets(1).Select If ThisWorkbook.SlicerCaches("Slicer_Age").SlicerItems("20").Selected = True And ThisWorkbook.SlicerCaches("Slicer_Age").SlicerItems("20").Selected = True And ThisWorkbook.SlicerCaches("Slicer_Age").SlicerItems("30").Selected = True Then slicerArray(0) = "All" ElseIf ThisWorkbook.SlicerCaches("Slicer_Age").SlicerItems("20").Selected = True Then slicerArray(0) = 20 ElseIf ThisWorkbook.SlicerCaches("Slicer_Age").SlicerItems("25").Selected = True Then slicerArray(0) = 25 Else slicerArray(0) = 30 End If […]

如果数据不存在,则添加到列表的底部

基本上我正在做一个excel文件,如果他们匹配,从这个工作簿复制到另一个值。 所以如果他们有相同的ID和“是”,那么一个字段被更新。 但是,在某些情况下,可能是工作簿中不存在该ID的ID复制到,但如果有“是”,我想将其添加到下一个空行。 以下是我到目前为止 Dim fpath As String Dim owb As Workbook Dim thisone As String Dim Siteref(1000) As String, siteref2(1000) As String, sitename(1000) As String, sitename2(1000) As String fpath = "my file path" Set owb = Application.Workbooks.Open(fpath) 'open location and file Dim Master As Worksheet 'declare both Dim Slave As Worksheet Set Slave = […]

用于复制数组值的“Object Required”错误

我有错误信息 所需对象 在hostname(X, 1).Copy 我已经使用msgbox来testing这一行,可以find这个数组的主机名,但只是这行代码有错误信息。 此数组值的主机名是W01GOPTIMAPP1A。 相关的代码是 wSlastRow = .Range("B" & .Rows.Count).End(xlUp).Row hostname = WintelSheet.Range("B1:B" & wSlastRow).Value2 '// Now Loop through each row For X = 2 To wSlastRow If Not IsError(.Range("AI" & X).Value) Then If IsDate(.Range("AI" & X)) Then '//Calculate the last day of the month for dates in Column W (dtStart) and first […]

(Excel)查找哪里查找值不完全在数组中

背景:我通常会在5,8,9和12个月的时间段内对选定的类别进行“全面评价”,这个时间表摘录如下图所示(F1:I13)。 例如,对于类别101,我通常会在第5,9和12个月进行全面检查(如单元格F8:F10所示;请注意,列F中的值的格式为[Category]-[Month]单元格F2是12月12date间类别085的查找键)。 正常过程示例:如果在2015年5月对类别101进行全面审查,我将在单元格B2:B3中input“5”和“2015”,则单元格B5:B6将适当地VLOOKUP第一个和第二个前评论的类别。 所以在这种情况下, B5.Value()= 12.2014 B6.Value()= 9.2014 问题:我已经开始了一个过程,在这个过程中,我打算在所有的月份中进行部分审查,但是我没有对每个类别进行全面的审查,但是在第一个和第二个完整的审查date之后,这个过程将不再起作用。 例如,如下所示,如果我想在2015年6月份进行部分审查,我想在单元格B5:B6中插入“5.2015”和“12.2014”。 我碰到的问题是,右侧的数组是由外部来源生成的,我不能真正做任何事情来编辑它(它也比我已经显示的摘录大得多,而且太多的东西取决于它的当前格式;数组在每年年初被更新)。 是否有一个巧妙的方法来找出如何在部分审查期间查找适当的先前完整审查date,部分审查date在查找数组(查找键)的第一列中没有明确定义?

使用基于Excel函数的php数组做math

我是新来的PHP和stackoverflow,并试图找出自己的问题之前问,但我有一些麻烦做一些math我从一个数据库与PHP拉。 到目前为止,我有一个名为$ array ['sn']的数组 我已经在Excel中创build了一个函数,并在Excel中运行良好,但我无法find一种方法来在PHP中。 excelfunction是=QUOTIENT(E32,65536)&QUOTIENT(E32-F34*65536,256)&(G33-G35*256) E32是我以$ sn开头的值 F34是第一个商的答案 G35是第二个商的答案 G33是E32-F34*65536 我想取一个数字,例如3675177除以65536,但是没有余数是56,然后乘以565乘以65536,等于3670016,然后find3670016和3675177之间的差值,即5161.然后除以5161除以256,是20然后乘以20乘以256,并减去5161即41。 3675177的最终结果应该是562041.我想对$ array ['sn']中的每个数字进行计算,任何帮助将不胜感激。