Vba 在将数据从一个excel工作表传输到另一个excel工作表时需要转换行
我原来的问题被贴出来了 基本上,我需要一些帮助,根据第一张表中的值将数据从一张表传输到另一张表。我使用的是用户提供的经过修改的代码 我在Vba 在将数据从一个excel工作表传输到另一个excel工作表时需要转换行,vba,excel,Vba,Excel,我原来的问题被贴出来了 基本上,我需要一些帮助,根据第一张表中的值将数据从一张表传输到另一张表。我使用的是用户提供的经过修改的代码 我在IF语句中添加了一个针对另一行的额外检查,我的代码中有: Option Explicit Dim MyWorkbook As Workbook Dim MyWorksheet As Worksheet Dim MyOutputWorksheet As Worksheet 所以我只需要输出某些列。我还需要将它们导入到第二张工作表,即合同工作表上的某些行和列中。主
IF
语句中添加了一个针对另一行的额外检查,我的代码中有:
Option Explicit
Dim MyWorkbook As Workbook
Dim MyWorksheet As Worksheet
Dim MyOutputWorksheet As Worksheet
所以我只需要输出某些列。我还需要将它们导入到第二张工作表,即合同工作表上的某些行和列中。主工作表上的A列转到合同工作表第17行开始的A列。B至B、E至D、F至E,均从合同表第17行开始。
合同表上的第17-42行将包含数据
Sub PullData()
Set MyWorkbook = Workbooks(ActiveWorkbook.Name)
Set MyWorksheet = MyWorkbook.Sheets("MAIN")
Set MyOutputWorksheet = MyWorkbook.Sheets("CONTRACT")
Dim myValue As Long
Dim RowPointer As Long
For RowPointer = 6 To MyWorksheet.Cells(Rows.Count, "B").End(xlUp).Row
If MyWorksheet.Range("A" & RowPointer).V alue > 0 And
MyWorksheet.Range("A" & RowPointer).Value <> ""
MyWorksheet.Range("F" & RowPointer).Value > 0 And
MyWorksheet.Range("F" & RowPointer).Value <> ""Then
If MyOutputWorksheet.Cells(Rows.Count, "B").End(xlUp).Row > 15
Then
Exit Sub
End If
MyWorksheet.Range(("A" & RowPointer) & ":C" & RowPointer).Copy
Destination:=MyOutputWorksheet.Range("A" &
MyOutputWorksheet.Cells(Rows.Count, "B").End(xlUp).Row + 1)
End If
Next RowPointer
End Sub
Sub-PullData()
设置MyWorkbook=工作簿(ActiveWorkbook.Name)
设置MyWorksheet=MyWorkbook.Sheets(“主”)
设置MyOutputWorksheet=MyWorkbook.Sheets(“合同”)
将我的值变长
暗淡的指针和长的指针一样
对于RowPointer=6,指向MyWorksheet.Cells(Rows.Count,“B”).End(xlUp).Row
如果MyWorksheet.Range(“A”&RowPointer).V值>0,并且
MyWorksheet.Range(“A”&行指针).Value“”
MyWorksheet.Range(“F”和RowPointer).Value>0和
MyWorksheet.Range(“F”和RowPointer).Value“”然后
如果MyOutputWorksheet.Cells(Rows.Count,“B”).End(xlUp).Row>15
然后
出口接头
如果结束
MyWorksheet.Range((“A”和“:C”和“行指针”)。复制
目的地:=MyOutputWorksheet.Range(“A”&
MyOutputWorksheet.Cells(Rows.Count,“B”).End(xlUp).Row+1)
如果结束
下一行指针
端接头
尝试一下:
Sub PullData()
Dim wRow As Long, _
RowPointer As Long, _
MyWorkbook As Workbook, _
Ws As Worksheet, _
OutWs As Worksheet
Set MyWorkbook = Workbooks(ActiveWorkbook.Name)
Set Ws = MyWorkbook.Sheets("MAIN")
Set OutWs = MyWorkbook.Sheets("CONTRACT")
With Ws
For RowPointer = 6 To .Cells(.Rows.Count, "B").End(xlUp).Row
If .Range("A" & RowPointer).Value > 0 And _
.Range("A" & RowPointer).Value <> "" And _
.Range("F" & RowPointer).Value > 0 And _
.Range("F" & RowPointer).Value <> "" Then
'This line would get you out of the loop after the first copy because _
'You first paste on line 17 and then the below left part will be equal to 18
'If OutWs.Cells(OutWs.Rows.Count, "B").End(xlUp).Row > 15 Then Exit Sub
wRow = OutWs.Rows(OutWs.Rows.Count).End(xlUp).Row + 1
'Always start copy after (or at) line 17
If wRow <= 17 Then wRow = 17
'More efficient way to copy data between ranges
OutWs.Range("A" & wRow).Value = Ws.Range("A" & RowPointer)
OutWs.Range("B" & wRow).Value = Ws.Range("B" & RowPointer)
OutWs.Range("D" & wRow).Value = Ws.Range("E" & RowPointer)
OutWs.Range("E" & wRow).Value = Ws.Range("F" & RowPointer)
End If
Next RowPointer
End With
Set MyWorkbook = Nothing
Set Ws = Nothing
Set OutWs = Nothing
End Sub
Sub-PullData()
暗苦笑了很久_
只要_
我的工作簿作为工作簿_
Ws-As工作表_
作为工作表输出
设置MyWorkbook=工作簿(ActiveWorkbook.Name)
设置Ws=MyWorkbook.Sheets(“主”)
Set OutWs=MyWorkbook.Sheets(“合同”)
与Ws
对于RowPointer=6的.Cells(.Rows.Count,“B”).End(xlUp).Row
If.Range(“A”&行指针).Value>0和_
.Range(“A”&行指针).Value“”和_
.Range(“F”和行指针)。值>0和_
.Range(“F”和RowPointer).Value“”然后
'这一行将使您在第一次复制后退出循环,因为_
'首先粘贴到第17行,然后左下方的部分将等于18
'如果OUTPS.单元格(OUTPS.Rows.Count,“B”).结束(xlUp).Row>15,则退出Sub
wRow=OutWs.Rows(OutWs.Rows.Count)。End(xlUp)。Row+1
'始终在第17行之后(或在第17行处)开始复制
If wRow FYI*在您的If语句中有轻微的间距问题