ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请大神帮忙实现个查询定价的功能。用公式太卡了。Excel会卡死。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-12 14:07 | 显示全部楼层 |阅读模式
本帖最后由 看脱了色彩 于 2020-2-12 15:12 编辑

昨天晚上论坛好像坏了。等到凌晨1点都不能发帖!只有今天再来求助。
我在【函数与公式】板块也发了求助,但最好是能在 VBA 里实现。所以请帮忙看看!谢谢
我有个查询公式,但是这个公式用多了。Excel 输入内容就卡死了。可能查询的内容太多了。但是自己又想不到办法。希望大神帮忙改进下。感谢!!!!

查询值是这一段【SUM(SUMIF(INDIRECT("供应商"&{1,2,3}&"!A:BB"),S6,INDIRECT("供应商"&{1,2,3}&"!B1")))】,但是要根据查询结果来做相关处理。
公式是这样的 【=ROUND(IF(X>=6,X+定价表!$B$6,IF(X>=4,X+定价表!$B$7,IF(X>=2,X+定价表!$B$8,X*(1+定价表!$B$9%)))),2)】

如果把 X 替换成那段公式,表格输入值就要卡死。

附件如下。(重新上传)
定价文档.rar (65.52 KB, 下载次数: 12)

TA的精华主题

TA的得分主题

发表于 2020-2-12 14:27 | 显示全部楼层
Sub lkyy()
Dim sht As Worksheet
Set d = CreateObject("Scripting.Dictionary")
For Each sht In Sheets
    If Left(sht.Name, 3) = "供应商" Then
        ar = sht.Range("a1:am100")
        For j = 1 To 36 Step 5
            For i = 3 To 100
                If ar(i, j) <> "" Then d(ar(i, j)) = d(ar(i, j)) + ar(i, j + 1)
            Next
        Next
    End If
Next
For j = 1 To 4
    For i = 3 To 49
        t = Cells(i, j * 6 - 5)
        If t <> "" Then
            If d.exists(t) Then
                x = d(t): y = 0
                Select Case x
                    Case Is >= 6
                    y = x + Sheets("定价表").[b6]
                    Case Is >= 4
                    y = x + Sheets("定价表").[b7]
                    Case Is >= 2
                    y = x + Sheets("定价表").[b8]
                    Case Else
                    y = x * (1 + Sheets("定价表").[b8] / 100)
                End Select
                Cells(i, j * 6 - 2) = y
            End If
        End If
    Next
Next
Set d = Nothing
End Sub

定价文档.zip

65.97 KB, 下载次数: 10

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-12 15:14 | 显示全部楼层
凌空一羽 发表于 2020-2-12 14:27
Sub lkyy()
Dim sht As Worksheet
Set d = CreateObject("Scripting.Dictionary")

不行啊,大佬。在“供货商”表里填了单价,在sheet1 不显示出来。
我重新注释了需要的功能,重传了附件。麻烦你再帮忙看看。!!!!

TA的精华主题

TA的得分主题

发表于 2020-2-12 16:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
单价的例子:
删除单价列里面的公式,输入代码,执行代码即可。
2020-2-12单价.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-12 16:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
蓝桥玄霜 发表于 2020-2-12 16:14
单价的例子:
删除单价列里面的公式,输入代码,执行代码即可。

你是个好老师,必须让学生亲自抄写一次。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-26 21:53 , Processed in 0.036483 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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