• ベストアンサー

Excelの関数?について

ある順番で0から9までの数が重複することなく並んでいます。 例えば、6723018954だとします。 連続した10個のセルに1つずつ数を入れていくのですが、その時、A1に6を入力すると次のセルに7、その次のセルに2、そしてその次のセルに3、…と入り、またA1に9を入力したときには次のセルに5、その次のセルに4、そしてその次のセルには頭に戻って6、…と入るようにしたいのです。 連続した10個のセルは行方向でも列方向でも構いません。 IF関数を使って分岐させればできないことはないのですが、入れ子が深くなって面倒で、もっと簡単にできる方法はないかと思っています。 ご回答よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

A1  6723018954 質問指定の数字列。 B1の式 =A1&A1 67230189546723018954 作業・ワーク・セルです。 A2:A4に、たとえば 9 2 8 と入れるとする。 ーー B2の式 =MID($B$1,FIND($A2,$B$1)+COLUMN()-1,1)  C列より右にB2の式をJ列まで複写。 B2:J2の式を下方向3行分に複写。 結果 9 5 4 6 7 2 3 0 1 8 2 3 0 1 8 9 5 4 6 7 8 9 5 4 6 7 2 3 0 1 VBAに関心があるので、VBAでやろうとしたが、 小生でも、上記の関数をすぐ思いついたので挙げる。$の付け方だけ注意必要。

kaisaka
質問者

お礼

ご回答ありがとうございます。 考えていた通りうまくできました!

その他の回答 (4)

回答No.5

例えば、B1に、 =VALUE(MID("67230189546", FIND(A1,"6723018954")+1,1)) と入力、J1までコピペとか。

kaisaka
質問者

お礼

ご回答ありがとうございました。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

>IF関数を使って分岐させればできないことはないのですが、入れ子が深くなって面倒で、もっと簡単にできる方法はないかと思っています。 INDEX関数で目的通りの抽出ができます。 但し、抽出する位置を割り出すにはMATCH関数とMOD関数を組み合わせます。 添付画像の配置を例としてA6へ任意の値を入力するものとしてB6セルへ次の数式を設定します。 =IF(A6="","",INDEX($A$1:$J$1,MOD(MATCH(A6,$A$1:$J$1,0),10)+1)) B6セルを右へJ6セルまでオートフィルコピーすれば完了です。

kaisaka
質問者

お礼

ご回答ありがとうございます。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.2

次の下準備を実行してください。 1.例えば、K列全体を選択 2.Ctrl+1(セルの書式設定)を実行 3.表示形式]タブ上の[分類]で“文字列”を選択して[OK]をチョーン 4.範囲 K1:K10 の上から 6、7、2、3、0、1、8、9、5、4 を入力 5.範囲 K1:K10 を選択 6.Alt+FT(Excelのオプション)を実行 7.左側のメニューで[詳細設定]をチョーン 8.画面の下部に隠れている[全般]背下の[ユーザー設定リストの編集]をチョーン 9.右側下段のボックス内に「$K$1:$K$10」と表示されていることを確認(その通りになっていなければ、その右端にある将棋盤アイコンをツンした後で、ステップ5を実行すれば好い。「$K$1:$K$10」になったことを確認したら将棋盤を再度ツン) 10.[インポート]⇒[OK]⇒[OK]を実行 此処からが本番ネ 11.「連続した10個のセルに1つずつ数を入れていく」シートを開く 12.文字列に書式設定した任意のセルに任意の1桁数字を入力 13.このセルを上下左右にオートフィルするだけ

kaisaka
質問者

お礼

ご回答ありがとうございます。

  • mdmp2
  • ベストアンサー率55% (438/787)
回答No.1

MID関数しかないようです。 =MID(文字列,開始位置, 文字数) ・文字列は、6723018954 が入力されたセルを指定 ・開始位置は 1~10 ・文字数は 1 10個のセルにそれぞれ、数式を入力したら、それらをまとめてコピーし、次の10個の場所にペースト こうして、10個のセルにバラバラに表示されている数値は、数式なので元の6723018954 が削除されると、なくなります。(エラーになる) 数式から値に変換するには、 ・全範囲を選択して、コピー ・同じ場所に、値としてペースト

kaisaka
質問者

お礼

ご回答ありがとうございます。

関連するQ&A