- ベストアンサー
連続した整数を返す関数はあるでしょうか
人の名前を入力した隣りのセルにだけ、上の人から順に1,2,3…と自動的に番号を振っていきたいのですが、ちょうどいい関数が分からなくて困っています。 10まで数字が振れればOKなんですが… 乱数を発生させて、上から順に1,2,3…と並ぶようにするとか、いろいろやってみたんですがうまくできません。(数が重複してしまったり) 何か良い関数はないでしょうか・・
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
名前がA列の1行目からあると仮定すると、カウントしたいセルに =IF(A1="","",COUNTA(A$1:A1)) として、必要な分だけ下にコピー。 11人以上名前があってもカウントしますので、10人まで出止めたい場合はもう一工夫必要です。
その他の回答 (8)
- goowon
- ベストアンサー率39% (131/328)
■簡単に列を増やして考えました。 A B C D 1 山田 1 1 1 2 0 1 3 鈴木 1 2 2 4 田中 1 3 3 ■B・C・D列式はコピーでOKです。 B1式 =if(A1="",0,1) B2式 =if(A2="",0,1) B3式 =if(A3="",0,1) B4式 =if(A4="",0,1) C1式 =C1 C2式 =C2+C1 C3式 =C2+C3 C4式 =C3+C4 D1式 =if(B1=0,"",C1) D2式 =if(B2="",0,C2) D3式 =if(B3=0,"",C1) D4式 =if(B4="",0,C2) 関数も良いですが列を増やして考える方法あります。 B・C列はダミーですので、列表示を表示しないにしたら良いと思います。
お礼
こういう方法もあるのですね、とても勉強になりました。教えていただけて感謝致します。お礼が遅くなり申し訳ありませんでした。 この場をお借りして皆様ありがとうございました。心の中で皆様に20ポイントをつけさせていただきます。
- kamejiro
- ベストアンサー率28% (136/479)
こんなことでしょうか。 A B C 1 佐藤 =IF(A1="出勤",COUNTIF(A$1:A1,"出勤"),"") 2 出勤 山田 =IF(A2="出勤",COUNTIF(A$1:A2,"出勤"),"") 3 鈴木 =IF(A3="出勤",COUNTIF(A$1:A3,"出勤"),"") 4 出勤 磯部 =IF(A4="出勤",COUNTIF(A$1:A4,"出勤"),"") 5 出勤 山下 =IF(A5="出勤",COUNTIF(A$1:A5,"出勤"),"") 6 出勤 山本 =IF(A6="出勤",COUNTIF(A$1:A6,"出勤"),"") 7 木下 =IF(A7="出勤",COUNTIF(A$1:A7,"出勤"),"") 8 出勤 石川 =IF(A8="出勤",COUNTIF(A$1:A8,"出勤"),"") 9 磯野 =IF(A9="出勤",COUNTIF(A$1:A9,"出勤"),"") 10 出勤 福井 =IF(A10="出勤",COUNTIF(A$1:A10,"出勤"),"") フォントサイズの関係で桁ズレはあるかと思うのですが、ご自宅でお試し下さい。
お礼
kamejiro様たびたび来ていただいて本当にありがとうございます。お礼が遅くなって申し訳ありません。この方法も試しましたがうまくできました。本当に助かりました。教えていただけて感謝致します。
- imogasi
- ベストアンサー率27% (4737/17069)
>人の名前を入力した隣りのセル 「人の名前」かどうかは、どうして判断するのですか。 ある列に色々の種類のデータが入っていると、氏名の判別は難しい。 ある列に入力するのは、氏名だけで、1人分のデータ行には1行にのみ名前が入っていて、他の行は空白ですか。 (例)山田 太郎 135ー0021 25才 千代田区 神田1-1 木下 吉朗 234-1111 これは補足のどこかに書いてあれば、すみません。 ーーーーー 上記の場合、たとえば C列のC2に =IF(A2<>"",MAX($C$1:C1)+1,"") と入れて下に複写すればよい。
お礼
お礼が遅れてしまって申し訳ありません。大変参考になりました。詳しく教えて頂き感謝いたします。ありがとうございました。
- sero
- ベストアンサー率47% (916/1944)
何かの役に立つかもしれないので、「S」という文字しかカウントしたくない場合も紹介しておきます。 =IF(A1="S",COUNTIF(A$1:A1,"S"),"") 大文字小文字は問いませんが、上記の式では半角の「S」しか反応しません。 OR関数の利用等で全角にも対応する式は作れます。
お礼
お礼が遅くなってしまい申し訳ありません、最初に教えていただいた方法でうまくいきました。ありがとうございます。この方法も活用できそうです。是非覚えておきたいです。何度も教えに来ていただいて本当に感謝いたします。ありがとうございました。
- sero
- ベストアンサー率47% (916/1944)
B列の人の名前は無関係という事ですね。 A列に「S」と入力してある行だけ、上から順に整数を表示という事なので、No1の式がそのまま使えます。 C1セルにNo1の式を入れて、必要数下方向へコピーすればOK。 ちなみに、「COUNTA」は、ブランク以外のセルをカウントする関数です。 (「S」に限らず、セルに何かが入力されればカウントの対象になります)
お礼
seroさまでした、すみません、(><)急いでてダメですね。。
補足
7marineさま、皆様、たびたびありがとうございます。勤務時間がきてしまいましたので、今日帰宅しましたらすぐやってみたいと思います。アドバイスをありがとうございます。
- 7marine
- ベストアンサー率36% (59/160)
No3です。 No1ではないですが、 列を二つ使用して良いなら簡単にできそうです 一列目(列幅を0にして非表示) =if(隣のセル="",0,1) ←一行目 =if(隣のセル="",上のセル,上のセル+1) ←二行目以降 二列目 =if(隣のセル="","",一列目のセル) どうでしょう?
お礼
ありがとうございました。この方法でもうまくいきました。度々教えていただいて本当に感謝します。
補足
7marineさまたびたびありがとうございます。勤務時間がきてしまいましたので、今日帰宅しましたらすぐやってみたいと思います。アドバイスをありがとうございます。
- 7marine
- ベストアンサー率36% (59/160)
上の人とはセルの場所のことですか? 普通に =if(隣のセル="","",1) =if(隣のセル="","",2) =if(隣のセル="","",3) じゃダメ? 10まで打つのもいやなら =if(隣のセル="","",1) =if(隣のセル="","",上のセル+1) ←2番目以降 とか 勘違いならすいません
お礼
ありがとうございました。お礼が遅れてしまい申し訳ありません。
補足
すぐにアドバイスをいただけてありがとうごさいます。 下の補足の補足なのですが、セルB1からB10まで、10人、人が並んでいる表で、A列の出欠欄に、出勤の「S」を入れた人にだけ、上から順に番号を自動的に振りたいのですが、 =IF(A1="S",(INT(RAND()*10)+1),"") などなど、、いろいろ考えたのですが、数字が重複したりして、うまくかず、もっとぴったりくる関数があるかなと、探しているのですが、、
- kamejiro
- ベストアンサー率28% (136/479)
関数ではありませんが、 方法1 A1のセルに 1 A2のセルに =A1+1 と入れて A3~A10のセルに A2の計算式をコピーし貼付をする。 方法2 A1のセルに 1 A2のセルに 2 と入れて A1とA2の両方のセルをアクティブにする A2のセルの右下までマウスポインタを合わせると、+に表記が変わります。 そのままA10のセルまでドラッグする。 で、いかがでしょうか。
お礼
kamejiroさま、大変失礼しました。「NO1さまもこちらをご覧になってください…」と書きたかったのですが、すみません。アドバイスありがとうございます。大変助かります。
補足
ありがとうございます、補足させていただきたいのですが、NO1さま、すみません、補足ボタンが出てこないので、こちらをご覧になってください) セルA1に、出勤か否か、 セルB1に、人の名前、 セルC1に、「もしセルA1がS(出勤)ならば、1を入れる、もし空白ならば、何も入れない」 というふうにしたいのですが、歯が抜けたようにお休みの人が出てくるので、そこを飛ばして順番に番号が入るようにしたいのですが、、 うまく説明できなくてすみません、、
補足
ありがとうございます、大変助かります。 人が休みのところはカウントせずに空白にして、 次の人に番号を割り振れるようにしたいのですが、 もしまだご覧になっていましたら、ちょっとお待ちいただけますか、もう少し補足しますので、、