Excel VBA – 链接来自不同工作表的行

情景:由于敏感材料,我无法发布实际的工作簿,但我会尽可能最好地解释它。

每个工作表分为多个分支,即:工作表2是分支2,工作表3是分支3等等。 对于每张表格,栏目都是一样的。 A列中有分支号码。 B列有不相关的信息,所以我只隐藏该列。 C列有一个系统号码(特定于每个帐户。

意图:我想创build另一个名为CallOuts表。 我想复制一些行(从各个分支),并将其粘贴到“主表”( CallOuts )我可以在CallOuts工作表,而不是去每个分支。 所以,每当我编辑一个单元格,它也将更新/更改分支表单中的完全相同的单元格,反之亦然与主表单。

问题:我知道MS Exccel有一个“粘贴特殊”function,它添加了单元格。 与它的问题是它链接单元格,所以如果我sorting母表,它会将行replace到错误的分支表。

例如:如果系统#J112在分支2表中,第2行和我在主表单中的第4行粘贴了链接,如果我在主表上进行更新,然后重新sorting,系统#现在移动到行2(在主表单上)第4行(在主表上)中的任何内容现在都在第2行,分支2表单中。

我想也许是一个macros,我可以从主表复制和粘贴整个行。 做一些types的案例select来检查哪一个分支在列A中,然后在分支表上find相同的系统#然后粘贴整行。

我的VBA级别是最好的新手,所以任何帮助,将不胜感激。

好的,所以我在下面看到你的尝试。 我不确定你的代码是如何工作的,但似乎你是在正确的轨道上。 但是,我不认为这种情况适用于Case语法。 您只需要一个macros,它将读取“CallOut”表中的内容,并使用该数据更新各个分支表。 这个macros应该适合你:

 Sub UpdateRecordsFromMasterSheet() Dim wksht As Worksheet Dim wkb As Workbook Dim row As Range Dim Row_to_Update As Range Dim sysnum As Variant Set wbk = ThisWorkbook Application.ScreenUpdating = False For Each row In Sheets("CallOuts").UsedRange.Rows row.EntireRow.Copy sysnum = row.Cells(1, 3).Value For Each wksht In ActiveWorkbook.Worksheets For Each Row_to_Update In wksht.UsedRange.Rows If Row_to_Update.Cells(1, 3).Value = sysnum Then Row_to_Update.PasteSpecial End If Next Row_to_Update Next wksht Next row Application.ScreenUpdating = True End Sub 

这假设你有你的系统号码在列“C”。 所以这就是我所想象的:每次给员工分配一堆行 – 你的员工更新这些行 – 然后将这些数据粘贴回“CallOut”表中。 然后运行这个macros,它将根据“CallOut”表中的内容更新单个分支表。

如果你在这里的视觉人是这样看:

以下是更新后的宣传单: CallOutsSheet

这里是分支机构在macros观之前的样子: BeforeMacro

这是macros运行后更新的分支: AfterMacro

试试看,让我知道它是如何工作的。 注意:这只是向您展示如何做这样的事情的开始 – 您可以通过macros循环通过员工提交给您的实际工作簿来使此过程更加高效,因此您不必复制和粘贴数据到您的“CallOut”表每次。 祝你好运。