- ベストアンサー
ExcelでIDを変更するためのツールを作成する方法
- Excelを使って、数字4~5桁のID番号を変更するツールを作成する方法について教えてください。
- 複数のIDを入力しても対応できるようにしたいです。
- 関数のみでツールを作成する方法や、VBやマクロを使用する方法について詳しく教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例えば、参考画像のように ・$AA$3:$AB$23 の位置に対応表がある。 ・B3セルに変換前の文字列を入力する。 ・C3セルに変換後の文字列を表示する。 とします。 --------------------------------------------------------------------- ●数式だけでやる場合(1度に変換する要素数は10個以内) C3セル:結果を結合する =REPLACE(CONCATENATE(N3,O3,P3,Q3,R3,S3,T3,U3,V3,W3),1,1,"") とする。 D3セル:各要素を切り出す =VALUE(REPLACE(LEFT($B3,FIND("†",SUBSTITUTE($B3&",",",","†",COLUMN()-COLUMN($C3)))-1),1,FIND("†",SUBSTITUTE(","&$B3,",","†",COLUMN()-COLUMN($C3)))-1,"")) としてM3セルまで右方にフィル。 N3セル:各要素を置き換える =IF(ISERROR(D3),"",","&IF(ISNA(VLOOKUP(D3,INDEX(VALUE($AA$3:$AB$23),),2,0)),D3,VLOOKUP(D3,INDEX(VALUE($AA$3:$AB$23),),2,0))) としてW3セルまで右方にフィル。 --------------------------------------------------------------------- ●VBA(ユーザー定義関数)を使う場合(要素数無制限) 下記のようなコードを設置して、 C3セル =sample(B3,AA3:AB23) とする。 '--------------------------↓ ココカラ ↓-------------------------- Function Sample(ByVal ogStr As String, ByVal myRng As Range) As String Dim myAry As Variant Dim myTbl As Variant Dim i As Long Dim j As Long myAry = Split(ogStr, ",") myTbl = myRng.Value For i = 1 To UBound(myTbl) myTbl(i, 1) = CStr(myTbl(i, 1)) myTbl(i, 2) = CStr(myTbl(i, 2)) Next i For i = 0 To UBound(myAry) For j = 1 To UBound(myTbl) If myAry(i) = myTbl(j, 1) Then myAry(i) = myTbl(j, 2) Exit For End If Next j Next i Sample = Join(myAry, ",") End Function '--------------------------↑ ココマデ ↑-------------------------- Excel2003で動作確認。以上ご参考まで。
その他の回答 (2)
- web2525
- ベストアンサー率42% (1219/2850)
>1000と入力されたら1001、2000と入力されたら2001、という感じに、入力された数字に対応した、決められた数字に変換してほしいのです。 法則が無いのであれば、変換の対応表などは有るのでしょうか? 方法の一例として A1セル内容をC1セルにコピー C1セルを対象に【区切り位置】で区切り文字【、】データを一旦分割 VLOOKUPなどを利用し変換対応表から変換データを抽出 G1セルに=C1&"、"&D1&"、"&E1&"、"&F1 G1セルをコピーしてB1セルに値のみ貼り付け C1セルからG1セルを削除 上記動作をマクロの記録でマクロ化するとかで可能。 変換法則も変換一覧表も無いようであれば実現不可能です。
補足
変換のための一覧表なら、EXCELベースのものがあります。 一覧表があれば、可能なのでしょうか。
- web2525
- ベストアンサー率42% (1219/2850)
ご質問の内容が分かりません、補足ください A列に"1000,1001,1005,1009"と言うのは A1セルに"1000,1001,1005,1009"と入力されていると言う事ですか? B列に"1001,1002,1010,1020"と変換とありますが、 変換の法則は?
補足
質問がわかりにくくて申し訳ありません。 >A列に"1000,1001,1005,1009"と言うのは >A1セルに"1000,1001,1005,1009"と入力されていると言う事ですか? はい、そうです。 >B列に"1001,1002,1010,1020"と変換とありますが、 >変換の法則は? 法則は特にありません。 とある数字が入力されたら、その数字に対応した決められた数字に 変換してくれる、単純な表を作りたいのです。 たとえば、1000と入力されたら1001、2000と入力されたら2001、という 感じに、入力された数字に対応した、決められた数字に変換してほしい のです。 よろしくお願いします。
お礼
ありがとうございました。 後日試してみます。