数据验证列表来自逗号分隔单元格中的值

时间:2017-08-29 13:49:35

标签: excel excel-vba vba

尝试使用逗号分隔值从单元格构建数据验证列表。

看一下图像,如果用户选择“FFP-IS”,列表应为:

for (i in 1:258) { 
ifelse(df2[,1] == df1[i,3], df2[,1] <- df1[i,2], df2[,1]) 
}

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用隐藏范围,UDF和多个命名范围来破解数据验证列表以使用逗号分隔列表。

首先是UDF(注意我已经使用A列作为值的存储库 - 可以隐藏):

<Style x:Key="button_special_hover" TargetType="{x:Type Grid}">
    <Setter Property="Background" Value="Transparent"/>
    <Style.Resources>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid},
                                           Path=IsMouseOver}" Value="True">
                    <Setter Property="Foreground" Value="White"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
        <Style TargetType="{x:Type Path}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid},
                                           Path=IsMouseOver}" Value="True">
                    <Setter Property="Fill" Value="White"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Style.Resources>
</Style>

然后设置一个命名范围,例如&#39; DVList1&#39;使用公式&#34; = DVList(Sheet1!$ I $ 4)&#34; Sheet1!$ I $ 4包含逗号分隔值的字符串

最后使用&#34; = DVList1&#34;

添加数据验证列表单元格

现在将使用您的值填充列表

范围非常有限;所以你需要为每个单元格设置一个不同的命名区域,并设置逗号分隔值;但您可以根据自己的需要进行编辑。