在具有特殊条件的同一工作簿中将单元格从一个工作表镜像到另一个工作表

时间:2017-12-06 21:10:19

标签: excel

  1. 你想要完成什么? 我试图将一行各个单元格的内容从一张纸镜像到另一张纸。 然而,这里需要注意的是:我只能使用MS Excel而不能访问 - 我可以使用模块,B列中的首字母将用作填充相应工作表的条件。比如: Primary key in MS Access,最后应该实时填充表格;什么都不应该运行。 所述电子表格附有here

  2. 到目前为止你尝试了什么?
    一个。好吧,我尝试了 = Value(x) = Grand Budget!A(x)公式。我在主页中设置相应的首字母工作表以及相应的首字母,例如:在工作表“大预算”中,所有NA首字母和相应行中的数据,即描述,供应商和金额将在工作表“NA”上镜像
    它很有效,直到第三个警告未实现:它不能实时工作,因为我无法预测下一个初始化将是什么,所以我无法使用公式设置下一个单元格。
    湾我还尝试按B列中的首字母过滤“大预算”表,选择所需的行数据,将其命名并将命名表导入相应的初始工作表。 Source

  3. 你有什么想法 - 从概念上讲? 我在想,现在是模块的时候,或者如果有人知道一个隐藏的excel公式,就把它放在我身上。我所有的权利在我的脑海中是一个if c语句:if(current_cell == desired_initial){populate()};

  4. 我愿意帮助解释任何可能被错误转换的内容。

2 个答案:

答案 0 :(得分:1)

@peter 更新进度,我需要有关如何填充相应表格的帮助。谢谢!

Option Explicit

' Create a new sheet for new initials.
Sub CreateNewSheet(Initials As String)
    'Checks whether a sheet with the name "Initials" exists
    'Creates a new sheet if it doesn't exist yet.
    If SheetExists("Initials") Then
        MsgBox "Yay! the sheet exists"
    Else
        MsgBox "Boo! the sheet doesn't exist; I shall create a new one!"
         'Creates a new sheet if it doesn't exist yet.
         CreateSheet (Initials)
    End If
End Sub

Function SheetExists(Initials As String)
    On Error GoTo no:
    WorksheetName = Worksheets(Initials).Name
    SheetExists = True
    Exit Function
no:
    SheetExists = False
End Function

Private Sub CreateSheet(Initials)
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = Initials
End Sub

Private Sub sbClearEntireSheetOnlyData()
    Sheets("Initials").Cells.ClearContents
End Sub

Private Sub MatchCase(Initials)
    Dim x As Integer
    Application.ScreenUpdating = False
    ' Set numrows = number of rows of data.
    NumRows = Range("A3", Range("A3").End(xlDown)).Rows.Count
    ' Select cell a3.
    Range("A3").Select
    ' Establish "For" loop to loop "numrows" number of times.
    For x = 1 To NumRows
       ' Insert your code here.
       ' Selects cell down 1 row from active cell.
       ActiveCell.Offset(1, 0).Select
    Next
    Application.ScreenUpdating = True
End Sub

答案 1 :(得分:0)

显然,没有办法唯一识别大预算表上的行,我们只知道行应该去的那张表。

因此,如果您真的需要实时执行此操作,我担心只要在CE的任何位置发生任何更改,您都必须重新填充整个用户工作表预算表。如果B列发生了变化,您将不得不完全重新填充2个用户表... 这往往是一个非常容易出错的过程,因此最好完全重新填充所有用户表...

我的建议是要求您的客户更改要求......例如,询问他们是否可以使用“重新计算”按钮来启动您的流程。

如果您的客户真的并不想使用按钮,那么无论何时您的宏(重新填充所有用户表)都会自动启动,您可以询问它是否正常打开工作簿,无论何时离开大预算表(实际上也是唯一的输入表)。

顺便说一下:如果他们在B列中放置不存在的首字母,你想要发生什么?

更新: "我刚刚与客户说话,我引用:"做你必须做的事情!"我喜欢重新计算按钮的想法,请把它告诉我!" - Nana Amponsah

如果您对vba没有多少经验,最好从第二部分开始:为新首字母创建新工作表

Option Explicit

Sub CreateNewSheet(Initials As String)
    'Checks whether a sheet with the name "Initials" exists
    'Creates a new sheet if it doesn't exist yet.

    '*** Your code goes here ***
End Sub

请注意:在开始之前,您应该备份原始工作簿。

this页面的第一部分告诉您如何为您的程序制作模块。

您可能会看一下: