您可以在不使用VBA的情况下执行此操作。在现场你想粘贴到输入公式名称列表:
=IF(ISBLANK(<address of dropdown on Sheet1>),"",INDEX(<address of list to left of values on Sheet2>,MATCH(<address of dropdown on Sheet1>,<address of dropdown values on Sheet2>,0)))
时,从下拉列表中选择任何内容,并且在选择的值将显示名称的相应列表这将是空白。
例如,如果在下拉是在Sheet 1上B1,下拉值在B1:B9 Sheet 2上,和名称的对应的列表是在A1:Sheet 2上A9,将使用以下公式:
=IF(ISBLANK(Sheet1!B1),"",INDEX(Sheet2!A1:A9,MATCH(Sheet1!B1,Sheet2!B1:B9,0)))
编辑(每条评论): 要在VBA中使用它,您需要执行类似于@chris neilsen建议的操作。在工作表中,您将需要创建一个子一变事件:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
Range("A1").Formula = "=INDEX(Sheet2!A1:A9,MATCH(Sheet1!B1,Sheet2!B1:B9,0))"
If IsError(Range("A1").Value) Then
Range("A1") = ""
Else
Range("A1").Value = Range("A1")
End If
End If
End Sub
为了消除任何混乱,A1是将显示输出单元。
签名被删除,请参见常见问题解答。 – 2011-12-28 04:09:41
我需要在VBA中这样做,因为要粘贴值的单元格不应该包含任何公式,因为单元格大部分时间都会被用户覆盖。 – Stowoda 2012-01-02 15:08:33