OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルで曜日指定のセル連続データを作りたい

  • 暇なときにでも
  • 質問No.212970
  • 閲覧数791
  • ありがとう数3
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 69% (9/13)

ウィンドウズ版のエクセル97を使ってます。
曜日指定の日付の入ったセルを作りたいのですが、セルの連続データのフィルハンドルでうまく行きません。簡単に出来る方法を教えて下さい。
具体例   2月 2日(土)
      2月 5日(火)
      2月 7日(木)
      2月 9日(土)
      2月12日(火)
      2月15日(木)
      2月17日(土)
        ・
        ・
        ・
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル9

ベストアンサー率 69% (51/73)

#2の方に追加です。
セルの書式設定は m"月"d"日"(aaa)
として
A1セルから始めるとします。

A1に、1月31日を入力
A2に、+A1+2 (2/2)
A3に、+A2+3 (2/5)
A4に、+A3+2 (2/7)

として、A2からA4を選択して
フィルハンドルでOKだと思います。
A1は本当は必要ないのですが
計算式の関係で使っています。
お礼コメント
hideharu

お礼率 69% (9/13)

ありがとうございました。未熟な私には、マクロはまだあまり理解出来ないので
適切な回答でした。エクセルを使いこなせないのでまた質問をした時は、宜しくお願い致します。
投稿日時 - 2002-02-07 20:23:20
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル6

ベストアンサー率 21% (3/14)

こんにちは セルを分ければできそうです。 セルAに年月日をあらわす数字 例えば2/6を入力します。 (表示はセルの書式設定によって、お好みの 2月6日等へ変更します) 隣り合うセルBにWEEKDAYと言う関数を使い セルAを参照します。 例えばB1ならWEEKDAY(A1)のように。 そうすると曜日を表す数字が返ってきますので 後はIF関数等で曜日を示す文字(”日”、”月 ...続きを読む
こんにちは セルを分ければできそうです。

セルAに年月日をあらわす数字
例えば2/6を入力します。
(表示はセルの書式設定によって、お好みの
2月6日等へ変更します)

隣り合うセルBにWEEKDAYと言う関数を使い
セルAを参照します。

例えばB1ならWEEKDAY(A1)のように。

そうすると曜日を表す数字が返ってきますので
後はIF関数等で曜日を示す文字(”日”、”月”等)へ
変換すればよいと思います。

連続して作成したい時はコピーでセルを移動すれば
日にちに対応した曜日になるはずです。

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

セルに 2/6 と入力して、そのセルを選択して セルの書式設定→表示形式→ユーザー設定で  m"月"d"日"(aaa) とします。あとはフィルハンドルを引っ張ります。
セルに 2/6 と入力して、そのセルを選択して

セルの書式設定→表示形式→ユーザー設定で

 m"月"d"日"(aaa)

とします。あとはフィルハンドルを引っ張ります。
  • 回答No.3
レベル9

ベストアンサー率 50% (17/34)

どうも簡単には出来ないようです。 ですが、マクロでできました。 まず、 例えば、セルA1に「2月1日」、セルB1に下記の式をコピペ(テキスト形式で)。  =IF(ISNUMBER(A1)=FALSE,"",IF(WEEKDAY(A1)=2,"(月)",IF(WEEKDAY(A1)=3,"(火)",IF(WEEKDAY(A1)= ...続きを読む
どうも簡単には出来ないようです。

ですが、マクロでできました。

まず、
例えば、セルA1に「2月1日」、セルB1に下記の式をコピペ(テキスト形式で)。 

=IF(ISNUMBER(A1)=FALSE,"",IF(WEEKDAY(A1)=2,"(月)",IF(WEEKDAY(A1)=3,"(火)",IF(WEEKDAY(A1)=4,"(水)",IF(WEEKDAY(A1)=5,"(木)",IF(WEEKDAY(A1)=6,"(金)",IF(WEEKDAY(A1)=7,"(土)","(日)")))))))

(もし、HTMLでコピペした場合はセルB1、B2、B3のセルの結合を解除)

セルの連続データのフィルハンドル

2月1日(金)
2月2日(土)
2月3日(日)
2月4日(月)
2月5日(火)
2月6日(水)
2月7日(木)
  ・
  ・
  ・

そして、マクロに下記のコードをコピペして、実行すれば、できます。

最初の日付の曜日のセルをアクティブにすることと最後の日付の曜日のセルの下のセルは空欄である必要があります。

Sub 火木土抽出()
'《条件》
'最初の日付の曜日のセルをアクティブにすること
'最後の日付の曜日のセルの下のセルは空欄

Dim i As Integer
Dim R As Integer
Dim C As Integer
i = 1
Do Until IsEmpty(Cells(i, 2).Value)
If ActiveCell.Value = "(火)" Then
ElseIf ActiveCell.Value = "(木)" Then
ElseIf ActiveCell.Value = "(土)" Then
Else
R = ActiveCell.Row
C = ActiveCell.Column
Range(Cells(R, C - 1), Cells(R, C)).Select
Selection.Delete Shift:=xlUp
Cells(R, C).Select
If ActiveCell.Value = "(火)" Then
ElseIf ActiveCell.Value = "(木)" Then
ElseIf ActiveCell.Value = "(土)" Then
Else
ActiveCell.Offset(-1, 0).Select
i = i - 1
End If
If ActiveCell.Row <> 1 Then
ActiveCell.Offset(-1, 0).Select
i = i - 1
Else
End If
End If
ActiveCell.Offset(1, 0).Select
i = i + 1
Loop
Range("A1").Select
End Sub
  • 回答No.5
レベル9

ベストアンサー率 50% (17/34)

再びRESです。(No.3で回答) 回答No.4のkenken0001さんのが、正解です。 最終的にできれば良いと、未熟なマクロを投稿してしまいました。 それにしても、簡単にできますね。発想が大事ですね。 ...続きを読む
再びRESです。(No.3で回答)
回答No.4のkenken0001さんのが、正解です。

最終的にできれば良いと、未熟なマクロを投稿してしまいました。
それにしても、簡単にできますね。発想が大事ですね。
お礼コメント
hideharu

お礼率 69% (9/13)

ありがとうございました。私は、未熟なのでマクロはよく理解出来きません。
投稿日時 - 2002-02-07 20:26:28
  • 回答No.6
レベル13

ベストアンサー率 68% (791/1163)

#2 は日付書式の質問と勘違いしていました。日付が飛んでいましたね。 質問の曜日間隔は例だと思いますので、自由に曜日指定できるようユーザー定義関数を作ってみました。 最初のセル(例えばA1)に最初の日付を入れます。 その下のセル(A2になります)に例えば =youbiFil(A1,"火","木","土") とします。 ユーザー定 ...続きを読む
#2 は日付書式の質問と勘違いしていました。日付が飛んでいましたね。
質問の曜日間隔は例だと思いますので、自由に曜日指定できるようユーザー定義関数を作ってみました。

最初のセル(例えばA1)に最初の日付を入れます。
その下のセル(A2になります)に例えば =youbiFil(A1,"火","木","土") とします。

ユーザー定義関数の引数は、参照するセル、曜日サイクルです。
曜日サイクルは、『"火","木","土"』のように設定します。
『"月","火","水","木","金"』なら土日は出ません。『"土"』しか設定しなければ土曜日しか出しません。
3つ目の日付以降はフィルハンドルを引っ張れば出てきます。列方向もできます。


Public Function youbiFil(rgUp As Range, ParamArray myYoubi())
  '曜日のパターンを登録していなければ何もしない
  If UBound(myYoubi) < 0 Then
    youbiFil = "": Exit Function
  End If

  Dim yb As Integer '前のセルは指定した曜日サイクルの何番目?
  Dim maeYoubi As Integer '前のセルの曜日
  Dim curYoubi As String 'カレントセルの曜日
  Dim curDay As Date 'カレントセルの日付
  '最初の日付の曜日が、指定した曜日サイクルと違っていれば何もしない
  maeYoubi = -1
  For yb = 0 To UBound(myYoubi)
    If myYoubi(yb) = Format(rgUp, "aaa") Then
      maeYoubi = yb
      Exit For
    End If
  Next
  If maeYoubi = -1 Then youbiFil = "": Exit Function

  '前のセルの曜日の次は曜日サイクルのどこにあるか調べる
  If maeYoubi < UBound(myYoubi) Then
    curYoubi = myYoubi(maeYoubi + 1)
  Else
    curYoubi = myYoubi(0)
  End If
  '曜日が一致するまで日付を進める
  curDay = rgUp + 1
  While Format(curDay, "aaa") <> curYoubi
    curDay = curDay + 1
  Wend
  youbiFil = curDay
End Function
お礼コメント
hideharu

お礼率 69% (9/13)

ありがとうございました。
未熟者なのでまた質問をした時は、宜しくお願い致します。
投稿日時 - 2002-02-07 20:29:01
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ