Excel 2010-根据下拉值将数据复制到指定的工作表



本论坛新手,希望有人能帮忙!

我正在为一个项目创建一个资源数据库。我创建了一张名为"摘要"的表格,用于输入资源的详细信息(组织、类型、位置、联系方式等(。该列表是垂直组织的,有几个下拉数据验证字段。参见摘要

我想做的是将一个宏附加到"添加到数据库"按钮,该按钮将根据下拉列表(单元格:E4(中的值将数据从"摘要"工作表复制到其他工作表中,并将其水平转换,然后清除该字段。

我已经创建了单独的宏来执行这一操作(总共9个(,例如:

Sub EMPTADD()
Application.ScreenUpdating = False
Range("E2:E19").Select
Selection.Copy
Sheets("Employability & Training").Activate
Range("A750").End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("Summary").Activate
Range("E2:E19").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("E2").Select
Application.ScreenUpdating = True
End Sub

我就是不知道从那里去哪里。我可以使用IF函数来确定E4是否包含特定值并调用相关的宏吗?非常感谢您的帮助:(

您不需要使用activate/selection类型的命令。VBA能够更动态地工作。使用激活/选择类型的命令也可能会使您的编码面临许多意想不到的后果。有时,你认为的是积极的,和excel认为的是主动的,可能是两件不同的事情。最好的做法是完全符合你的范围,所以毫无疑问。

就编码而言,看起来你正在尝试手动复制点击特定范围和操作数据的方式(也许是基于录制宏?(。我们可以更动态地使用VBA!我会用这样的东西:

Sub CopyPasteData()
'Declare your variables
Dim wb As Workbook
Dim criteria As String
Dim i As Long
Application.ScreenUpdating = False
'Set values for your variables.
Set wb = ThisWorkbook
criteria = wb.Sheets("Summary").Range("E4")
i = wb.Sheets(criteria).Range("A" & Rows.Count).End(xlUp).Row
'Tell excel where to copy and paste your data
wb.Sheets("Summary").Range("E1").Copy
wb.Sheets(criteria).Range("A" & i + 1).PasteSpecial xlPasteValues
wb.Sheets("Summary").Range("E2").Copy
wb.Sheets(criteria).Range("B" & i + 1).PasteSpecial xlPasteValues
wb.Sheets("Summary").Range("E3").Copy
wb.Sheets(criteria).Range("C" & i + 1).PasteSpecial xlPasteValues
wb.Sheets("Summary").Range("E4").Copy
wb.Sheets(criteria).Range("D" & i + 1).PasteSpecial xlPasteValues
Application.ScreenUpdating = True

End Sub

如果使用变量来设置某些值,则可以为所有工作簿使用一个宏。否If语句将是必要的!wb变量创建了一个快捷方式,用于声明宏应在哪个工作簿中操作。条件值设置为您在SUMMARY工作表的单元格E4中输入的值。只要您的工作表名称与E4中的下拉列表相匹配,这将告诉excel将数据放入哪个工作表中。i变量统计包含数据的行数(这样我们就可以在这些行的底部粘贴新数据(。

然后最后一段代码只是告诉Excel在哪里复制数据,在哪里粘贴数据。根据需要调整范围以完成您需要的操作。

相关内容

最新更新