我正在尝试使用VBA向一系列单元格添加固定值

问题描述 投票:0回答:1

我正在尝试使用宏根据相邻单元格的值直接填充选定范围内的值到左侧的单元格。

在任何给定范围内都会有一组有效日期,并且想要选择日期右侧的空白单元格,然后宏应显示财政年度和季度

例如 A1 =“2022 年 12 月 20 日”,A2 =“2023 年 8 月 15 日” 应该给出以下结果:- B1 =“2022-23 Q3”,B2 =“2023-24 Q2”

当我选择单元格 B1 并使用 :-

ActiveCell.Value = "=IF(MONTH(RC[-1])<4,YEAR(RC[-1])-1&""-""&RIGHT(YEAR(RC[-1]),2)&"" Q4"",IF(MONTH(RC[-1])<7,YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1]),2)+1&"" Q1"",IF(MONTH(RC[-1])<10,YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1]),2)+1&"" Q2"",IF(MONTH(RC[-1])<13,YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1]),2)+1&"" Q3""))))"

它显然将正确的解决方案分配给活动单元格。

问题 1:如果我选择单元格 B1:B5,我希望宏为这些单元格分配相同的公式。

这似乎是一件非常简单的事情,但无论我尝试什么似乎都只是填充第一个单元格。

我也知道我可以双击单元格的右下角,它就会填充,但我希望只需单击 1 次而不是 2 次即可实现。(填写表单的人可以处理单击一次,但两次......)

问题 2:如果我突出显示了单元格 H7:H20(数据位于 G7:G20 中),那么让宏起作用,所以基本上我可以单击电子表格上的任何范围,它将根据 的值填充该范围直接在其左侧的单元格。

最终结果适用于单个单元格,并将公式放入单元格中,单元格显示正确的文本,但如果结果只是纯文本,那就没问题了。

任何帮助将不胜感激。

凯文

感谢大家的帮助,我已经找到了解决方案:-

Dim rng As Range
For Each rng In Selection
        rng.Offset(0, 1).Value = "=IF(MONTH(RC[-1])<4,YEAR(RC[-1])-1&""-""&RIGHT(YEAR(RC[-1]),2)&"" Q4"",IF(MONTH(RC[-1])<7,YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1]),2)+1&"" Q1"",IF(MONTH(RC[-1])<10,YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1]),2)+1&"" Q2"",IF(MONTH(RC[-1])<13,YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1]),2)+1&"" Q3""))))"
Next rng
excel vba assign
1个回答
0
投票

很确定 2016 年没有

LET
和更新的配方。

这个公式可以解决问题:

=IF(CHOOSE(ROUNDUP(MONTH(RC[-1])/3,0),4,1,2,3)=4,TEXT(EDATE(RC[-1],-12),"yyyy-") & TEXT(RC[-1],"yy"),TEXT(RC[-1],"yyyy-") & TEXT(EDATE(RC[-1],12),"yy")) & TEXT(CHOOSE(ROUNDUP(MONTH(RC[-1])/3,0),4,1,2,3)," Q0")  

© www.soinside.com 2019 - 2024. All rights reserved.