你想要完成什么? 我试图将一行各个单元格的内容从一张纸镜像到另一张纸。 然而,这里需要注意的是:我只能使用MS Excel而不能访问 - 我可以使用模块,B列中的首字母将用作填充相应工作表的条件。比如: Primary key in MS Access,最后应该实时填充表格;什么都不应该运行。 所述电子表格附有here。
到目前为止你尝试了什么?
一个。好吧,我尝试了 = Value(x)和 = Grand Budget!A(x)公式。我在主页中设置相应的首字母工作表以及相应的首字母,例如:在工作表“大预算”中,所有NA首字母和相应行中的数据,即描述,供应商和金额将在工作表“NA”上镜像
它很有效,直到第三个警告未实现:它不能实时工作,因为我无法预测下一个初始化将是什么,所以我无法使用公式设置下一个单元格。
湾我还尝试按B列中的首字母过滤“大预算”表,选择所需的行数据,将其命名并将命名表导入相应的初始工作表。 Source
你有什么想法 - 从概念上讲? 我在想,现在是模块的时候,或者如果有人知道一个隐藏的excel公式,就把它放在我身上。我所有的权利在我的脑海中是一个if c语句:if(current_cell == desired_initial){populate()};
我愿意帮助解释任何可能被错误转换的内容。
答案 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页面的第一部分告诉您如何为您的程序制作模块。
您可能会看一下: