Tag: 相对

VBA,如何插入一个.formulaArray方法的dynamic/相对单元格引用?

我有以下代码: With Sh.Range("A1:A" & LastRow + 1).Offset(0, 4) .FormulaArray = "=MAX(IF(A2:A" & LastRow + 1 & "= ** , D2:D" & LastRow + 1 & "))" .Value = .Value End With 在我有**的地方,我想要一个dynamic的单元格引用。 如果我使用.formulaR1C1,我会插入RC [-1],但我不能用.formulaArray。 有谁知道我可以如何插入一个相对单元格的参考,这将改变公式被粘贴在范围内? 谢谢 编辑#1 整个代码如下所示: Sub RemoveDuplicates_SumMarketValue() Dim Sh As Worksheet Dim LastRow As Long Dim Rng As Range Set Sh = […]

将一个简单的vba函数从绝对引用转换为相对引用

我有一个简单的vba函数,我想变成一个相对的。 我有3个variables,我通过比较他们,然后做一个while循环,我输出结果到一个单元格。 但我想这样做的列中的每个单元格(比较列中的所有单元格,做while循环,然后在另一列中的每个单元格中输出结果)但我不能做到这一点。 我search谷歌,但它只是告诉我如何转换一个Excel绝对公式相对不是一个VBA函数。 有人能帮我吗? 这里是我简单的代码: Public Sub code() 'eshte nr i zerove te hequra me nje 1 perpara ne rastin tone 1000 'value = 1000 Dim z As Long z = Range("AS3").Value 'x eshte j3 – zerot nga mbrapa ne rastin tone 5 'value=5 Dim x As Long x = Range("AN3").Value 'y eshte karakteri […]

Excel vlookup绝对和相对引用加上一个variables

我试图自动化一个过程,包括检查typesX的报告typesY的多个报告。 我正在编写一个macros来删除多余的数据,并将数据从列A:O中的报告X和列AB:AF中的报告Y中的数据粘贴起来。 X和Y都可以有不同的长度。 我想使用vlookup来检查报告Y(Column AB)在Col O中的匹配,并且返回报告Y的第五列(列AE)中的相应值,或者如果列O中的值没有被发现,返回“失踪!”。 如果这是一个单一的使用,我会在Excel中使用下面的公式,并手动自动填充它: =IFERROR(VLOOKUP(O2,AB$2:AE$60,2,FALSE),"MISSING!") 但是我希望能够做到这一点,与VBA中的许多其他任务一起,重复地为许多不同长度的报告。 以下是我到目前为止的代码: Range("P2:P" & lastRowX).Formula = _ "=IFERROR(VLOOKUP(O2,AB$2:AE"&lastrowY&",2,FALSE),""MISSING!"")" 其中lastRowX是来自报告X的最后一行数据的整数variables,lastRowY是报告Y的最后一行.VBA甚至不会让我编译它,给我“编译错误:预期:语句结束”。 这个代码可以工作,但是它不允许我使用不同长度的Y: Range("P2:P" & lastRowX).Formula = _ "=IFERROR(VLOOKUP(O2,AB$2:AE$60,2,FALSE),""MISSING!"")" 任何想法,我错了或如何做得更好? 谢谢!

如何在Excel VBA中使用相对名称

许多“高级”(又名:VBA)在网上excel教程甚至excel的vba帮助鼓励我们使用 Range("B2:B10") 方法(确切地说:对象)用于select单元格或获取值。 在同一个地方,他们经常添加完全可以使用预定义的名字: Range("valuesabove") 另一方面,我爱上了相对定义的单元名称的难以置信的力量。 他们使得编写和处理大型复合公式变得容易很多,基本上可以指代几乎任何东西。 但是, 相对名称在Range(“valuesabove”)方法中不适用于我们习惯的方式。 通常(在工作表上使用时)相对名称是相对于当前选定的单元格或使用它们的单元格。 在VBA的Range()对象中,这是不正确的。 范围相对于WorkSheet对象,默认情况下是ActiveSheet。 但ActiveSheet由其上层单元格A1代表。 这就是Range相对的原因。 这就是为什么绝对名称($ C $ 23)可以和它一起工作,而相对的名称(“向左一列,向上两列”)则不然。 所以我的问题是:如何利用VBA中的相对名称的力量呢? 编辑: 意识到我的问题还不太清楚(thx请你们不知疲倦地发表意见)让我试着把它放在一个特定的forms和澄清条款: 恕我直言,在Excel工作表,它是非常舒适的使用名称,以引用单元格或基于单元格值函数定义计算值。 在Excel中,对单元格的引用可以是相对的,绝对的或混合的 。 创build名称时也是如此。 因此,我们可以谈论绝对的,相对的或混合的名称(就当然指的而言)。 这里使用绝对名称几次(使用Excel的Trace Dependentsfunction创build): 名称“name”= $D$2 一个相对的名字在这里用了几次: 命名“upright24” ,例如单元格A7被选中 = C3 (没有$符号!)。 但是这根据所选的细胞或地区不断变化。 你可以在名字pipe理器中检查它! (按Ctrl + F3) 这是我们可以考虑的混合名称 : 命名“rel_serialnumber” ,例如单元格C6被选中 = $B6 。 ( 6 )的行按照选定的单元格或区域不断变化。 创build相对名称或混合名称是在创build名称时明确基于活动单元格的。 绝对名称的创build自然不依赖于光标位置。 注意 绝对名称是指从被引用的单元格开始的唯一偏移量 […]