• ベストアンサー

こんなときは何関数をどう設定すれば・・・?

2007にて次のような表を作成しています。(簡略化) 列A B C ・・H / I J K ・・P / Q 1行 9 5 0・・ / 0 6 1・・ / 016・・ 2行 7 9 7・・ / 0 2 0・・ / 002・・ 列A-Hに各セル1個ずつの数字を入れた計8桁のデータがあります。 このデータを検証するにあたり、以前、代表番号制という考え方をご教示いただきそれを実践しています。 時間で24時の次は0時という考え方のように、9の次は10ではなく0に戻るという考え方です。 これに基づき、一桁目(A列の数字)が必ず0から始まるように換算したものを列Iに(1に9を加えるか、1を減じるかで0になるので以下B-H に同数の加減したものをそれぞれJ-Pに)入力しています。 さらに、I-Pの各数を昇順に8桁表示となるようQ に入れています。 これらを手作業でやっているのですが、ある桁のところで加減をまちがえたり、昇順で入力したつもりが順番がくるっていたりではかどりません。 そこでお尋ねしたいのは、列Aに対し列I が加減されたのと同様の割合で、B-H に対応するものをJ-Pに結果表示する方法はありますか? セル I に=A1-A1(必ず0となるので)としたのですが、J-P にそれを適用させる方法があるのかどうかもわかりません。 (例えば、4+9が13ではなく3となる方法があればよいのですが、-10を入れると計算結果が一桁のときにおかしくなります) 「計算結果が一桁の場合はそのまま、二桁の場合は下一桁のみを」という意味を関数に入れるとしたら引数というところにはどんな数字が入るのだろう、など調べてみたのですがムリかな?という結論に達しました。 また、I-Pの結果をQに昇順表示するのは手作業以外に方法はありませんか? これも I-P の範囲で少ない順から表示する、という関数がありそうな気もするのですが・・・。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 (1)I1に=IF($A1<>"",0,"") (2)J1に=IF($A1<>"",MOD(10-$A1+B1,10),"") (3)Q1に=SMALL(I2:P2,1)&SMALL(I2:P2,2)&SMALL(I2:P2,2)&SMALL(I2:P2,3)&SMALL(I2:P2,4)&SMALL(I2:P2,5)&SMALL(I2:P2,6)&SMALL(I2:P2,7)&SMALL(I2:P2,8) (4)I1:Q1範囲を選択し、下方向にコピー

enimy
質問者

お礼

一気に解決できそうな方法があったのですね。やっと1万行ほどやったのですが、のこり約7倍が早くできそうです。 ありがとうございました。

その他の回答 (2)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

> I-P の範囲で少ない順から表示する =SMALL(I1:P1,1)&SMALL(I1:P1,2)・・・いか必要な分だけ続く でいかがでしょう

enimy
質問者

お礼

私の持っている本にはSMALLという関数はありませんでした。 このぶんだと、ないと思っている素数だけを抜き出す関数もあるかも知れないので調べてみることにします。 ありがとうございました。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

> 例えば、4+9が13ではなく3となる方法があればよいのですが =MOD(計算式,10) でできますよ

enimy
質問者

お礼

これで、例えば3+5で8となる場合も適用できればと思います。 早速やってみることにします。 ありがとうございます。

関連するQ&A