Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 983|回复: 7

[已解决]Sheet 复制问题

[复制链接]
发表于 2022-9-7 14:47 | 显示全部楼层 |阅读模式
本帖最后由 lkk0063 于 2022-9-13 14:08 编辑

依照现行的程式码修改执行动作如下 : 按下 add data to out 按钮, 若想要将表(In)资料复制到表(Out)但是需要跳过F8:J8与F12:J12请问如何修改程式?
01.jpg

  1. Private Sub CommandButton2_Click()
  2. Dim Arr, Brr, i&, j%, xE As Range
  3. Arr = [A3:J17]
  4. ReDim Brr(1 To 2, 1 To [A:bx].Columns.Count)
  5. Brr(1, 1) = Split([G1], "-")(0) & "-FQC"
  6. Brr(1, 2) = Year([C1])
  7. Brr(1, 3) = [C1]
  8. Brr(1, 4) = [E1]

  9. For i = 0 To UBound(Arr) - 1
  10.     If i >= UBound(Arr) - 1 Then
  11.        For j = 5 To 6: Brr(1, i * 5 + j) = Arr(i + 1, j + 1): Next j
  12.     Else
  13.        For j = 5 To 9: Brr(1, i * 5 + j) = Arr(i + 1, j + 1): Next j
  14.       
  15.     End If
  16.      Next i

  17. Dim xN$, xB As Workbook, xS As Worksheet, xF As Range
  18. xN = "Out.xlsm"
  19. On Error Resume Next
  20. Set xB = Workbooks(xN)
  21. If xB Is Nothing Then Set xB = Workbooks.Open(ThisWorkbook.Path & "" & xN)
  22. On Error GoTo 0
  23. If xB Is Nothing Then MsgBox "can't find〔" & xN & "〕file": Exit Sub

  24. Set xS = xB.Sheets("BB")
  25. Set xF = xS.[A:A].Find(Split(Brr(1, 1), "-")(0), Lookat:=xlPart)
  26. If Not xF Is Nothing Then MsgBox "Two lots": xB.Close 0: Exit Sub
  27. Set xE = xS.[A65536].End(xlUp)(2)
  28. If xE.Row < 6 Then Set xE = xE(2)
  29. xE.Resize(2, UBound(Brr, 2)) = Brr
  30. xB.Close 1
  31. End Sub
复制代码



最佳答案
2022-9-7 17:28
Private Sub CommandButton2_Click()
    Dim Arr, Brr, i&, j%, xE As Range
    Arr = [A3:J17]
    ReDim Brr(1 To 2, 1 To [A:bx].Columns.Count)
    Brr(1, 1) = Split([G1], "-")(0) & "-FQC"
    Brr(1, 2) = Year([C1])
    Brr(1, 3) = [C1]
    Brr(1, 4) = [E1]

    For i = 0 To UBound(Arr) - 1
        If i = 5 Or i = 9 Then GoTo 10
        If i >= UBound(Arr) - 1 Then
            For j = 5 To 6: Brr(1, i * 5 + j) = Arr(i + 1, j + 1): Next j
        Else
            For j = 5 To 9: Brr(1, i * 5 + j) = Arr(i + 1, j + 1): Next j

        End If
10    Next i

    Dim xN$, xB As Workbook, xS As Worksheet, xF As Range
    xN = "Out.xlsm"
    On Error Resume Next
    Set xB = Workbooks(xN)
    If xB Is Nothing Then Set xB = Workbooks.Open(ThisWorkbook.Path & "\" & xN)
    On Error GoTo 0
    If xB Is Nothing Then MsgBox "can't find〔" & xN & "〕file": Exit Sub

    Set xS = xB.Sheets("BB")
    Set xF = xS.[A:A].Find(Split(Brr(1, 1), "-")(0), Lookat:=xlPart)
    If Not xF Is Nothing Then MsgBox "Two lots": xB.Close 0: Exit Sub
    Set xE = xS.[A65536].End(xlUp)(2)
    If xE.Row < 6 Then Set xE = xE(2)
    xE.Resize(2, UBound(Brr, 2)) = Brr
    xB.Close 1
End Sub

TT.zip

78.29 KB, 下载次数: 9

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-9-7 17:28 | 显示全部楼层    本楼为最佳答案   
Private Sub CommandButton2_Click()
    Dim Arr, Brr, i&, j%, xE As Range
    Arr = [A3:J17]
    ReDim Brr(1 To 2, 1 To [A:bx].Columns.Count)
    Brr(1, 1) = Split([G1], "-")(0) & "-FQC"
    Brr(1, 2) = Year([C1])
    Brr(1, 3) = [C1]
    Brr(1, 4) = [E1]

    For i = 0 To UBound(Arr) - 1
        If i = 5 Or i = 9 Then GoTo 10
        If i >= UBound(Arr) - 1 Then
            For j = 5 To 6: Brr(1, i * 5 + j) = Arr(i + 1, j + 1): Next j
        Else
            For j = 5 To 9: Brr(1, i * 5 + j) = Arr(i + 1, j + 1): Next j

        End If
10    Next i

    Dim xN$, xB As Workbook, xS As Worksheet, xF As Range
    xN = "Out.xlsm"
    On Error Resume Next
    Set xB = Workbooks(xN)
    If xB Is Nothing Then Set xB = Workbooks.Open(ThisWorkbook.Path & "\" & xN)
    On Error GoTo 0
    If xB Is Nothing Then MsgBox "can't find〔" & xN & "〕file": Exit Sub

    Set xS = xB.Sheets("BB")
    Set xF = xS.[A:A].Find(Split(Brr(1, 1), "-")(0), Lookat:=xlPart)
    If Not xF Is Nothing Then MsgBox "Two lots": xB.Close 0: Exit Sub
    Set xE = xS.[A65536].End(xlUp)(2)
    If xE.Row < 6 Then Set xE = xE(2)
    xE.Resize(2, UBound(Brr, 2)) = Brr
    xB.Close 1
End Sub
回复

使用道具 举报

 楼主| 发表于 2022-9-13 14:08 | 显示全部楼层
zjdh 发表于 2022-9-7 17:28
Private Sub CommandButton2_Click()
    Dim Arr, Brr, i&, j%, xE As Range
    Arr = [A3:J17]

又有一个问题,虽然是跳过栏位,但我想把后面数值往前递补,该怎么做?
回复

使用道具 举报

发表于 2022-9-13 15:56 | 显示全部楼层
那样在Out文件中不是错位了吗?
回复

使用道具 举报

 楼主| 发表于 2022-9-13 15:58 | 显示全部楼层
zjdh 发表于 2022-9-13 15:56
那样在Out文件中不是错位了吗?

没关系, 我是要把跳过资料不显示
回复

使用道具 举报

发表于 2022-9-13 16:37 | 显示全部楼层
Private Sub CommandButton2_Click()
    Dim Arr, Brr, i&, j%, xE As Range, K&
    Arr = [A3:J17]
    ReDim Brr(1 To 2, 1 To [A:bx].Columns.Count)
    Brr(1, 1) = Split([G1], "-")(0) & "-FQC"
    Brr(1, 2) = Year([C1])
    Brr(1, 3) = [C1]
    Brr(1, 4) = [E1]
    K = 0
    For i = 0 To UBound(Arr) - 1
        If i = 5 Or i = 9 Then GoTo 10
        If i >= UBound(Arr) - 1 Then
            For j = 5 To 6: Brr(1, K * 5 + j) = Arr(i + 1, j + 1): Next j
        Else
            For j = 5 To 9: Brr(1, K * 5 + j) = Arr(i + 1, j + 1): Next j

        End If
        K = K + 1
10    Next i

    Dim xN$, xB As Workbook, xS As Worksheet, xF As Range
    xN = "Out.xlsm"
    On Error Resume Next
    Set xB = Workbooks(xN)
    If xB Is Nothing Then Set xB = Workbooks.Open(ThisWorkbook.Path & "\" & xN)
    On Error GoTo 0
    If xB Is Nothing Then MsgBox "can't find〔" & xN & "〕file": Exit Sub

    Set xS = xB.Sheets("BB")
    Set xF = xS.[A:A].Find(Split(Brr(1, 1), "-")(0), Lookat:=xlPart)
    If Not xF Is Nothing Then MsgBox "Two lots": xB.Close 0: Exit Sub
    Set xE = xS.[A65536].End(xlUp)(2)
    If xE.Row < 6 Then Set xE = xE(2)
    xE.Resize(2, UBound(Brr, 2)) = Brr
    xB.Close 1
End Sub
回复

使用道具 举报

 楼主| 发表于 2022-9-14 09:16 | 显示全部楼层
zjdh 发表于 2022-9-13 16:37
Private Sub CommandButton2_Click()
    Dim Arr, Brr, i&, j%, xE As Range, K&
    Arr = [A3:J17]


版主你好
有点不明白为何加上K=0, K+1 就可以将数值补上?


  1. K = 0
  2.     For i = 0 To UBound(Arr) - 1
  3.         If i = 5 Or i = 9 Then GoTo 10
  4.         If i >= UBound(Arr) - 1 Then
  5.             For j = 5 To 6: Brr(1, K * 5 + j) = Arr(i + 1, j + 1): Next j
  6.         Else
  7.             For j = 5 To 9: Brr(1, K * 5 + j) = Arr(i + 1, j + 1): Next j

  8.         End If
  9.         K = K + 1
复制代码


回复

使用道具 举报

发表于 2022-9-14 17:02 | 显示全部楼层
仔细分析我涂红的几句语句!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 17:24 , Processed in 0.367583 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表