精华内容
下载资源
问答
  • VBA获取数据区域的行列数

    千次阅读 2020-10-20 22:12:40
    VBA获取数据区域的行列数方法1方法2 方法1 ActiveSheet.UsedRange.Rows.Count ActiveSheet.UsedRange.Columns.Count 缺点:有时可能会比实际数大一些,原因是如果你把最后几行(列) 数据 清除后(非整行或整列...

    VBA获取数据区域的行列数

    方法1

    ActiveSheet.UsedRange.Rows.Count   
    ActiveSheet.UsedRange.Columns.Count
    

    缺点:把最后几行(列) 数据 清除后(非整行或整列删除),用这个命令仍返回未清除前的值。

    方法2

    ActiveSheet.Range("A65535").End(xlUp).Row
    ActiveSheet.Range("IV1").End(xlToLeft).Column
    

    缺点:只能计算出一列(行)的最后一个 单元格 所在的行(列)数。本例返回第一列(行)的行(列)数。

    展开全文
  • 实现功能是,传递一个Range区域数据,自动生成JSON字符串,行首为列名。 函数如下: Function GetJSON(myrange) Dim returnStr As String Dim count As Integer Dim colunms As Integer

    研究了一下VBA序列化JSON,网上没现成的,自己参考人家写的改了一下。

    实现功能是,传递一个Range区域的数据,自动生成JSON字符串,行首为列名。


    函数如下:

    Function GetJSON(myrange)
        Dim returnStr As String
        Dim count As Integer
        Dim colunms As Integer
        count = UBound(myrange, 1)
        colunms = UBound(myrange, 2)
        
        returnStr = "{["
        
        For i = 2 To count
            returnStr = returnStr + "{"
            For j = 1 To colunms
                returnStr = returnStr + """" & myrange(1, j) & """:""" & Replace(myrange(i, j), """", "\""") & """"
                
                If j <> colunms Then
                    returnStr = returnStr + ","
                End If
                
                If i = count And j = colunms Then
                    returnStr = returnStr + "}"
                ElseIf j = colunms Then
                    returnStr = returnStr + "},"
                End If
            Next
        Next
        returnStr = returnStr + "]}"
        GetJSON = returnStr
    End Function

    使用如下:


    Function getFactory()
        getFactory = GetJSON(Range("F1:G5").Value)
    End Function

    生成结果:

    {[{"编号":"1","供应商简称":"aa"},{"编号":"2","供应商简称":"bb"},{"编号":"3","供应商简称":"cc"},{"编号":"4","供应商简称":"dd"}]}



    展开全文
  • B8:S200是需要清空的区域) <code>Worksheets("sheet1").Range("B8:S200").Clear Worksheets("sheet1").Range("B8:S200").ClearContents</code></pre> <code>Dim rng As ...
  • VBA模糊查询示例(使用单元格区域数据).xls
  • VBA程序如下: Sub test1() Dim w As Worksheet Set w = Worksheets("测试数据") Dim i As Integer, j As Integer, num As Integer, col As Integer Dim r As Range, rr As Range ' rr是需要复制的单元格 ...

    VBA程序如下: 

    Sub test1()
        Dim w As Worksheet
        Set w = Worksheets("测试数据")
    
        Dim i As Integer, j As Integer, num As Integer, col As Integer
        Dim r As Range, rr As Range
        
        ' rr是需要复制的单元格 固定
        For i = 4 To 10 Step 1 ' 多少行
            num = Range("C" & i) - 1 '复制次数
            Debug.Print "复制次数" & num
            
            col = w.Range("E" & i).End(xlToRight).Column
            
            If col = 256 Then
                Set rr = w.Range("E" & i)
            Else
                Set rr = w.Range(Cells(i, 5), Cells(i, col)) '确定要复制的单元格
            End If
            
            '定位最右边的第一个单元格
            For j = 1 To num Step 1
                Set r = w.Range("A" & i).End(xlToRight).Offset(0, 1)
                rr.Copy r '复制
            Next j
            
        Next i
    End Sub

    得到

    然后把这些数据放在一起, 去重,  统计每个人的出现次数即可.

    一列数据的去重很简单, 只需要选中这一列, 删除重复项即可. 如何做一个区域的去重?

    实例(2): 区域的数据去重

    原始情况如下

    VBA代码如下

    Sub test2()  ' 区域去重
    Dim Rng As Range, Arr, i As Long, j As Long, T As Boolean
    j = 1
    ReDim Arr(1 To 1)  ' arr 用来存储非重复项
    T = True
    For Each Rng In Selection
        If Rng.Value <> "" Then
            For i = 1 To j  ' j 是arr的长度, 遍历arr每一项
                If Arr(i) = Rng.Value Then ' 出现重复了
                Rng.Value = "" ' 删除重复的单元格内容
                T = False
                Exit For
                End If
            Next
            If T Then  ' 不是重复值
                j = j + 1 ' 增加数组长度
                ReDim Preserve Arr(1 To j)
                Arr(j) = Rng.Value ' 存储该单元格到数组中
            End If
            T = True
        End If
    Next
    Range("E1:E" & j) = Application.WorksheetFunction.Transpose(Arr) ' 得到不重复项
    End Sub
    展开全文
  • 心得(4):怎么利用VBA选定excel的特定区域或者特定的点,并得到它的值 问题:1.如何选定excel特定的点或者区域;2.如何按方向(自上而下,自左而右。) 解决: 选取特定的点: 结果如下: 除了上述的方式...

    心得(4):怎么利用VBA选定excel中的特定区域或者特定的点,并得到它的值

    问题:1.如何选定excel中特定的点或者区域;2.如何按方向(自上而下,自左而右。)

    解决:

    1. 选取特定的点:
      在这里插入图片描述
      结果如下:
      在这里插入图片描述
      除了上述的方式还有以下方式:

      Sub 选取点()
      	ThisWorkbook.Sheets(1).Range("a1")
      	ThisWorkbook.Sheets(1).Cells(1, 1)
      	ThisWorkbook.Sheets(1).Range("A" & 1)
      	ThisWorkbook.Sheets(1).Cells(1, "A")
      	ThisWorkbook.Sheets(1).Cells(1)
      	ThisWorkbook.Sheets(1). [a1]
      End Sub
      

    选取方式就是在选取值的方式后面加上select:
    在这里插入图片描述
    2. 选取范围的区域
    在这里插入图片描述
    在这里插入图片描述
    除了以上的方式还有以下方法:
    在这里插入图片描述
    选取不相邻的方式如下:
    在这里插入图片描述

    1. 表示行和列
      在这里插入图片描述
      在这里插入图片描述
    2. 如何从方向上复制内容
      重点是这个:End(xlDown)、End(xlUp)、End(xltoLeft)、End(xltoRight),就是从某个单元格开始,向下/上/左/右 找到第一个有数据的单元格。

    在这里插入图片描述

    展开全文
  • vba 选中所有区域 但是不包括首行

    千次阅读 2019-02-09 22:14:18
    当我们使用VBA将一个工作簿所有sheet内容,汇总到一个sheet时, 我们需要复制每个sheet除首行之外的单元格,然后复制到对应位置。 因此,选中所有单元格然后取出首行就显得比较必要。 下面是操作的代码,...
  • Excel VBA数据排序

    2020-12-15 01:01:54
    在如图1所示数据列表,需要按总成绩从高到低进行排序,示例代码如下。 Sub SortDemo() Range("A1").Sort key1:="总成绩", order1:=xlDescending, _ Header:=xlYes End Sub 运行SortDemo过程,排序结果如图2所...
  • VBA数据透视表

    2016-02-28 21:42:05
    VBA通过代码画出数据透视表,自定义数据区域
  • EXCEL-VBA:通过SQL查询数据Sheet数据
  • 需要提取当前工作簿每个工作表此区域数据,并且汇总成一个表格 1、此区域在不同工作表位置不同 2、此区域在不同工作表中行数列数不同
  • VBA代码引用Excel工作表单元格区域的方式小结
  • 蓝字关注,加微信NZ9668获资料信息VBA解决方案 系列丛书作者头条百家平台 VBA资深创作者_______________________________大家好,今日继续和大家分享VBA编程常用的常用“积木”过程代码。这些内容大多是我的经验的...
  • 使用如下的VBA代码,您就可以在Excel,统计某个字符或某个数字,甚至是某个字符串,在某个数据区域范围内,所出现的次数,即出现几次,或称为几个。    Sub getWordCnt() Set myb = CreateObject(...
  • 因为以下内容都是复制单个或者固定区域的单元格内容,就不多说了,备注上面都说明。 Option Explicit Sub CopyRange() '复制单元格内容示例1 '注意:单元格的格式、公式、批注等也会被复制过去哟 Sheets(1)....
  • 打开给定工作簿,选择按钮,输入你需要在多个表格复制的数据位置(可以为空),但是切记,第一行和第一列不能为空和最短的数据,否则会被覆盖掉,因为是根据第一行和第一列的长度来判断并向后依次追加数据(按行按...
  • 浅谈VBA中使用数组处理工作表数据

    千次阅读 2018-02-28 12:55:53
    VBA中最经常涉及的就是读写工作表的单元格,如果读写操作次数较多,或者涉及到的单元格数量较多,往往会导致程序运行效率较低。这时经常用到的解决方法就是使用数组保存数据,在内存进行数据处理和加工,最后...
  • 同时保存的总是整个工作表,而对于多个工作表的文件特别是还有许多不需要保存到CSV文件的内容,这样的处理方式就会显得很麻烦,因此采用VBA实现保存Excel多个工作表选择区域为CSV文件。首先在Excel选择需要...
  • vba数据抓取屏幕数据 完美的Internet可以按照客户选择的格式(无论是CSV,XML,JSON等)向客户提供数据。真正的Internet有时会通过提供数据来取笑,但通常以HTML或PDF文档格式提供,而这些格式旨在显示数据比数据...
  • VBA 的跨表数据更新

    千次阅读 2019-05-17 09:23:18
    VBA 的跨表数据更新 本次跨表更新,是将其中一个表格的sheet页对应数据复制粘贴到,另一个表格的对应sheet页。 '首先是将源文件打开,然后获取源文件对应sheet的,这里将目标文件的数据复制到源文件对应sheet ...
  • 博主使用的ODBC连接查询mysql数据库,并返回数据显示到excel 先画一个随便的按键↓ 点击后,选第一个按键,在想要添加按键的位置画一个区域↓ 右键按键选新增,跳转到代码编辑页面 代码↓ Sub 嘤嘤嘤() Dim ...
  • 前面两篇博客,我们介绍了VBA和使用VBA获取当前工作表和另一个工作簿的工作表数据。这篇我们来说说如何使用VBA模糊查找当前工作表有用的数据。我们有时会遇到这样的情况。我们手头很多很多老的excel文件,...
  • VBA-选定Excel单元格区域的方法

    千次阅读 2020-02-23 14:13:34
    VBA 一般使用 Select 方法选定单元格或单元格区域,格式为:.select。但是需要注意的是在使用该函数之前保证单元格所在工作表为活动工作表。 Sub test1() Range("a1:d4").Select Sheet2.Activate '激活工作表...
  • VBA中使用ADO来处理Excel数据之现状

    万次阅读 2017-07-02 11:57:59
    VBA中使用ADO来处理Excel数据之现状 Excel工作表的行和列与数据库的行和列非常相似。ADO 让我们可以将 Excel 工作簿看做和数据库一样,用ADO的好处是可以不通过OPEN的方式访问工作簿,如此可以绕过不使用宏即...
  • 学习Excel技术,关注微信公众号:excelperfect这是在研读《Escape From Excel Hell》时学到的技术,从本工作簿或者其他...用于输入的4个单元格(背景色为橙色),其中单元格A6输入源数据(即要从哪里获取数据)所...
  • 问题一:在VBA代码,如何引用当前工作表的单个单元格(例如引用单元格C3)? 回答:可以使用下面列举的任一方式对当前工作表的单元格(C3)进行引用。 (1) Range("C3") (2) [C3] (3) Cells(3, 3) ...
  • Sub kuangxian() ...).Select '选择区域 Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft)...
  • 本文介绍了利用 Excel 的 Power Query 与 VBA 实现 CSV 格式数据清洗的关键步骤及思路,对实操过程的性能提升等具体问题给出了解决办法,最后对此类问题给出了通用的注意事项,具备一定的指导性。
  • 8 excel vba 往多行写入数据

    千次阅读 2018-02-06 15:31:47
    我们都知道, 一个表格里很多个单元格. 由前面可知,我们要往一个单元格里写入数据,首先就要获得这个单元格的引用. 这样程序才知道在哪里写入数据.  比如我们要往单元格 A1 写入数据, 可以用 range("A1") ,来表示...
  • 代码如下: Function sheettype(sheet As range) Select Case True Case Application.WorksheetFunction.IsText(sheet) sheettype = "文本" Case Application.WorksheetFunction.IsLogical(sheet) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,095
精华内容 2,038
关键字:

vba中所有有数据的区域选择