Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2669|回复: 7

vba 如何匹配小于指定日期的第一个日期的值?

[复制链接]
发表于 2020-5-15 17:31 | 显示全部楼层 |阅读模式
vba 如何匹配小于指定日期的第一个日期的值?具体见附件
1589535046(1).jpg
匹配小于日期的值.rar (8.54 KB, 下载次数: 7)
发表于 2020-5-15 18:54 | 显示全部楼层
如果你a列的日期都是顺序排下来的话
简单的你可以按倒序循环a列,判断日期是不是小于查找日期,小于就提取第二列,


难的你可以学习一下二分排序法,使用那个方法匹配顺序的日期会快些


回复

使用道具 举报

 楼主| 发表于 2020-5-16 00:38 | 显示全部楼层
0126 发表于 2020-5-15 18:54
如果你a列的日期都是顺序排下来的话
简单的你可以按倒序循环a列,判断日期是不是小于查找日期,小于就提取 ...

日期是按顺序的,具体要怎么写呢?找了坛子里的,没找到比较好的方法,水平有限,自己写出来,只能改改例子
回复

使用道具 举报

 楼主| 发表于 2020-5-17 22:33 | 显示全部楼层
自己顶一下  有没有大神帮忙一下
回复

使用道具 举报

发表于 2020-5-17 22:53 | 显示全部楼层
用公式 LOOKUP(D3-1,$A$2:$A$90,$B$2:$B$90)
回复

使用道具 举报

 楼主| 发表于 2020-5-17 22:58 | 显示全部楼层
shuidisyy 发表于 2020-5-17 22:53
用公式 LOOKUP(D3-1,$A$2:$A$90,$B$2:$B$90)

谢谢 ,用公式我知道 就是想知道如何 用vba 实现
回复

使用道具 举报

发表于 2020-5-18 00:11 | 显示全部楼层
本帖最后由 cutecpu 于 2020-5-18 00:12 编辑
  1. Sub demo()
  2.    Dim arr: arr = Range("A2").Resize(Cells(Rows.Count, "A").End(xlUp).Row - 1, 2)
  3.    i = 2
  4.    While Cells(i, "D") > 0
  5.       L = 1: R = UBound(arr)
  6.       While L + 1 < R
  7.          M = (L + R) \ 2
  8.          If arr(M, 1) < Cells(i, "D") Then L = M Else R = M - 1
  9.       Wend
  10.       If arr(L, 1) >= Cells(i, "D") Then
  11.          Cells(i, "E").Value = "No Match"
  12.       ElseIf arr(R, 1) < Cells(i, "D") Then
  13.          Cells(i, "E").Value = arr(R, 2)
  14.       Else:
  15.          Cells(i, "E").Value = arr(L, 2)
  16.       End If
  17.       i = i + 1
  18.    Wend
  19. End Sub
复制代码
祝順心,南無阿彌陀佛!
log.png

匹配小于日期的值.rar

14.43 KB, 下载次数: 8

评分

参与人数 2学分 +4 收起 理由
xlvevc + 2 我和小伙伴都惊呆了
0126 + 2 学习!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-5-25 20:46 | 显示全部楼层
本帖最后由 xlvevc 于 2020-5-26 11:46 编辑
cutecpu 发表于 2020-5-18 00:11
祝順心,南無阿彌陀佛!

超版您好  还是没吃透这个vba,如果 余额从B列调整到C列  要改哪里啊

已经找到地方了
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 06:59 , Processed in 3.288476 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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