Assuming the data values in Column "G" are all are constants (that is, there are no formulas in Column G), this macro should do what you want...

Code:
Sub MarkPositionNumbers()
  Dim X As Long, LastUniqueRow As Long
  Const DataColumn As String = "G"
  Const UniqueColumn As String = "A"
  Const FirstUniqueRow As Long = 2
  LastUniqueRow = Cells(Rows.Count, UniqueColumn).End(xlUp).Row
  On Error Resume Next
  Application.ScreenUpdating = False
  For X = FirstUniqueRow To LastUniqueRow
    With Columns(DataColumn)
      .Replace Cells(X, UniqueColumn).Value, "#N/A", xlWhole
      With .SpecialCells(xlConstants, xlErrors)
        .Offset(, 1).Value = X - FirstUniqueRow + 1
        .Value = Cells(X, UniqueColumn).Value
      End With
    End With
  Next
  Application.ScreenUpdating = True
End Sub
However, with the number of unique and data values being processed, I do not have a feel for how long it will take for this macro to execute.

Note: You should look at the three Const statements and make sure the values I assign to them matches your actual setup.