动态数据验证下拉列表

时间:2015-04-09 15:29:28

标签: excel vba

我正在使用VBA,但我不介意使用别的东西!

我有一个包含2列的表

enter image description here

Col A - Heading" RP"用20行开始用" Rept Pd 1"至" Rept Pd 20" Col B - Heading" Claims Months&#34 ;,每个单元格都是数据清单" 0个月"到" 9个月"。

一个单独的单元格" Total Months"。

背景:上表是将项目的报告拆分为索赔月份。最大可能报告周期数(RP)为20,最小值为1.声明月份的范围为0个月至9个月。根据总月数,每个'Rept Period'的“声明月”单元格应在下拉可能月份的数量中列出,以确定月份的总数。

E.g。如果总月数是24,我选择“Rept Period 1”到20个月的声明月,那么'Rept Period 2'应该给我一个0个月到4个月之间的列表。如果我选择了1个月的“Rept Pd 2'然后下降选项申请月份为“Rept Pd 3”应为0个月至3个月,依此类推。

希望有意义!

非常感谢

1 个答案:

答案 0 :(得分:0)

拜伦是对的,你应该只选择数字。如果 真的 想要拥有"我会添加一些额外的步骤个月"包括在内,但这使得整个事情变得更加困难和占用空间。

您需要做的是:

1)假设您有总月数值在J1中,并且在第I列中指定了各个声明月,请将此公式=J1-SUM(I:I)添加到同一工作表中的另一个单元格(我将假设使用K1)。注意:总月份&声明月份选择应位于同一列中。

2)使用以下公式填充足够的一列:=IF(ROW()-1<=K$1, ROW()-1, ""),以便覆盖尽可能大的总值。防爆。如果您的总月数> 100,则公式应为1-100行。我假设您使用L列,因此请相应调整。

3)在另一个非偏僻的单元格中添加公式=COUNT(L:L)。我假设您使用N1。

4)您现在需要创建一个命名范围。为此,请转到功能区的“公式”部分,然后单击“#34;名称管理器”#34;。在打开的窗口中,单击&#34;新建&#34;。添加任何适合您目的的名称(没有空格或特殊字符,下划线除外),设置&#34;范围&#34;到你正在使用的工作表,并且在&#34;指的是:&#34;输入此公式=OFFSET($L$1, 0, 0, $N$1, 1)。如果您愿意,可以添加评论,然后单击&#34;确定&#34;。

5)突出显示要用于Claim Months值的行,然后打开Data Validation窗口。选择&#34;列表&#34;在&#34;允许&#34;领域,以及&#34;来源&#34;字段类型=并点击F3。在&#34;粘贴名称&#34;出现的窗口选择我们创建的命名范围,然后单击&#34;确定&#34;。点击&#34;确定&#34;在数据验证窗口中也是如此。

<强>可选

6)将此公式=IF(L1="", "", CONCATENATE(L1, " months))添加到我们在步骤2中添加公式的列旁边的列中。拖动该公式以覆盖我们在步骤2中使用的相同行。我将假设列M用于此公式

7)调整我们在步骤4中创建的命名范围中的公式,以便将$L$1替换为$M$1

8)在另一栏(我将使用H栏)中添加此公式=IF(I2="", "", VALUE(LEFT(I2, LEN(I2)-7))),并将此公式显示在每个“声明月”选择单元格旁边。

9)更新步骤1中的公式,将I:I替换为H:H

你应该被设定。

相关问题