楼主: peterpan_aus
2463 12

[问答] 怎么copy一行到另外一个sheet去 [推广有奖]

  • 5关注
  • 0粉丝

已卖:49份资源

讲师

61%

还不是VIP/贵宾

-

威望
0
论坛币
544 个
通用积分
6.5202
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
6198 点
帖子
214
精华
0
在线时间
855 小时
注册时间
2007-12-18
最后登录
2023-7-4

楼主
peterpan_aus 发表于 2013-3-12 14:48:04 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想copy A2:J2的数据 到另外一个sheet,不是整个一行。另外因为是循环所以要求A:J 的row会变的。刚开始学VBA感觉和SAS实在太不一样了。
写的程序在下面那行红的就是有问题的,请帮我改改,谢谢!!!!!!
表达可能有问题,不清楚我的我在第一时间解释

Sub count()
Dim position As Integer
Dim start As Integer
start = 1
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet3")

      With ActiveSheet
            
             Dim LastRowA As Long
            LastRowj = .Cells(.Rows.count, "J").End(xlUp).Row
   
               
            For jstart = 2 To LastRowj
   
                    For start = 2 To 303
                    position = InStr(1, UCase(Cells(jstart, 10).Value), .Cells(start, 17).Value)
                    If position > 0 Then ws1.Cells(jstart, Range("A:J")).Copy ws2.Cells(jstart, Range("A:J"))
                    Next start
            
            Next jstart
            
        End With

End Sub


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:sheet COPY SHE worksheet position position count start 第一时间 程序

回帖推荐

peterpan_aus 发表于9楼  查看完整内容

谢谢楼上的,晚上自己也小研究了一下,问题得到解决,帮我看看 Sub count() Dim position As Integer Dim start, copyrow, jstart As Integer start = 1 copyrow = 2 Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1") Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet3") Dim LastRowAinsheet3 As Long LastRowAinsheet3 = ws2.Cells(ws2.Rows.count, "A ...

本帖被以下文库推荐

沙发
peterpan_aus 发表于 2013-3-12 16:23:33
大家帮帮我啊!

藤椅
peterpan_aus 发表于 2013-3-12 18:41:01
是大家不明白我在说什么吗?

板凳
劍布衣 发表于 2013-3-12 19:55:03
ws1.Cells(jstart, Range("A:J")).Copy ws2.Cells(jstart, Range("A:J"))这样不行的
cells(行号,列号)你在列号这里输入range("a:j")自然不对
按照你的思路
可以用for循环先选取行号,再通过列号来实现循环
  1. Sub count()
  2. Dim position As Integer, start As Integer, LastRowA As Long, j As Integer
  3. start = 1
  4. Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
  5. Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet3")

  6. With ActiveSheet

  7. LastRowj = .Cells(.Rows.count, "J").End(xlUp).Row
  8. For jstart = 2 To LastRowj
  9. For j = 1 To 10 'A-J列循环
  10. For start = 2 To 303
  11. position = InStr(1, UCase(Cells(jstart, 10).Value), .Cells(start, 17).Value)
  12. If position > 0 Then ws1.Cells(jstart, j).Copy ws2.Cells(jstart, j)
  13. Next start
  14. Next jstart

  15. End With

  16. End Sub
复制代码

报纸
劍布衣 发表于 2013-3-12 19:56:02
平时练习的时候 多学会调试代码以及使用F1抹黑你想要了解的单词查看帮助

地板
劍布衣 发表于 2013-3-12 19:58:21
不好意思,貌似for j 那一句应该放在 for start那一句的下面才是你想要的结果

7
劍布衣 发表于 2013-3-12 19:59:24
另外问一句
兄弟有没有spss的好的视频可以借我学习一番

8
劍布衣 发表于 2013-3-12 20:03:03
推荐该版块赵志东的那个视频学习
很好的视频,另外如果你是想学excel方面的知识最好是去excelhome论坛学习
比这里事半功倍,这里清谈者甚多,实际操作的少之又少

9
peterpan_aus 发表于 2013-3-12 21:56:41
谢谢楼上的,晚上自己也小研究了一下,问题得到解决,帮我看看
Sub count()
Dim position As Integer
Dim start, copyrow, jstart As Integer
start = 1
copyrow = 2

Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet3")
             Dim LastRowAinsheet3 As Long
             LastRowAinsheet3 = ws2.Cells(ws2.Rows.count, "A").End(xlUp).Row
             MsgBox ("LastRowAinsheet" & "=" & LastRowAinsheet3)
      
            
              Dim LastRowA As Long
             LastRowA = ws1.Cells(ws1.Rows.count, "A").End(xlUp).Row
     
               
            For jstart = 2 To LastRowA
     
                     For start = 2 To 303
                     position = InStr(1, UCase(ws1.Cells(jstart, 1).Value), ws1.Cells(start, 17).Value)
                            If position > 0 Then
                         ws1.Range("A" & jstart, "I" & jstart).Copy ws2.Range("A" & LastRowAinsheet3 + 1, "I" & LastRowAinsheet3 + 1)
                        LastRowAinsheet3 = LastRowAinsheet3 + 1
                    '  MsgBox (ws1.Range("A" & jstart).Value)
                    ' MsgBox ("jstart" & "=" & jstart)
                     Exit For
                     End If
                     Next start
            
             Next jstart
            
        
  ws1.Range("A2", "J100").ClearContents
End Sub
已有 1 人评分经验 论坛币 收起 理由
客初 + 40 + 20 热心帮助其他会员

总评分: 经验 + 40  论坛币 + 20   查看全部评分

10
peterpan_aus 发表于 2013-3-12 21:58:58
劍布衣 发表于 2013-3-12 19:59
另外问一句
兄弟有没有spss的好的视频可以借我学习一番
不太用SPSS,用SAS比较多一点

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 03:18