プロが教える店舗&オフィスのセキュリティ対策術

エクセル2000を使用しています。

C列に文具名が入力されている表があります。

別のシートにある約500種類の文具一覧の中から、
毎月末に、ある条件を満たした文具名だけをC列に抽出しています。
月によってC列に抽出される文具名の数は変動します。

各文具名のA列には1,2,3,4の連番を、
B列には前半分の行に1,3,5,7…を、
後ろ半分の行には2,4,6,8…を入力したいのですが、
自動で入力する方法があれば教えていただけないでしょうか。

A列  B列  C列
 1   1  えんぴつ
 2   3  消しゴム
 3   5  三角定規
 4   7  コンパス
 5   2  下敷き
 6   4  ボールペン
 7   6  ノート
 8   8 セロハンテープ

上の例では文具が8個ですので、
A列は1~8
B列は半分の4行目までは1,3,5,7
5行目からは2,4,6,8が入ります。

文具が奇数個の場合のB列は…
例えば11個の場合には、
1~6行目まで1,3,5,7,9,11
7~11行目まで2,4,6,8,10
が入ります。

C列に抽出される文具が500個近くなる月がありますが、
現在はA1,A2に1,2を入力してマウスで下にフィルコピー、
B列には、前半分の行まではB1,B2に1,3を入力し、
後ろの半分の先頭行と、その次の行に2,4を入力して
それぞれフィルコピーしています。

抽出された行数に応じて、自動でA列、B列に番号をふる方法が
ありましたら教えて下さい。
宜しくお願いします。

A 回答 (6件)

__A_B______C_


1_1_1__えんぴつ_
2_2_3__消しゴム_
3_3_5__三角定規_
4_4_2__コンパス_
5_5_4___下敷き_
6_6_6_ボールペン_

__A_B______C_
1_1_1__えんぴつ_
2_2_3__消しゴム_
3_3_5__三角定規_
4_4_7__コンパス_
5_5_2___下敷き_
6_6_4_ボールペン_
7_7_6_リラックマ_

A1
=IF(C1="","",ROW(A1))
下方向・↓
B1
=IF(ROW(1:1)>COUNT(A:A),"",2*MOD(ROW(1:1)-1,ROUNDUP(COUNT(A:A)/2,0))+1+(ROW(1:1)>ROUNDUP(COUNT(A:A)/2,0)))
下方向・↓
    • good
    • 0

B1


=IF(C1="","",2*MOD(ROW(1:1)-1,ROUNDUP(COUNT(A:A)/2,0))+1+(ROW(1:1)>ROUNDUP(COUNT(A:A)/2,0)))
でもいいみたいです。ごめんなさい。
...修正できないんですね。このサイト。
    • good
    • 0
この回答へのお礼

最速の回答、ありがとうございました!!
質問は初めてでしたので、説明も自信が無くて
どんな回答があるのか心配していましたが
本当に嬉しくて感激しました。
関数の意味がわからないままコピー&ペーストしたところ
求めていた通りの結果が得られました。
お蔭様で随分時間が短縮できそうです。
本当に有り難うございました。
関数って面白いものですね。
時間のある時に教えていただいた方法を理解できるように
じっくり勉強したいと思います。

お礼日時:2009/03/19 10:40

◆こんな方法もありますよ


B1=IF(C1="","",IF(A1=COUNT(A:A),INT(A1/2)*2,IF(B2=2,EVEN(COUNT(A:A))-1,B2-2)))
★下にコピー
    • good
    • 0
この回答へのお礼

お早うございます。
そして本当に有り難うございます!
この方法でも希望通りの表ができました。
私の関数の知識は、How toサイトやヘルプを見て、
その時々に必要な知識だけを見つけて得たもので
非常に浅くマダラ状ですので、こんな複雑な式はとても作れそうにありませんが、一つ一つの成り立ちを勉強して理解していきたいと思います。
有り難うございました。;

お礼日時:2009/03/19 10:52

う~ん イマイチの出来


=IF(C1="","",IF(COUNT(A:A)+1>=A1*2,A1*2-1,A1*2-COUNT(A:A)-MOD(COUNT(A:A),2)))
参考まで
    • good
    • 0
この回答へのお礼

CoalTarさん
この方法でも希望通りの結果が得られました。
本当に有り難うございました。

お礼日時:2009/03/19 19:47

では、私も省エネの式をお一つ。


=IF(C1="","",ROW()*2-IF(ROW()*2>MAX(A:A)+1,EVEN(MAX(A:A)),1))
    • good
    • 0

[回答番号:No.5] の DOUGLAS_ です。


 [ROW()] 関数を使うと、行のデータがずれるかも知れませんね。

B1:
=IF(C1="","",A1*2-IF(A1*2>MAX(A:A)+1,EVEN(MAX(A:A)),1))

でお試しください。
    • good
    • 0
この回答へのお礼

DOUGLAS_さん
再度の回答、有り難うございました。
省エネ型があるなんて。。。
式が短い!ということしか今の私にはわかりません。。。
行のデータがずれるかも…という理由も
今現在は未知の彼方にあるように思えますが、
何とか理解できるよう勉強します。
有り難うございました!

お礼日時:2009/03/19 19:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!