重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

XPにてexcel2007を使っています。

現在、順位表を作っているのですが、VBAというものの入門本を読んでみたのですが、いまいちやり方が分からないため質問させていただきます。

1つ目のシートに総合順位の表【シート名:順位表】を作りたいと思っています。

今、別のシート【シート名:第1回結果】に


 1班
  1.赤井 80ポイント
  2.井上 
  3.上松 90ポイント
  4.江藤 60ポイント
  5.岡田
   ・
   ・
   ・     
  18.山根

 2班
  1.安藤 75ポイント
   ・
   ・
   ・
  18.渡辺 70ポイント


と入力しています。3班あり、各班とも18人います。
名前が「あいうえお順」に並んでいて、参加者のみポイントが打ち込んであります。

やりたいことは、この別のシート【第1回結果】から参加した人(ポイントありの人)のみ
名前とポイントをコピーして【順位表】の表に貼り付けたいと思っています。

どうやったこのようにうまくいくのでしょうか?
自分が悩んでいるところは、
(1)今回の参加者(ポイントを記入してある人)のみを選択するところ。
(2)1班、2班、3班と参加人数がちがうのに、【順位表】のシートに隙間なく、貼り付けるところ。
あたりです。

また、こういったものを参考するのに適した本を紹介していただけないでしょうか?

よろしくお願いします。

A 回答 (3件)

別件で私は、他の人に似たような回答していますが、今回のようなものにも使えそうなので書き込みます。



以下の手順でやってみてください。

1、データをドラッグ
2、ホームの右端の「並べ替えとフィルタ」を選択
3、セルに出てきた漏斗?を選択
4、「空白のセル」のチェックを外す
5、このデータを再度ドラッグしてコピー
6、別シートに貼り付ける(その際、値だけを選択したほうがよいでしょう)

こうすると、今悩んでいらっしゃる(1)と(2)の両方が解決できるのではないでしょうか?

本に関してですが、私の場合は特に参考にしているようなものがなく、適当に使って行くうちに覚えました。

あまり、参考にならずにすいません。
(^^)
    • good
    • 0
この回答へのお礼

手順を真似して、マクロに保存していました。

少し応用したところ、思っていたことに近いことができました。

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

お礼日時:2007/09/12 00:56

こんにちは。


例題で回答しますのでコードを参考にやってみて下さい。
(例)
1.シート1のA列の1行目から14行目までa~nを入力します。
2.シート2のA列には適当にa~nを入力、B列に任意にポイントを数値で入力。
3.モジュールのコードに下記コードを貼り付け。
4.コードの実行。
Sub sample()
Dim Ws1 As Object, Ws2 As Object, LR1, LR2, Pa, Po
Set Ws1 = Worksheets(1)
Set Ws2 = Worksheets(2)
LR1 = Ws1.Range("a65536").End(xlUp).Row
LR2 = Ws2.Range("a65536").End(xlUp).Row
For i = 1 To LR2
Pa = Ws2.Cells(i, 1).Value
Po = Ws2.Cells(i, 2).Value
If Po > 0 Then
For j = 1 To LR1
If Ws1.Cells(j, 1).Value = Pa Then
Po = Po + Ws1.Cells(j, 2).Value
Ws1.Cells(j, 2).Value = Po
End If
Next
End If
Next
End Sub
上記コード(変数)説明
Ws1,Ws2はワークシートを何度も書くのが鬱陶しいので変数化、LR1,LR2は各シートの必要な最終行、Pa=人、Po=ポイント
For i~Nextルーチン
シート2のポイントの記述されているとこの値を取得(Po)し、0でなければ人の名前(Pa)を取り、シート1で同名を探し既存ポイントを取得し新規ポイントを足し記入。

これを変化させれば、質問者さんが意図するコードが書けると思います。頑張って下さい。
    • good
    • 0
この回答へのお礼

自分にはまだVBAは敷居が高いようなので、No.1・No.2のお二方のを参考にマクロで、記録して修正するやり方を今回は取らせていただきました。

もう少し複雑なのこともできるようになりたいと思いますので、今回書いていただいたコードは次回などに応用させていただきたいと思います。

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

お礼日時:2007/09/12 01:00

EXCEL2007は分かりません。



EXCEL2003であれば、オートフィルターを
使えばできますよ。おそらく2007にもあると
思いますが、インターフェースが異なるので
説明できません。

EXCEL2003であれば
エクセルのメニューで
「データ」→「フィルタ」→「オートフィルター」
として、ポイントの列の下三角マークをクリックして、
「空白以外のセル」を選ぶと、参加者のみ抽出できます。

あとは、別のシートにコピー&ペーストして、
並べ替えでしょうか?

VBAにしたければ、まずは手動で実現させて、
その後、記録マクロを行ってみて、
そのコードをベースにVBAを修正しては、
いかがでしょうか?


空白以外のセルを抽出するVBAを
今日、回答したので紹介します。
(記録マクロを修正しているだけです。)
http://oshiete1.goo.ne.jp/qa3331706.html
    • good
    • 0
この回答へのお礼

オートフィルターなどはヘルプを参考にしながらやってみました。

VBAに関してはなんとなくですが、無駄そうな処理を少し削ったり、

数値を変えたりしているうちにマクロで動きました。

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

お礼日時:2007/09/12 00:58

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