ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 主表查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-9-25 16:11 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
之前承蒙帮助,完成了部分功能,但还有一部分未完成,就是查询某业务员时,将某业务员所对应的客户全部数据列出来,运行忽略查询客户的宏,想了很久也解决不了,希望有人不吝赐教,谢谢!

查询主表内容.rar

25.32 KB, 下载次数: 22

TA的精华主题

TA的得分主题

发表于 2021-9-25 17:32 | 显示全部楼层
你试试
            If .Value = "" Then
                str = "where 业务员='" & .Offset(, 3).Value & "' "
            Else
                str = "where 客户全称='" & .Value & "' and 业务员='" & .Offset(, 3).Value & "'"
            End If

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-26 08:23 | 显示全部楼层
donghui2363 发表于 2021-9-25 17:32
你试试
            If .Value = "" Then
                str = "where 业务员='" & .Offset(, 3).Value ...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim str As String, sql As String
       With Target
                 Application.EnableEvents = False
                    If .Value = "" Then
                str = "where 业务员='" & .Offset(, 3).Value & "' "
            Else
                str = "where 客户全称='" & .Value & "' and 业务员='" & .Offset(, 3).Value & "'"
                   sql = "select 客户全称,出货单号 ,sum(未税金额),sum(金额),sum(业务员),sum(差异),sum(税金),sum([差额/佣金]),sum(运费),sum(公司收入)  from [8月审单$]  " & str & "group by 客户全称,出货单号"
            Range("a4:i" & Application.Max(4, [a65536].End(3).Row)).ClearContents
               sql = sql & " union select '合计','',sum(未税金额),sum(金额),'',sum(差异),sum(税金),sum([差额/佣金]),sum(运费),sum(公司收入)  from [8月审单$] " & str
            QueryInfoTo sql, [a65536].End(3).Offset(1)
            Application.EnableEvents = True
        End If
    End With
End Sub

运行后只有合计,没有明细和其它数据

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-26 08:33 | 显示全部楼层
donghui2363 发表于 2021-9-25 17:32
你试试
            If .Value = "" Then
                str = "where 业务员='" & .Offset(, 3).Value ...

放入位置与方式可能有误,出现运行有问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-26 08:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
运行有点问题

查询主表内容.rar

25.47 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2021-9-26 12:58 来自手机 | 显示全部楼层
suqji 发表于 2021-9-26 08:23
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim str As String, sql As String
        ...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim str As String, sql As String
       With Target
                 Application.EnableEvents = False
                    If .Value = "" Then
                str = "where 业务员='" & .Offset(, 3).Value & "' "
            Else
                str = "where 客户全称='" & .Value & "' and 业务员='" & .Offset(, 3).Value & "'"
          rem         sql = "select 客户全称,出货单号 ,sum(未税金额),sum(金额),sum(业务员),sum(差异),sum(税金),sum([差额/佣金]),sum(运费),sum(公司收入)  from [8月审单$]  " & str & "group by 客户全称,出货单号"
sql = "select 客户全称,出货单号 ,sum(未税金额,金额........,业务员,sum(差异),sum(税金),sum([差额/佣金]),sum(运费),sum(公司收入)  from [8月审单$]  " & str  
rem 把全部sum函数取消试试 显示明细
            Range("a4:i" & Application.Max(4, [a65536].End(3).Row)).ClearContents
               sql = sql & " union select '合计','',sum(未税金额),sum(金额),'',sum(差异),sum(税金),sum([差额/佣金]),sum(运费),sum(公司收入)  from [8月审单$] " & str
end if '改
            QueryInfoTo sql, [a65536].End(3).Offset(1)
            Application.EnableEvents = True
  rem      End If
    End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-27 13:49 | 显示全部楼层
zpy2 发表于 2021-9-26 12:58
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim str As String, sql As String
        ...

复制到文件中,还是运行不了

TA的精华主题

TA的得分主题

发表于 2021-9-27 13:59 来自手机 | 显示全部楼层
suqji 发表于 2021-9-27 13:49
复制到文件中,还是运行不了

sql = "select 客户全称,出货单号 ,未税金额,金额,业务员 from [8月审单$]" & str
rem 把全部sum函数取消试试 显示明细

TA的精华主题

TA的得分主题

发表于 2021-9-27 14:39 | 显示全部楼层
  1. Sub test()
  2.     Dim i%, Cn, Rs, sql$, str$
  3.     Set Cn = CreateObject("ADODB.Connection")
  4.     Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & ThisWorkbook.FullName
  5.     With Sheet1
  6.         .[h3] = "[差额/佣金]"
  7.         For i = 1 To 10
  8.             str = str & "," & .Cells(3, i)
  9.         Next
  10.         str = Right(str, Len(str) - 1)
  11.         sql = "SELECT " & str & " FROM [8月审单$] WHERE 业务员='" & .[e1] & "' AND 客户全称='" & .[b1] & "'"
  12.         .[a3].CurrentRegion.Offset(1).ClearContents
  13.         Set Rs = Cn.Execute(sql)
  14.         .[a4].CopyFromRecordset Rs
  15.         .[h3] = "差额/佣金"
  16.     End With
  17. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-27 16:06 | 显示全部楼层
zpy2 发表于 2021-9-27 13:59
sql = "select 客户全称,出货单号 ,未税金额,金额,业务员 from [8月审单$]" & str
rem 把全部sum函数取 ...

rem 把全部sum函数取消,是什么意思,因为这方面知识缺乏,百度过,也不明白
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-21 00:04 , Processed in 0.051333 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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