ウィンドウズ版のエクセル97を使ってます。
曜日指定の日付の入ったセルを作りたいのですが、セルの連続データのフィルハンドルでうまく行きません。簡単に出来る方法を教えて下さい。
具体例   2月 2日(土)
      2月 5日(火)
      2月 7日(木)
      2月 9日(土)
      2月12日(火)
      2月15日(木)
      2月17日(土)
        ・
        ・
        ・

このQ&Aに関連する最新のQ&A

A 回答 (6件)

#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は本当は必要ないのですが
計算式の関係で使っています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/02/07 20:23

#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
    • good
    • 0
この回答へのお礼

ありがとうございました。
未熟者なのでまた質問をした時は、宜しくお願い致します。

お礼日時:2002/02/07 20:29

再びRESです。

(No.3で回答)
回答No.4のkenken0001さんのが、正解です。

最終的にできれば良いと、未熟なマクロを投稿してしまいました。
それにしても、簡単にできますね。発想が大事ですね。
    • good
    • 0
この回答へのお礼

ありがとうございました。私は、未熟なのでマクロはよく理解出来きません。

お礼日時:2002/02/07 20:26

どうも簡単には出来ないようです。



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

まず、
例えば、セル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
    • good
    • 0

セルに 2/6 と入力して、そのセルを選択して



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

 m"月"d"日"(aaa)

とします。あとはフィルハンドルを引っ張ります。
    • good
    • 0

こんにちは セルを分ければできそうです。



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

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

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

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

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

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

Qエクセル 関数 指定セルより大きい数字で連続したデータが指定セルより大きい場合は〇にしたい

教えてください。
 A  B    C    D    E  ...  I
1   2000年 2001年 2002年 2003年  
2犬  20   100   50   200    100
3猫  40   35    20   10    30
4馬  50   55    70   10    50


A列に動物名、B列からG列は2000年から2005年という表があります。
犬の場合は、B2:E2の範囲でI2の値より大きい場合で、2年以上連続している場合はJ列に〇をつけたいです。
犬は基準が100で連続していないのでなし。
猫は基準が30で2000年、2001年と連続して30より大きいので○
馬は基準が50で2000年、2001年、2002年と連続して50より大きいので○
こんな関数があったら教えてください。
仕事で使うので困っています。よろしくお願いします。

Aベストアンサー

こんばんは!

J2セルに
=IF(SUMPRODUCT((B2:F2>I2)*(C2:G2>I2)),"○","")

という数式を入れ、フィルハンドルで下へコピーではどうなりますか?m(_ _)m

Q(Excel)エクセルのバージョンごとの使用可能関数リストがあるサイト

(Excel)エクセルのバージョンごとの使用可能関数リストがあるサイト

Excel2007でIFERROR関数などを使っていました
しかし、以前のExcelバージョンだと使えないようです。
そこで、どの関数がどのExcelバージョンから使用可能か?
というリストのようなものを掲載しているサイトはありますか?

Aベストアンサー

下記ページで2007で追加された関数が解ります。

Excel(エクセル)基本講座:Excel(エクセル)関数一覧表
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/itiran.html

Qエクセルのセル指定連続データの入力について

エクセルで次の数式を入力したセルがあります。

『='4月'!B7+'5月'!B7+'6月'!B7+'7月'!B7+'・・・・』

これを、右側にドラッグして
『='4月'!B8+'5月'!B8+'6月'!B8+'7月'!B8+'・・・・』
とする方法を知りたいのですが、どうしても
『='4月'!C7+'5月'!C7+'6月'!C7+'7月'!C7+'・・・・』
となってしまいます。

フィルのオプションを試してみたのですが、アルファベットの連続データ
は入力できないようです。
ネットを探したのですがどうしても見つけられませんでした。どなたかわ
かる方いたら教えててください。よろしくお願いします。

Aベストアンサー

安直ですが次の方法は如何でしょうか。
(1)元数式のセル参照を列絶対($B7)参照に変更
(2)元セルを下方向にコピー
(3)コピーセル範囲をコピーし、コピー先で「形式を選択して貼り付け」→行列を入れ替える→OK
(4)元数式セル以下のセルを削除

Qエクセルで、3Dのドーナツグラフの作成方法を教えてください

 ある雑誌の中で、ドーナツ(真中に丸い空白)の3Dグラフを見ました。
 同じように、エクセル2002でドーナツの3Dグラフの作成をする事は可能でしょうか? もし可能であれば、作成方法を教えてください。
 どうぞ宜しくお願い致します。 

Aベストアンサー

ドーナツグラフの書式で「影つき」を選ぶと微妙に…(^^;

3D円グラフのように斜め上から見たような図だったのでしょうか?

Qエクセル リストで指定したセルを別シートで参照し、参照セルから指定セルを表示させる方法?

エクセルで自社式の伝票を作成しようと思っています。

シート1のA列2行目から下に向かって商品名リストが、
シート1の1行目B1から右に向かって事業所名が入り、いずれも増加していきます。
シート1のB2以降は商品単価が入り、事業所単位で単価の違うものを一覧化してあります。

シート1 【イメージ】
          B1     B2    B3
         事業所1  事業所2  事業所3
A2 商品イ    200円   空欄    空欄
A3 商品ロ    空欄    330円   空欄
A4 商品ハ    180円   空欄    170円

シート2のA列では事業所1・2・3がドロップダウンリスト表示されるようになっており、
シート2のB列で、A列でリスト表示した現業名に対応する商品リストだけをリスト表示させ、
更にはC列でその価格を表示したいのですがうまくいきません。

エクセル関数に強い方、どうか教えていただけませんか?

Aベストアンサー

●入力シートのA列一番下の事業所リストから、商品名を表示する
Sheet2!E1セルに
=IFERROR(INDEX(Sheet1!A:A,SMALL(IF(INDEX(Sheet1!B$2:D$20,,MATCH(LOOKUP("ーー",A:A),Sheet1!$B$1:$D$1,0))<>"",ROW(Sheet1!B$2:B$20)),ROW(A1))),"")
[Ctrl]+[Shift]+[Enter]で確定。配列数式、{}で囲まれる。
下へオートフィル

Sheet2!B列の入力規則のリスト
=OFFSET(E$1,,,COUNTIF(E:E,"?*"))


●G列以降(右)に商品名を表示する(計算が重くなり、非現実的)
Sheet2!G2セルに
=IFERROR(INDEX(Sheet1!$A:$A,SMALL(IF(INDEX(Sheet1!$B$2:$D$20,,MATCH($A2,Sheet1!$B$1:$D$1,0))<>"",ROW(Sheet1!$B$2:$B$20)),COLUMN(A2))),"")
[Ctrl]+[Shift]+[Enter]で確定。配列数式、{}で囲まれる。
右へ下へオートフィル

Sheet2!B列の入力規則のリスト
=OFFSET($G1,,,,COUNTIF($G1:$Z1,"?*"))

●共通
Sheet2!C2セル
=INDEX(Sheet1!$B$2:$D$4,MATCH($B2,Sheet1!$A$2:$A$4,0),MATCH($A2,Sheet1!$B$1:$D$1,0))

●入力シートのA列一番下の事業所リストから、商品名を表示する
Sheet2!E1セルに
=IFERROR(INDEX(Sheet1!A:A,SMALL(IF(INDEX(Sheet1!B$2:D$20,,MATCH(LOOKUP("ーー",A:A),Sheet1!$B$1:$D$1,0))<>"",ROW(Sheet1!B$2:B$20)),ROW(A1))),"")
[Ctrl]+[Shift]+[Enter]で確定。配列数式、{}で囲まれる。
下へオートフィル

Sheet2!B列の入力規則のリスト
=OFFSET(E$1,,,COUNTIF(E:E,"?*"))


●G列以降(右)に商品名を表示する(計算が重くなり、非現実的)
Sheet2!G2セルに
=IFERROR(INDEX(Sheet1!$A:$A,SMALL(IF(INDEX(Sheet...続きを読む

Qエクセルについてお聞きします。数字0は表示しない設定にしたいのですが、

エクセルについてお聞きします。数字0は表示しない設定にしたいのですが、可能でしょうか?

Aベストアンサー

シート全体を0非表示にするなら、「ツール」「オプション」「表示」の
「ゼロ値」のチェックをはずす。

個々のセルの0を非表示にするなら、「セルの書式設定」の「ユーザー定義」で
種類のボックスに # と入力するなどの方法があります。

Qエクセルで、日付の入ったデータ内にある指定月のデータ件数(セルの個数)を計算したい。

こんにちは、以下質問お分かりになる方がいらっしゃいましたら、
是非教えて頂きたく思います。

エクセルのブックで、以下のようなシートがあります。
ここから、空いているセル(E1等どこでも)で例えば8月の件数を
表示したいのですが、方法が分かりません。

     A      B    C
1    2007/7/1  人名1 場所A
2    2007/8/5  人名1 場所D
3    2007/6/10 人名3 場所F
4    2007/8/4  人名2 場所C
5    2007/6/3  人名4 場所D

これで、例えばE1に2(8月の件数は2つなので)と表示したいです。
A列の日付は、シリアル値を日付表示しています。

宜しくお願い致します。

Aベストアンサー

次の数式は如何でしょうか。
=SUMPRODUCT((MONTH(A1:A5)=8)*1)

Qエクセル(excel)のパスワード解除について

パスワードがかかっているエクセルのファイルが大量にあり、
パスワードもなにかわかっていてるのですが、いちいち開くときにパスワードを入力するのが大変です。
(ちなみに、パスワードはすべて同じです。)
そこで、一括してパスワードを解除するファイルがあれば教えて頂きたいです。


よろしくお願いします。

Aベストアンサー

> 一括してパスワードを解除するファイルがあれば教えて頂きたいです。

そのようなものは作らなければありませんよ。
作るための確認です。
パスワードとは読み取りパスワードのことですね?
すべて同じ読み取りパスワードが設定されたエクセルのファイルが特定のフォルダー内に大量にあるのですね?
それらのファイルの読み取りパスワードをすべて無しにしたいのですね?
以上の前提が正しければ以下のVBAを標準モジュールに記載したエクセルファイルを、必ず解除したいファイルがあるフォルダー内に保存してください。

標準モジュールに記載する方法は
1.新しいエクセルを開き、AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。
2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。

Sub TEST01()
  Dim myFn As String
  Dim pw As String
  Dim wb As Workbook '以上変数宣言
  pw = InputBox("解除する読み取りパスワードを入力してね。")
  Application.ScreenUpdating = False '画面更新一時停止
  myFn = Dir(ThisWorkbook.Path & "\*.xls?") 'エクセルBOOK検索
  Do While myFn <> "" '対象が存在する限り続行
    If myFn <> ThisWorkbook.Name Then 'ファイル名が自分の名と違っていれば
      Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & myFn, Password:=pw) '開く
      With wb
        Application.DisplayAlerts = False '警告一時停止
        .SaveAs Filename:=wb.FullName, Password:="" 'パスワードなしで上書保存
        .Close False '閉じる
        Application.DisplayAlerts = True '警告停止解除
      End With
    End If
    myFn = Dir() '次検索
  Loop '繰り返し
  Application.ScreenUpdating = True '画面更新停止解除
  MsgBox "終了しました。"
End Sub

3.Alt+F11キーでワークシートへもどります。
4.解除対象となるファイルがある一フォルダー内に名前を付けて保存する。(パス取得のためマクロ実行前に必ず一度は「保存」してあることが必要です。)
5.Alt+F8キーで出てきたマクロ名(TEST01)を選択して実行します。

> 一括してパスワードを解除するファイルがあれば教えて頂きたいです。

そのようなものは作らなければありませんよ。
作るための確認です。
パスワードとは読み取りパスワードのことですね?
すべて同じ読み取りパスワードが設定されたエクセルのファイルが特定のフォルダー内に大量にあるのですね?
それらのファイルの読み取りパスワードをすべて無しにしたいのですね?
以上の前提が正しければ以下のVBAを標準モジュールに記載したエクセルファイルを、必ず解除したいファイルがあるフォルダー内に保存してく...続きを読む

Qエクセルのセル指定の際、どのセルの隣。など指定できますか?

VLOOKUP関数の中で、通常はA4などセルの場所を指定していますが、例えば『A4の隣のセル』『B5の隣のセル』という指定の方法はできますか?

Aベストアンサー

こんにちは。maruru01です。

右隣なら、

=OFFSET(セル,,1)

=INDEX(1:65536,ROW(セル),COLUMN(セル)+1)

などですね。


人気Q&Aランキング