Option Explicit
Sub distchart()
Dim CHARTA As Worksheet, _
CHARTB As Worksheet, _
CALCS As Worksheet, _
OUTPUT As Worksheet, _
ID_Data As Variant, _
ID_Ptr As Long, _
ID_x As Double, _
ID_y As Double, _
Place_Data As Variant, _
Place_Ptr As Long, _
Place_x As Double, _
Place_y As Double
Set CHARTA = Worksheets("A Chart")
Set CHARTB = Worksheets("B Chart")
Set CALCS = Worksheets("Calculation")
Set OUTPUT = Worksheets("output")
ID_Data = CHARTA.Range("a_chart").Value
Place_Data = CHARTB.Range("b_chart").Value
ReDim OutputTable(1 To UBound(ID_Data), 1 To UBound(Place_Data))
For ID_Ptr = 1 To UBound(ID_Data)
ID_x = ID_Data(ID_Ptr, 1)
ID_y = ID_Data(ID_Ptr, 2)
For Place_Ptr = 1 To UBound(Place_Data)
Place_x = Place_Data(Place_Ptr, 1)
Place_y = Place_Data(Place_Ptr, 2)
OutputTable(ID_Ptr, Place_Ptr) = Evaluate("Acos((Cos(Radians(90 - " & ID_x & ")) * Cos(Radians(90 - " & Place_x & ")) + Sin(Radians(90 -" & ID_x & ")) * Sin(Radians(90 - " & Place_x & ")) * Cos(Radians(" & ID_y - Place_y & ")))) * 6371 * 0.6214")
Next Place_Ptr
Next ID_Ptr
OUTPUT.Range("b2").Resize(RowSize:=UBound(ID_Data), ColumnSize:=UBound(Place_Data)).Value = OutputTable
End Sub
A_Chart ='A Chart'!$B$2:INDEX('A Chart'!$C:$C,COUNTA('A Chart'!$C:$C))
B_Chart ='B Chart'!$B$2:INDEX('B Chart'!$C:$C,COUNTA('B Chart'!$C:$C))
Bookmarks