根据第三个单元格的值,将一个静态单元格的值复制到第二个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
是脚本读取和填充的唯一静态单元。
如果手动检查B11
( B11
=“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