Excel如何利用VBA读取指定区域内非空单元格数据到另一个工作表中?结果如下图。

如题所述

给你做好了,你只需要把数据区域改为你实际数据区域即可

Sub esit()
    Dim arr, brr, x%, y%, i%, j%, d As Object
    Set d = CreateObject("Scripting.Dictionary")
    j = Range("C65536").End(xlUp).Row
    arr = Range("B1:J" & j).Value
    ReDim brr(1 To UBound(arr, 2), -1 To 1)
    For x = 3 To UBound(arr)
        If arr(x, 1) = "" Then arr(x, 1) = arr(x - 1, 1)
        If arr(x, UBound(arr, 2)) <> "" Then
            i = i + 1
            d(arr(x, 1)) = d(arr(x, 1)) + 1
            ReDim Preserve brr(1 To UBound(arr, 2), -1 To i)
            For y = 1 To UBound(arr, 2)
                brr(y, i) = arr(x, y)
            Next y
        End If
    Next x
    For x = 1 To UBound(arr, 2)
        brr(x, -1) = arr(1, x)
        brr(x, 0) = arr(2, x)
    Next x
    Application.ScreenUpdating = False
    With Range("M1:U30")
        .ClearContents
        .Borders.LineStyle = 0
        .UnMerge
    End With
    Range("M1").Resize(i + 2, UBound(brr)) = Application.Transpose(brr)
    For x = 3 To i + 2
        If d(Cells(x, "M").Value) > 1 Then
            Application.DisplayAlerts = False
            Cells(x, "M").Resize(d(Cells(x, "M").Value), 1).Merge
            Application.DisplayAlerts = True
            x = x + d(Cells(x, "M"))
        End If
    Next x
    Range("M2").Resize(i + 1, UBound(brr)).Borders.LineStyle = 1
    Application.ScreenUpdating = True
End Sub

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-14
难点在于有合并单元格,如果第一个(如李一)为空,那么删除了就会缺少合并的科室(如后勤),建议如下逻辑处理:
一、全表复制
二、取消合并单元格,并把合并的值填充所有行
三、重新合并相同的科室

编程中如果还有问题请追问。本回答被网友采纳

Excel如何利用VBA读取指定区域内非空单元格数据到另一个工作表中?结果...
给你做好了,你只需要把数据区域改为你实际数据区域即可 Sub esit() Dim arr, brr, x%, y%, i%, j%, d As Object Set d = CreateObject("Scripting.Dictionary") j = Range("C65536").End(xlUp).Row arr = Range("B1:J" & j).Value ReDim brr(1 To UBound(arr...

excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决
1、点击Excel界面左下角的录制宏按钮录制宏。2、在【宏名】处输入一个有意义的名称,帮助以后识别该宏的功能。本例按照默认名称命名。选择将宏录制在【个人宏工作簿】并点击【确定】按钮。3、马上点击Excel界面左下角的停止录制宏按钮停止宏的录制。4、按Alt+F11打开VBE界面,如下图。5、在代码部分...

Excel如何读取指定区域内非空单元格数据及其行列号到另一个工作表...
1) = st1.Cells(Rg.Row, 1) & st1.Cells(1, Rg.Column) arr(i, 2) = Rg i = i + 1 End If Next st2.Range("a1").Resize(UBound(arr), 2) = arrEnd Sub

excel中如何将用vba把表一的信息录入表二
1、可以先利用宏录制来自动生成代码,然后再进行修改。操作方法如下:第一步,打开一个excel应用,新建一个白空表格,并录入数据。2、第二步,点击excel应用程序窗口状态栏中左侧的“宏录制”按钮。3、第三步,然后在表1中,选中左上角第一个有数据的单元格。4、第四步,接着按下CTRL+SHIFT键,再...

excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决
在功能区(Ribbon)上,通过右键菜单选择"自定义快速访问工具栏",添加一个"标签"和一个"按钮"。选中按钮后,点击"属性",准备配置宏的触发方式。在新打开的代码编辑窗口中,为"获取Excel数据"按钮编写VBA代码,用于连接和读取其他工作簿的数据。接下来,切换到目标工作表(例如Sheet1),再次在代码编辑...

excel如何通过vba将工作表1的某些单元格的值保存到另一张表的对应位置...
把两张表格发到57321522@qq。com

通过VBA将一个EXCEL单元格的内容读取到另一个单元格?
1,在vba中创建一个录制界面,设置输入按钮,设置输入按钮代码实现输入功能,双击输入按钮,输入代码进入代码窗口。2,将需要在表单中输入的文本框连接到指定的单元格,继续输入代码中显示的代码,并使用文本文本框的值链接到我们要输入的工作表单元格。3,设置输入单元格中显示的内容的文本格式,大小,字体...

excel vba 点控件执行复制数据到另一工作表
1.在sheet1中先写好筛选条件,点开文件复制的目标excel(本文是sheet2),最上面工具栏中点“数据”,找到筛选旁边的“高级”选项,跳出“高级筛选”框 2.选中“将筛选结果复制到其他位置”,然后“列表区域”选中sheet1中的原始数据,“条件区域”选中sheet1中我们提前写好的条件,“复制到”选中sheet2...

[Excel+VBA]如何查找某个表格里的数据并将相关数据复制到另一个表中...
同时按CTRL SHFIT 回车键 出现结果,下拉公式 第3列同理 VBA的要依次循环包含了 编号或 挖方的数据 或设置 步长 复制到 sheet1表 Sub 编号()Dim i, n n = 2 For i = 1 To Sheets("三角网原始数据").Range("a65536").End(xlUp).Row Step 6 n = n + 1 Cells(n, "a") = ...

如何用函数或VBA调用(引用)另外一个工作表的数据
1、首先,在Excel表格中输入如图内容,以方便在VBA中进行读取和处理操作。2、进入VBA环境,可以按键盘上的“Alt+F11”进入。右击“Microsoft Excel对象”,从其右键菜单中选择“插入”-“用户窗体”项。3、接着向窗体中拖动一个“标签”和一个“按钮”,右击“按钮”,从其扩展菜单中选择“属性”项。...

相似回答