gpt4 book ai didi

excel - 在多个后续范围内查找值和 .filldown?

转载 作者:行者123 更新时间:2023-12-04 20:45:06 24 4
gpt4 key购买 nike

VBA新手在这里。我有多个组的动态列表。每个组在顶部列出了该组的领导者,下面是该组的成员。在每个列出的人旁边的 A 列中都有一个主键。我想获取领导者的 key # 并将其应用于领导者和组的每个成员的 F 列,这样每个成员在 A 列中都有自己的主键 # 并与 F 列中的领导者的主键 # 相关联。这是我之前和之后需要的两张图片:

之前
Before:

之后
After:

这是我在概念上玩的代码:

Sub Apply_Leader_Code()

Dim wSht As Worksheet
Dim lStart As Long, lEnd As Long, lLdrID As Long

Set wSht = ThisWorkbook.Sheets("Upload")

With wSht.Range("A1:G" & Range("A" & Rows.Count).End(xlUp).Row)
lStart = .Rows.Find("78") 'Find the first row for each group
lEnd = .Rows.FindNext("78") - 1 'Find the last row for each group
If .Range("G" & lStart & ":G" & lEnd).Value = "" Then
'If there is no leader ID yet, then continue...
lLdrID = .Cells(lStart, 1).Value 'Assign leader's primary key to the variable
.Cells(lStart, 7).Value = lLdrID 'Place lLdrID value into Column G
.Range("F" & lStart & ":F" & lEnd).FillDown 'Fill value to end of group range
Else
'..otherwise, set start/end rows for next group.
lStart = .Rows.FindNext("Leader")
lEnd = .Rows.FindNext("Leader") - 1
End If
End With
End Sub

上面的代码实际上并不适用,但我希望代表我认为解决此问题的合理方法。我可以(也许?)弄清楚如何为第一组执行此操作,但是我如何执行相同的 .FillDown每个后续组的功能?

-- 编辑 --

关于下面 Siddarth Rout 的回答,这是我的新代码:
Range("G2").Select
ActiveCell.FormulaR1C1 = "=RC[-6]"
Range("G3").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=78,RC[-6],R[-1]C)"
Range("G3").Select
Selection.AutoFill Destination:=Range("G3:G" & Range("G" & Rows.Count).End(xlUp).Row)

我在 Excel 中使用了宏创建器,然后将其编辑为我认为可以使其具有动态范围而不是设定范围的内容。现在我收到 400 错误。任何想法为什么?关于如何在不“选择”范围的情况下输入公式的任何想法?我收集到许多程序员认为选择单元格是糟糕的编程......

最佳答案

你需要VBA吗?这可以使用excel公式来实现

单元格中的公式 G2=A2
单元格中的公式 G3=IF(F3=78,A3,G2)
现在只需从 G3 复制公式下至 G14
enter image description here

如果您仍然需要 VBA,那么只需为上述步骤录制一个宏并修改它:)

跟进(来自评论)

.Select应该避免。
INTERESTING READ

也无需使用R1C1格式。可以直接指定公式

还有一件事情。您不需要使用 Autofill .您可以通过使用 中的相关公式直接填充所有相关单元格来跳过该步骤。一站式

这是你正在尝试的吗?

Option Explicit

Sub Sample()
Dim ws As Worksheet
Dim lRow As Long

'~~> Change this to the relevant sheet
Set ws = ThisWorkbook.Sheets("Sheet1")

With ws
'~~> Find the last cell in Col A which has data
lRow = .Range("A" & .Rows.Count).End(xlUp).Row

'~~> Enter first formula
.Range("G2").Formula = "=A2"

'~~> Enter 2nd formula in all the
'~~> cells in one go rather than autofill
.Range("G3:G" & lRow).Formula = "=IF(F3=78,A3,G2)"
End With
End Sub

关于excel - 在多个后续范围内查找值和 .filldown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com