【问题标题】:Excel - if a range of cells equals a value from a list I want to populate the value of another cellExcel - 如果单元格范围等于列表中的值,我想填充另一个单元格的值
【发布时间】:2016-08-08 21:14:24
【问题描述】:

我正在尝试编写一个公式,如果单元格范围等于列表中的特定值,则该公式将返回一个单元格的值。

例如:

    A1 = Orange
    B1:B5 = My Data 
    If B1:B5 = Red, Blue, or Green, display the value from A1

感谢您的帮助!

【问题讨论】:

    标签: excel vba


    【解决方案1】:
    Dim a as Range, listValues() as string 'array of string
    Dim str as string, i as integer
    
    
    str = "Red;Blue;Green"
    listValues = Split(str,";") 'split str using ";"
    for i= Lbound(listValues) to Ubound(listValues) 'loop thru the array
        Set a = ActiveSheet.UsedRange.Find(what:=listValues(i), lookat:=xlWhole) 
        if Not a Is Nothing Then
            'value found
            a.value = Range("A1").value
        end if
    next i
    

    我已经调整了@Davesexcel 的分辨率,查看他的分辨率: How to avoid using select in VBA for variable cell ranges?

    RonDeBruin 的这个解决方案也不错:

    http://www.rondebruin.nl/win/s9/win006.htm

    【讨论】:

      【解决方案2】:

      将您的值放在列中的某个位置:

      然后是C1中的一个简单公式:

      =IF(ISNUMBER(MATCH(B1,E:E,0)),$A$1,"")
      

      如果找到匹配项,它将返回其行号。 If 测试它是数字还是错误。如果是数字,则找到匹配项并返回 A1 中的值。否则返回一个空字符串。

      【讨论】:

      • 非常感谢!
      • 我让它在单个单元格上工作,但是我需要让它在一个范围内验证。当我使用下面的公式时,即使逻辑测试返回 true,它也不会显示 A9 中的值。有什么建议么? =IF(ISNUMBER(MATCH(F9:U9,W43:W50,0)),$A$9,"")
      • 离开编辑模式时,您需要使用 Ctrl-Shift-Enter 而不是 Enter 输入该公式。如果操作正确,Excel 将在公式周围放置{}。 @B.Witt
      猜你喜欢
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多