- ベストアンサー
同一セル内の3桁の数字を任意の数字に変換し表示
excelの関数を教えて下さい。 同一セル内の3桁の数字(1から8までの数字を使用した3桁;例えば124)を、別のセル内に、関数(12345678をそれぞれ24587613へ変換する関数)で変換された3桁(例えば248)で表示したいのですが、その際に使用する関数を教えてください。エクセル上に表示する数字は1から8までのうちの3桁で、12345678をそれぞれ24587613へ変換したいです。 各セルに1数字の場合はVLOOKUP関数を使用し変換できたのですが、同一セル内に複数数字がある場合の考え方がわかりません。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
◆mshr1962 さんの回答を参考にして、こんな方法はいかがでしょう =SUM(MID("24587613",MID(A1,{1,2,3},1)*1,1)*10^{2,1,0})
その他の回答 (6)
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答番号ANo.2,5です。 更に別の関数を思いつきました。 =IF(AND(SUMPRODUCT(ISNUMBER(FIND(MID(A1,ROW(INDIRECT("Z1:Z3")),1),"12345678"))*1)=3,LEN(A1)=3),SUMPRODUCT(FIND(MID(A1,ROW(INDIRECT("Z1:Z3")),1),"71823654")*10^(3-ROW(INDIRECT("Z1:Z3")))),"")
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
=SUM(FIND(MID(A1,{1,2,3},1),71823654)*10^{2,1,0}) それぞれの桁に分け、71823654の何番目にあるかを探し、くっつける
お礼
迅速な回答ありがとうございます。 参考にさせていただきます。
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答番号ANo.2です。 すいません、先程の関数において、一部「$」を外し忘れていた箇所が御座いましたので、ANo.2の関数は、正しくは次の様なものとなります。 =IF(AND(ISNUMBER(A1),ISERROR(FIND("0",A1)),ISERROR(FIND("9",A1))),IF(AND(INT(A1)=A1,A1>99,A1<999),(LOOKUP(MID(A1,1,1)+0,{1,2,3,4,5,6,7,8;2,4,5,8,7,6,1,3})&LOOKUP(MID(A1,2,1)+0,{1,2,3,4,5,6,7,8;2,4,5,8,7,6,1,3})&LOOKUP(MID(A1,3,1)+0,{1,2,3,4,5,6,7,8;2,4,5,8,7,6,1,3}))+0,""),"") それから、次の様な関数でも、同じ事が出来ます。 =IF(AND(ISNUMBER(A1+MATCH(MID(A1,1,1)+0,{1,2,3,4,5,6,7,8},0)+MATCH(MID(A1,2,1)+0,{1,2,3,4,5,6,7,8},0)+MATCH(MID(A1,3,1)+0,{1,2,3,4,5,6,7,8},0)),LEN(A1)=3),(MATCH(MID(A1,1,1)+0,{7,1,8,2,3,6,5,4},0)&MATCH(MID(A1,2,1)+0,{7,1,8,2,3,6,5,4},0)&MATCH(MID(A1,3,1)+0,{7,1,8,2,3,6,5,4},0))+0,"")
- mshr1962
- ベストアンサー率39% (7417/18945)
これでは駄目ですかね。 A1=124として B1=(MID("24587613",MID(A1,1,1)*1,1)&MID("24587613",MID(A1,2,1)*1,1)&MID("24587613",MID(A1,3,1)*1,1))*1
お礼
迅速な回答ありがとうございます。 大変参考になりました!!
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、元の3桁の数字がA1セルに入力されているものとします。 その場合、変換後の数字を表示させるセルには、次の様な関数を入力されると良いと思います。 =IF(AND(ISNUMBER(A1),ISERROR(FIND("0",$A$1)),ISERROR(FIND("9",$A$1))),IF(AND(INT(A1)=A1,A1>99,A1<999),(LOOKUP(MID(A1,1,1)+0,{1,2,3,4,5,6,7,8;2,4,5,8,7,6,1,3})&LOOKUP(MID(A1,2,1)+0,{1,2,3,4,5,6,7,8;2,4,5,8,7,6,1,3})&LOOKUP(MID(A1,3,1)+0,{1,2,3,4,5,6,7,8;2,4,5,8,7,6,1,3}))+0,""),"")
- misawajp
- ベストアンサー率24% (918/3743)
どのように変換したいのか判りませんが *変換に規則性があれば、その規則を関数で処理 *1000通りのテーブル作成 *1桁の数字→変換した数字がどの桁でも同じであれば、10通りの変換テーブルを作り3桁の数字を桁ごとに分解して変換し合成する *桁ごとに変換テーブルが異なるなら桁ごとの変換テーブルを作り、以下前項
お礼
迅速な回答ありがとうございます。 参考にさせていただきます!!
お礼
複数回答ありがとうございます。 今後関数を使用する際の参考にさせていただきます。 ありがとうございました。