gpt4 book ai didi

vba - 遍历填充的行,根据条件匹配,使用 VBA 将值添加到 Excel 中另一个工作表中的特定单元格

转载 作者:行者123 更新时间:2023-12-04 21:56:40 26 4
gpt4 key购买 nike

我正在尝试在选项卡时间的列小时中选择一个值,并将其放在选项卡月份的相应列中。我想遍历工作表时间中的每一行并将所有数据添加到选项卡月份。

对于 Tab TIME 中的每一行,根据 Engagement Number、Engagement Phase、Staff Level 将 Hours 添加到 Tab Month 中的适当参与中。我每个月手动执行此操作。我创建了上个月选项卡的副本并每个月添加到该选项卡。大多数列都有这样的单元格:=1+3+6+4+14+5+2+5,这是参与该事件的时间。对于其中包含某些内容的单元格,我只想添加那里的内容。对于其中没有任何内容的单元格,我想设置新值:= 1 如果值为 1。我想自动化这个,因为它每个月的第一天都需要几天,这个恰好在一个周末所以猜猜我会做什么。 :)

这就是我所在的地方。

Sub Recon()

'Macro to add time to reconciliation report


'Declare variables

Dim Last_Row_TIME As Double
Dim Last_Row_MONTH As Double
Dim wb As Workbook
Dim ws As Worksheet
Dim rw As Range
Dim wstime As

Set wb = ActiveWorkbook
Set wstime = Sheets("TIME")
Set wsmonth = Sheets("MONTH")

wstime.Select

'Find the last non-blank cell in column A(1)
Last_Row_wstime = wstime.Cells(Rows.Count, 1).End(xlUp).Row

'Find the first blank cell in column A
First_Empty_Row_wstime = Last_Row_wstime + 1

I_Col = 1

For i = 1 To Last_Row_wstime

For Each rw In wstime.Rows

If wstime.Cells(rw.Row,1).Value = wsmonth.Cells(rw.Row, 3).Value
And

End Sub

我被困在 if 语句中,不知道如何使它工作。
IF 
TIME.Eng. No. (Column A) = Month.Eng. No (Column B)
AND
TIME.Eng. Phase (Column C) = Month.Eng.Phase (Column C)
AND
TIME.Staff Level (Column M) = PARTNER or MANAGING DIRECTOR

THEN

Add Value TIME.Hours (Column Y) to Month.Partner/MD (Column I)

'If blank then "=TIME.Hours) elseif add to the previous value "previous addition statement +(hours)"


ELSEIF

TIME.Eng. No. (Column A) = Month.Eng. No (Column B)
AND
TIME.Eng. Phase (Column C) = Month.Eng.Phase (Column C)
AND
TIME.Staff Level (Column M) = SR. MANAGER/DIRECTOR

THEN

Add Value TIME.Hours (Column Y) to Month.Director (Column J)

ELSEIF

TIME.Eng. No. (Column A) = Month.Eng. No (Column B)
AND
TIME.Eng. Phase (Column C) = Month.Eng.Phase (Column C)
AND
TIME.Staff Level (Column M) = MANAGER

THEN

Add Value TIME.Hours (Column Y) to Month.Manager (Column K)

ELSEIF

TIME.Eng. No. (Column A) = Month.Eng. No (Column B)
AND
TIME.Eng. Phase (Column C) = Month.Eng.Phase (Column C)
AND
TIME.Staff Level (Column M) = SENIOR ASSOCIATE

THEN

Add Value TIME.Hours (Column Y) to Month.Sr.Assoc (Column L)

ELSEIF

TIME.Eng. No. (Column A) = Month.Eng. No (Column B)
AND
TIME.Eng. Phase (Column C) = Month.Eng.Phase (Column C)
AND
TIME.Staff Level (Column M) = ASSOCIATE

THEN

Add Value TIME.Hours (Column Y) to Month.Associate (Column M)

ELSEIF

'Create a new line after the biggest primary key, located in Month.Primary Key (Column A)

TIME.Eng. No. (Column A) = Month.Eng. No (Column B)
AND
TIME.Eng. Phase (Column C) = Month.Eng.Phase (Column C)
AND
TIME.Eng. Description (Column B) = Month.Project Name (Column D)


End If

最佳答案

这是您做出的非常勇敢的努力。我很乐意帮助你,但目前我不明白你想要什么。据我了解,我编写的代码如下。

Sub Recon()
' Macro to add time to reconciliation report
' 01 Apr 2017

Dim Wb As Workbook
Dim WsTime As Worksheet, WsMonth As Worksheet
Dim Crit As String ' Search criterium
Dim Rl As Long ' last row (Time)
Dim R As Long ' row counter (Time)

With WsTime
Rl = .Cells(.Rows.Count, 1).End(xlUp).Row
For R = 2 To Rl ' skip captions row
Crit = .Cells(R, 1).Value
Debug.Print Crit ' print value to Immediate Window (for testing)
Next R
End With
End Sub
事实上,这段代码比我的理解更深入,因为它假定两个工作表都在同一个工作簿中。它假定包含这两个工作表的工作簿将是事件工作簿。这意味着代码可能在另一个工作簿中,也许是您保留的一个,因为其中有代码。
现在,以比您可能想要的更小的步骤进行,上面的代码循环遍历 Time 工作表中的所有行并在 A 列中找到值。为了让您查看它是否有效,它将这些值打印到即时窗口( Ctrl+G,如果它没有显示在您的 VBE 窗口中)。
这就是它变得模糊的地方:我假设这个值必须是名称,也许,您现在需要在月表中找到相同的名称。为此,您需要知道月表中可能找到该名称的列,如果找到该名称该怎么办,以及如果找不到该名称该怎么办。

关于vba - 遍历填充的行,根据条件匹配,使用 VBA 将值添加到 Excel 中另一个工作表中的特定单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150835/

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