ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 207|回复: 2

SQL如何分类统计重复数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-1 11:17 | 显示全部楼层 |阅读模式


数据源及目标需求见下图。
image.png



  1. Sub ll()
  2.     Dim Str, SqlStr
  3.     Dim Rs As Recordset
  4.     Dim Rng As Range
  5.         Set Rng = Selection
  6.         
  7.     Dim Sht As Worksheet
  8.         Set Sht = Rng.Parent
  9.         Debug.Print Sht.Cells(1, 1).Formula
  10.         Set Rng = Sht.Range(Sht.Cells(1, 1).Formula)
  11.         Str = "Select Name  From [" & Sht.Name & "$" & Rng.Address(0, 0) & "]"
  12.         Debug.Print Str
  13.         Str = "Select Name  From [Sheet1$C1:C14] Order by Name"
  14.         Set Rs = SqlRetuRs(Str)
  15.         With Application.WorksheetFunction
  16.             Sht.Cells(3, 8).Resize(Rs.RecordCount, 1) = .Transpose(Rs.GetRows())
  17.         End With
  18.         Stop
  19. End Sub


  20. Function SqlRetuRs(SqlStr)

  21.    Dim Cn As ADODB.Connection
  22.        Set Cn = New ADODB.Connection
  23.    Dim Rs As ADODB.Recordset
  24.        Set Rs = New ADODB.Recordset
  25.       
  26.         '
  27.        If InStr(UCase(Application.Path), "WPS") > 0 Then
  28.            Cn.Open "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes';Data Source=" & ThisWorkbook.FullName
  29.        Else
  30.           Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';data source=" & ThisWorkbook.FullName
  31.        End If

  32.        Rs.Open SqlStr, Cn, adOpenKeyset, adLockOptimistic
  33.        Set SqlRetuRs = Rs
  34. End Function

复制代码




Repeat.zip

16.81 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2024-6-1 12:08 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
'Str = "Select Name  From [Sheet1$C1:C14] Order by Name"

Str = "Select Name,count(Name)  From [Sheet1$C1:C14] group by Name"

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-3 09:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2024-6-1 12:08
'Str = "Select Name  From [Sheet1$C1:C14] Order by Name"

Str = "Select Name,count(Name)  From [ ...

Sub ll()
    Dim Str, Str1, SqlStr
    Dim Rs As Recordset
    Dim Rng As Range
        Set Rng = Selection
        
    Dim Sht As Worksheet
        Set Sht = Rng.Parent
        Debug.Print Sht.Cells(1, 1).Formula
        Set Rng = Sht.Range(Sht.Cells(1, 1).Formula)
        Str = "Select Name,Count(Name)  From [" & Sht.Name & "$" & Rng.Address(0, 0) & "] " ' where Not Name is Null"
        Debug.Print Str
        Str1 = "Select Name,Count(Name)  From [Sheet1$C1:C14]  Group By Name "
        Str = "Select Name,(" & Str1 & ")  From [Sheet1$C1:C14] "
        
        
        Str = "Select Name,Count(Name)  From [Sheet1$C1:C18]  Group By Name Where Not Name Is Null"
        Str = "Select Name,Count(Name)  From [Sheet1$C1:C18]  Group By Name"
        
        
        Debug.Print Str
        Set Rs = SqlRetuRs(Str)
        '
        Set Rng = Sht.Cells(3, 8)
        Rng.CopyFromRecordset Rs
        Stop

End Sub


Function SqlRetuRs(SqlStr)

   Dim Cn As ADODB.Connection
       Set Cn = New ADODB.Connection
   Dim Rs As ADODB.Recordset
       Set Rs = New ADODB.Recordset
      
        '
       If InStr(UCase(Application.Path), "WPS") > 0 Then
           Cn.Open "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes';Data Source=" & ThisWorkbook.FullName
       Else
          Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';data source=" & ThisWorkbook.FullName
       End If

       Rs.Open SqlStr, Cn, adOpenKeyset, adLockOptimistic
       Set SqlRetuRs = Rs
End Function


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 06:56 , Processed in 0.033571 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表