excel vba 的读取列,写入列,循环和if 的一些操作

最近在研究 Excel 中的 VBA ,也就是Excel 的宏,需要将第一个页面的值,等列排入第二个Sheet页中

就像第一个页面中

 

 

 排列成

这个样子


首先需要缕缕自己的思路

我们需要获取到第一个Sheet 也的值

Set Destination = Worksheets("Sheet1")

获取到以后,要如何去找到每一列的值并赋值给另外一个Sheet 呢?

当然是,循环 + 写入了

 Dim a As Integer
    Dim b As Integer
    Dim js As Integer
    
    Set Destination = Worksheets("Sheet1")
    Set Destination2 = Worksheets("Sheet2")
    
    '行数
    a = Destination.UsedRange.Rows.Count
    '列数
    b = Destination.UsedRange.Columns.Count
    
    '循环行
    For i = 1 To a
    '循环列
        For j = 1 To b
            '计算行所在位置
            js = (i * 2)
            '不同列不同的数据处理
            If (j = 2) Then
                Destination2.Cells(js, j + 1) = Destination.Cells(i, j)
            ElseIf (j = 3) Then
                Destination2.Cells(js - 1, j) = Destination.Cells(i, j)
            Else
                Destination2.Cells(js - 1, j) = Destination.Cells(i, j)
                Destination2.Cells(js, j) = Destination.Cells(i, j)
                Destination2.Cells(js - 1, j + 1) = Destination.Cells(i, j)
                Destination2.Cells(js, j + 1) = Destination.Cells(i, j)
            End If
        Next
    Next

这其中Dim 就是拿来定义变量

用你获取到的Sheet 页数据.Cells 就是来取你某一个XY对应的数据,也可以直接进行赋值

For 的语法就是 For 变量 = 初始值 To 结束值

Next

If 的语法就简单了

IF(条件) then 你的代码 else 没有否则条件可以不写 End If

然后执行以下,我们看看

 

 

 是不是 so easy?

为了以防万一,可以在最为层加入 If Not IsError

他的用法和if 大同小异,If Not IsError(你认为可能会报错的行) Then 如果没有报错的话 else 报错了的话  On Error Resume Next

那如果我们想让单元格稍微美观一点,加个表格怎么办呢?

 With ActiveSheet.UsedRange.Resize(x, b - 1).Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

简简单单一个 with 循环搞定

最后来个友情的弹出框

result = MsgBox("转换完成", 0, "提示")

至于弹出框还有什么样式,https://www.yiibai.com/vba/vba_message_box.html 阔以看看这里哟

当然里面以及空行删除啊,或者自行填充啊,这个就是你的逻辑代码需要处理的事情了

理论上知识点,差不多就这些吧

共同学习

 

posted @ 2020-02-19 18:35  临冰听雪丶  阅读(9348)  评论(0编辑  收藏  举报