Excel 正在寻找从主ws复制到工作簿中每个空工作表的循环解决方案
我在这里完全不知所措。还不足以尝试编写此代码。以下是我希望实现的目标: 在工作簿中,我有一个宏,可以从CSV文件中提取数据,并将其复制到“主数据”工作表中,然后再复制到“临时”工作表中,同时将“临时”中的标题格式化为我所需的格式(a行和B行需要在所有工作表中保持不变。这已经过去了(在您的帮助下)好的。然后宏根据input.box创建x个数量的空工作表。现在我需要编写两个代码:Excel 正在寻找从主ws复制到工作簿中每个空工作表的循环解决方案,excel,vba,Excel,Vba,我在这里完全不知所措。还不足以尝试编写此代码。以下是我希望实现的目标: 在工作簿中,我有一个宏,可以从CSV文件中提取数据,并将其复制到“主数据”工作表中,然后再复制到“临时”工作表中,同时将“临时”中的标题格式化为我所需的格式(a行和B行需要在所有工作表中保持不变。这已经过去了(在您的帮助下)好的。然后宏根据input.box创建x个数量的空工作表。现在我需要编写两个代码: 将“Temp”工作表的前两行复制到由input.box创建的所有空工作表中(数字未确定,因为它不是常量) 从C行剪切并粘
Sub Import_CSV_File()
Dim ws As Worksheet, strFile As String
Set ws = ActiveWorkbook.Sheets("Sheet1")
strFile = Application.GetOpenFilename("Text Files (*.csv),*.csv", ,
"Please select .csv file...")
With ws.QueryTables.Add(Connection:="TEXT;" & strFile,
Destination:=ws.Range("A1"))
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.Refresh
ActiveSheet.Name = "Master Data"
Worksheets("Master Data").Rows(2).EntireRow.Delete
End With
End Sub
Sub Sort_Data_by_Price_Descending()
Columns("A:Q").Sort key1:=Range("G:G"), order1:=xlDescending,
Header:=xlYes
End Sub
Sub Create_Sheet_and_Copy_Master_Data()
Dim ws As Worksheet
With ThisWorkbook
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
ws.Name = "Temp"
Sheets("Master Data").Cells.Copy Destination:=Sheets("Temp").Range("A1")
Range("A1:Z1") = Array("Code", "Carrier", "Operator", "CardNo", "ExpDate", "Comment1", "OrdAmount", "OrdNo", "OrdDate", "CustNo", "DOB", "Name", "Add1", "Add2", "Add3", " ", " ", " ", "Redline", "ISS", "CCN", "Add Links", "AVS", "Referrals", "Comments", "Verified?")
Rows("1:1").Insert Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
Range("A1:K1") = Array("Batch No.", " ", "Carrier", " ", "Orders", " ", "Start Time", " ", "End Time", " ", "Batch ID")
End With
End Sub
Sub AddSheets_via_Input_Box()
Dim numberOfSheets As Integer
numberOfSheets = CInt(Trim$(InputBox("...how many people are working Fraud Today?", "Tell me…", 1)))
If IsNumeric(numberOfSheets) Then
With ActiveWorkbook
.Sheets.Add After:=.Sheets("Temp"), Count:=numberOfSheets
End With
Else
MsgBox "Invalid parameter supplied - use numbers only"
End If
这应该适用于您的第一个询问。它不需要知道输入框捕获的数字。它将在跳过
主数据
和临时数据
时在所有工作表中循环
Sub Top2Rows()
Dim Temp As Worksheet: Set Temp = ThisWorkbook.Sheets("Temp")
Dim ws As Worksheet
For Each ws In Worksheets
Temp.Range("A1:Z2").Copy
If ws.Name <> "Temp" And ws.Name <> "Master Data" Then
ws.Range("A1").PasteSpecial xlPasteValuesAndNumberFormats
ws.Range("A1").PasteSpecial xlPasteFormats
End If
Next ws
End Sub
Sub-Top2Rows()
将临时设置为工作表:设置临时=此工作簿。工作表(“临时”)
将ws设置为工作表
对于工作表中的每个ws
温度范围(“A1:Z2”)。副本
如果ws.Name“Temp”和ws.Name“Master Data”,那么
ws.Range(“A1”).Paste特殊XLPaste值和数字格式
ws.Range(“A1”).Paste特殊XLPaste格式
如果结束
下一个ws
端接头
希望你能想出如何将类似的逻辑应用到下一张工作表中。如果我正确理解了ask for#2,我会做的是:
thishworkbook.sheets.Count-2
)联合体中
(循环的数量由目标图纸的数量决定)Union.EntireRow
,而不是逐行执行此操作祝你好运!你的数据有一个最大列长吗?或者这个变量除了第1行是11,但在其中复制14个空单元格是非常好的,所以25是这个wb中所有行中的最大列数。这不是你所问的,抱歉。列长会随着数据的不同而变化niform。您创建的代码工作完全正确。我将尝试以某种方式对第二部分进行编码,但有一些棘手的地方。首先,我必须为宏实现一种方法,以检查我有多少张工作表,因为我的数字每天都会从1到10不等(每个工作人员一张)。第二,不幸的是,我不得不逐行复制数据,因为数据的排列方式是这样的,如果处理这些工作表的人只是按工作表的数量划分行,然后将整个块复制粘贴到其中,这对他们来说是不公平的。因为数据是按值降序排列的(必须是这样)循环必须给每个人一个大致相等的工作量。你可以一行一行地循环。你可以找出有多少张工作表带有我在第2步中提供的代码位(
thishworkbook.sheets.Count-2
)对于主数据
和临时工
工作表,我将扣除2。你说得对,你提供了我实际需要的所有工具。感谢最后的提示,我才意识到我没有完全理解这段代码。(thishworkbook.Sheets.Count-2)。谢谢。