Tag: 数组

Excel 2007 – 使用公式查找SUBTOTAL中的前10位,而不是AGGREGATE

我正在使用Excel 2007,我已经看到, AGGREGATE函数将做我想做的事情,唉,它不存在于2007年。 我有以下公式获得数据集中的前10名产品。 =INDEX($A$5:$W$24389,MATCH(LARGE($V$5:$V$24389,BO1),$V$5:$V$24389,0),1) BO1:BX1是从1到10的列表(给出那个结果的k个数)。 这工作很好,直到列表然后把小计。 然后返回"" (well, 0 ),因为它findMAX值作为小计之一。 我如何获得前10名,忽略SUBTOTAL ? 这是我的想法…… 从MrExcel < – 这很好地省略了空白的单元格,但是将它们逐一地返回到列表中。 我想我需要在公式中返回这个数组,但是我无法弄清楚。

更新一个大数组中的特定值,它们匹配一个辅助数组(比如一个vlookup)

我一直被委托在Excel中编写一个“简单”的macros来执行下面的任务,我可以用VLOOKUP做比较简单的工作,但是由于数据的大小可能会在某些情况下花费一天的时间,而且会完全锁住电脑。 我有一个.csv与各种标题,我需要询问,以查找和replace这些列中以“_flag”结尾的列中的值。 “标志”(用于标识数据的置信度)已更新,所有较旧的数据都需要相应更新。 我有我所说的“FlagMap”,它列出了旧标志,相应的新标志应该作为一个单独的表格。 通常在Excel中我有一个工作表(命名的范围)与FlagMap和另一个选项卡上的CSV,并放在列旁边手动虚拟列来改变和运行一个VLOOKUP – 做了一些较小的数据集,但给了我必须做的事情我会在完成之前退休(有些人有20个“旗帜”(共40列)和7万行)。 我已经制定了这个过程,但是真的被编码困住了。 以“_flag”结尾的Find列的整个循环如果True通过基于源数据中的单元= FlagMap(COL1)中的一个标志将其replace为FlagMap(COL2)值的vlookup样式代码循环更改End Change Loop Next Column 关键之一是我可以用原始数据replace空白(标志)(通过在FlagMap数组中指定一个空白条目和相应的标志)。 我的代码是一个完整的混乱,因为我试图一点一点地构build它(通过录制macros等。正在使用filter的列)。 代码如下:虽然似乎没有做任何事情; 伤脑筋…. Sub FlagUpdate_v00() Dim wsDATA As Worksheet 'original data to be updated Dim wsFLAG As Worksheet 'Flag mapping lookup sheet Dim rFLAGMAP As Range 'Flag mapping range n ROWs & 2 COLs(no headers) Dim rDATA As Range 'Data […]

如何根据引用“移动”单元格的间接公式来有条件地格式化单元格

Stackoverflow社区, 我正在使用Excel '10。 我目前有一个间接公式,引用4个单元格来确定总和范围的x,y坐标。 公式:= IFERROR(SUM(INDIRECT(G27&G26):INDIRECT(H27&H26)),“No Records”) 如何使用条件格式突出显示公式正在求和的单元格?

问题与数组/匹配/索引

以下是我用来从Web查询中提取客户的最新实时date的当前公式。 {=LARGE( IF(Table_owssvr_1[HQ Name]=B1,1,0)* IF(ISNUMBER(Table_owssvr_1[Live Date]),Table_owssvr_1[Live Date],0), 1)} B1是客户的名字。 HQ name是A列,包含客户名称。 这个公式会为我提供最新的客户开放date,但是它不会过滤它是一个实时的,closures的还是客户保留的。 我遇到的问题是,我需要有这个公式检查表中的另一列,看看在给我最大的date之前,匹配Live -3 。 它是表Status C列。 如果列中的数据表示该客户的Live -3 ,那么我需要它从Live -3中的多个条目中抽取最大的date。 这些date在列L , Live Date 。 我一直在尝试使用匹配和索引function,但没有运气。 我感谢任何帮助。

用VBA中的二维数组填充3D数组

我有一组数据,其中每个项目都有与之对应的二维数组信息。 我想创build一个3D数组,其中第一个维度是项目名称,第二个维度和第三个维度由对应于该项目的信息占用。 我可以读取每个项目的数据到一个二维数组,但我不知道如何将二维数组读取到三维数组。 我知道所有维度的大小,所以我可以在开始读写过程之前创build一个固定大小的数组。 我想这样做只能通过项目的名称循环,而不是循环每个2D数组的每个单元格。 很容易将二维数组读入一个ArrayList,但是我希望能够命名这些项目,并且能够将这些项目读回到Excel中,而使用ArrayList似乎很困难。 问题是:如何从Excel中读取2Dselect到VBA中的3D固定大小数组?

在Excel VBA中对二维数组进行sorting

美好的一天, 我正在尝试根据第一列的内容对2D数组进行sorting。 我发现这个代码“QuickSortArray”似乎是解决scheme: sortingVBA中的multidimensional array 虽然我不能让它为我的例子工作。 我的例子是: Sub test() Dim TestArray1(1 To 4, 0 To 1) As Variant Dim TestArray2 TestArray1(1, 0) = 108 TestArray1(2, 0) = 109 TestArray1(3, 0) = 106 TestArray1(4, 0) = 110 TestArray1(1, 1) = 10 TestArray1(2, 1) = 5 TestArray1(3, 1) = 15 TestArray1(4, 1) = 2 TestArray2 = QuickSortArray(TestArray1, […]

在VBA,Excel中自动创build不同的,可识别的集合

所以我有大量的玩具车,我把它们存放在一个系列里(因为一开始我不知道会有多less辆卡车),而且每辆卡车都有很多属性,比如销售数量,价格,轮底等。这些卡车的一个特定属性是重量限制,即这个玩具可以携带多less重量,并且只有一定数量的不同的重量限制,但是当我开始时我不知道有多lessmacros观。 我想要做的就是循环收集,并将卡车添加到特定的重量不同的collections,但如上所述,我不知道会有多less不同的重量限制。 所以我想我的问题是我怎么能自动创build可以轻易识别的集合,每个集合是在一个新的重量限制卡车发现循环所有的卡车时创build的? 举个例子,如果我有10辆卡车,其中6辆可以运载2公斤,4辆可以运载3公斤,我想要两辆将2公斤和3公斤卡车分开的集合。 我曾经想过创build一个3维数组,但是这将涉及到很多“空白空间”,其中一些权重限制比其他更常见,所以更多的代码来处理,这是不理想的。 至于创build一个参差不齐的数组,我遇到了不知道如何自动创build独特的,容易识别的数组的问题。 理想情况下,我想要做的是dynamic创build一个2维数组,其中第一行是权重限制,第二行是一个集合的引用(当新的权重限制添加到数组时自动创build),但我不要认为这是可能的…(由于ReDim Preserve,包含重量限制的行) 以下是我目前正在做的事情,但显然这并不理想:(另外,每次的重量限制不会上升2次) For Each v In collTruck If v.WeightLimit = 8 Then coll8.Add v ElseIf v.WeightLimit = 10 Then coll10.Add v ElseIf v.WeightLimit = 12 Then coll12.Add v ElseIf v.WeightLimit = 14 Then coll14.Add v Else: collOtherW.Add v End If Next v Set collWeights = New Collection collWeights.Add […]

检查数组VBA的值

我试图确保我build立的数组具有我期待的值。 Cardsarrays应该填充Shoe数组。 当我计算数组的值时,我得到了预期的104,但是当我将这些值粘贴到Excel表格中时,只有13个单元格填充。 有没有简单的方法来检查数组的内容? Sub CreateShoe() Dim decks As Integer decks = 2 Dim Cards As Variant Dim shoe As Variant Dim cnt As Integer Cards = Array(2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, "A") ReDim shoe(1 To 52 * decks) cnt = 1 For i = LBound(Cards) To UBound(Cards) […]

将整行数据放入一个二维数组中

我有一个重新计算每个模拟的行,我想跟踪所有的计算值。 目前我使用复制/粘贴和循环偏移将每个模拟直接保存到电子表格中。 我试图切换这个,所以模型运行时,所有的模拟结果都存储在一个二维vba数组中,而不是在表单上,​​然后整个数组打印到最后。 我几乎没有使用数组的经验,所以我的尝试是: Dim res() As Variant ReDim res (1 To nbSims, 1 To nbLoans) For i = 1 to nbSims ****Code for calculations of each sim*** res(i,@@@) = Range(cells("",""),Cells("","")).Value Next i 通常情况下,如果我一次填充一个数组元素,我会使用res(i,j)并让它引用一个单元格,但是在这里我试图把整行结果放到一个数组中时间。 有什么build议么? 编辑:我想我已经确定,我需要找出如何填充一组数组,这是可能的吗?

将2D变体数组的一个二维抽取到一个string

类似于: 将Variant数组转换为string – 但接受的答案不适用于我的情况。 我的代码: SQLStr = "SELECT lineID FROM alldata where asdf = '" & asdf & "'" Set rs = New ADODB.Recordset rs.Open SQLStr, conn, adOpenStatic Dim arr Dim arrString rs.MoveFirst arr = rs.GetRows arrString = Join(arr, ", ") 在语句arr = rs.GetRows执行后,它在我的控制台中具有以下值: 我试图join这两个值,用comma space分隔一个string,所以最终的结果是: arrString = "25616, 99607" 但是,当我运行Join行时,我得到一个Invalid procedure call or argument错误。 […]