U prilogu su oba rešenja: sa FilterXML i korisnički definisanom funkcijom SplitString.
Ova funkcija ima dva argumenta separator - znak po kojem se vrši razdvajanje i text string u kome se traži sep
Rezultat koji vraća je niz stringova.
Code:
Option Explicit
Public Function SplitString(sep As String, text As String) As Variant
' Function which split provided text by separator sep
' and return an array of strings
'
' P.Jovanovic for elitesecurity.org
'
Dim start As Integer, pos As Integer
' Declare array and dimension
Dim arr() As String, N As Integer
Dim Item As String
N = 0
start = 1
pos = InStr(start, text, sep, 1)
' Loop through text and find sep
While pos > 0
ReDim Preserve arr(N) ' add emp ty element to array
Item = Mid(text, start, pos - start)
arr(N) = Trim(Item) ' set empty element to text part
start = pos + 1 ' new position to search for separator
pos = InStr(start, text, sep, 1)
N = N + 1
Wend
' Last item
Item = Mid(text, start, Len(text) - start + 1)
ReDim Preserve arr(N)
arr(N) = Trim(Item)
SplitString = arr
End Function
Dalje ovu funkciju možeš da iskoristiš u formuli
Code:
=SUM(IFNA(VLOOKUP(SplitString(",", G5),$B$5:$C$9,2, FALSE),0))
Rešenje je slično kao za FormatXML - na razdvojene delove koristiš VLOOKUP da nađeš cene i onda sabereš. Jedino sam još ubacio IFNA - da se oni koji nisu nađeni u cenovnik tabeli uzimaju sa 0. Ovo ne treba kao array formula - može običan SUM.
Nije to loše Rembrante, samo što ne bi dodao još malo boje?