実現したいこと
match関数を用いた条件検索をしているのですが、
○○1、○○2、……、○○80という条件で表を作成している中で、
○○10以降が検索条件に上がってこないため、
○○10、……、○○80までが検索条件として該当するようにしたい。
前提
以前皆様のお力をお借りし、2列でまとめられているExcelの表から、
該当する文字列を検索条件として、複数列の表に変換するマクロを使用しています。
発生している問題・エラーメッセージ
検索条件に○○1、○○2、……、○○80という文字+数値の形の文言を使用しているのですが、○○10以降が○○1のセルに上書きされてしまい、正しく抽出することができません。
また、○○10も抽出が上手くできておらず、文字の後の数字が2桁になると、1桁目のみ判断されてしまっている為、○○10以降が正しいセルへと抽出されません。
該当のソースコード
vba
1Sub転記と並び替え() 2 Dim ws1 As Worksheet 3 Set ws1 = Sheets("1") 4 Dim ws2 As Worksheet 5 Set ws2 = Sheets("2") 6 7 Dim i As Long, r As Long, c As Long 8 With ws1 9 On Error Resume Next 10 For i = 2 To .Range("B" & Rows.Count).End(xlUp).Row 11 r = WorksheetFunction.Match(.Cells(i, 1), ws2.Range("A:A"), 0) 12 If Err.Number = 0 Then 13 c = MyMatch(.Cells(i, 2), Array("○○ 1", "○○ 2", "○○ 3", "○○ 4", "○○ 5", "○○ 6", "○○ 7", "○○ 8", "○○ 9", "○○ 10", _ 14 "○○ 11", "○○ 12", "○○ 13", "○○ 14", "○○ 15", "○○ 16", "○○ 17", "○○ 18", "○○ 19", "○○ 20", _ 15 "○○ 21", "○○ 22", "○○ 23", "○○ 24", "○○ 25", "○○ 26", "○○ 27", "○○ 28", "○○ 29", "○○ 30", _ 16 "○○ 31", "○○ 32", "○○ 33", "○○ 34", "○○ 35", "○○ 36", "○○ 37", "○○ 38", "○○ 39", "○○ 40", _ 17 "○○ 41", "○○ 42", "○○ 43", "○○ 44", "○○ 45", "○○ 46", "○○ 47", "○○ 48", "○○ 49", "○○ 50", _ 18 "○○ 51", "○○ 52", "○○ 53", "○○ 54", "○○ 55", "○○ 56", "○○ 57", "○○ 58", "○○ 59", "○○ 60", _ 19 "○○ 61", "○○ 62", "○○ 63", "○○ 64", "○○ 65", "○○ 66", "○○ 67", "○○ 68", "○○ 69", "○○ 70", _ 20 "○○ 71", "○○ 72", "○○ 73", "○○ 74", "○○ 75", "○○ 76", "○○ 77", "○○ 78", "○○ 79", "○○ 80")) 21 If c > 0 Then ws2.Cells(r, c + 1).Value = .Cells(i, 2) 22 End If 23 Next 24 On Error GoTo 0 25 End With 26End Sub 27 28Public Function MyMatch(v As String, ary) As Long 29 Dim i As Long 30 For i = 0 To UBound(ary) 31 If v Like "*" & ary(i) & "*" Then 32 MyMatch = i + 1 33 34 35 Exit For 36 End If 37 Next 38End Function 39 40 41
「検査範囲の引数の値は、昇順の並べ替えでは、1 ~ 9、A ~ Z、あ~ん、FALSE ~ TRUE の順に配置されます。」とMicrosoftサポートには記載があったですが、
「1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20」という並びが
「1,10,11,12,13,14,15,16,17,18,19,2,20,3,4,5,6,7,8,9」として判断されてしまうということですよね…?
正しく「1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20」と認識させるにはどうすればようのでしょうか…?
数値を変えてみたりしたのですが、状況が改善されず、
お手数ですが、参考となるURLやコード等をご教授いただきたく質問させていただきました。
何卒よろしくお願い申し上げます。
※追記
tatsu99様
画像掲載させていただきます。
分かりにくくて申し訳ございません。
※シート2の一部表記が間違っていましたので、修正したものを再掲載させていただきました。
となってしまうのですが、正しくは下記のようにしたいです。

回答1件
あなたの回答
tips
プレビュー