Add this code to your project and see if it works. Go to the VBA editor and make sure you drop that into a new module ...
Public Function CalculateWeightedPoints(ByVal rngData As Range, ByVal strID As String, ByVal dblWeighting As Double) As Double
Dim lngRow As Long, strThisID As String, strParent As String, arrParent() As String, i As Long, objCell As Range
Dim dblParentValue As Double, lngCValueCol As Long, rngCaller As Range, lngWSRow As Long, lngWSCol As Long
Application.Volatile
Set rngCaller = Application.Caller
lngValueCol = rngCaller.Column
arrParent = Split(strID, ".")
' Determine the parent ID.
For i = 0 To UBound(arrParent) - 1
If i > 0 Then strParent = strParent & "."
strParent = strParent & arrParent(i)
Next
' Find the parent value, it will be used to weight the children.
For lngRow = 1 To rngData.Rows.Count
Set objCell = rngData.Cells(lngRow, 1)
strThisID = Trim(rngData.Cells(lngRow, 1))
lngWSRow = objCell.Row
lngWSCol = rngCaller.Column
If strThisID = "" Then Exit For
If strThisID = strParent Then
' Get the value of the parent.
dblParentValue = objCell.Worksheet.Cells(lngWSRow, lngWSCol)
Exit For
End If
Next
On Error Resume Next
Err.Clear
CalculateWeightedPoints = dblWeighting * dblParentValue
If Err.Description <> "" Then
CalculateWeightedPoints = 0
End If
End Function
... then in your data matrix, add the following formula into the cell that you want to calculate the weighted value for. 1 thing, make sure the formula starts from 1.1, not the first WBS. The first WBS needs to have the originating value.
=CalculateWeightedPoints($A$1:D2,A3,C3)
... fill the formula down from there and hopefully it works for you.

Just make sure that the ID (i.e the WBS) needs is in the first column of the range, you have that though so that should be fine.
This image shows the calculated values, I hope it's what you're after.
