
エクセルで日報を作成しています。
1sheetに365日分のセルを作成。
A1のセルに3月と入力すると以下の365行が「3月1日~3月31日」の
31行分の1か月分が表示になるようにするにはどんなテクニックが必要でしょうか?エクセルを終了して、その条件はキープしていて欲しい。
《元データ》
A列 B列 C列 D列
1 月
2
3 月日 曜日 本日の容量 残容量 合計
4 1月1日 月 150 20 170
5 1月2日 火 150 20 170
6 1月3日 水 200 20 220
7
:
368 12月31日........
《入力結果》
A列 B列 C列 D列
1 3 月 ←このつきの前に「表示月」を入力 例えば「3」
2
3 月日 曜日 本日の容量 残容量 合計
4 3月1日 木
5 3月2日 金
6 3月3日 土
:
34 3月31日土
が表示される。
No.7ベストアンサー
- 回答日時:
No.2です。
> タイトル行に当たる「月日,曜日,本日の容量,残容量,合計」が
> 消えてしまいます。
あれおかしいですね。タイトル行は質問文にあるとおり3行目から始まってますか?
> やはり「オートフィルター」のマークがB1にも入ってしまうものなのですよね?
これは仕方がないです。A列だけなら▼マークを非表示にできるのですが、他の列はどうしてもマークが出てしまいます。
それが出るのが嫌なのでオートフィルタを使いたくないのであれば、アプローチを変えて、オートフィルタを使わずに、指定した月以外は非表示にするマクロにしてみました。No.2の回答の手順でマクロの画面を開き、元のマクロは消して以下をコピーして貼り付けてみてください。
No.2の回答と同様に、A1に月の数字を入力すると、その月だけの表示になります。A1を空白にするか、0などの数値を入力すると1年分の表示に戻ります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Application.ScreenUpdating = False
Dim i As Integer
Const MaxRow As Integer = 370
For i = 4 To MaxRow
If Target.Value < 1 Or Target.Value > 12 Then
Rows(i).Hidden = False
ElseIf Month(Cells(i, 1).Value) = Cells(1, 1).Value Then
Rows(i).Hidden = False
Else
Rows(i).Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
おかげさまで、For i = 4 To MaxRowをFor i = 3 To MaxRowに書き換えたら出来るようになりました。
マークはやっぱり出ちゃいますかねぇ~
運用で工夫してみたいと思います。
ありがとうございました。
No.8
- 回答日時:
>エクセルのオートフィルタを使わないフィルタ方法を伝授してください
なぜオートフィルタを避けているのか、理由はわかりませんが奇異です。
これを使わなければ、エクセルVBAででも使わないとできませんよ。
色々注文をつけると、VBAやそれ以上のことを使わないとできなくなります。
素人がやりたいことを出すと、結構難しい。経験者はその難しさにぶつかることを察知して、1年分を1シートにして、そこから1月分を
抜き出そうというような発想を避けます。
既回答にも、関数式だけで条件該当分を別シートなどに抜き出す式が出ています。しかし恐ろしく長く、内容を理解するのが難しいです。
私はそれを回避するため、作業列を1列使い、条件を満たす(XX月分
という条件)行のみ上から連番を振ります。別シートでその連番を元にINDEXとMATCH関数を使ってデータを持ってきます。それをimogasi
方式として、OKWAVEで沢山回答してます。WEB照会してよければ見てみてください。
ーー
VBAでxx月以外は行を非表示にすることはたやすいが、可視セルを相手にする必要があって、面倒になるかも知れません。
VBAで別シートへXX月分だけ分離するのは難しくありません。その後の
追加削除に連動できませんが。
そんなに難しいこととは判らず大変失礼をいたしました。
ただこの用紙を利用なのみなさんはExcelすら出来ないため、
年齢も50歳後半のため出来るだけ、開けばすぐできる形を作りたかっただけです。
そういう内容の質問をしてはいけないことも十分判りました。
貴重な時間感謝いたします。
No.6
- 回答日時:
こんにちわ
月頭を出したいだけでしたら、ジャンプ機能を利用されるといいと思います。
マクロはご無理とのことなので計算式でやろうかとも考えましたが、それだとファイルサイズが大きくなるので、ご質問には反しますがオートフィルタが手っ取り早いと思います。各日付のとなりに1から12の数字を打ち(月の数という意味)、その列でフィルタをかけます。
計算式を入れるか数値を入れるかの違いだと思います。
No.5
- 回答日時:
ご質問者の意図とは若干違うかもしれませんが、フィルタオプションとVBAの組み合わせで比較的簡単に作れるかもしれません。
ただし「月」を条件にしたければ、月日から月を作成する関数(MONTH関数など)で月のみを表示する列を作成しておく必要があります。
そのような列を作れば、ブックのイベントプロシージャ(SheetChage)等に、フィルタオプションの機能をVBAスクリプトとして記述することで可能だと思います。
参考までに(表のサイズなどはそちらで任意に読み替えてください)
Public Sub Data_filter()
Range("A5:S55").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= Range("C1:C2"), Unique:=False
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveCell.Column = 3 Then
If Cells(2, 3).Value = "" Or IsNull(Cells(2, 3)) Then
ActiveSheet.ShowAllData
Else
Call Data_filter
End If
End If
End Sub
No.4
- 回答日時:
簡単な方法としては・・・
シートを2枚に分ける。
Sheet1には1年分のデータ。
Sheet2は1ヶ月分(31行)のみ表示させる。
A4のセルに“=DATE(YEAR(TODAY()),A1,1)”、
A5以下はA4+1,A5+1でOKです。
B列以降は、LOOKUPなりVLOOKUPなりで、Sheet1を参照する、
というのでどうでしょう。
すみません。Excelの入力は得意なのですが、
マクロや関数がまったくわかりません。
皆さんのアドバイスを1ずつやっていますが、
フィルター後「本日の容量」「残容量」「合計」の入力をします。
別のSheetにすると、元データに反映されません。
No.3
- 回答日時:
関数でやってみます
「入力結果」シートのA4セルに以下の式を貼り付けて右方向、および下にコピー。A1セルの月は「数値」で入力します(日付ではありません)
各列の書式は適切なものに再設定してください。
=IF(SUMPRODUCT((MONTH(元データ!$A$4:$A$369)=$A$1)*1)-ROW()+4>0,INDEX(元データ!A$1:A$369,LARGE(INDEX((MONTH(元データ!$A$4:$A$369)=$A$1)*ROW(元データ!$A$4:$A$369),),SUMPRODUCT((MONTH(元データ!$A$4:$A$369)=$A$1)*1)-ROW()+4)),"")
うるう年なら5箇所の$A$369は$A$370になります。
マクロも関数もまったくわからない低レベルに親切な回答ありがとうございます。
結果だけを参照するのであれば問題ないのですが、
データを日々入力し、月末に出力をしなくてはなりません。
出来れば、入力後の確認なども行いますので、
月を打ち込んだだけで、1か月分が確認できるほうが
ど素人には単純な操作で出来るほうが良いかと思っています。
No.2
- 回答日時:
マクロを使ってもよいですか?(マクロの中で結局オートフィルタを使ってますが)
シートタブを右クリックして「コードの表示」を選択してVBAの画面を開き、下のマクロをコピーして貼り付けてください。
A1に値を入れるとその月だけの表示に変わります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target.Value < 1 Or Target.Value > 12 Then Exit Sub
Dim EndDay As Long
EndDay = Day(DateSerial(Year(Date), Range("A1") + 1, 1) - 1)
Range("A3").AutoFilter Field:=1, Criteria1:=">=" & Range("A1").Value & "月1日", Operator:=xlAnd, _
Criteria2:="<=" & Range("A1").Value & "月" & EndDay & "日"
End Sub
マクロも関数もまったくわからない低レベルに親切な回答ありがとうございます。
質問です。
理想どおり、3月のみの表示になりましたが、
タイトル行に当たる「月日,曜日,本日の容量,残容量,合計」が
消えてしまいます。
やはり「オートフィルター」のマークがB1にも入ってしまうものなのですよね?
No.1
- 回答日時:
月日は日付形式ですよね。
C1="月日"
C2=">="&$A$1&"月1日"
D1="月日"
D2="<"&($A$1+1)&"月1日"
で次の処理を「ツール」「マクロ」「新しいマクロの記録」でマクロ化する。
「データ」「フィルタ」「フィルタオプションの設定」
・「データ範囲」「=$A$3:$E$369」
・「抽出条件範囲」「=$C$1:$D$2」
でOK
これで出来たマクロを、ショートカットキーかボタンに登録して実行する。
C1:D2の見た目が問題なら文字色を背景色と同じにすれば表示も印刷もされません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Visual Basic(VBA) 【Excel VBA】条件に合った行の表示・非表示を行う方法 3 2023/03/18 12:31
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- Visual Basic(VBA) VBA 連続する名前ごとに集計 3 2022/05/21 18:24
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Visual Basic(VBA) Excelにて、指定した日の午後にファイルを開いたらsheet1に UserForm1を表示させたい 2 2022/05/31 20:53
- Excel(エクセル) 条件付き書式 一致する曜日の列にある○のセルに色を付けたい 2 2022/04/19 05:40
- Excel(エクセル) Excel ある日の45日後の計算 及び 3か月後の計算 6 2022/04/05 13:44
- Excel(エクセル) 特定文字(数字)で行挿入、挿入された行で合計したい 2 2023/03/13 14:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
エクセルの複雑なシフト表から...
-
エクセルのリストについて
-
【マクロ】元データと同じお客...
-
【画像あり】オートフィルター...
-
【マクロ】【相談】Excelブック...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
Office2021のエクセルで米国株...
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
他のシートの検索
-
【マクロ】左のブックと右のブ...
-
Amazonでマイクロソフトオフィ...
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
【マクロ】列を折りたたみ非表...
-
【マクロ】オートフィルターの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報