- 締切済み
Excelで出席者表をつくる。
マクロが得意な方、お願いします。 Excel2013で出席者表(仮称)をつくりたいのです。 添付図のように、E列に(1または2)を入れて、 マクロで(2=欠席者)の列を非表示にする記述を教えてください。 ボタンに登録して、逐次非表示にするボタンと、 一括して再表示にするボタンを作りたいのです。 フィルターを使うとできますが、マクロ学習を始めたので、 教えていただいた記述を研究してマクロをマスターしたいのです。。 よろしくお願いします。
- lovelykajiyan
- お礼率99% (972/977)
- Excel(エクセル)
- 回答数2
- ありがとう数4
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- tsubu-yuki
- ベストアンサー率46% (179/386)
決してマクロが得意なわけではありませんが(笑)。 私ならどうするのかなぁ?で考えてみました。 (1)全行を舐めて、E列が「2」だったら非表示 Sub SAMPLE01() ' ※非表示にする処理 ' 2行目から「B列に値が存在する最終行」まで繰り返し For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row If Cells(i, 5).Value = 2 Then ' その行のE列が「2」だったら ' 「1だけを表示」にするなら ' If Cells(i, 5).Value <> 1 Then Rows(i).EntireRow.Hidden = True 'その行を非表示 Else ' その行が「2」以外だったら(念のため) Rows(i).EntireRow.Hidden = False 'その行は非表示にしない End If Next i End Sub Sub SAMPLE02() ※全行を再表示する Cells.EntireRow.Hidden = False End Sub ※この二つを別なマクロとして、二つのボタンにそれぞれ設定。 (2)フィルタをON-OFFするマクロ Sub SAMPLE03() If ActiveSheet.AutoFilterMode Then ' 既にフィルタがかかっていたら Range("A1").AutoFilter ’ フィルタを解除 Else ' フィルタがかかっていなかったら Range("A1").AutoFilter Field:=5, Criteria1:="<>2" ' 「2以外」でフィルタ ' 「1」だけを抽出するなら ' Range("A1").AutoFilter Field:=5, Criteria1:="=1" End If End Sub ※これだとボタン一つで済みます。 どちらかだろうなぁ。 せっかく > マクロ学習を始めたので、 とのことですので、(個人的に)覚えておきたい書き方をもう一つ。 (1)と同様、全行を舐めます。 Sub SAMPLE04() ' 2行目から「B列に値が存在する最終行」まで繰り返し For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row Select Case Cells(i, 5).Value ' 各行のE列の値で処理を分岐 Case 1 ' 「1」だったら Rows(i).EntireRow.Hidden = False ' その行は表示 Case 2 ' 「2」だったら Rows(i).EntireRow.Hidden = True ' その行は非表示 Case Else ' 「その他(Else)」だったら Rows(i).EntireRow.Hidden = True ' その行は非表示 End Select Next i End Sub 条件分岐が多いときに、書いた後で見易いように・・ 条件が増えたり減ったりしそうなときにいじりやすいように・・ という、場面によっては重宝する書き方です。 ※全行表示は、上述SAMPLE02をそのまま使います。 どちらにしても、私はなるべくシンプル派なので、 フィルタのON-OFFを採用するかなぁ。 余談ではありますが・・・ Cells(Rows.Count, 2).End(xlUp).Row これで、2列目(=B列)における「一番下」の行番号を拾います。 「仮に」出席者の列(B列)に歯抜けがあっても 最終行まで処理を続けてくれます。 Do While ~ Loop で繰り返すと、 B列が歯抜けを起こしていると、そこで処理が止まってしまい、 それ以降の行についてはノータッチ・・という状況に陥ります。 ※当然、歯抜けが100%無いデータセットなら問題は無いです。 なので、Do ~ Loopを使うなら 「歯抜けの可能性がより低い(はずの)「No.(A列)」が空白になるまで」 の方が良いような気がします。 まぁ、好みの問題ではありますけどね。
- f272
- ベストアンサー率46% (8021/17145)
私なら,こんな感じにします。 Sub Macro2() Set a = Range("E2") Do While Not IsEmpty(a.Offset(, -3)) If a.Value = 2 Then a.EntireRow.Hidden = True Set a = a.Offset(1) Loop End Sub
お礼
マクロが止まってしまうのです。 今しばらく時間をかけて、対策を考えて見ます。 ありがとうございます。
関連するQ&A
- エクセルで閉じるときのマクロ
あるエクセルファイルがあり、 その一枚のシートにはオートフィルタ (A~Z列まで)を使用しています。 【質問1】 ファイルを保存して閉じる際、 オートフィルタで抽出したものを 「すべて」に戻す、 つまりなにも抽出されていない(=左端の行番号が黒字) に戻すマクロはどこにどのように書けばよいでしょうか? オートフィルタを戻すマクロは、 'オートフィルタのあるシートを選択 Sheets("買取リスト").Select 'T列のオートフィルタを「すべて」にする Selection.AutoFilter Field:=22 というところまでは理解できました。 【質問2】 上記のマクロを Sheets("顧客リスト") から、Sheets("商品リスト")へ移動した際、 ボタン等を使用せずに、 (ただ、下のタブをクリックするだけで) 実行させることは可能でしょうか? 可能であれば、どこにどのように記述すれば よいでしょうか?? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- マクロでマスタ表からフィルタ表と同じデータ抽出
仕事で不定期ですが月に4~5回マスタ表が届きます。 その表から私の担当している部品のみ抽出するフィルタ表があり 素人ながら簡単な録画マクロで処理を行っています。 (マスタ表から抽出フィルタを使いフィルタオプションで抽出して新しいシートに出力) 但し、毎回マスタ表の最終セルの座標をマクロの編集で記載してから実行しており何とか自動で最終セルを認識してくれないかと色々調べましたが思うように動いてくれません。 マスタ表は毎データ行数列数はバラバラですが部品番号などの位置はフォーマットとして共通です。約18000行で列は8行~23行 抽出用の担当フィルタは私が担当している部品で約500点ほどで不定期メンテナンスしており増減します。 本来であれば現在のマクロのソースを記載したいのですが会社にファイルがあるので一旦書き込みだけいたします。
- 締切済み
- Excel(エクセル)
- ○○はいつ欠席・遅刻・早退しているか?が管理できるエクセル一覧表の作成
○○はいつ欠席・遅刻・早退しているか?が管理できるエクセル一覧表の作成 「出欠一覧」シートにはC2からGT2まで日にちが三桁(8月10日なら“810”)で入っています。A列には出席番号、B列には名前、C3:GT43には出席状況がすでに7月分まで入っています(もちろんこれから3月末まで記入します)。そこには1,2,3,4,5,6か空欄が入っています。それぞれの意味は「1」欠席「2」遅刻「3」早退「4」忌引き・入病「5」公欠「6」遅刻してきて早退「」は出席、です。 「欠席した日はいつ」シートでは出席番号を入れると「名前」と「いつ欠席遅刻早退忌引き公欠遅刻したか」がわかる。という物を作りたいと思います。「欠席日はいつ」シートはまだ全く作っておりません。 是非とも関数かマクロをおおしえください。 補足 GU1:GY44には集計の数字が入っております。44行から47行にも集計が入っております。
- 締切済み
- オフィス系ソフト
- Excelのマクロで図を明るくしたい
Excelの画面に貼り付けた図を、マクロの記録ボタンを押し、「図の書式設定」の「明るさ(B)」で明るくしようとしましたが記述されません。どう記述したらいいでしょうか。 できれば徐々に明るくなるようにしたいのですが・・・
- ベストアンサー
- Windows Vista
- EXCELのマクロにて
下のようなデータベースがあります。 No 値1 値2 10 3 2 8 2 4 6 2 6 3 5 3 8 7 5 このようなデータベースからピボットグラフを作成しているんですが、データベースに上端でフィルターをかけNo列にて特定の値を選んだときにそれに対してピボットグラフもフィルターで選んだNoになるようなマクロは組めませんか? ちなみにピボットグラフにはページにNoを、データに値1・値2の合計を表示させています。 マクロに変数(?)を設定すると出来るらしいのですが記述がわからないのです。
- 締切済み
- オフィス系ソフト
- エクセルでこんなことできますか?
上司に、調べるようにいわれたんですが・・。 エクセルのシートにオートシェイプで作った図が5つあります。その図をマクロのボタンで表示したり、隠したりできますか?ただし1つの図に対してボタンは1つです。場所が狭いため、表示するボタンと非表示にするボタン合計10個の置き場がないらしいのです。図形5個はそれぞれ独立していて、同時に2個表示したり、5個表示したり、あるいは全部かくしたり、ということをしたいそうなんですが、どなたかお力をおかしください。
- ベストアンサー
- オフィス系ソフト
- 横長の表で2点ほど困っています
マイクロソフト365のエクセルでの質問です。 371列の横に長い表があります。ガントチャートをイメージ願います。 a,b,c,d,e列は項目の列でフィルターに使います。 f-nf列は年月日365日割当て期間を表示します。 ng列は項目の列でフィルターに使います。 質問 1.フィルター機能を使うときf-nf列にフィルターボタンを表示させない方法は? 2.a,b,c,d,e列とng列を固定的に表示させ、中間のf-nf列はその範囲だけ表示させる方法は? よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- エクセル マクロ コンボボックスリスト
sheet1の場所でボタンクリックでフォーム表示。その中でコンボボックスリストを作成。 sheet3にデーターをA列に作りました。 1)フォームの中のコンボボックスをクリックしてリスト表示させた い。マクロの記述を教えてください。 2)コンボボックスリストに表示した文字をsheet2に記録するボタンを作ったがマクロの記述を教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルの表である列のみ表示させたい
共通 イ ロ ハ ABC DEF GEIJK LMNOP 1 2 3 ----------------------- 仮にA~P列それ以上にデーターが入力されています 入力する時ある分類毎に入力をしたいのですが あまり横に長すぎて、そこを出すのがいつも大変です、また、人が探すときもなかなか探し切れません (1)共通ABC+イ列 (2)共通ABC+ロ列 (3)共通ABC+ハ列 のように、出したい箇所が簡単に表示させることができますでしょか。 私はマクロは全く分かりませんが、ボタン一つでそれが選択され表示されたら理想だなと思います マクロが分からない私ですが、今後必要なら勉強したいと思いますのでそちらの方面のご指導もお願いします
- ベストアンサー
- オフィス系ソフト
お礼
マクロが途中で止まってしまうのです。 時間をかけて、解析してみます。 ありがとうございました。