根据第三个单元格的值,将一个静态单元格的值复制到第二个dynamic单元格(具有特定的行标准)

我有一个VBA脚本,首先查看'YTDInfo'!$J$2作为名字。 然后从工作簿的开始处search与'YTDInfo'!$J$2中的条目匹配的工作表名称。 如果find了名字,那么它会查看该表的“付款金额”单元格,并将该值带到'YTDInfo'!$M$2

脚本移动到下一张匹配表单上,等等,超过100张,将所有付款添加到该人。 它将总和值放在单元格'YTDInfo'!$M$2

我有一个超过100名的名单,我想自动化这个过程的一个组成部分。

我已经有了:

'YTDInfo'!A2 'YTDInfo'!A100 +填充所有表单名称。

'YTDInfo'!B2与Marlett字体,我使用“a”(用于复选标记)。

'YTDInfo'!B2 =“a”(或B3或B4 … =“a”) 'YTDInfo'!$J$2填充列表上的下一个名称(名称分别来自A3,A4或A5) 。

$J$2有一个数组CSE公式。 当'YTDInfo'!$J$2填充名字时,我运行这个脚本,它会build立总数并把它放在'YTDInfo'!$M$2

我喜欢这本手册,因为我可以跟踪哪个名称有YTD信息,我可以在表单中跟随任何重复或拼写错误。

这里是我想现在自动化的其他手动部分…当'YTDInfo'!$M$2填充我需要将值放入'YTDInfo'!Fn (n为行号)单元格,但在特定行对应于名称的来源。

例如…

这一切都是在YTDInfo工作表上完成的,所以我不会把这些信息混淆在一起。 … $J$2$M$2是脚本读取和填充的唯一静态单元。

如果手动检查B11B11 =“a”),则A12的名称将传递到J2 。 这个名字可以是约翰。 当我运行脚本时,所有具有约翰和他的金额( 'john 10-17-2017'!AB17 + 'john 10-21-2017'!AB17 +等等)的表名将加起来,在M2显示。

假设这一切等于… $ 12,000。 那么我怎么告诉Excel,现在可以将M2 ($ 12,000)的值复制到John的YTD单元格(到F12 ),而无需手动复制和粘贴特殊的值?

非常感谢你的帮助。 我知道简单的Excel的东西,但我不知道这些作品。 我非常愿意使用公式或VBA – 没有任何恐惧,y! 我很高兴为你的时间捐赠一点,并能够从你身上学到一些东西。

 Sub YTDTotal_Click() ' Keyboard Shortcut: Ctrl+h Dim mysheet As Worksheet ' Sheets("YTDInfo").Select ' Cells.Clear For Each mysheet In Worksheets mysheet.Select If Left(mysheet.Name, Range("YTDInfo!K2")) = Range("YTDInfo!J2") Then ActiveSheet.Range("H22").Select Selection.Copy Sheets("YTDInfo").Select Range("M2").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _ False, Transpose:=False End If Next mysheet Sheets("YTDInfo").Select ' ActiveSheet.Range("H22").Select End Sub 

我知道了。 我search,并试图哭泣,我敢说它! 感谢您的意见,你们。 我希望这可以帮助有相似的设置或要求的人。 也可能有更清洁的方法来完成这项任务,但我不是专家。 …我曾经听说,如果代码工作,不会产生错误,那么这不是真的错。 它可能需要一点时间,但如果它的工作…那么…:o)。

 Sub YTDTotal_Click() ' ' ' beginScript: If Sheets("YTDInfo").Range("J2") = 0 Then MsgBox "No More Names To Look Up" GoTo LastLine Else Dim mysheet As Worksheet Dim sheet_name As String ActiveSheet.Range("M2").Clear For Each mysheet In Worksheets mysheet.Select If Left(mysheet.Name, Range("YTDInfo!K2")) = Range("YTDInfo!J2") Then ActiveSheet.Range("H22").Select Selection.Copy Sheets("YTDInfo").Select Range("M2").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _ False, Transpose:=False End If Next mysheet Sheets("YTDInfo").Select sheet_name = ActiveSheet.Range("J2") Z = 200 Do x = x + 1: y = y + 0 If Range("A" & x) = sheet_name Then Range("F" & x) = Range("M2"): Range("B" & x) = "a" If x = Z Then Exit Do ' Use "Exit Do" for continuous operation ' Use "Exit Sub" for a one time check Loop x = 0: y = 0 End If GoTo beginScript LastLine: End Sub