Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7011 / 13644 ツリー ←次へ | 前へ→

【41744】日付を曜日で振り分ける ととろ 06/8/21(月) 22:30 質問[未読]
【41746】Re:日付を曜日で振り分ける Kein 06/8/21(月) 23:12 回答[未読]
【41749】Re:日付を曜日で振り分ける kobasan 06/8/21(月) 23:55 発言[未読]
【41760】Re:日付を曜日で振り分ける kobasan 06/8/22(火) 8:31 発言[未読]
【41787】日付を曜日で振り分ける ととろ 06/8/22(火) 20:08 お礼[未読]

【41744】日付を曜日で振り分ける
質問  ととろ E-MAIL  - 06/8/21(月) 22:30 -

引用なし
パスワード
   エクセル初心者です。お知恵を拝借したく思います。
エクセルのA,B,C列に年、月、日が下記のように入力されています。
基本的には土日の日付しかありません。
土日で処理を分けたいです。
まずC列が5(土)の分のデータを範囲指定したいです。

A B C D E F G
-------------
6 8 5 * * * *
6 8 5 * * * *
6 8 5 * * * *
6 8 5 * * * *
6 8 6 * * * *
6 8 6 * * * *
6 8 6 * * * *
6 8 6 * * * *

i = 1
  Mywk = DateSerial(Cells(i, "A"), Cells(i, "B"), Cells(i, "C"))
  Do While Weekday(Mywk) <>1
  i =i + 1
  Loop
Range("A1", Cells(i - 1, "G")).Select
自分でも変だと思いますがどこか分りません。
分る方は教えてください。

【41746】Re:日付を曜日で振り分ける
回答  Kein  - 06/8/21(月) 23:12 -

引用なし
パスワード
   >範囲指定したい
目的のセル範囲を変数に入れる、ということで良いなら
AA列を作業列にするとして・・

Sub MySaturday()
  Dim MyR As Range

  On Error Resume Next
  With Range("A1", Range("A65536").End(xlUp)).Offset(, 26)
   .Formula = "=IF(WEEKDAY(DATE(2000+A1,B1,C1))=7,""土"",0)"
   Set MyR = Intersect(.SpecialCells(3, 2).EntireRow, _
   Range("A:G"))
   .ClearContents
  End With
  On Error GoTo 0
  If Err.Number <> 0 Then
   MsgBox "土曜日はありません", 48: Exit Sub
  End If

  'ここへ変数 MyR を使った処理コードを書く

  Set MyR = Nothing
End Sub

てな感じです。

【41749】Re:日付を曜日で振り分ける
発言  kobasan  - 06/8/21(月) 23:55 -

引用なし
パスワード
   今晩は。
別のやり方として。

Sub test()
Dim myday As Date
Dim rng As Range, r As Range, Satrng As Range

  Set rng = Range("A1", Range("A65536").End(xlUp))
  For Each r In rng
    myday = DateSerial(Cells(r.Row, "A").Value, _
              Cells(r.Row, "B").Value, _
              Cells(r.Row, "C").Value)
    If Weekday(myday) = 1 Then
      If Sunrng Is Nothing Then
        Set Sunrng = r.Resize(1, 7)
      Else
        Set Sunrng = Union(Sunrng, r.Resize(1, 7))
      End If
    End If
  Next
  Satrng.Select
  MsgBox "土曜日"
End Sub

【41760】Re:日付を曜日で振り分ける
発言  kobasan  - 06/8/22(火) 8:31 -

引用なし
パスワード
   ミスがあったので訂正します。

Sub test()
Dim myday As Date
Dim rng As Range, r As Range, Satrng As Range

  Set rng = Range("A1", Range("A65536").End(xlUp))
  For Each r In rng
    myday = DateSerial(Cells(r.Row, "A").Value, _
              Cells(r.Row, "B").Value, _
              Cells(r.Row, "C").Value)
    If Weekday(myday) = 7 Then
      If Satrng Is Nothing Then
        Set Satrng = r.Resize(1, 7)
      Else
        Set Satrng = Union(Satrng, r.Resize(1, 7))
      End If
    End If
  Next
  Satrng.Select
  MsgBox "土曜日"
End Sub

【41787】日付を曜日で振り分ける
お礼  ととろ E-MAIL  - 06/8/22(火) 20:08 -

引用なし
パスワード
   keinさん、kobasanさん

自分には理解できない部分がありますが、納得のいく処理が出来ました。
お忙しい中、手助けしていただきありがとうございます。

7011 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free