精华内容
下载资源
问答
  • 本文介绍通过C#和http://VB.NET程序在Excel文档中添加筛选器并执行筛选的方法。 需要使用Excel类库工具Free Spire.XLS for .NET,可通过官网下载包,解压安装到指定路径,完成安装后,将安装路径下Bin文件夹下的...

    本文介绍通过C#和http://VB.NET程序在Excel文档中添加筛选器并执行筛选的方法。 需要使用Excel类库工具Free Spire.XLS for .NET,可通过官网下载包,解压安装到指定路径,完成安装后,将安装路径下Bin文件夹下的Spire.Xls.dll文件添加引用到VS程序;或者可通过Nuget搜索下载。

    dll文件引用效果如下:

    d75ff5017e4aa7556375c9b5f74c397b.png

    Excel测试文档如下,包含多个数据列表,下面将通过代码筛选指定数据:

    6c2d4e1caed3b71711e5fd802b3f5e35.png

    C#

    using Spire.Xls;
    using Spire.Xls.Collections;
    
    namespace Filter_XLS
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建Workbook对象,加载Excel文档
                Workbook workbook = new Workbook();
                workbook.LoadFromFile("test.xlsx");
    
                //获取第一个工作表
                Worksheet sheet = workbook.Worksheets[0];          
    
                //添加筛选器,并执行筛选
                AutoFiltersCollection filters = sheet.AutoFilters;//获取筛选器集合
                filters.Range = sheet.Range[1, 2, sheet.LastRow, 2];//设置筛选器的添加位置(第2列)       
                filters.AddFilter(0, "包1");//添加筛选器,指定筛选项
                filters.Filter();//执行筛选
    
                //保存文档
                workbook.SaveToFile("output.xlsx", ExcelVersion.Version2010);
                System.Diagnostics.Process.Start("output.xlsx");
            }
        }
    }
    

    筛选器添加结果:

    8ae1e2f14e9a0f37e0220d5f90e1a4ef.png

    http://VB.NET

    Imports Spire.Xls
    Imports Spire.Xls.Collections
    
    Namespace Filter_XLS
    	Class Program
    		Private Shared Sub Main(args As String())
    			'创建Workbook对象,加载Excel文档
    			Dim workbook As New Workbook()
    			workbook.LoadFromFile("test.xlsx")
    
    			'获取第一个工作表
    			Dim sheet As Worksheet = workbook.Worksheets(0)
    
    			'添加筛选器,并执行筛选
    			Dim filters As AutoFiltersCollection = sheet.AutoFilters
    			'获取筛选器集合
    			filters.Range = sheet.Range(1, 2, sheet.LastRow, 2)
    			'设置筛选器的添加位置(第2列)       
    			filters.AddFilter(0, "包1")
    			'添加筛选器,指定筛选项
    			filters.Filter()
    			'执行筛选
    			'保存文档
    			workbook.SaveToFile("output.xlsx", ExcelVersion.Version2010)
    			System.Diagnostics.Process.Start("output.xlsx")
    		End Sub
    	End Class
    End Namespace
    展开全文
  • 工作场景:从系统导出后人工处理完的excel数据,需要按照部门拆分并推送给各部门人员。 传统的工作方式就只能人工一个个部门筛选,复制粘贴出来各自发送。 其实现在有些版本的excel或wps已经集成了根据某列数据...

    工作场景:从系统导出后人工处理完的excel数据,需要按照部门拆分并推送给各部门人员。

    传统的工作方式就只能人工一个个部门筛选,复制粘贴出来各自发送。

    其实现在有些版本的excel或wps已经集成了根据某列数据自动拆分表格数据,不过有些老版本的仍不支持,搜集了网上前辈的资料,结合自身实际,使用VB实现了该功能。

    Sub splitTable()
        Dim d As Object, sht As Worksheet, arr, brr, r, kr, i&, j&, k&, x&
        Dim Rng As Range, Rg As Range, tRow&, tCol&, aCol&, pd&
        Application.ScreenUpdating = False '关闭屏幕更新
        Application.DisplayAlerts = False '关闭警告信息提示
        Set d = CreateObject("scripting.dictionary") 'set字典
        Set Rg = Application.InputBox("请框选拆分依据列!只能选择单列单元格区域!", Title:="提示", Type:=8)
        '用户选择的拆分依据列
        tCol = Rg.Column '取拆分依据列列标
        tRow = Val(Application.InputBox("请输入总表标题行的行数?"))
        '用户设置总表的标题行数
        If tRow = 0 Then MsgBox "你未输入标题行行数,程序退出。": Exit Sub
        Set Rng = ActiveSheet.UsedRange '总表的数据区域
        arr = Rng '数据范围装入数组arr
        tCol = tCol - Rng.Column + 1 '计算依据列在数组中的位置
        aCol = UBound(arr, 2) '数据源的列数
        For i = tRow + 1 To UBound(arr) '遍历数组arr
            If Not d.exists(arr(i, tCol)) Then
                d(arr(i, tCol)) = i '字典中不存在关键词则将行号装入字典
            Else
                d(arr(i, tCol)) = d(arr(i, tCol)) & "," & i '如果存在则合并行号,以逗号间隔
            End If
        Next
        For Each sht In Worksheets '遍历一遍工作表,如果字典中存在则删除
            If d.exists(sht.Name) Then sht.Delete
        Next
        kr = d.keys '字典的key集
        For i = 0 To UBound(kr) '遍历字典key值
            If kr(i) <> "" Then '如果key不为空
                r = Split(d(kr(i)), ",") '取出item里储存的行号
                ReDim brr(1 To UBound(r) + 1, 1 To aCol) '声明放置结果的数组brr
                k = 0
                For x = 0 To UBound(r)
                    k = k + 1 '累加记录行数
                    For j = 1 To aCol '循环读取列
                        brr(k, j) = arr(r(x), j)
                    Next
                Next
                With Worksheets.Add(, Sheets(Sheets.Count))
                '新建一个工作表,位置在所有已存在sheet的后面
                    .Name = kr(i) '表格命名
                    .[a1].Resize(tRow, aCol) = arr '放标题行
                    .[a1].Offset(tRow, 0).Resize(k, aCol) = brr '放置数据区域
                    Rng.Copy '复制粘贴总表的格式
                    .[a1].PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    .[a1].Select
                End With
            End If
        Next
        Sheets(1).Activate '激活第一个表格
        Set d = Nothing '释放字典
        Erase arr: Erase brr '释放数组
        MsgBox "数据拆分完成!"
        Application.ScreenUpdating = True '恢复屏幕更新
        Application.DisplayAlerts = True '恢复警示
        
    '开始生成新excel文件
        Application.ScreenUpdating = False
        For Each sht In Worksheets
            sht.Copy
            ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & sht.Name, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
            ActiveWorkbook.Close
        Next
        
        Application.ScreenUpdating = True '恢复屏幕更新
    End Sub
    
    

    运行过程如下:

    展开全文
  • 上一课程分享了数据透视表的排序技巧,今天分享数据透视表中的筛选技巧(切片器下一课单独分享),如果您经常要统计和分析大量的数据,建议系统学习一下我分享的数据透视表系列课程,学习过程中有问题可以私信联系我。...

    上一课程分享了数据透视表的排序技巧,今天分享数据透视表中的筛选技巧(切片器下一课单独分享),如果您经常要统计和分析大量的数据,建议系统学习一下我分享的数据透视表系列课程,学习过程中有问题可以私信联系我。

    一、行列字段列表筛选

    数据透视表的行字段和列字段自带筛选按钮,点击筛选按钮会弹出下拉列表,可根据需要勾选需显示的1个或多个类别。

    1、行字段的列表筛选

    案例:筛选【刘波】和【刘文文】的销售情况

    如下图所示,点行标签边的筛选按钮,弹出下拉列表,勾选【刘波】和【刘文文】即可。

    b65101f5669cbe5f9d497ffce77e4d0c.png

    2、列字段的列表筛选

    案例:筛选【睡袋】和【服装】的销售情况

    如下图所示,点列标签边的筛选按钮,弹出下拉列表,勾选【睡袋】和【服装】即可。

    5d975a1eac536441b10559d0ad98bad3.png

    二、标签筛选

    如下图所示,除了字段列表筛选,我们还可利用标签筛选提供的多种选项,轻松完成平时需要公式自定义多条件,或者模糊筛选才能实现的功能。

    cfff025c6b257e49a902475e1280239f.png
    afe174127b22ee4ff505a4b750ba2be6.png

    三、值筛选

    数据透视表除了可对行标签和列标签进行筛选外,还可以利用值筛选来筛选数值数据。

    1、区间数值筛选

    如下图所示,透视表中的数量、销售额和成本无筛选按钮,但可通过值筛选对数量、销售额和成本进行筛选。

    案例:筛选数量大于100000的数据

    004b10975534edf013cbb47b1260fe81.png

    2、极值筛选

    如下图所示可选择筛选最大、最小值,选择依据某类值的项、百分比及求和等多种统计方式。

    84d88df38d2c7af76cb13bbd60ae9fa0.png

    案例:筛选成本最大的2项

    be36b3b1616fc47f43a0b5d6521fac84.png

    四、日期筛选

    如下图所示,数据透视表中还可以对日期进行筛选。

    15e904413832f466948d3b0837019938.png

    五、模糊筛选

    利用通配符【*】和【?】可实现模糊筛选,其中【*】表示多个符,【?】代表1个字符

    案例:筛选出姓【刘】的所有销售人员

    如下图所示,可以在列表筛选中输入筛选内容为【刘*】,或在标签筛选中选择等于【刘*】即可。

    4f9f8354993731f676da48aa756e97e4.png

    六、有多个行字段时的筛选和清除筛选

    如下图所示,有多个行字段时,要筛选哪一个行字段,应先将光标放在此字段的任一单元格或选择此字段。要清除筛选时,也必须先选定已进行筛选的字段,否则清除筛选是灰色的,不能操作。

    7d20452f9bd35c8de92bd9903c7b3263.gif

    七、页字段筛选

    数据透视表的页字段筛选非常有用,我们可用筛选页字段制作动态图(后期将出课程分享)。

    案例:筛选【一科】和【三科】销售人员各类产品的销售情况

    如下图所示,点选页字段边的筛选按钮,先勾选【选择多项】,然后勾选需要筛选的【一科】和【三科】即可。

    2a85be7706efff239daa7bec1b34f770.gif

    八、谨慎使用:这种数据透视表自动筛选方法,总计数不对!

    网上分享的实现数据透视表自动筛选方法:将鼠标定位到字段标题行右侧的空单元格,然后点击自动筛选,即实现了自动筛选的功能!然而,如下图所示,我们要筛选【本子】销售量最大的3项,结果筛选出来的只有2项,而且总计数不对,所以在使用时要注意。

    4f26515f183fdbc4b5fa467987121128.gif

    数据透视表中的筛选技巧都总结到这了,你学会了吗?

    我是EXCEL学习微课堂,头条号优质教育领域创作者,分享EXCEL学习的小技巧,小经验。如分享的内容对您有用,欢迎点赞、收藏、评论、转发和赞赏!更多的EXCEL技能,可以关注今日头条“EXCEL学习微课堂”。

    与本课程内容相关的往期课程有:

    数据透视表1《为什么要学数据透视表——因为它能快速汇总、智能分组、动态交互!》

    数据透视表2《你知道EXCEL数据透视表布局的那些门道儿吗?》

    数据透视表3《Excel数据透视表日期、时间、数字和文本字段组合功能应用!》

    数据透视表4《 数据透视表功能太强大了,原来可以这样轻松搞定多维度计算!》

    数据透视表5《让你的EXCEL数据透视表更美观:字段计算+自定义格式》

    数据透视表6《EXCEL数据透视表中的排序技巧汇总》

    展开全文
  • 期间翻书和上网查询,怎么筛选数据,怎么另存为,怎么自动发邮件,先实现简单的需求,筛选一个数据并另存,之后再用变量去赋值进行循环,花了一天半,终于实现所有需求。后来又增加了新的需求,比如有多个不同的表格...

    大一的时候学的VB,大学毕业之后就没用过,没想到时隔多年,工作中又有需求了。

    有一个汇总表,要根据其中一列姓名筛选数据并另存为新的表格,表格按对应姓名命名后,需要再分别作为附件发给对应姓名的邮箱。

    期间翻书和上网查询,怎么筛选数据,怎么另存为,怎么自动发邮件,先实现简单的需求,筛选一个数据并另存,之后再用变量去赋值进行循环,花了一天半,终于实现所有需求。

    后来又增加了新的需求,比如有多个不同的表格,需要筛选的姓名这一列也不在同一个位置,有的在第二列,有的第三列,这样VBA自动筛选的参数列就不能直接填数字,而是必须先判断筛选列是在哪一列才能开始筛选。

    新的需求略复杂,多个循环和if判断,中途还因为操作失误把代码删除未保存,心塞了半个多小时,但好在重新振作,理顺了逻辑,耗时三天让代码顺利跑了起来,拆分了四个源数据表,共计七十多个分表。

    之后就是怎么根据分表去给不同的收件人发邮件,并且和之前的不一样,这次发件人也不一样,于是想到定制一个筛选,不用的发件人勾选自己发送,然后可以向对应的收件人发送对应的附件和正文。

    总体感觉,虽然现在VBA处于各类编程语言末端位置,但作为办公利器,vba的操作简便,网上资源也多,在办公自动化方面还是有很大优势的。以上需求用Python也能实现,但还是vba更方便一些。

    工作关系,不方便直接上代码,有时间再用自己的电脑复盘,欢迎找我讨论~

    0b63a5cdd69fec125b2116388e60e45a.png
    展开全文
  • VB将MSHFlexGrid中数据导出到Excel

    千次阅读 2013-09-28 11:27:48
    VB程序中,经查找筛选显示在MSHFlexGrid中的数据, '将查询到的上机记录导入到excel表格中 If txtCardno.Text <> "" Then Dim tmpExcel As Excel.Application
  • 这个看似复杂的难题,其实在数据透视表只需一步就能搞定,跟着小编excel小课堂(ID:excel-xiaoketang 长按复制)一起试试“每页后面插入分页符”和“显示报表筛选页”这两个超实用功能吧。01重复打印标题行/列 觉得很...
  • 'afix的数据筛选 Public Sub chooseDate() MsgBox ("数据筛选开始") With ActiveSheet  r = 2 starts:  If Sheets("afix").Cells(r, 1) = "" Then GoTo ends  If (Sheets("afix").Cells(r, 1) = 18.8)...
  • DataGridView列标头带数据筛选功能(含VB.NET源码DEMO)), 类似Excel筛选功能的 DataGridView 源代码,调用简单,功能好用,VB.NET示例都有。筛选后状态栏显示过滤后的条数及显示全部的HPLINK标签按钮。
  • '近日有本论坛网友问:DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样 '今晚正好闲着没事,加之以前也没用到过这个需求,所以就写了个模拟功能,供各位坛友酌情参考。 'VB.NET 2008 环境 ...
  • 期间翻书和上网查询,怎么筛选数据,怎么另存为,怎么自动发邮件,先实现简单的需求,筛选一个数据并另存,之后再用变量去赋值进行循环,花了一天半,终于实现所有需求。后来又增加了新的需求,比如有多个不同的表格...
  • 面对小张的问题,咱们就用【数据筛选排序自动挡:让你告别“纯手工”】,一起开始今天的实战练习吧~ 排序与筛选 我们根据店面的情况,录入所有订单,生成的流水账中。录入单据并不是按照日期先后顺序依次录入的,...
  • 修改透视表布局认识数据透视表07之前的样式在Excel中 列称为字段 当每一列是一个属性 和 每一行的记录 都很完整时就可以插入数据透视表了红色框内 就是 字段列表红色为行字段黄色为列字段绿色为数据区域/数据字段...
  • 'VB.NET 2008 环境 '新建一个项目后,只需在Form1中拉一个DataGridView,一个ComboBox,然后将下面代码复制粘贴即可,其它什么也不用做 Public Class Form1  Dim SelectedCol As Integer = 0, IsFindit As...
  • 在一个数据表中,在各个分类中按每个分类筛选出前若干名,用什么方法比较合适?其实这个需求用数据透视表实现特别方便。案例:下图 1 是全校的各科成绩表,请筛选出每个班级的总分前三名。效果如下图 2 所示。解决...
  • 软件功能:筛选提取电子表格Excel中重复的或不重复的数据并汇总其频数,重复次数可以自定义范围,也可以将重复的数据只保留一个而重复的全部删除,功能实现多样化,是财务统计、数据管理行业人员的最得力帮手。...
  • 经常碰到excel中重复的数据,如果数量不多,手工删除或许尚可,如果数据比较大,就需要借助计算机拉,一般有两种方法,一种是用Excel中的高级筛选工具,另一种就是我下面说的,利用vb脚本实现,或许更好用些。...
  • 经常被用户抱怨,我想要这个这个筛选,这个这个也要。最好是都可以。我说是不是像excel一样,人家点头了。晕死。... vb里有个mshflexgrid控件,可以用来查看数据。我想基本上每个可视化编程工具都...
  • DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样'VB.NET 2008 环境'新建一个项目后,只需在Form1中拉一个DataGridView,一个ComboBox,然后将下面代码复制粘贴即可,其它什么也不用做Public ...
  • 相信很多人如果看到漂亮的图表都会很感叹,“为什么可以做的这么漂亮,这么好看?...l 通过R、Python一类的数据分析语言,调用图表功能包,呈现可视化的数据数据分析常用。l 借助Echarts、HighCh...
  • 最近被Excel完虐了。临下班时,同事交给我一个数据统计的表格,需要马上交,急急急!!哥,我本来想早点下班,溜溜狗呢??里面的数据上千项,要统计出去年、今年每阶段的类型、采购金额及增减幅度。涉及不同月份的...
  • 如下图,将按不同的部门,将这个表拆分成一个部门一个excel文件。 分类筛选,复制粘贴,纯手工打造,完全可以实现。但是如果就一点数据,还可以,如果数量量大呢?操作到让你怀疑人生。 用python可以实现吗?当然...
  • Syncfusion Excel (XlsIO) 库是一个 .Net Excel 库,它支持用户用 C# 和 VB.NET 以一个非常简易的方式,将各种数据源(如数据表,数组,对象集合,数据库,CSV / TSV,和微软网格控件等)数据导出到 Excel 。...
  • ExcelHome网站讨论一亿取十万这个问题时,得到该网站知名网友“香川群子”的VB代码。核心如下: Function QuickSort2(tr, l&, u&, k&) '递归算法的快速排序过程 不解释 Dim i&, j&, r, t...
  • 我们经常会在工作中遇见,类似下图中的c#教程表格,领导要求你将各个部门筛选出,并按照“财务部.xlsx”的格式单独成立一个excel数据少了还好说,如果数据量大了,大半夜叫你来拆分咋办呢? python自动化办公:...
  • 学习资源:《Excel VBA从入门到进阶》第59集 by兰色幻想四、筛选数据筛选数据只需要配合循环和判断 , 把符合条件的添加到listview控件中。例:把下表的销售数据添加到listview里显示,并设置为能按省份展示数据。...
  • 函数作用:移除Excel工作表中的外部数据连接.......103 '104.函数作用:将选择定单元格作成镜像图片.............103 '105.函数作用:反选择单元格中的数.....................105 '106.函数作用:在Excel中加入一个量度...
  • 注意,进入敏感性分析模块之前会显示一个EXCEL下的链接提示,单击“否”即可; 操作说明:首先在左上角的方案编码框中选择方案编码;在分析指标框中选择分析指标;在因素选择框中选择因素,并设定变动范围;然后单击...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

vb筛选excel数据