【问题标题】:excel - Change define name dynamically through VLOOKUPexcel - 通过 VLOOKUP 动态更改定义名称
【发布时间】:2021-07-07 14:33:30
【问题描述】:

问题是如果第 23 行中的 vlookup 有效,为什么值不传递到第 26/27 行的嵌套 vlookup 中?如何在不使用 if 语句的情况下获取嵌套的 vlookup 以获取值 table1

不知道如何分享excel工作簿,如果有人知道,请在cmets中发帖。

# Defined Tables            
table1      table2  
Bob A   Tim C
Jim B   Karl    D
        
# Defined Name          
tables (defined name)           
1   table1  Sheet1!$A$3:$B$4    
2   table2  Sheet1!$C$3:$D$4    
        
# Table Setting             
Table Setting   1   table1  <IF(B12=1,B8,B9)
        
# Works manual with table1/2 text entered           
Bob A   <VLOOKUP(A15,table1,2,FALSE)    
Tim C   <VLOOKUP(A16,table2,2,FALSE)    
        
# Works based on changing the table settings            
Bob A   <VLOOKUP(A19,IF(B12=1,table1,IF(B12=2,table2,"ERR")),2,FALSE)   
Tim #N/A    <VLOOKUP(A20,IF(B12=1,table1,IF(B12=2,table2,"ERR")),2,FALSE)   
        
# DOESN"T WORK          
    table1  <VLOOKUP(B12,A8:B9,2,FALSE) 
        
# Although it does get the name the formula below doesn't seem to be using the name like the if condition did           
Bob #VALUE! <VLOOKUP(A25,VLOOKUP(B12,A8:B9,2,FALSE),2,FALSE)    
Tim #VALUE! <VLOOKUP(A26,VLOOKUP(B12,A8:B9,2,FALSE),2,FALSE)    

【问题讨论】:

  • 您尝试查找单个值的第二列。您需要使用 INDIRECT,但由于您已经在使用 VBA,因此请搜索 VBA 解决方案,避免使用易失函数 INDIRECT。
  • 我看到它不是代码,而是数据/文本。试试=VLOOKUP(A25,INDIRECT(VLOOKUP(B12,A8:B9,2,FALSE)),2,FALSE)。请注意,INDIRECT 会使公式不稳定(在文件中的每次更改中重新计算),因此可能会减慢速度。

标签: excel excel-formula vlookup


【解决方案1】:

如前所述,您可以使用INDIRECT 从命名范围的名称中引用命名范围。缺点就是易怒

=VLOOKUP(A26,INDIRECT(VLOOKUP($B$12,$A$8:$B$9,2,FALSE)),2,FALSE)

或者,如果您将命名范围(例如,tables)定义为一组不连续的表格范围(对于您的示例数据,这将是 =table1,table2),您可以使用 INDEX 通过以下方式获取表格数字,通过提供 [area_num] 参数。

名称定义

公式

=VLOOKUP(A25,INDEX(tables,,,$B$12),2,FALSE)

演示

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2023-01-25
    • 2021-10-10
    • 2017-07-28
    • 2018-12-27
    相关资源
    最近更新 更多