[[20031010140625]] 『連続した数字を出す方法は』(山田) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『連続した数字を出す方法は』(山田)

 想像して下さい!!
 A5セル〜A19セルまでの間に1〜15の数字があるとします。
 そこでスピンボタンがA1セルにリンクしている設定でA1セルの変動により
 2〜16とか3〜17など・・・16〜30という具合に、番号が入替わるようにしたい訳ですが、
 (現在、スピンボタンの設定は、
 最大値15、最小値1という設定にし、リンク先はA1にしています。)
 そこでA5セルに=IF(A1=8,8,IF(A1=7,7,IF(A1=6,6,IF(A1=5,5,IF(A1=4,4,IF(A1=3,3,
                  IF(A1=2,2IF(A1=1,1)))))))) と入力し、
 A6セルには
        同様に=IF(A1=9,10,IF(A1=8,9,IF(A1=7,8,IF(A1=6,7,IF(A1=5,6,IF(A1=4,5,
                  IF(A1=3,4,IF(A1=2,3,IF(A1=1,2)))))))) と式を入力しています。
 以下同様!! 
 早い話が、A5〜A19にある連続した数字が設定変更により
 時には1〜15、2〜16、3〜17・・・16〜30と表示させる方法を教えて頂きたいのですが・・・。
 ちなみに、先に書いた式では一セル内に『IF(A1=○,△,』が8つぐらいしか入力できず
 それ以上は入力不可能になってしまいます。どうか宜しくお願い致します。


 まず、IF関数の使用法ですが、IFのネスト構造は7つまでに制限されています。
7つを越えたIF文を使用するとエラーになります。
[MacXL] 埋め込まれた IF 式でエラーが発生する
http://support.microsoft.com/default.aspx?scid=kb;ja;187584&Product=excelJPN

 本題ですが、A1が1〜15の値になり、A5〜A19にA1の値から連番で数字を表示したいと
いうことでよろしいのでしょうか?もし、以上のようなことでしたら、
・A5に =A1
・A6に =A5+1
・A6をA7〜A19にコピー
で良いように思いますが、違いますでしょうか?私はスピンボタンを使用したことが
ありませんので、もしかしたら勘違いしているかもしれません。(Yosh!)


 yosh!さんのでOKですね。
 スピンボタンでの数字の増減は、単純に 1 なのですよね。
 =if()関数を使う必要が無いように思えます。
 (EUREKA)


 いつも達人様方の技に感心しながら拝見しております。本題から外れる話で恐縮ですが

 >先に書いた式では一セル内に『IF(A1=○,△,』が8つぐらいしか入力できず
 それ以上は入力不可能になってしまいます。

 自分の場合、『無理やり倍ネスト』させています。上記の例で言うと、

 =IF(A1=1,IF(A1=2,2,IF(A1=3,3,IF(A1=4,4,IF(A1=5,5,IF(A1=6,6,IF(A1=7,7,1)))))),IF(A1=8,8,IF(A1=9,9,IF(A1=10,10,IF(A1=11,11,IF(A1=12,12,IF(A1=13,13,14)))))))

 ってな感じで使ってますが、エクセル的には問題あるのだろうか?
 質問と関係ない話ですいませんれした。   (yama)


 あれ?上記の式では計算されません。削除してくださーい。 (yama)


 たびたびすみません。
 =IF(A1<=7,IF(A1=1,1,IF(A1=2,2,IF(A1=3,3,IF(A1=4,4,IF(A1=5,5,IF(A1=6,6,"")))))),IF(A1=7,7,IF(A1=8,8,IF(A1=9,9,IF(A1=10,10,IF(A1=11,11,IF(A1=12,12,IF(A1=13,13,14))))))))   でした。  (yama)

 yamaさんへ、Yosh!です。

 エクセル的には、使用に問題がなければそれで良いのではないかと思います。
↓ただし、数式が長すぎると下記のような問題はあるらしいです。
[XL2002] ワークシート関数をネストして使用した際メッセージが表示される
http://support.microsoft.com/default.aspx?scid=kb;ja;436751&Product=excelJPN

 使う立場から考えた場合だと、数式は簡潔なほうが良いだろうと思います。
上記の式のような場合でも、別に表を作成してVLOOKUP等を使用する方が、
後で要素が追加になったりした時に、メンテナンスが楽な場合があるのではないかと思います。(Yosh!)

 皆様、有難う御座います。
 上記の説明では不足がありそうなので追加文として、
 sheet2のA5〜A34に1〜30の番号を書き、B5〜B34に細かいデータを入力してあります。
 そこでsheet1の番号を操作する事によりsheet2の必要個所(B列)のみsheet1のB列へ
 データを持ってくるという形をとっています。
 ゆえに関数式を利用していた訳です。
 まだ説明が足らないような気がしますが宜しくお願い致します。
 (yama)さんのはだめらしいですが、それに近い考えによりできる方法はありませんか?
 (山田)

 横からすいません。Yosh!さんが最初に提案された方法で良いのではないでしょうか?
 >・・=IF(A1=8,8,IF(A1=7,7,IF(A1=6,6,IF(A1=5,5,IF(A1=4,4,IF(A1=3,3,IF(A1=2,2IF(A1=1,1)))))))) 
どう見ても=A1だけでいいような気がします。
 >・・=IF(A1=9,10,IF(A1=8,9,IF(A1=7,8,IF(A1=6,7,IF(A1=5,6,IF(A1=4,5,IF(A1=3,4,IF(A1=2,3,IF(A1=1,2)))))))) 
これも=A1+1で事足りるような気がします。勘違いでしょうか?(ケン)


 私も =A1でいいんじゃないかと昨夜書き込みしましたが、なぜか削除されたkuroで〜す。
 ネストさせることがご要望のようなので、数値なら次の方法でやれますってことで。

=(A1=1)*1+(A1=2)*2+(A1=3)*3+(A1=4)*4+(A1=5)*5+(A1=6)*6+(A1=7)*7+(A1=8)*8+(A1=9)*9+(A1=10)*10 ・・・・以下延々と続く

=(A1=1)*2+(A1=2)*3 ・・・・以下上に同じく延々と続く


 A1が1〜15の値になり、A5〜A19にA1の値から連番で数字を表示したいと
いう前提条件の部分は間違いではないのですよね?
・A1が1の時 、 A5が1 、A6が2 、A7が3 、...、A19が15
・A1が2の時 、 A5が2 、A6が3 、A7が4 、...、A19が16
・A1が15の時、 A5が15、A6が16、A7が17、...、A19が29
というような値になるという事で良いのですよね?

 > ゆえに関数式を利用していた訳です。
この"ゆえに"の部分の理由が、もう少し明確になると良いのですけど。

 Sheet1のB5〜B19に、Sheet2のB5〜B34からデータを表示する為の数式が
入っていると思うのですが、その数式がA列がIFのような条件式でなければ
ならない理由になっているという事でしょうか?

 内容から推測すると、=VLOOKUP(A5,Sheet2!$A$5:$B$34,2) のような式が
B5〜B19に入ると思われるのですが違いますか?
・もし上記のようにVLOOKUPを使用したような式なら、A5が =A1 のような式でも
 B5にSheet2からデータを表示する事に問題はないと思いますので試してみてください。
 試した結果に何かの問題があれば、どのような不具合があるのかを報告して頂く事で
 A列の式を見直すヒントになるかもしれません。
・上記のようにVLOOKUP等を使用しないなら、どのような方法でSheet2の
 データを表示させるのかを教えていただくことは出来ますでしょうか?(Yosh!)

皆様、色々ご教授頂き有難う御座います。私のやろうとしていた事は、A列に順位をB列に人名をC列に点数をという具合に表示させるよう考えていました。ちなみにsheet2には1〜30までの番号と人名と点数が記入されていて、並べ替え機能により点数が上位より並べ変わる作業をさせています。しかしこれ(sheet2)は裏画面であり、事実見る画面はsheet1であるわけです。そこで質問した連続した番号の記入できる関数を聞くことができれば人名の部分についても応用できるかと思い質問させてもらいました。例えば『=IF(A1=1,sheet2!A5,IF(A1=,2,sheet2!A6』てな感じで・・・。でも結論から言ってできないようですね。混乱させてすみませんでした。(山田)


 衝突しました。
 ちょっと、待ってよ〜。てっ感じです。
>でも結論から言ってできないようですね
そんな事はないと思います。Yosh!さんも聞かれていますがIFにこだわる理由があるのですか?
例えばこんなのはどうでしょうか?=INDIRECT("Sheet2!A"&A1+4)これでも上の例えばは
出来ます。何にしてもあきらめるのは、ちょっと早いのではないでしょうか?(ケン)

 (通りすがりの者)さん、(ケン)さん、フォローありがとうございます。

 A5〜A19にA1で指定した所からの順位、B5〜B19にSheet2から人名、C5〜C19にSheet2から点数を表示。
Sheet2は順位順に並べ替えがしてある、という事ですね?
Sheet2のレイアウトは A5〜A34が番号、B5〜B34が人名、C5〜C34が点数ですね?

 ・A列は最初に書いた、A5に=A1、A6にA5+1で良いです。
 ・B5に(通りすがりの者)さんの式を拝借して、=INDEX(Sheet2!$A$5:$C$34,$A5,COLUMN())
 ・B5をC19までの範囲にコピー
これで出来るのではないかと思います。(Yosh!)

 おもしろそうなので一言。

 >IFにこだわる
 というよりは、IFを使わないと自分のやりたいことが実現できないと
 思っているのでしょう。
 そういう時はズバリ言うべきです。
 猫だって後退(後ずさり)すると(違)。
 (ramrun)正直スマンかった

 そう、そこなんですよ。
 ご質問された方が、別なアプローチでも課題が解決できるんだなと、
 思考を複眼的にめぐらしていただくと、案外簡単に片付いちゃう事だってあります。

 スピンボタンと=VLOOKUP(XXXXXXX,FALSE)を使えば、解決なんじゃないかな。
 Sheet2は並べ替えをして順位を改めて書き直すんでしょうし。
 (EUREKA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.