【发布时间】:2012-05-05 01:38:38
【问题描述】:
我每个月都会收到一个 excel 文件,并且必须将其中的一部分导出到一个新文件中。我有一个标识符编号列表,我正在尝试将所选列表中的编号列表与完整文件匹配,然后将相关数据行导出到新工作表。
Sub Run_All_Macros()
Application.ScreenUpdating = False
Sheets.Add.Name = "Output"
Call Convert_to_Numbers
Call Highlight_Selected_Contractors
End Sub
'Original Spreadsheet is formatted incorrectly
'Convert PSD Codes to Numbers
Sub Convert_to_Numbers()
Dim xCell As Range
Range("A2:A2500").Select
For Each xCell In Selection
xCell.Value = CDec(xCell.Value)
Next xCell
End Sub
'Highlight Selected Contractors
Sub Highlight_Selected_Contractors()
Dim Full, Selection, Code, SelectedCode As Range
Worksheets("Sheet1").Select
'Set all cells in Column A Sheet 1 to Full
Set Full = Worksheets("Sheet1").Range("A1", Range("A1").End(xlDown))
'Set all cells in Column A Sheet 2 to Selection
Worksheets("Sheet2").Select
Set Selection = Worksheets("Sheet2").Range("A1", Range("A1").End(xlDown))
'If the numbers match highlight the cell
For Each Code In Full
For Each SelectedCode In Selection
If Code.Value = SelectedCode.Value Then
*** Code.Select
Selection.Copy
Sheets.Select ("Output")
ActiveSheet.Paste
End If
Next SelectedCode
Next Code
End Sub
执行此代码后,“输出”中的 A 列将填充 A2:A2500 中的零。从弄乱断点开始,我发现问题出在我放置 * 的位置,但我不确定那里写的内容有什么问题。
谢谢
【问题讨论】:
-
您已将
Selection声明为变体。您永远不应该使用保留字(“Selection”)作为变量。快速提问。您要在哪个工作表中运行Convert_to_Numbers,为什么? -
Convert_to_Numbers 正在“sheet1”上运行,我刚刚意识到,由于我没有指定它正在新的“输出”表上运行,因为它在创建后变为活动状态。刚刚将其编辑为在正确的工作表上运行后,我收到了一个“400”错误,该错误来自我在原始问题中用星号标记的行。
-
是的。 :) 也不要循环使用 VBA
Countif()检查值是否存在,然后复制它们。 -
我已经准备好了代码,但我希望你先试一试:)
-
这似乎是一种比使用循环更有效的方法,但我并不完全在那里。获取与 countIf 命令相关的类型不匹配错误。
'Match and export duplicate values Sub Match_And_Export() Dim Identifier, RawData, Request As Range Set Identifier = Worksheets("Sheet2").Range("A2:A2500") Set RawData = Worksheets("Sheet1").Range("A2:A2500") Set Request = Application.WorksheetFunction.CountIf(RawData, "Identifier") Request.Select Selection.Copy Worksheets("Output").Select Selection.Paste End Sub