Tag: 数组

Excel数组查找公式

我有两个表如下。 对于公式,假设“ID1”位于单元格A1上,而表格之间有一个空行,所以“ID”位于单元格A4上。 ID1 ID2 ID3 ID4 ID_OF_MAXDATE abd #N/A formula_here ID DATE a 1/1/2015 b 1/2/2015 e 1/3/2015 d 1/4/2015 g 1/5/2015 在公式中,如果id在该行中,我想要最大date的id。 所以在这种情况下,在a,b,d之外 – 最大date是1/4/2015。 所以我想要公式输出d。 到目前为止,我有下面的,但#N / A把它扔掉。 没有N / A值,下面输出最大date。 但是,我想要最大date的ID。 它应该忽略范围内的N / A。 注意,表1中的所有ID将出现在表2中。但是表1中的一些id列可能是N / A。 =MAX(IF(A2:D2=A7:A11,B7:B11))

如何从UserForm一次添加多个数据行到Excel数据库

我正在做一些足球数据库,我会input数据使用用户窗体,我想从我的Excel数据库中检索数据。 我有一个工作表名为:“wedstrijden”这个工作表包含列:date,HomeTeam,AwayTeam,HomeScore,AwayScore,HomeOdds和AwayOdds 我的其他工作表被命名为:“ingevenuitslagen”这个工作表包含我的用户表单称为UitslagenIngeven 使用下面的代码,我能够从我的数据input到我的“wedstrijden”工作表 Private Sub putAway_Click() Dim ingevenuitslagen As Worksheet Set ingevenuitslagen = ThisWorkbook.Sheets("wedstrijden") NextRow = ingevenuitslagen.Cells(Rows.Count, 1).End(xlUp).Row + 1 ingevenuitslagen.Cells(NextRow, 1) = CDate(date_txt.Text) ingevenuitslagen.Cells(NextRow, 2) = UitslagenIngeven.cboHomeTeam ingevenuitslagen.Cells(NextRow, 3) = UitslagenIngeven.cboAwayTeam ingevenuitslagen.Cells(NextRow, 4) = UitslagenIngeven.cboHScore ingevenuitslagen.Cells(NextRow, 5) = UitslagenIngeven.cboAScore ingevenuitslagen.Cells(NextRow, 6) = Val(UitslagenIngeven.hodds_txt.Text) ingevenuitslagen.Cells(NextRow, 7) = Val(UitslagenIngeven.aodds_txt.Text) End Sub 但是这只是放一行。 我希望能够一次收起10行或15行。 所以我会做一个用户表单的可能性,把20行,但它应该能够只收回填充行。 这可能吗? […]

根据水平和垂直标准将数据按行进行求和

我有以下格式的数据集: Date 1 Date 1 Date 1 Date 2 Date 2 Date 3 Date 3 Product 1 10 20 10 5 10 20 30 Product 2 5 5 10 10 10 5 30 Product 3 30 10 5 10 30 30 40 Product 4 5 10 10 20 5 10 20 我试图在date之前对产品的销售进行总结,创build如下: Date 1 Date […]

如何编写VBA用户定义的函数从IF中采取数组参数与Ctrl + Shift + Enter?

我创build了一个名为test的函数 Function test(a() As Variant) Debug.Print "Type: "; TypeName(a) Debug.Print "lb: "; LBound(a) Debug.Print "ub: "; UBound(a) test = a(UBound(a)) End Function 我打字的时候没问题 =test({4,5,6,8,9}) 在一个小区里。 它返回9。 让我们在工作表上有一些数据。 AB 1 1 3 2 0 6 3 1 9 4 0 7 5 1 8 我用ctrl + shift +在单元格中input下面的公式。 {=test(IF(A1:A5=1,B1:B5))} 我认为一个数组传入testing,但它不起作用。 它可以像往常一样返回LBound(a)和UBound(a) ,但是test = a(UBound(a))失败。 问题是什么? 我怎样才能写一个写入VBA用户定义的函数从IF获取数组参数。

分割范围包含多个范围到一个范围数组?

我试图将多个范围select转换为一个范围数组。 现在这是我想要的: Private Function SplitRange(ByRef r As Range) As Range() Dim i As Long Dim RangesArray() As Range Dim AddressArray() As String Dim Address As Variant i = 0 AddressArray = Split(r.Address, ",") ReDim RangesArray(UBound(AddressArray)) For Each Address In AddressArray Set RangesArray(i) = Range(Address) i = i + 1 Next Address ' It works till […]

查找string数组中的string索引

这个程序从一个数组中删除一个string到一个新的表格。 我发现string“你好”或“再见”,但我也希望在每个string之前的索引中的string。 'hello'或'bye'之前的string不会总是相同的,那么我怎样才能使用Index()函数呢? Sub SplitWithFormat() Dim R As Range, C As Range Dim i As Long, V As Variant Dim varHorizArray As Variant Dim rge As Range Dim intCol As Integer Set R = Range("d1", Cells(Rows.Count, "d").End(xlUp)) For Each C In R With C .TextToColumns Destination:=.Range("AD1"), DataType:=xlDelimited, _ consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _ Space:=True, other:=True, […]

Excel VBA:是否有可能获得循环中的每个单元格的地址,并将其用于循环外

我想通过工作簿的一些工作表来写一个循环,以获得每个工作表中的一个特定单元格的地址。 我的目的是获取这些单元格的地址,并将它们用作循环引用。 我写了一个代码,但它不工作,我想要的: Sub RegionalAverage() For i = 1 To 2 Sheets(i).Activate Range("A1").Select Selection.AutoFilter ActiveSheet.Range("A1:H23393").AutoFilter Field:=6, Criteria1:=1 Columns("A:H").Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Find(What:="1/1/2008", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Select ActiveCell.Offset(0, 4).Select Name (i) = "'" & Selection.Parent.name & "'" & "!" & Selection.Address(External:=False) Next i MsgBox Name(1) MsgBox Name(2) End Sub

SUM(IF)有时仅在数组中find第一个值

我有一张excel电子表格,里面有2张,sheet1是从sharepoint时间表系统导出的,sheet2是用来报告的,主要是按星期显示时间的细分。 我需要一个公式,其中sheet1( sheet1!AI:AI ,使用=D2-WEEKDAY(D2-1)计算)中的星期开始date列与sheet2中的开始行的星期匹配(第3行)。 到目前为止,我已经尝试了SUMIF,SUMPRODUCT,现在有一个SUM(IF)公式,并且都有相同的问题,它们要么找不到SUM的值(肯定存在的值),要么只会SUM数组中的第一个值。 例如,对于星期启动“2016年6月12日”,我应该总共有336小时,但目前它只发现列表中的第一个值,14。到目前为止,我尝试使用的不同公式是如下: {=SUM(IF(sheet1!$AI$2:$AI$300=CB$3,sheet1!$G$2:$G$300,0))} =SUMIF(sheet1!AI$2:AJ$300, CB$3, sheet1!G$2:G$300) =SUMPRODUCT( — (sheet1!$AI$2:$AI$300 = CB$3), sheet1!$G$2:$G$300) 所有的公式都有相同的问题,并为表2中的每一列产生相同的值,这让我怀疑这是与我的星期计算/数组有关的事情,但我无法弄清楚是什么导致了它。 当前产生的值和下面的期望值的例子: 05/06/2016 12/06/2016 19/06/2016 26/06/2016 0.00 14.00 0.00 11.00 05/06/2016 12/06/2016 19/06/2016 26/06/2016 82.85 336.00 297.75 307.25 包含数据和公式的示例文件 – https://www.dropbox.com/s/5c2c5tyl993vxyt/SUMIF%20Example.xlsx?dl=0

Excel>在未sorting的数组中find第一个/最低的非零值

在一个公式中使用标准Excel函数的一系列复杂的数组组合(不涉及VBA或UDF),我得到了以下结果出现在公式中。 我现在需要在公式中添加一个最后一步,从这个数组中只取出一个数字: {0,0,0,4,0,6,7…} 使用Excel公式,如何检索第一个非零数字(在这个例子中是4), 没有任何额外的数组引用 ? 由于从源数据生成这个数组所花费的计算的复杂性,我宁愿不要在同一个公式中做这两次。 所以我正在寻找可以应用到数组中的函数或运算符,以获得所需的结果 – 理想情况下优雅和简单的东西。 MATCH和LOOKUP失败,因为它们需要对数组进行sorting。 MIN失败,因为最低值是0,而不是4。 注意:每个非零数字的值也与其在数组中的位置相对应(第一个是1,第二个是2等),所以第一个非零数字总是最小的。

在MATLAB中将3D数组写入Excel

我写了一个生成3D数组的MATLAB代码,我想把这个数组写入一个Excel工作表。 例如,如果我的数组的大小是4x24x28那么它应该写在Excel中的28个不同的表。 有没有一个优雅的方式来做到这一点?