仕事でExcelを使用しています。
部下の各担当者に配布する発注書を毎月更新作成しているのですが、ほかにも多数の書類を月末時に作成しており「毎火・木曜日の日付」を手入力するのが結構手間です…。
できれば自動で表示させられたらなんて思ったのですが、例えば商品名などをA列に入力するとして、その右のB列から、毎火・木曜日のみを表示させる、何か良い手はありますでしょうか?
また、翌月1日が火曜日の場合など、翌月にかかってしまうのも困るので、これは非表示にしたいのですが…。
もしできるなら本当に助かりますのでご存知の方、お教え下さい。よろしくお願いいたします。
No.1
- 回答日時:
ベタかもしれませんが・・・
下記のロジックをシート1のコードにCopy&Pasteし
シート1のA1に年、B1に月を入れたら・・・
参考に
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TsukiFlag, MonthFlag
Dim myYear, myMonth
Dim myDate As Date
Dim myWeekDay As Integer
TsukiFlag = 0: MonthFlag = 0
myYear = Worksheets(1).Range("A1").Value
myMonth = Worksheets(1).Range("B1").Value
If Target.Row = 1 And Target.Column = 1 Or Target.Column = 2 Then
If myYear <> "" Then
If Target.Value <> "" Then
TsukiFlag = 1
End If
End If
If myMonth <> "" Then
If Target.Value <> "" Then
MonthFlag = 1
End If
End If
If TsukiFlag = 1 And MonthFlag = 1 Then
Worksheets(1).Columns(3).Clear
Worksheets(1).Columns(4).Clear
j = 1
myDay = myYear & "/" & myMonth & "/1"
For i = 1 To Day(DateAdd("d", -1, DateAdd("m", 1, myDay)))
myDate = DateSerial(myYear, myMonth, i)
myWeekDay = WeekDay(myDate)
If myWeekDay = 3 Or myWeekDay = 5 Then
Worksheets(1).Cells(j, 3).Value = i
Worksheets(1).Cells(j, 4).Value = WeekdayName(WeekDay(myDate))
j = j + 1
End If
Next
End If
Else
Exit Sub
End If
End Sub
お~、これでできてしまうんですね!!マクロはなかなか理解できずわからないままだったのですが、これを機に試してみて、今後は色々覚えてみたいと思いいました。なにせ必要に迫られているのできっと頑張れそうです。苦笑
どうもありがとうございました。
No.2
- 回答日時:
2005年8月1日をB1に入れる。
B2に=B1+5-WEEKDAY(B1)で2005/8/4が初木曜日
どこでもよいが
C16、D16、E16、・・・に
0178141521222829
と入れる。
C2に=IF($C$1+C16>=DATE(YEAR($B$1),MONTH($B$1)+1,1),"",$C$1+C16)
と入れて、K2、L2まで式複写。
C2,d2,E2、・・・・は
2005/8/42005/8/52005/8/112005/8/122005/8/182005/8/192005/8/252005/8/26
となる。しかしこの質問の不完全さは、
>毎火・木曜日の日付」を手入力す・・のセル番地が書いてないので、
なんとも完全な答えが書けないのです。具体的にセル番地と曜日を
あげてください。
VBAを望んでいないのだろうから、関数を使う答えを期待しているのであろうが、関数を使うということは
(1)結果の値が1箇所(1セルで)正し値を返すことはもちろんだが
(2)うまく複写して複数セルに複写できることが必要。
連続していないセル(上記も木曜と金曜のように異質なものが並び、土ー水はいらないなどイレギュラー)では技巧を凝らさざるを得ない。
凝らしてもできないかもしれない。必ず方法があるとは限らない。
なるほど、まだまだVBAは勉強を始めたばかりですが、すべてを関数で何とかしようとするばかりでもいけない場合があるのですね。おっしゃるとおり、テンぱるあまり、とても不親切な不完全な質問になってしまっていました。今後は気をつけたいと思います。参考になるアドバイスありがとうございました。
No.3ベストアンサー
- 回答日時:
こんにちは~
●質問に不明な点があります。
> その右のB列から、毎火・木曜日のみを表示させる
・「その右のB列から」 というのは、B・C・D・・と右方向に表示ですか?
それとも、B列1列にたて方向に表示ですか?
・火、木を 1行(または1列)に表示ですか?
それとも、火と木はそれぞれ別の行(または列)に表示ですか?
・1行(または1列)に表示だとして、必ず 火→木→火→木・・・の順ですか?
第1木曜日が、第1火曜日より早い日付であっても、火→木→火・・・の順ですか?
一応、例として・・
【仮定】
・B列から右方向に(C・D・E・・・)に、当月の火・木の日付を表示
・火→木→火・・・の順
・ただし、第1木曜が、第1火曜より早い日付の場合は、木→火→木・・・の順
当月の第1火曜と第1木曜の日付をどこかのセルに常時表示させておきます。
たとえば、第1火曜→B1、第1木曜→C1 だとして、
B1に
=DATE(YEAR(TODAY()),MONTH(TODAY()),1*7-WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY()),-1),3))
C1に
=DATE(YEAR(TODAY()),MONTH(TODAY()),1*7-WEEKDAY(DATE(YEAR(TODAY()),MONTH(TODAY()),-3),3))
A3に商品名を入力すると、B3から右に日付を表示(火→木→火、または木→火→木)
B3に
=IF(A3="","",IF($B$1<$C$1,$B$1,$C$1))
C3に
=IF(A3="","",IF($B$1>$C$1,$B$1,$C$1))
D3に
=IF(COUNT(B3),IF(MONTH(B3+7)=MONTH($B$1),B3+7,""),"")
と入れて、K3セルまで右にフィルコピー
日付の表示形式はお好みのものに。
この回答への補足
すみませんー…ありがとうございます。そうですよね、いろんなパターンがあるのですから、「右」になのか「下に」なのかわからなきゃしょうがないですよね…。不勉強でした。右列に日付を、縦に商品リストを載せたいのでshiotann99の【仮定】通りでした。
※DATEとかYEARに()でいろいろ入れ子にできるなんて知りませんでした。関数辞典にも載っていなかったのに…。早速やってみます。どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) Excelシフト表 固定シフトの自動変換化 1 2022/04/14 16:10
- Excel(エクセル) 【Excel関数、count系】どなたか教示下さると助かります。 Excelでシフトを管理しており、 2 2022/07/09 06:34
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) 条件付き書式で文字入力 6 2022/08/29 10:40
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Java Java、配列の問題を教えて欲しいです。 ・日、月、火、水、木、金、土 ・各曜日の英語 を2次元配列 2 2023/07/10 19:14
- Excel(エクセル) Excelで祝日を除く1回目の金曜日を返す 3 2023/01/31 16:07
- Excel(エクセル) 週毎の集計 2 2023/08/04 16:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報