gpt4 book ai didi

vba - 使用 VBA 的日期序列

转载 作者:行者123 更新时间:2023-12-04 21:59:07 26 4
gpt4 key购买 nike

情况

我有一个日期序列号序列,例如:

42519, 42526, 42533, 42540, 42547, 42554

在细胞中
B2, C2, D2, E2, F2, G2

分别。

最终将有 52 个日期序列号,每个代表一个每周发票日期。

您会注意到在之前的宏中每个都增加了 7,这没有问题。

客观的

我需要使用下面 方法 2 中提到的 VBA 将这些日期序列号转换为格式 "dd-mmm-yy" (而不是手动复制公式)。

因此,假设第一个日期编号是 42519 单元格中的 B2

方法一

这种将日期序列号 42519 转换为 "dd-mmm-yy" 格式的方法对我来说没有问题,但冗长且涉及手动复制公式:

使用表达式:
 Range("B3")="=TEXT(B2,""dd-mmm-yy"")"    ' returns 29-May-16 in cell B3

我什至可以使用以下表达式:
 Range("C3")="=TEXT(B2+7,""dd-mmm-yy"")"    'returns 05-Jun-16 in cell C3

方法2.

这让我很难过,我正撞到一堵砖墙上。我的想法是执行以下操作,如果我可以让它工作,我可以继续使用循环在一行 52 个单元格中生成 52 个日期( C3D3 等,格式为 "dd-mmm-yy" ,每个都递增一年中的 7 天):
Sub sbNumToText_01()
Dim intAdd7 As Integer
intAdd7 = 0
Dim lngSerialDate As Long
lngSerialDate = Range("C2").Value
MsgBox lngSerialDate + intAdd7 'returns 42526, as expected
Range("C3") = "=TEXT(lngSerialDate + intAdd7,""dd-mmm-yy"")"
End Sub

代替单元格 C3 显示 "05-Jun-16" ,单元格 C3 显示 #Name? 并且单元格 C3 左侧的迷你下拉错误菜单显示 "The formula contains unrecognised text"

你们中的任何人都可以解释如何使用包含变量的 TEXT 函数吗?或沿着这些思路的任何其他解决方案。

最佳答案

你的问题在于线路

Range("C3") = "=TEXT(lngSerialDate + intAdd7,""dd-mmm-yy"")"

如果您查看单元格中的公式 C3运行宏后,你会看到它包含
=TEXT(lngSerialDate + intAdd7,"dd-mmm-yy")

但是 lngSerialDateintAdd7是 VBA 变量,而不是 Excel 名称,因此它们在工作表公式中毫无意义,这就是您看到错误的原因。您要做的是在将这些变量的总和放入工作表函数之前将其转换为数字:
Range("C3") = "=TEXT(" & lngSerialDate + intAdd7 & ",""dd-mmm-yy"")"

关于vba - 使用 VBA 的日期序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com