精华内容
下载资源
问答
  • EXCEL VBA 制作的雷尼绍激光干涉仪数据分析处理工具。可以分析雷尼绍激光干涉仪的测量数据,如GB VDI标准数据,可用于机床、三坐标等精度验收及精度补偿。
  • 类似vlookup的VBA数据抽取小工具

    千次阅读 2017-07-04 13:48:15
    在工作中可能需要用到对数据处理,现提供类似vlookup的VBA工具一枚。 抽取使用步骤说明: 1、复制需要匹配的数据到F列 2、复制被查询匹配的数据到A,B,C,D列 3、点击【数据抽取】按钮,如果F=D的值,A列的值拷贝...

    在工作中可能需要用到对数据的处理,现提供类似vlookup的VBA小工具一枚。

    抽取使用步骤说明:

    1、复制需要匹配的数据到F列
    2、复制被查询匹配的数据到A,B,C,D列
    3、点击【数据抽取】按钮,如果F=D的值,A列的值拷贝至G列,B列的值拷贝至H列,C列的值拷贝至I列

    结果1 结果2 结果3 被查询匹配数据 需要匹配 抽取的结果1 抽取的结果2 抽取的结果3 备注
         
     
       
     
     
         
    AA BB CC 008 008 AA BB CC ←示例        
    单冻鸡大胸 三黄土鸡   012001 012008 鸡翅根 单冻鸡大胸   数据从此行开始,最大支持1000条数据
    单冻琵琶腿 三黄土鸡   012002 012007 鸡翅尖 三黄土鸡          
    鸡边腿 三黄土鸡   012003 012003 鸡边腿 三黄土鸡          
    鸡排腿 三黄土鸡   012004                
    鸡全腿 三黄土鸡   012005                
    鸡翅中 三黄土鸡   012006                
    鸡翅尖 三黄土鸡   012007                
    鸡翅根 单冻鸡大胸   012008                
    鸡全翅 单冻鸡大胸   012009                
    鸡脖架 单冻鸡大胸   012010                
    鸡爪 单冻鸡大胸   012011                
                         
                         



    工具下载地址   http://download.csdn.net/detail/karlin999/9888305

    展开全文
  • 【初识VBA】用VBA简单处理excel数据

    千次阅读 2017-11-24 11:28:41
    开启excel中使用vba的方法,工具栏—>开发工具—>VB,这就是个直接可以用的编程环境好嘛!!然后第一次使用VB语言,用习惯了面向对象语言之后,再用这种过程+括号的语言竟然不习惯了(上学时候学的C语言都还给老师了...

    所有的编程语言都是一样滴,好喜欢解决问题的工作!虽然现在做的很简单。

    开启excel中使用vba的方法,工具栏—>开发工具—>VB,这就是个直接可以用的编程环境好嘛!!然后第一次使用VB语言,用习惯了面向对象语言之后,再用这种过程+括号的语言竟然不习惯了(上学时候学的C语言都还给老师了嘛!?悲怆脸)

    一顿查询和测试之后,程式化的运行成功了helloWorld程序,写好了昨天用20行python代码解决的同一个问题代码。其实很简单哇!!

    为自己能解决问题并且迅速掌握一门新(老旧)语言欢呼一下!(小学生嘛啊喂!)


    遗留问题:跨文件处理没有搞定,表格比较少,直接把两个工作表复制在一个工作簿中实现的工作。


    Sub aa()
    
    For i = 3 To Sheet7.UsedRange.Rows.Count
        newShelf = LCase(Sheet7.Cells(i, 1))
        
        For j = 2 To Sheet4.UsedRange.Rows.Count
            oldShelf = LCase(Sheet4.Cells(j, 1))
            If (StrComp(newShelf, oldShelf) = 0) Then
                Sheet4.Cells(j, 2) = Sheet7.Cells(i, 10)
               
            End If
                
        Next
    Next
            
    
    End Sub
    
    


    展开全文
  • 每当有人发布关于 python 处理 Excel 数据的文章,总会有人只看了标题就评论:"vba处理已经足够,完全没必要使用python"。"我工作环境不能安装,因此vba就比python更适合处理Excel""vba比python快速100倍!"其实,...

    287e8141928ee7d99d111831fefcd6bc.png

    每当有人发布关于 python 处理 Excel 数据的文章,总会有人只看了标题就评论:

    "vba处理已经足够,完全没必要使用python"。

    "我工作环境不能安装,因此vba就比python更适合处理Excel"

    "vba比python快速100倍!"

    其实,那些稍微接触过 pandas 的人,相信都会心底上抗拒使用vba。

    而我本人一直保持一个观点,各种工具都有他的优劣势,抛开应用场景单纯说某个工具更好都是在耍流氓。今天,我就举例说明一下,哪些场景适合vba,哪些场景适合python。

    我喜欢用实际案例说明问题,本文使用泰坦尼克号沉船事件中的乘客信息表:

    d9d9d033a72b7d0479aefb92813109b7.png

    实现几个简单分析需求:

    找出多人(2人或以上)一起登船的组的数量

    列出这些人的信息

    是否存在最幸运的亲朋好友(多人一起登船,同时全部人都获救)?

    "操作 Excel"等于"数据处理"吗?

    初学者往往误以为操作 Excel 就是在处理数据,实际上是两回事。

    需求是:"姓名与住址列内容通常很长,希望最终Excel显示的时候,使用缩小字体填充"。

    50f922a634ff2d1ab4ddb9eedf06b56e.png

    对于这种格式化设置,vba绝对是最佳选择!因为我们可以通过录制宏,自动得到大概的代码

    通过简单的录制宏,我们就能写出如下实现:

    747f76be159d5f9fab32fc799c907b2d.png

    如果我们使用 python 实现相同的需求,代码肯定只多不少,并且难以调试。

    如果你看过我的专栏《带你玩转Python数据处理—pandas》的话,其中关于数据处理流程一节,你会想到,这就是"数据展示"的流程。

    也就是说,如果你的数据任务最终需要输出 Excel 文件,vba是"数据展示"过程的最佳自动化工具。

    可惜,现实中的大部分需求并不单纯,都需要进行"数据处理",那么 vba 中又是如何处理数据?

    vba 使用数组+字典,就是高效率?

    大部分不经思考,张口就反对 python 的同学,都是对自己的 vba "数组+字典" 的技能有着迷之自信。

    来看一个数据分析相关的处理需求:

    我们注意到,有些人是亲朋好友一起上船,比如:

    8335e3dcc3b9035b7eaa9c6c5e8687ec.png从"票根号"一样,可以看出来他们是一起上船

    从"住址"一样,可以看出来他们是一家四口

    我们需要统计出有多少组这些2人或以上登船的?

    以下尝试用vba解决:

    af4c6b462bac98e4747c51c624bb841e.png

    其实代码不算多,里面的技巧也只是基础,但是如果会 pandas 的同学心里肯定会说:"太繁琐了"。

    因为对于 pandas来说,如下:

    5c0568848a0758a021f8fe589c169af1.png

    代码就4句,最关键的其实只有3句,分别表示:

    加载数据

    按"票根号"分组统计数量

    数量大于1的总和

    这不就是一个正常人的处理思维吗?这就是简洁

    能够与需求表达语义相近,多余的表达越少,即越简洁

    回头看 vba 的表达,多余的表达非常多。

    Excel 有一个非常好用的统计工具——透视表。你可以尝试通过录制宏得到透视表的操作代码,但是你仍然会发现有许多多余的表达。

    Sql 的表达更加简洁,但是实现如上的需求,你会发现他的表达顺序需要"绕"一下

    有些不服气的同学会说:"我写出这段vba代码也就1分钟,反正也能得到正确结果"

    当需求不断变化,你就会发现这样子的代码最终走向无法实现的死胡同。

    刚刚我们知道了有216组亲朋好友是一起登船的,但只有一个数字,我们希望看看这216数据的大概样子。

    也就是说输出这些乘客数据。

    python 的实现:

    6c983429b905f9c74a1fc7f813d171c1.png顺便排序一下,方便观察

    这里代码多余的表达,就是那个 lambda 单词。如果换成是 sql ,就非常简洁

    vba 的实现太麻烦了,就留给那些不服气的 vba 粉丝吧

    现在你大概能够稍微理解,为什么 Python 在数据领域这么受宠了。

    数据分析中的数据处理,需要你的代码赶上你的思维速度,只有简洁的语言才能做到。

    按理说,sql 应该是更好的选择,但实际上很多复杂需求实现,sql 需要大量的嵌套查询,此时就一点都不简洁了。以后再举例说明

    现实的需求是 "操作Excel" + "数据处理" ,怎么办?

    这时候最理想的情况是,使用 vba 操作 Excel,数据处理交给 Python,中间就需要一个桥梁把 vba 与 python 打通,这就是 xlwings 或其他类似的库的最佳实践方式。

    如果你完全使用 xlwings 控制 Excel,Python 代码操作 Excel 写起来非常别扭,一旦你理清楚 "操作Excel" 与 "数据处理" 的区别,自然而然知道如何组织你的代码。

    Python 需要单独安装,因此他比不上 vba

    这是一种无聊的结论,因为任何自动化工具都需要安装,比如学习性价比最高的 Sql ,他也需要安装相应的驱动程序才能执行。

    而我本人的工作环境有一部分任务是需要放在服务器上执行,此时是不可能安装 Excel,vba 也用不上了,但我不能因此作出"vba比不上python"的结论吧。

    如果你的工作环境不能安装 python,但你又需要做大量数据处理任务,那么我只能说非常不幸,你只能牺牲自己大量的时间使用vba去完成需求。

    Vba 就不能有 pandas 的存在吗?

    "说了半天,不就是 python 比 vba 多了一个 pandas 库而已吗,找个vba牛人去写一个 vba-pandas 就行啦!"

    vba 天生缺少了一种语言特性,使得你即使有写库的能力,也无法发挥。

    这就是提取逻辑的能力.

    通常来说,如果一段代码有些数据不是固定,我们可以提取成函数的参数,比如最简单的数字计算:

    3ba52edc2dc462f45a3bf8911dd92296.png分别定义3个参数,让你输入,但计算方式是固定的

    对于 vba 来说他同样可以做到,但是如果是其中一段代码不是固定,能否把他提取为参数呢?

    而 python 就能做到,比如以下的函数,可以让你输入3个数字,并且由你决定前2个数字的计算方式,最后与第3个数字做乘法:

    4200d6583174e72e7cc7e4a5a2c2eeb5.png结果时,第一个数乘以10 + 第二个数乘以100(这是变化的逻辑,由使用函数的人自行决定),最后乘以第三个数(这是固定逻辑,由定义函数的人决定)

    vba 需要使用接口做到同样的效果,非常麻烦,对于数据任务没有任何实用价值

    这有什么用处?用最后一个需求说明:

    是否存在最幸运的亲朋好友(多人一起登船,同时全部人都获救)?

    假如说,我只给你一组相同"票根号"的乘客数据,该如何判断他们都是生还呢?

    4d7f95dcecf13459615e110b92477ae9.png只要看"生还"列是否都为1就可以。方式非常多,除了上面的做法,还可以"生还列求和,看看是否等于记录行数"

    前一个需求中使用的 filter 就是可以接受一段逻辑(函数),pandas 负责帮你分组,你只需要在函数中描述出符合条件的逻辑即可:

    e868d51f2a933ba62916f3093c35e578.png把刚刚定义的函数,传给 filter 函数

    而 vba 无法做到这一点,就意味着他无法做出 pandas 一样好用的库!

    因为许多看似复杂的流程,其实是由许多固定的逻辑 + 变化的逻辑 组成。

    比如分组的原理就类似 vba 中使用字典,这是相对固定的,完全可以让库完成。

    但是分组后,每一组的处理逻辑却是变化的,由使用者临时决定,比如之前的需求分组中我们有时候需要计数,有时候需要筛选。筛选的逻辑也是千变万化。

    最后

    任何工具都有他的适用场景,如何合理利用才是我们的学习方向,而非一根经地排斥自己不熟悉的工具。

    展开全文
  • Excel VBA数据导出

    千次阅读 2017-08-14 18:12:09
    但实际使用时,可能需要对Excel数据处理成我们需要的格式。基于此需求,学习了Excel的VBA来导出数据到文件中。 开启VBA Excel中的开发工具默认都没有打开,此处需要百度一下如何打开对应版本的Excel。(注:高版本...

    游戏中很多配置文件都采用Excel保存数据。但实际使用时,可能需要对Excel数据再处理成我们需要的格式。基于此需求,学习了Excel的VBA来导出数据到文件中。

    开启VBA

    Excel中的开发工具默认都没有打开,此处需要百度一下如何打开对应版本的Excel。(注:高版本的开发工具需要专业版或商业版才能使用,最好不要使用过高版本,最低office excel 2007版)

    宏设置

    Excel默认禁用所有宏,在宏安全中可以设启用所有宏

    新建模块

    打开Visual Basic面板,选中工程面板下任意选项右键-插入-模块。

    代码示例

    Option Explicit
    Sub parseAndOutputData()
        Dim result As String
        Dim file_name As String
        Dim file_path As String
        Dim info_row As Integer
        Dim sheets_count As Integer
        
        If Len(Worksheets(1).Cells(2, 1).Value) > 0 Then
            file_name = Worksheets(1).Cells(2, 1)
        End If
        If Len(Worksheets(1).Cells(2, 2).Value) > 0 Then
            file_path = Worksheets(1).Cells(2, 2)
        End If
        If Len(Worksheets(1).Cells(2, 3).Value) > 0 Then
            info_row = Worksheets(1).Cells(2, 3)
        End If
        sheets_count = Worksheets.Count
        sheets_count = 0
        While Len(Worksheets(1).Cells(2, sheets_count + 4)) > 0
                sheets_count = sheets_count + 1
        Wend
    
        If MsgBox("It will Clear File!",VbOKCancel,"提示") = vbCancel Then
            Exit Sub
        End If
    
        Open ThisWorkbook.Path & "\" & file_name & ".txt" For Output As #1
            Write #1, ""
        Close #1
        
        
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
        Dim max_row As Integer
        Dim max_col As Integer
    
        Open ThisWorkbook.Path & "\" & file_name & ".txt" For Binary As #1
        result = "return {"
        For i = 2 To sheets_count
            max_col = 0
            While Len(Worksheets(i).Cells(info_row, (max_col + 1)).Value) > 0
                max_col = max_col + 1
            Wend
    
            max_row = info_row
            While Len(Worksheets(i).Cells((max_row + 1), 1).Value) > 0
                max_row = max_row + 1
            Wend
    
            If i <> 2 Then
                result = result & "," & Chr(10)
            Else
                result = result & Chr(10)
            End If
            result = result & Chr(9) & Worksheets(1).Cells(2, (i + 2)).Value & " = {"
    
            For j = (info_row + 1) To max_row
                If j <> (info_row + 1) Then
                    result = result & "," & Chr(10) & Chr(9) & Chr(9) & "{"
                Else
                    result = result & Chr(10) & Chr(9) & Chr(9) & "{"
                End If
                For k = 1 To max_col
                    If Len(Worksheets(i).Cells(j, k).Value) > 0 Then
                        If k <> 1 Then
                            result = result & ","
                        End If
                        result = result & Chr(10) & Chr(9) & Chr(9) & Chr(9) & Worksheets(i).Cells(info_row, k) & "=" & Worksheets(i).Cells(j, k).Value
                    End If
                Next
                result = result & Chr(10) & Chr(9) & Chr(9) & "}"
    
                Put #1, , result
                result = ""
            Next
            result = result & Chr(10) & Chr(9) & "}"
        Next
        
        result = result & Chr(10) & "}"
        
        Put #1, , result    
        Close #1
        MsgBox "OutPut Success!"
    End Sub

    Worksheets(1).Cells(2, 3)代表第一个表的第2行第3列单元格   其中Worksheets(1)代表第一个表,其指多个表中排最前面的表,只与位置有关

    Worksheets.Count代表当前xls文件中表的个数

    <> 表示不等于 &  表示连接         Chr(9)表示转义字符Tab

    在条件语句中 = 表示判断是否相等

    ThisWorkbook.Path代表当前文件路径  Output 和 Binary 代表文件打开模式

    其中Output 对应用Write写入数据  其会覆盖到文件所有内容。

    Binary对应用Put写入数据  其有三个参数,第二个代表可选字节数 ,第三个代表内容

    Binary其会覆盖掉最初写入的部分,不会修改其他数据。所以采用Output清除文件内容。

    Binary一次最多读写32kb,可以不关闭文件多次顺序写入数据。

    #1代表文件号  类似文件句柄吧

    MsgBox 弹出框控件   具体使用细节可根据需求百度


    本示例代码主要是读取第一个表,获取一些配置信息,比如需要读取多少个表,从第几行开始读取。之后的逻辑主要是为了组织数据的布局

    最后在Excel中的开发者面板中点击宏,选择模块再执行。导出文件成功

    新建一个空xlsx文件,为其开启宏并添加模块。只要与该xlsx文件在同一文件夹的,其它xlsx文件就可以直接调用其模块导出数据


    中文显示问题:

    二进制文本输出后的编码格式是ANSI

    一般代码文件都采用的是UTF-8    无BOM格式

    最简单的方法:

    Notepad++可以显示ANSI的中文,但直接将其转换编码格式,其新的格式不能显示原有中文

    使用Notepad++新建文件将其编码格式修改为UTF-8    无BOM格式   在将原来的内容拷贝到新文件中即可显示原有中文

    展开全文
  • 使用Excel中自带的VBA制作工具写的一个宏程序,可通过自动读取一些表格的数据来得到结果,代码是基础性的,包含变量命名循环语句函数调用等等
  • 我们在平时的工作中,数据处理一直是工作的主要内容之一,如何利用VBA,让这些工作变得简单,准确,进而实现数据的自动化处理及完成人机交互,是我们面对的课题,在之前的VBA代码方案教程中我讲了利用代码完成自动化...
  • VBA-Excel工具函数

    2017-03-18 22:59:00
      Excel_VBA类模块框架是在Excel后台通过vba编程方式,实现类似R语言模块化数据操作的功能,对数据进行处理、挖掘、建模及可视化,提高数据分析和挖掘人员的数据处理效率,从而能将更多的时间投入到数据挖掘中,...
  • 我们在平时的工作中,数据处理一直是工作的主要内容之一,如何利用VBA,让这些工作变得简单,准确,进而实现数据的自动化处理及完成人机交互,是我们面对的课题,在之前的VBA代码方案教程中我讲了利用代码完成自动化...
  • 我们在平时的工作中,数据处理一直是工作的主要内容之一,如何利用VBA,让这些工作变得简单,准确,进而实现数据的自动化处理及完成人机交互,是我们面对的课题,在之前的VBA代码方案教程中我讲了利用代码完成自动化...
  • Arcmap VBA工具

    2019-01-20 18:06:18
    用于arcmap数据处理工具,项目实施过程中编写。主要用于线状节点抽稀,添加节点,属性值计算,关联关系计算等。
  • 基于Excel vba 的混凝土超声回弹综合法测强数据处理系统的开发,倪言波,曹邱林,本文介绍依据超声回弹综合法检测混凝土强度技术规程,采用Excel 及其vba工具开发超声回弹综合法检测混凝土抗压强度数据处理系统的过
  • 大道至简的数据处理工具-Microsoft Power Query 告别复杂的excel函数,excel VBA编程,让一切回归简单与职能。 什么样的人群适合这样的一个工具: 1、出纳、会计、统计、仓管、数据分析等与数据打交道的的岗位。 2、...
  • 点击上方↑↑↑“ExcelEasy”关注我们Power Query是Excel Power BI套件系列工具中的一个,是一个非常 强大的数据获取处理工具。有了它,原来很多需要非常复杂的公式或VBA完成的工作就可以很轻松就完成了。强烈推荐...
  • VBA虽然并不是专业爬虫工具,但是Excel非常善于后续数据处理与分析,所以对于不复杂的网页数据抓取也经常在VBA来实现。有些时候,在网页中看到的内容,使用浏览器的“审查元素”功能也可以看到的内容,如下图。...
  • 每当有人发布关于 python 处理 Excel 数据的文章,总会有人只看了标题就评论:"vba处理已经足够,完全没必要使用python"。"我工作环境不能安装,因此vba就比python更适合处理Excel""vba比python快速100倍!"其实,...
  • SQL+数据透视表+VBA 使数据透视表走向更灵活,更智能,更适用。 这个是我和师傅一撇首度合作,他提供了文件并提出了要求,我帮他实现其效果 下面从几个方面解释一下: 1、功能 一个源文件和一个通过用SQL查询生成的...
  • 采用Microsoft Basic 6.0 编程工具,利用VBA语言通过宏录制技术和嵌入控件及对象技术将Excel应用程序中的数据自动生成图表,并实现Excel工作簿和Word文档两个应用程序之间的数据无缝连接,进而通过Word文档的书签...
  • 如果你不想学复杂的函数,如果不想学更难的VBA。但你想把数据处分分析工作做好。那么,来吧!这套课程将是你最好的选择。远离繁杂,回归简单与智能化。 先来看看power query 怎么做些什么。先来展示一下效果图。1....
  • 某些时候Sharepoint列表的操作并不方便,比如数据量大,需要批量处理数据的时候。通过服务器代码有太多限制,比如智能通过B/S发送给用户,速度慢且影响服务器性能。客户端代码同样有一些慢。 第二、具体界面: ...
  • 目录 VBA简介 宏简介 显示“开发工具”选项卡 ​ VBA简介 ... Visual Basic for Application (VBA)是Visual Basic的一种宏语言,是依附于MicrosoftOffice系列软件的...Excel VBA可以提升数据处理速度,并可根据用户..
  • 只要用户记住 Microsoft Excel 不是关系型数据库管理系统,并认识到这一事实所带来的限制,在许多情况下都可以利用 Excel 及其工具来存储和分析数据。 <br />Microsoft ActiveX Data Objects 让我们可以将 ...
  • 1. 管理学方面-员工绩效考核中的互评,应该属于360度测评中的一种,在没有在线工具时,可使用Excel来完成 2. 可将相对复杂的功能,作为子程序来实现,然后在其他子程序中进行调用。有利于保持代码结构的清晰。 3. 第...
  • VBA

    2017-05-24 08:47:00
    工具栏中将"开发工具"菜单调出来,点击VBA script或者快捷键ALT+F11, 打开编程窗口 下拉列表:选中要处理的单元格>>数据>>数据验证(数据有效性)>>序列>>输入示例:1,2,3 function和sub最大...
  • 背景 日常工作处理多个项目,且项目间无联系,在年中或者年终进行数据统计时,很复杂 功能描述 按照既定格式,生成指定命名的文件夹(模板) 将此文件夹信息进行记录汇总
  • 比如我要删除某些特定数据数据源是从网页请求中抓取,这时候可能复制下来一大堆内容,其中我们只需要特定的某些部分,笔者通常做法是拷贝到notepad++中处理,结合RegTester工具,但是RegTest需要导出匹配数据,不...
  • 在我们工作中往往需要处理大量的数据,因此Excel在我们工作中是一个必不可少的工具,不过,近期很多人开始用Python处理数据,那么,大家为什么开始用Python了呢?Python辅助处理excel的有什么优点呢?首先,我们先...
  • 近日一直在研究Excel VBA,昨天看到了《处理外部数据和文件》这一章节,本来照猫画虎的抄代码可以一键过,没想到遇到了诸多问题,经过几个小时的搜索汇总,最终形成了以下几点经验(本机安装win7 office2016)。...
  • 将"VBA加载工具.xlsm"置于D:\根目录中,在execl自定义工具栏导入"Excel 自定义.exportedUI"文件 选中要处理数据单元格后,点击宏按钮,会实现功能,同时会加载宏文件(也是个表格,不要关闭) 详见:宏按钮工具栏.jpg ...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 349
精华内容 139
关键字:

vba数据处理工具