使用VBA的方式在EXCEL中的sheet1和sheet2表格内容一样,将sheet2单元格的数值移动到sheet1相应的单元格中

sheet1和sheet2A列是名称;B1、C1、D1、E1、F1、G1.......是日期依此类推,B2、C2、D2、E2、F2、G2.........是数值依此类推。... sheet1和sheet2 A列是名称;B1、C1、D1、E1、F1、G1.......是日期依此类推,B2、C2、D2、E2、F2、G2.........是数值依此类推。如何将sheet2单元格中有数值的单元格移动到sheet1相应的单元格内?谢谢!如 展开
 我来答
一年孤独58aa
推荐于2016-09-16 · TA获得超过1404个赞
知道小有建树答主
回答量:592
采纳率:92%
帮助的人:436万
展开全部
Sub Test()
    Dim sht1 As Worksheet, sht2 As Worksheet
    Dim myCell As Range, rng As Range
    Set sht1 = Worksheets(1)
    Set sht2 = Worksheets(2)
    With sht2.Cells(1, 1).CurrentRegion
        Set rng = sht2.Cells(2, 2).Resize(.Rows.Count - 1, .Columns.Count - 1)
    End With
    For Each myCell In rng.SpecialCells(xlCellTypeConstants)
        With myCell
            sht1.Cells(.Row, .Column) = .Value
        End With
    Next myCell
End Sub

详见附件。

更多追问追答
追问
您好!刚刚运行了一下下是能实现了,但是当SHEET2表中的A列名称顺序没有按照SHEET1的顺序排列的时候,SHEET2单元格的数值不能安照A列名称对号入座哦!谢谢!
追答

等下哦,是可以解决的。

Sub Test()
    Dim sht1 As Worksheet, sht2 As Worksheet
    Dim myCell As Range, rng As Range
    Dim i As Integer, m As Integer
    Dim j As Integer, n As Integer
    Dim k As Integer
    
    Set sht1 = Worksheets(1)
    Set sht2 = Worksheets(2)
    With sht1
        m = .Cells(1, 1).CurrentRegion.Rows.Count
        Set rng = .Range("A1:A" & m)
    End With
    With sht2.Cells(1, 1).CurrentRegion
        m = .Rows.Count
        n = .Columns.Count
    End With
    
    For i = 2 To m
        On Error Resume Next
        k = WorksheetFunction.Match(sht2.Cells(i, 1), rng, 0)
        If Err.Number = 0 Then
            On Error GoTo 0
            For j = 2 To n
                Set myCell = sht2.Cells(i, j)
                If myCell <> "" Then
                    sht1.Cells(k, j) = myCell
                End If
            Next j
        Else
            Err.Clear
            On Error GoTo 0
        End If
    Next i
End Sub


tjdrjie3
2015-05-15 · 知道合伙人互联网行家
tjdrjie3
知道合伙人互联网行家
采纳数:230 获赞数:883
05年自学从事电脑行业 06至13一直在一家公司从事程序员直到升为技术总监 14看做淘宝 15看来郑州

向TA提问 私信TA
展开全部
确实不明白你的问题
追问
我怎么样才能上传EXCEL文档呢?
追答
上传到百度网盘就可以了,要不发我邮箱258347442
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友72f5ad5
2015-05-15 · TA获得超过5338个赞
知道小有建树答主
回答量:1930
采纳率:0%
帮助的人:1005万
展开全部
你得上传附件,看看情况 这样描述很模糊的
更多追问追答
追问
名称
4月1日
4月2日
4月3日
4月4日
4月5日

A

1000
1000
1000
10

B
100
100
1000

C

100

1000
10

D
100

1000

E
100
100
1000
1000
10
追答
Sub DDD()

Dim str As Variant

With ThisWorkbook

For i = 2 To 256

For j = 1 To 65536

.Worksheets("Sheet2").Activate

If .Worksheets("Sheet2").Cells(i, j) "" Then

str = .Worksheets("Sheet2").Cells(i, j).Value

End If

.Worksheets("Sheet1").Activate

.Worksheets("Sheet1").Cells(i, j) = str

str = ""

Next i
Next j

End With
END SUB
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式