• ベストアンサー

同一セル内の3桁の数字を任意の数字に変換し表示

excelの関数を教えて下さい。 同一セル内の3桁の数字(1から8までの数字を使用した3桁;例えば124)を、別のセル内に、関数(12345678をそれぞれ24587613へ変換する関数)で変換された3桁(例えば248)で表示したいのですが、その際に使用する関数を教えてください。エクセル上に表示する数字は1から8までのうちの3桁で、12345678をそれぞれ24587613へ変換したいです。 各セルに1数字の場合はVLOOKUP関数を使用し変換できたのですが、同一セル内に複数数字がある場合の考え方がわかりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆mshr1962 さんの回答を参考にして、こんな方法はいかがでしょう =SUM(MID("24587613",MID(A1,{1,2,3},1)*1,1)*10^{2,1,0})

その他の回答 (6)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 回答番号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")))),"")

papapy
質問者

お礼

複数回答ありがとうございます。 今後関数を使用する際の参考にさせていただきます。 ありがとうございました。

回答No.6

=SUM(FIND(MID(A1,{1,2,3},1),71823654)*10^{2,1,0}) それぞれの桁に分け、71823654の何番目にあるかを探し、くっつける

papapy
質問者

お礼

迅速な回答ありがとうございます。 参考にさせていただきます。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 回答番号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)
回答No.3

これでは駄目ですかね。 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

papapy
質問者

お礼

迅速な回答ありがとうございます。 大変参考になりました!!

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 今仮に、元の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)
回答No.1

どのように変換したいのか判りませんが *変換に規則性があれば、その規則を関数で処理 *1000通りのテーブル作成 *1桁の数字→変換した数字がどの桁でも同じであれば、10通りの変換テーブルを作り3桁の数字を桁ごとに分解して変換し合成する *桁ごとに変換テーブルが異なるなら桁ごとの変換テーブルを作り、以下前項

papapy
質問者

お礼

迅速な回答ありがとうございます。 参考にさせていただきます!!

関連するQ&A