やりたいことが全てくみ取れているか自信がないですが、こんな感じでしょうか。
Sub test()
Dim s1 As String, rng1 As Range
s1 = Range("G3").Text
Set rng1 = Range("V9:SN9")
Dim c As Integer
Dim i As Long
Dim ix As Long
Dim ary1 As Variant 'スペルミス修正(Vriant -> Variant)
ary1 = rng1 '配列に格納
'For i = 1 To 10000 'このループは何のため?
'ix = 22 '不要?
For ix = LBound(ary1, 2) To UBound(ary1, 2) 'ary1は二次元配列でループに使うのは二次元めの下限、上限
If CDate(ary1(1, ix)) = CDate(s1) Then 'ary1の先頭は(9,22)ではなく(1,1) 比較の仕方も変更
c = rng1.Cells(1, ix).Column 'スペルミス修正(Colmun -> Column)
Exit For '一致したらループを抜ける?
End If
Next
' Next
End Sub
もしくは、仕様から推察するとこういう感じにする手もありそうです。
Sub test2()
Dim c As Integer, rng1 As Range, rng2 As Range
Set rng1 = Range("G3")
Set rng2 = Range("V9")
c = rng2.Column + (rng1.Value - rng2.Value)
End Sub
Sub test3()
Dim ix As Long, c As Integer
ix = WorksheetFunction.Match(Range("G3"), Range("V9:SN9"), False)
c = Range("V9:SN9").Cells(1, ix).Column
MsgBox c
End Sub
Like!