Tag: 数组

加权中值 – 数组的UDF?

我是一个被认可的newb,当涉及到在其他许多事情excel / code /等。 当我计算一个中间值(一个值为一列,一个值)时,我试图find一种方法来计算出现加权,并且发现了一个运行良好的较老的UDF。 现在我可能会变得有点贪婪,但是我正在尝试处理相当多的信息,最快的方法就是只有在第三列中的标签标识了值时,才能执行加权中介。 Occurr. Cost Store Name 1 9.99 Charlie 4 15 Charlie 5 8 Charlie 6 10 Romeo 9 12 Delta 2 15 Romeo 3 8 Romeo 4 9.99 Delta 6 15 Delta 1 8 Delta 我试过这个{= WeightedMedian(IF($ C $ 2:$ C $ 12 = $ D2,$ B $ 2:$ B […]

将string添加到dynamic数组VBA

问题:我正在比较两列名称。 如果主列中的名称与辅助列中的名称匹配,那么我想将匹配的名称添加到string数组中。 函数1:这个布尔函数应该表明是否匹配: Function Match(name As String, s As Worksheet, column As Integer) As Boolean Dim i As Integer i = 2 While s.Cells(i, column) <> "" If s.Cells(i, column).Value = name Then Match = True End If i = i + 1 Wend Match = False End Function 函数2:该函数应该将匹配的名称添加到string的dynamic数组中。 在这里我有点卡住,因为我是新的arrays – 任何build议? Function AddToArray(ys) […]

VBA WorksheetFunction.Sum不适用于数组,但与范围?

我不是一个VBA新手,但我有一个新手问题。 我正在开发一个项目,并且需要创build一个函数来获取电子表格中的某个单元格,扩大范围,然后对其进行求和。 Function Top_Performers(Sales As Range, DataWindow As Integer) Dim MyArray () As Variant Dim c As Integer, r As Integer r = Sales.Row c = Sales.Column MyArray = Range(Worksheets("Data").Cells(r, c – DataWindow + 1), Worksheets("Data").Cells(r, c)) Top_Performers = Application.WorksheetFunction.Sum(MyArray) 但是,即使对于非零范围,该函数也会输出零值。 下面的代码,但是,工作。 Function Top_Performers(Sales As Range, DataWindow As Integer) Dim MyArray As Range Dim c […]

VBAdynamic数组错误地复制了一些值

我想通过说我不知道为什么我的代码正在做它正在做的事情。 我真的希望在这里的VBA大师之一可以帮助。 另外,这是我的第一篇文章,所以我尽了最大的努力来遵守规则,但是如果我做错了,请指出。 我有一个子迭代通过一列数据,并创build一个数组。 它调用一个函数来检查特定值是否已经在数组中。 如果不是,则数组将被重新标注,插入该值,并且该过程再次开始,直到到达列表的末尾。 最后我得到了一个总共有41个值的数组,但其中4个已经被复制了两次,所以数组中只有37个唯一值。 我不能为了我的生活找出这些价值观的区别是什么,或者为什么他们被重复。 总的列表是700+的值,所以我想我应该看到其他值重复,但我不是。 这里是创build数组的子代码: Sub ProductNumberArray(strWrkShtName As String, strFindColumn As String, blAsGrp As Boolean, iStart As Integer) Dim i As Integer Dim lastRow As Integer Dim iFindColumn As Integer Dim checkString As String With wbCurrent.Worksheets(strWrkShtName) iFindColumn = .UsedRange.Find(strFindColumn, .Range("A1"), xlValues, xlWhole, xlByColumns).Column lastRow = .Cells(Rows.Count, iFindColumn).End(xlUp).row For i = […]

与数组条件产生和

我想要使​​用一个依赖于一系列cellvalue条件的sumproduct公式。 所以基本上我想总结一些之前发现的单元格的条目之一。 我可以使一系列的条件工作,但不是通过单元格的值。 在例子中。 Let A1 = "a", A2 = "b", B1 = 1, B2 = 2 然后 C1 = Sumproduct((A1:A100={"a"."b"})*(B1:B100)) = 3 工作正常,但是 C2 = Sumproduct((A1:A100=A1:A2)*(B1:B100)) = ERROR 有没有办法将{“a”。“b”}放入一个单元格或一组单元格中? 问候和感谢您的帮助,彼得 免责声明:我知道我可以简单地写: C2 = Sumproduct((A1:A100=A1)*(B1:B100)) + Sumproduct((A1:A100=A2)*(B1:B100)) 但是我想有一个解决scheme,如果列表中有10个以上的条件,那么这个解决scheme还是很好的。

合并行使用词典在总和和最大值/最小值的VBA到某些列

我正在尝试合并具有多个属性的数据行(例如订单号和产品编号)。 例如:订单12345有4行数据都具有相同的产品编号,但每行都有唯一的收入金额。 我想要一个最终的结果,所有4行被合并成1行,其中有4条原始行总计收入金额。 另外每一行都有开始和结束date。 我需要最后的合并行将最早的( MIN )开始date和最后的( MAX )结束date作为合并行的最终结果。 我要整理的目标行并不总是连续的,因此我认为字典将是他们要走的路(在这个path中,唯一的ID(用于标识需要整合的行)是我的“关键”)。 我在这里发现了一个类似的问题,并用这个答案的代码来到我现在所在的位置。 我有一个“唯一的ID”,它决定了哪些行需要合并在一起(如果ID是相同的,行需要合并)。 唯一ID是4列(订单#,产品,合同名称和状态)的串联。 我目前的代码是: Dim oRange As Range Dim oTarget As Range Dim oRow As Range Dim oRowAmend As Range Dim oDic As Scripting.Dictionary Dim sIndex As String Dim vKey As Variant Dim vItem As Variant Dim LastRow As Long Worksheets("ODD Data").Activate LastRow = Worksheets("ODD […]

Excel VBA – 在工作表中searchstring

我有这个Excel工作簿,我想在Sheet1中search特定的string。 如果find它,请input一个新值。 但是,表单非常庞大,所以我不认为循环遍历每个单元格会非常有效。 那么,我可以通过一个范围进行search并find它吗? 这是我到目前为止: Dim rngSearchRange as range With ThisWorkbook.Sheets(1) Set rngSearchRange = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row) End With 我正在查找的string是三个值的数组中的第一个值。 那么,我怎么能search这个范围的特定string,find位置,然后input一个新的值? 我在想这个事情: Dim rngFindRange as range Set rngFindRange = rngSearchRange.Find(var(0), LookIn:=xlValues, lookat:=xlWhole) var(0)是我后面的数组中的值。 但是这条线并没有给我任何结果。 我在这里?

excel:如何识别包含来自关键字列表的文本关键字的行

我有一列(称为A)的数据,其中每个单元格包含一个长长的string,例如: COLUMN A HORNBACH BAUMARKT ETOY, ETOY ALIGRO, CHAVANNES-PR DIPL. ING. FUST AG,ETO, ETOY AGIP SUISSE SA 224, LAUSANNE AMAZON MEDIA EU, LUXEMBOURG MIGROS M EPALINGES, EPALINGES HORNBACH BAUMARKT ETOY, ETOY MANOR AG – 390, BASEL MANOR AG – 390, BASEL GLOBUS LAUSANNE, LAUSANNE 我还有另一列中的关键字的另一个列表(称为B),例如 COLUMN B MSFT Amazon Hornbach Jumbo OBI Lipo Ikea Coop […]

Excel VBAsearchw /大型数组

所以我find并修改了一个适合我需求的macros,但是有一个限制。 我正在构build一个macros查找医疗支付数据的特定诊断代码和程序代码。 在我目前正在进行的项目中,只有14个诊断代码,所以我可以直接把它放到VBA中。 但是,有超过800个程序代码是我无法装入VBA的。 我能够做一个单独的VBA步骤,把这个数据带进一个表格,但我似乎不能让它设置在桌子上search。 但是,这是说,什么是运行这样的大量项目的VBAsearch的最佳方式是什么? Sub PROCEDURE_1_search() Dim FirstAddress As String Dim MySearch As Variant Dim myColor As Variant Dim Rng As range Dim I As Long MySearch = Array("412", "4100", "4101", "4102", "4103",…) <– have over 800 With Sheets("All Claims by Date of Service").range("G5:G55000") For I = LBound(MySearch) To UBound(MySearch) Set Rng = […]

模糊Vlookup显示所有匹配的结果在一个单一的行

我知道,vlookup只返回一个结果,但我正在寻找一种方法来search2列,并返回匹配此查询的所有结果: SUBSTITUTE("*"&C2&"*"," ","*") 这样它也会返回类似的匹配。 我能够返回第一个匹配(通过一个vlookup),但我需要返回所有匹配,并在一行中显示它们。 如果它会创build一个数组,我可以显示数组中第一个元素的行中的第一个匹配,显示与第二个元素的第二个匹配…等等。 VBA到目前为止: Function Occur(text, occurence, column_to_check) newarray = Split(text, " ") Dim temp As New Collection Dim intX As Integer For i = 1 To 90000 intX = 1 For j = 0 To Len(newarray) If Not InStr(Range(column_to_check + i).Value, newarray(j)) Then intX = 0 End If Next j Exit […]