[[20060512174928]] 『指定曜日のみ順番に自動で入力する方法3パタ−ン』(もえタンぱぱ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定曜日のみ順番に自動で入力する方法3パタ−ンについて追加事項』(もえタンぱぱ)

5月10日の質問ボ−ドで(こたぷょ)さんの質問と同じ様な質問なのですが、
A1のセルに日付を入力するだけで指定曜日のみを2以降のセルに自動入力する方法としてC点教えて下さい。

@月・水・金・土と4つの指定曜日のみを2以降のセルに自動入力する方法

A月・金と2つの指定曜日のみを2以降のセルに自動入力する方法

B水・金と2つの指定曜日のみを2以降のセルに自動入力する方法

C金曜日など1つの指定曜日のみを毎月指定セルに自動入力する方法

上記@〜Bのパタ−ンは、A1のセルの手入力の日付はいずれも月曜日から始まるとは限りません。

尚、Cについては、できれば、ある特定のセルにたとえば5月と入力すると、その月の指定した曜日がA1セルからA2・A3・A4・・・・とA列に自動表示されるようにしたいのですが、何か方法が無いですか?

以上、4項目について恐れ入りますが、教えて下さい。PC初心者なもので、うまく説明で

きたか?解りませんが、宜しくお願い致します。

WINのバ−ジョンは2003です

OSはXPです



 復元1

 とりあえず(1)の回答です。

 =IF(MOD(ROW(A1),4)=1,"月",IF(MOD(ROW(A1),4)=2,"水",IF(MOD(ROW(A1),4)=3,"金","土")))
 あとは応用で。
 (MARBIN)

 上は1行目から始まる前提ですので、
 違う行から始まる場合は調整してください。
 (MARBIN)

 質問をよく見てませんでした・・・。
 (MARBIN)


 下記が要望している例となります。

      A1

1 2006年 5月1日(月) ← 手入力

2 2006年 5月10日(水)←自動

3 2006年 5月12日(金)←自動

4 2006年 5月13日(土)←自動

尚、月によって手入力の日付は月曜とは限らないのですが、月水金土のみを1回の入力で日付順に自動入力する方法を教えてください。
できれば、月・金パタ−ンと水・金パタ−ンもお願いいたします。

項目Cの例は、下記となります宜しくお願い致します。
      A1                  j
       5月

1 2006年 5月5日(金)←自動       
2 2006年 5月12日(金)←自動
3 2006年 5月19日(金)←自動
4 2006年 5月26日(金)←自動

j1セルに何月と入力するとA1列にその月の毎週金曜日や毎週水曜日が自動入力される方法を教えてください。 (もえタンぱぱ)


 参照元のスレを見忘れてたので、方法が違いますが、
まず、2番目は、
 =A1+CHOOSE(WEEKDAY(A1),1,4,3,2,1,3,2)
3番目もこの応用で出来ると思います。
1番目も応用で出来ますが、IF関数で分けて考えてみました。
 =A1+IF(WEEKDAY(A1)=6,1,IF(OR(WEEKDAY(A1)=7,MOD(WEEKDAY(A1),2)=0),2,1))
4番目は、
 A1に
 =DATE(YEAR(TODAY()),--SUBSTITUTE(J1,"月",""),0)+CHOOSE(WEEKDAY(DATE(YEAR(TODAY()),--SUBSTITUTE(J1,"月",""),0)),5,4,3,2,1,7,6)
 A2に
 =A1+7
※WEEKDAY関数については、ヘルプを参照してください。
(sin)



復元2

 ずっと考えてて、やっとできた〜かも・・・
 ユーザー定義関数で考えました^^
 
 標準モジュールへコピペ
'-------------------
Function myday(Rng As Range, MyVal As Variant)
Dim R_wek As Integer, i As Integer, w As Integer
Dim x As Variant
    R_wek = Weekday(Range(Rng.Address))
    For i = 1 To Len(MyVal)
        Select Case Mid(MyVal, i, 1)
            Case "土": w = 7
            Case "金": w = 6
            Case "木": w = 5
            Case "水": w = 4
            Case "火": w = 3
            Case "月": w = 2
            Case "日": w = 1
        End Select
        x = Range(Rng.Address) + IIf(w < R_wek, w + 7 - R_wek, w - R_wek)
        If IsEmpty(myday) And Range(Rng.Address) < x Then
            myday = x
        ElseIf Range(Rng.Address) < x And myday > x Then
            myday = x
        End If
    Next i
End Function
 
 使用方法は、
 A1 に日付が入っているとして、
 A2 =myday(A1,"月水金土")
 以下コピー
 

[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]

 (キリキ)(〃⌒o⌒)b

(キリキ)様お手数かけましてありがとうございます。
早速試してみます(もえタンぱぱ)


(sin)様、申し訳ございませんが初心者で、出来が悪いものでB水・金のパタ−ンを作るのに頂いた計算式のどこの数字をかえればいいのか解りません。
またCの回答についてですが、J1のセルは、(○月分)と表示形式となっている事をうっかり忘れていてエラ−が出てしまいます。この場合、頂いた計算式のどこを変えれば宜しいのですか?それと毎週水曜日を表示させるにはどこを変えれば宜しいのですか?
お手数ですが、以上3点についてご回答のほどお願い致します。(もえタンぱぱ)


 復元3


 気になったので、、、
 上記マクロの貼り付け方を書いてなかった、
 
 1)Alt + F11 で、「Microsoft Visual Basic」を出す。
 2)挿入 → 標準モジュール
 3)出てきた画面に上記コードをコピペ
 4)「×」でエクセル画面に戻る
 
 あとは数式を入れるだけ〜♪
 
 追加修正!
曜日を数字でも対応できるようにしました〜
日 → 1
月 → 2
火 → 3
水 → 4
木 → 5
金 → 6
土 → 7
 
Function myday(Rng As Range, MyVal As Variant)
Dim R_wek As Integer, i As Integer, w As Integer
Dim x As Variant
    R_wek = Weekday(Range(Rng.Address))
    For i = 1 To Len(MyVal)
        If Not IsNumeric(Mid(MyVal, i, 1)) Then
            Select Case Mid(MyVal, i, 1)
                Case "日": w = 1
                Case "月": w = 2
                Case "火": w = 3
                Case "水": w = 4
                Case "木": w = 5
                Case "金": w = 6
                Case "土": w = 7
            End Select
        Else
            w = Mid(MyVal, i, 1)
        End If
        x = Range(Rng.Address) + IIf(w <= R_wek, w + 7 - R_wek, w - R_wek)
        If IsEmpty(myday) And Range(Rng.Address) < x Then
            myday = x
        ElseIf Range(Rng.Address) < x And myday > x Then
            myday = x
        End If
    Next i
End Function
 
 使用例 : =myday(A1,"23456")

 (キリキ)(〃⌒o⌒)b


 とりあえず基本の考え方を書き込みます。

 [基本とする式] >>> =A1+CHOOSE(WEEKDAY(A1),1,4,3,2,1,3,2)
(尚、事前に今一度、CHOOSE関数とWEEKDAY関数の使い方等をEXCELのヘルプで再確認して下さいまし。)

 A1の日付 A1の曜日 =WEEKDAY(A1)  (1)    (2)	(3)	(4)	
  5月1日	  月	    2	       水  +2    金  +4     水  +2	  金  +4
  5月2日	  火	    3	       水  +1    金  +3     水  +1	  金  +3
  5月3日	  水	    4	       金  +2    金  +2     金  +2	  金  +2
  5月4日	  木	    5	       金  +1    金  +1     金  +1	  金  +1
  5月5日	  金	    6	       土  +1    月  +3     水  +5	  金  +7
  5月6日	  土	    7	       月  +2    月  +2     水  +4	  金  +6
  5月7日	  日	    1	       月  +1    月  +1     水  +3	  金  +5

 A1(算出の元にするセル)の日付の曜日が、月〜日(例:5月1日〜5月7日)だとした場合、
それに対応してA2(一つ下のセル)に求めたい曜日が(1)〜(4)各々上記の様になり、
A1の曜日に何日加算すればよいかを【+○】で表しています。
 この条件(規則)に従い、[基本とする式]では、 IF関数ではなくCHOOSE関数を使って関数式にしただけです。
こう見れば、『なーんだ、結構地味な事やってんのね!』と思われるかもしれませんね。
 ですから、式の意味は、A1の日付(シリアル値)に対し、CHOOSE関数のインデックス(WEEKDAY(A1))に応じて、
該当する引数を加算するというだけです。

 >J1のセルは、(○月分)と表示形式となっている
『5月』と入力するのだと思っていたので、数値の『5』だけを取り出すために、
DATE(YEAR(TODAY()),--SUBSTITUTE(J1,"月",""),0) としました。
                   ~~~~~~~~~~~~~~~~~~~~~~~~ この部分をJ1にすれば、
今年【YEAR(TODAY())】 の J1の数値(5)の月 の 0日 となり、
2006/5/0(2006/5/1の一日前)= 2006/4/30 が求められます。

 以上を参考に、今一度ご自分で考えてみてください。
※1番目も[基本とする式]で出せますよ。
(sin) 理解できる説明になってなかったらdousiyo-。。。


Cについて追加質問ですが、翌月に変わったら表示させない方法ありますか?教えてください。その月よって翌月(月曜日の位置は)A6とは限りませんお願いいたします。

   A列                  j1(5月分)
       

 A1 2006年 5月 1日(月)←自動       
 A2 2006年 5月 8日(月)←自動
 A3 2006年 5月15日(月)←自動
 A4 2006年 5月22日(月)←自動
 A5 2006年 5月29日(月)←自動
 A6 2006年 6月 5日(月)→非表示にしたい


 (〃⌒o⌒)bのコメントはお気に召しませんでしたか・・・
 
できれば、人のコメントを消すような行為は控えていただきたいものですね・・・

コメントしておいたユーザー定義関数は、かなり時間もかかり作成したものですし
σ(^o^;)はちょっと気に入っていたものです。。。

非常に残念です。

 
もしご希望のものでなかったとしたらそのことについて仰っていただければ、、、

 (キリキ)(〃ToT)b

(キリキ)様 失礼いたしました。
キリキ様から頂いた情報は、非常に貴重な物なので、自分のものとしてメモ帳にコピ−ペ−ストで保存してあります。失礼いたしました。今後とも宜しくお願い致します。
m(__)m


貴重な情報なら 尚更同じようなことで困っている人たちのためにもここに残しておいてほしいな〜

(ぷーのすけ)


 遅くなりました。
 ふーっ、何とか、復元しました。
 多分これであっていると思います。
(kazu)

 忙しくて来れなかったら・・・・
kazuさん、お疲れ様でした。
私が覚えてる限りでは、大筋あってると思います。細部までは記憶してませんので。。。

 他では知りませんが、ここでは質問を書き込んだ時点で、質問者だけの書き込みではなくなります。
質問や回答が新たな質問を呼び、よりよい方法や自分にあった方法をみんなが勉強してます。
また、勉強の為には、途中経過が分らないと なぜそうなるの???って混乱しちゃいます。
ですから、削除する事はやめましょう。
多分、今回は、流れを見やすくしようとしたのではないかと推測はしますが・・・
ついでに言えば、HNに関しても、声で聞き分けられないので、だれの発言か分らなくなりますから必ず書いて欲しいと思います。

 >翌月に変わったら表示させない方法ありますか?教えてください。
今は、A2セルに =A1+7 とされてると思いますので、これに条件を加えて、
=IF(A1="","",IF(MONTH(A1+7)=$J$1,A1+7,""))
こんな感じでしょうか。
(sin)

(sin)様の推測のとおりです。みなさんいろいろとお手数賭けまして申し訳ございませんでした。いろいろと助言等ありがとうございます。
おかげ様で解決する事ができました。
今後とも宜しくお願い致します。(もえタンぱぱ)

 kazuさん、お疲れ様ですn(_ _)n
有難うございます〜。
をを!キリキさんのコードってこんなんだったんだぁ。勉強になりますφ(.. )

(ぷーのすけ)


(sin)様またまた質問ですが、上記@〜BについてもA1セルの手入力なしでJ1セルの(○月分)を参照しCのように当月の日付を自動表示し翌月は非表示にする方法で
下記の3パタ−ンの計算式を恐れ入りますが、教えてください宜しくお願い致します。                         (もえタンパパ)

@月・水・金・土と4つの指定曜日のみを当月分自動入力する方法

A月・金と2つの指定曜日のみを当月分自動入力する方法

B水・金と2つの指定曜日のみを当月分自動入力する方法


 遅くなりました。ちょっと忙殺されかかっているもので・・・
一番目のみ書き込みますので、二番目三番目は応用して下さい。
もし、上手くいかない点があれば、どの様にしたけど駄目だった とか この部分が分らない
って、感じで再度書き込んでください。
 A1セルに
=DATE(YEAR(TODAY()),J1,0)+CHOOSE(WEEKDAY(DATE(YEAR(TODAY()),J1,0)),1,2,1,2,1,1,2)
 A2セルに
=IF(A1="","",IF(MONTH(A1)=MONTH(A1+CHOOSE(WEEKDAY(A1),1,2,1,2,1,1,2)),A1+CHOOSE(WEEKDAY(A1),1,2,1,2,1,1,2),""))
で、下方コピー。
(sin)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.