• ベストアンサー

曜日別にExcelシートにデーター入力

A1セルに2014/3/18と入力した際、入力ボタンで図のようにA3~C12に2014/3/18は火曜日なのでデーターH3~J12を入力したいのですが。尚、A1の日付(曜日)を変更した際、入力ボタンを押すごとにA3~C12の値がその曜日ごとのデーターに変わるようにしたいのですが。VBAコードをお解りになる方よろしくお願いします。(因みに添付画面は月曜日から水曜日としてますが日曜日まで入力するつもりです)

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 回答No.1です。  前の回答のワークシート関数を応用したVBAです。 Sub Macro0() With Range("A3:C12") .FormulaR1C1 = _ "=IF(ISNUMBER(1/DAY(R1C1)),IF(INDEX(C5:C25,ROW(),WEEKDAY(R1C1,3)*3+COLUMNS(C1:C))="""","""",INDEX(C5:C25,ROW(),WEEKDAY(R1C1,3)*3+COLUMNS(C1:C))),"""")" .Value = .Value End With End Sub

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 回答No.2とはまた別の方式によるVBAです。 Sub Macro01()   Dim w As String, c As Range, i, r, r1 As Long     If IsDate(Range("A1")) Then    w = Format(Range("A1"), "aaaa")    Else    MsgBox "日付が入力されていません" _     & vbCrLf & "処理を中止します", _     vbExclamation, "日付不明"    Exit Sub    End If   Set c = Range(Cells(1, 5), Cells(1, Columns.Count)) _    .Find(what:=w, LookIn:=xlValues, lookat:=xlWhole)   If c Is Nothing Then    MsgBox "その曜日のデータが見つかりません" _     & vbCrLf & "処理を中止します", _     vbExclamation, "データ無し"    Exit Sub    End If   r = 3   For i = 0 To 2    r1 = c.Offset(0, i).End(xlUp).Column    If r1 > r Then r = r1   Next i   Range("A3:C" & Rows.Count).ClearContents   With Range("A3:C" & r)    .Value = .Offset(0, c.Column - Range("A3").Column).Value   End With   End Sub

kuma0220
質問者

お礼

答えを引き出すのにいろいろコードありますね。大変勉強になります。ありがとうございます。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 別にVBAなど使わずとも、ワークシート関数でも十分可能な事の様に思いますが、VBAでなければならない理由でもあるのでしょうか?  まず、A3セルに次の関数を入力して下さい。 =IF(ISNUMBER(1/DAY($A$1)),IF(INDEX($E:$Y,ROW(),WEEKDAY($A$1,3)*3+COLUMNS($A:A))="","",INDEX($E:$Y,ROW(),WEEKDAY($A$1,3)*3+COLUMNS($A:A))),"")  次に、A3セルをコピーして、A3~C12の範囲に貼り付けて下さい。  これで、A1セルに日付を入力する毎に、A3~C12の値がその曜日ごとのデーターに変わるようになります。

kuma0220
質問者

お礼

有難うございます。

関連するQ&A