首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >VBA中单元格范围的Networkday函数

VBA中单元格范围的Networkday函数
EN

Stack Overflow用户
提问于 2017-08-25 21:08:36
回答 4查看 1.4K关注 0票数 1

我正在构建一个宏,它将比较AO列中的日期(日期格式为dd/mm/yyyy hh:mm)与列AL中的日期(日期格式为dd/mm/yyyy hh:mm),并将它们在工作日中的差异打印到列中(仅显示天数,而不是分钟数等)。我已经搜索并发现NETWORKDAYS是excel中的一个函数,它可以做到这一点,但我不知道如何在VBA中实现它的范围。到目前为止,我的代码与我在web上找到的代码非常相似,但它是针对特定日期的,而不是针对某个范围的。有什么想法吗?非常感谢!

到目前为止,我得到的是这样的,但它显示与d1=cell.Offset一致的错误...我现在不知道为什么!

代码语言:javascript
运行
AI代码解释
复制
Dim d1 As Range, d2 As Range, wf As WorksheetFunction
'Dim N As Long
Set wf = Application.WorksheetFunction
For Each cell In Range(Range("AT2"), Range("AT2").End(xlDown))
Set d1 = cell.Offset(0, -4)
Set d2 = cell.Offset(0, -7)
cell.Value = wf.NetworkDays(d1.Value2, d2.Value2)
Next cell
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-08-26 11:03:00

我建议使用“混合”方法,因为您无论如何都要使用工作表函数:让VBA填充函数,将输出替换为值:

代码语言:javascript
运行
AI代码解释
复制
    Sub WorkDaysDiff()
    ' w-b 2017-08-26

    Dim rng As Range, lastrow As Long

    ' assuming columns A, B hold dates, results into column C
    lastrow = ActiveSheet.Range("A1").End(xlDown).Row
    With ActiveSheet
        Set rng = .Range(.Range("C1"), .Range("C" & lastrow))
    End With

    With rng
        ' write formula into worksheet cells for whole range at once
        ' and replace it with their value after recalculation
        .FormulaR1C1 = "=NETWORKDAYS(RC[-1],RC[-2])"
        .Copy
        .PasteSpecial xlPasteValues
        Application.CutCopyMode = False
    End With
End Sub

这样,您就避免了循环,如果范围足够大,这可能会节省时间。

票数 1
EN

Stack Overflow用户

发布于 2017-08-25 21:14:11

为此,您不需要使用VBA。它也可能是一个VBA函数,我不确定。

票数 0
EN

Stack Overflow用户

发布于 2017-08-25 21:34:09

试试这个

代码语言:javascript
运行
AI代码解释
复制
    Dim d1 As Date, d2 As Date

    For Each Cell In Range(Range("AT2"), Range("AT2").End(xlDown))
        d1 = Cell.Offset(0, -4)
        d2 = Cell.Offset(0, -7)
        Cell.Value = Application.WorksheetFunction.NetworkDays(d1, d2)
    Next Cell
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45889438

复制
相关文章
SQL工具集-格式化结果的SQL
无论是数据库,还是其他的领域,一些工具是方便了我们日常的工作需求,但同时由于其封装了一些细节,因此若只是知道用法,不知道实现原理,对于个人来说,浪费了一次锻炼的机会,因为往往这些经典的工具,蕴含着一些可以借鉴的逻辑,以及设计思想,所谓“触类旁通”,才能增加我们的战斗力。
bisal
2020/08/27
1.9K0
SQL相同变量不同,执行时间相差甚远,什么原因?
SQL简化如下,3表关联,M表REF_NO字段上有主键,S表记录数大概900万,C表是一个很小的表,只有几百条记录:
老虎刘
2022/06/22
9810
SQL相同变量不同,执行时间相差甚远,什么原因?
JDK10的新特性:本地变量类型var
java以面向对象的特性显著于世并得到了蓬勃的发展。在语言的发展过程中,为了让java语言更加简洁和方便使用,JDK也在不断的进行改进。
程序那些事
2020/07/08
3970
linq to sql中慎用Where<T>(Func<TSource, bool> predicate),小心被Linq给"骗"了!
近日在一个大型Web项目中,采用Linq to Sql替换原来的sqlcommand/sqldatareader方式来获取数据,上线后刚开始一切正常,但是随着访问量的增加,网站明显慢了很多,监测服务器CPU占用率/内存使用情况等性能指标却发现均在正常范围内,无意中在SqlServer Profier中跟踪数据库执行的sql语句时,发现有大量语句直接将整个表的数据全部提取出来了,而非仅返回分页中的当前页数据! 而这些SQL都是Linq自动翻译并最终提交到数据库的,查看了相关的代码,明明写着Skip(n
菩提树下的杨过
2018/01/24
1K0
SQL语句执行与结果集的获取
title: SQL语句执行与结果集的获取 tags: [OLEDB, 数据库编程, VC++, 数据库] date: 2018-01-28 09:22:10 categories: windows 数据库编程 keywords: OLEDB, 数据库编程, VC++, 数据库,执行SQL, 获取结果集 --- 上次说到命令对象是用来执行SQL语句的。数据源在执行完SQL语句后会返回一个结果集对象,将SQL执行的结果返回到结果集对象中,应用程序在执行完SQL语句后,解析结果集对象中的结果,得到具体的结果,这次的主要内容是如何解析结果集对象并获取其中的值。
Masimaro
2018/08/31
3.9K0
用SQL给经过两次转置的结果集添加列标题
        想合并两个结果集,并将它们转置为两列,另外还想给各组添加列“标题”。
用户1148526
2022/11/12
1.2K0
Dart 中变量类型 var, Object, dynamic 区别
Dart 中弱类型有var, Object 以及dynamic,本文主要探讨一下这三者的区别
莫斯
2020/09/10
1.6K0
Dart 中变量类型 var, Object, dynamic 区别
let var不同的小感悟
var 在一个函数里定义 也在这个函数的if语句块里定义的话 ,对这个函数的整个区域来说 这个变量是同一个变量, let 则更细分到像if这样的代码块中 。
lilugirl
2019/05/28
3680
Mybatis结果集封装map类型
需求 查询结果封装成一个map Map<Integer,User> 键是这条记录的主键,值是记录封装后的javabean
暴躁的程序猿
2022/03/23
1.1K0
Mybatis结果集封装map类型
非常帅气的Linq to sql
Linq是.NET 3里新增的东西,我在软件工程课程设计里初步应用到一点,而且主要用在Lambda表达式上,今天算是在好奇心驱动下尝试了一下在数据库方面的应用。
owent
2018/08/01
8220
Oracle给Select结果集加锁,Skip Locked(跳过加锁行获得可以加锁的结果集)
1、通过select for update或select for update wait或select for update nowait给数据集加锁 具体实现参考select for update和select for update wait和select for update nowait的区别 2、Skip Locked(跳过加锁行获得可以加锁的结果集) Skip locked是oracle 11g引入的。 通过skip locked可以使select for update语句可以查询出(排除已经被其
郑小超.
2018/01/26
2K0
相同的时间,不同的人生
在规定的时间内,一个人目标的达成情况(创造的价值),我们称之为效率。如此可见效率与时间是密切相关的,提高效率首先要做的就是提高我们的时间利用率。
keinYe
2020/05/25
1.2K0
sql转Linq的工具
这些天写Linq挺烦人的,就上网搜搜可有什么好的sql转Linq的工具,咦,马上就看上了Linqer。
跟着阿笨一起玩NET
2018/09/19
2.6K0
sql转Linq的工具
select * 与 select id 字段 条件相同 数据结果不同(一)
起初以为是timezone时区设置问题,结果,配置改为CST后,仍然问题没解决,后看了下,这个date是dateTime类型的,与时区无关,所以问题不在此。
MickyInvQ
2020/09/27
1.2K0
select *  与 select id  字段 条件相同 数据结果不同(一)
select * 与 select id 字段 条件相同 数据结果不同(二)
都是全表扫描 都是使用where 都是文件排序(如果待排序的内容不能由所使用的索引直接完成排序的话)
MickyInvQ
2020/09/27
1.3K0
select *  与 select id  字段 条件相同 数据结果不同(二)
变量 var const let 的区别
ECMAScript变量是松散类型的,变量可以保存任何类型的数据,每个变量不过是一个用于保存任意值的命名占位符。有三个关键字可以声明变量,var是在ECMAScript所有版本都可以使用,而const和let只能在ES6版本后使用
大熊G
2022/11/14
5200
R语言VAR模型的不同类型的脉冲响应分析
脉冲响应分析是采用向量自回归模型的计量经济学分析中的重要一步。它们的主要目的是描述模型变量对一个或多个变量的冲击的演化。因此使它们成为评估经济时非常有用的工具。这篇文章介绍了VAR文献中常用的脉冲响应函数的概念和解释。
拓端
2020/08/23
2.4K0
(十)给数组变量添加类型
# 给数组变量添加类型 # 隐式写法 ts 隐式推断出的类型是 let nums: number[] 这样意思就是定义完以后数组里面的元素就必须使用 number, 后面就不可以修改了 let nums = [1, 2, 3] # 显式写法 let nums: number[] = [1, 2, 3] # 使用构造函数的写法(泛型) let nums: Array<number> = [1, 2, 3] # 对象数组合用 interface Product { title: string,
老怪兽
2023/02/22
7050
linq to sql取出随机记录/多表查询/将查询出的结果生成xml
在手写sql的年代,如果想从sqlserver数据库随机取几条数据,可以利用order by NewId()轻松实现,要实现多表查询也可以用select * from A,B Where A.ID=B.ID做到,但这些功能到了linq to sql中如何实现呢? 关键点: 1.随机排序问题:可以用 Select(d=> new {NewId=new Guid()}).OrderBy(d=>d.NewId)达到order by NewId()的效果 2.多表查询 from a in TableA
菩提树下的杨过
2018/01/22
3.2K0
点击加载更多

相似问题

将变量赋给MySQL迭代结果集

22

将相同的函数赋给不同的变量

25

如何将linq结果赋给多维数组

20

将SQL查询的结果赋给PHP变量

21

posgresql 10如何将过滤求和结果赋给不同的变量?

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文