ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 综合应用 > 查找最新单价

查找最新单价

作者:绿色风 分类: 时间:2022-08-17 浏览:148
楼主
嘉昆2011
问题陈述 :



 

动画效果:


 

解决思路及步骤:
1,利用字典提取不重复的产品,关键点:Join(Dic.keys,",")放入数据有效性下拉列表中,省略辅助列寄存
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.     Dim Dic As Object, Arr
  3.     If Target.Address = "$F$2" Then
  4.         Set Dic = CreateObject("Scripting.Dictionary")
  5.         Arr = Sheet1.Range("C2:C" & Sheet1.Cells(Rows.Count, 3).End(3).Row).Value
  6.         For i = 1 To UBound(Arr)
  7.             Dic(Arr(i, 1)) = ""
  8.         Next
  9.         With Target.Validation
  10.             .Delete
  11.             .Add Type:=xlValidateList, Formula1:=Join(Dic.keys, ",")
  12.         End With
  13.         Set Dic = Nothing
  14.     End If
  15. End Sub
2,利用MQ-SQL参数查询的特性,查询最新价格
  1. Select Top 1 单价 as 最新单价
  2. From [Sheet1$B:D]
  3. Where 产品=?
  4. Order by 日期 Desc
3,条件格式
  1. =AND($C2=$F$2,$D2=$G$2)
附件:

最新单价.rar

2楼
yjzstar
昆哥,这里存在一个问题,两个以上相同的产品,价格相同,日期不一样的时候,会有不是最新单价也会复合条件格式而被标红!
3楼
嘉昆2011
看来条件格式要更新下
  1. =$B2=LARGE(IF(($C$2:$C$20=$F$2)*($D$2:$D$20=$G$2),$B$2:$B$20),1)
动画效果:


 
4楼
icenotcool


5楼
LOGO
向昆哥学习...

另补充一个公式法
最新单价公式:
  1. =SUMPRODUCT((B2:B20=DMAX(B1:C20,1,F1:F2))*(C2:C20=F2),D2:D20)

条件格式公式:
  1. =AND($B2=DMAX($B$1:$C$20,1,$F$1:$F$2),$C2=$F$2)






6楼
海洋之星
谢谢分享,
7楼
dgxsdr
VBA+SQL很强大

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap