2017-03-17 48 views

回答

1

在Hugs提到的SO問題中使用帖子(https://stackoverflow.com/a/6755513/4050510),我爲您的需要提出了以下公式。

它是一個數組公式,您可以在第一個單元格中輸入數組公式,然後使用所選單元格拐角處的小手柄向下填充它。

=IFERROR(INDEX($B$2:$B$6;SMALL(IF($A$2:$A$6=1;ROW($B$2:$B$6)-MIN(ROW($B$2:$B$6))+1;"");ROW(A1)));"")

​​

+0

啊!我看到這畢竟不是解決方案,因爲它不會以數組*的形式返回答案*。抱歉。我會放棄它,因爲它可能爲某人提供靈感。 – LudvigH

+0

感謝您的回答。是的,它不返回數組。我想用它作爲下拉式的動態數組。感謝您能幫助我。乾杯! – Shana

0

這是可能做到這一點。

=INDEX(Sheet1!$B:$B, N(IF({1}, MODE.MULT(IF(Sheet1!$A$2:$A$6=1, ROW(Sheet1!$A$2:$A$6)*{1,1})))))

然後,你可以參考你的命名範圍,如::=INDEX(MyNamedRange, 2)

編輯:

您可以設置隱藏工作表中您可以命名範圍,如分配給一個公式在一個單元格範圍內有一個過濾的值列表,否則使用VBA:

VBA:

將這個在相關工作表的工作表codemodule:

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub 

    Dim ARange As Range, BRange As Range 
    Dim i As Long, lastRow As Long, strCount As Long 
    lastRow = Me.Range("A" & Me.Rows.Count).End(xlUp).Row 
    Set ARange = Me.Range("A1:A" & lastRow) 
    Set BRange = Me.Range("B1:B" & lastRow) 

    Dim stringArr() As String 
    For i = 1 To lastRow 
     If ARange.Cells(i, 1).Value = 1 Then 
       ReDim Preserve stringArr(0 To strCount) 
       stringArr(strCount) = BRange.Cells(i, 1).Value 
       strCount = strCount + 1 
     End If 
    Next i 

    Dim str As String 
    str = Join(stringArr, ",") 

    Dim dv As Validation 
    Set dv = Me.Range("DVCell").Validation 
    If Not dv Is Nothing Then 
     dv.Modify _ 
       Type:=xlValidateList, _ 
       AlertStyle:=xlValidAlertStop, _ 
       Operator:=xlBetween, _ 
       Formula1:=str 
    Else 
     dv.Add _ 
       Type:=xlValidateList, _ 
       AlertStyle:=xlValidAlertStop, _ 
       Operator:=xlBetween, _ 
       Formula1:=str 

    End If 
End Sub 

要使用公式和隱藏工作表,使用技術填補單元格區域,然後分配一個動態範圍的數據驗證....

+0

感謝您的回覆。 Stil問題仍然存在,因爲此公式僅返回一個值,而不是具有兩個值的數組,例如該示例。 – Shana

+0

我保證這個公式能返回一個數組。這就是它特有的功能。如果您如上所述使用命名範圍,並在命名範圍內調用Index,則可以獲得任何條目。如果您試圖直接在單元格中輸入它,則必須使用Ctrl-Shift-Enter。我不確定你在做什麼。如果你顯示你在做什麼,我們可以看到問題。 – MacroMarc

+0

嗨@MacroMarc是的,你是對的。我試圖使用'MyNamedRange'作爲動態列表到下拉列表中,但它不返回任何值。你能幫我解決嗎?謝謝 – Shana

相關問題