Hej igen Sleipner,
Om kravet är att filtrera bort tomma celler måste man tyvärr använda en hjälpkolumn oavsett vilken Excelversion man använder eftersom man inte kan använda en matrisformel i fältet "Källa:". Enbart ett kontinuerligt cellområde (lista) med värden godtas som input till fältet "Källa:" i dataverifiering.
Lösning
Jag har raderat VBA-modulen DropDownOP samt all kod i arbetsbladet "Fundfakt-kateg-vinkl" förutom nedan kod så du får behålla funktionen som inte tillåter användarna att välja en rubrikrad i dropdownlistan.
Det jag ändrat från originalkoden är gulmarkerat nedan
Sub Worksheet_Change(ByVal Target As Range)
'limit the event to trigger ONLY THE NECESSARY DROPDOWN RANGES:
If Not Intersect(Target, Union(Me.Range("AC4:AI18"), Me.Range("Q4:W18"), Me.Range("A4:G18"))) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Left(Target.Value, 1) = "*" And Right(Target.Value, 1) = "*" Then
MsgBox "You can't select a heading: '" & Target.Value + "'" & vbCr & vbCr & vbTab & "Try again. ", vbCritical
Application.EnableEvents = False
'Target.Value = ""
Application.Undo 'place back the value existing before change!
Application.EnableEvents = True
End If
End If
End Sub
Steg 1
I brist på tillgång till den dynamiska matrisfunktionen FILTER() i Excel 2019 och äldre måste vi skapa vår egen funktion för att flitrera bort tomma celler.
Markera cell B8 på exempelvis fliken "Angles for estimation".
(Observera! Det är mycket viktigt att ha cell B8 markerad för formeln innhåller relativa cellreferenser.)
Starta namnhanteraren med CTRL+F3. Skapa funktionen "FxFilter" enligt nedan formel.
=OMFEL(INDEX(!$A$8:$A$1008;MINSTA(OM(ÄRTEXT(!$A$8:$A$1008);RAD(!$A$1:$A$1001));RAD(!A1)));"")
Spara och stäng Namnhanteraren.
Åter på fliken "Angles for estimation" skriv in formel vi skapade i cell B8.
=FxFilter
Tryck CTRL+Shift+Enter för att skapa en matrisformel.
Matrisformeln kommer i formelfältet omges med "Curly Brackets" { och } om du gjort rätt.
{=FxFilter}
Kopiera sedan ner formeln ända till cell B1008. Om du har fått till det rätt så kommer det se ut så här i kolumn B.
Gör samma sak i cell B8 och nedåt på fliken "Categories for estimation".
{=FxFilter}
Samt i cell B8 och nedåt på fliken "Fundamentals for estimation".
{=FxFilter}
Steg 2
Starta återigen namnhanteraren med CTRL+F3. Skapa följande tre namngivna formler;
AnglesDropDownOptions
='Angles for estimation'!$B$8:INDEX('Angles for estimation'!$B$8:$B$1008;PRODUKTSUMMA(--('Angles for estimation'!$B$8:$B$1008<>"")))
CategoriesDropDownOptions
='Categories for estimation'!$B$8:INDEX('Categories for estimation'!$B$8:$B$1008;PRODUKTSUMMA(--('Categories for estimation'!$B$8:$B$1008<>"")))
FundamentalsDropDownOptions
='Fundamentals for estimation'!$B$8:INDEX('Fundamentals for estimation'!$B$8:$B$158;PRODUKTSUMMA(--('Fundamentals for estimation'!$B$8:$B$158<>"")))
Så här ska det se ut när det är klart.
Steg 3
Gå till fliken "Fundfakt-kateg-vinkl" och markera cellområde AC4:AI18.
Välj sedan "Dataverifiering" från menyalternativet "DATA". Välj "Lista" under sektionen "Tillåt" och sen =AnglesDropDownOptions i fältet "Källa:".
Så här ska det se ut.
Under flikarna "Indatameddelande" samt "Felmeddelande" kan du lägga in vad du vill.
Gör samma sak för de övriga två cellområdena på fliken "Fundfakt-kateg-vinkl".
I område Q4:W18 ange Källa: =CategoriesDropDownOptions
Samt i område A4:G18 ange Källa: =FundamentalsDropDownOptions
Nu kan du testköra ditt nya - nästan VBA-fria - Excelark och sen gömma kolumn B på källdataflikarna när allt fungerar som det ska.
Lycka till!