AbsolutePosition represents the top-left corner of the element, not the center.
This means you also have to factor in the AbsoluteSize of the frames:
local Frame1 = script.Parent.C1
local Frame2 = script.Parent.C2
local Marker = script.Parent.Marker
local Center1 = Frame1.AbsolutePosition + (Frame1.AbsoluteSize / 2)
local Center2 = Frame2.AbsolutePosition + (Frame2.AbsoluteSize / 2)
local TargetPos = (Center1 + Center2) * 0.5
Marker.Position = UDim2.fromOffset(TargetPos.X, TargetPos.Y)