はじめての親子ハイキングに挑戦!! >>

月末火曜日の日付をスタートとして稼働日数を求めたいと思っています。

10月なら9/25~10/30まで
11月なら10/30~11/27まで
12月なら11/27~12/25までの日数を計算したいです。

月末水曜日になると当月の日数に自動で計算が切り替わるよう計算することは可能でしょうか。

わかる方がいれば教えていただきたいです。
※土日は日数に含んでOKです。

A 回答 (3件)

No1です



>先程試したところ8と表示されるのですが11/28~今日までが8日という計算でしょうか?
はい。下に示しますように『今日』を対象に計算する式として作成してしまいましたので、12/5(=本日)は11/27(=最終火曜日)から数えて8日目という意味になります。
(シートが自動計算の設定になっていれば、明日になると9と表示されるはずです)

私の勝手な勘違いだったかもしれませんが、「今日が月末火曜日から何日目かを計算する」関数式として考えていましたが、対象が「今日」とは限らなかったのでしょうか?
その場合は、式中の「TODAY()」の部分を対象の日(=シリアル値)に置き換えればそのまま同じ計算が可能なはずです。
例えば、対象の日がA1セルに入力されているとするなら、TODAY()を全てA1に置き換えればよいといった感じです。

>ただ、水曜日になったら前日の火曜日分も含めて計算してほしいです。
翌日の水曜日を2日目と計算したいという意味でしょうか?
(No1の説明を読んでいただければわかりますが)現在の式は、水曜日は1(日目)と表示される式になっています。
修正したい場合は、No1の式より常に1日多い値になれば良いだけなので、式の最後に「+1」を加えれば、お求めの結果になると思います。

>とても複雑な回答で解読できなかったので教えていただけると幸いです
式は少々長いですが、全体としての構成は、単純にIFで場合分けした式になっています。
ご参考までに、大雑把な構成を言葉で示すならば・・・
『対象日(今日)がその月の最終火曜日より前なら、前月の最終火曜日からの日数を数え、後ならその月の最終火曜日からの日数を数える』
という式になっています。
    • good
    • 0

こんにちは!



一気に!となると相当長い数式になってしまいますので、
段階を追ってみてはどうでしょうか?

↓の画像でD1セルは
=TODAY()

としています。
そしてD4セル(セルの表示形式は判りやすいように yyyy/m/d(aaa) としています)に
=IF(D1<EOMONTH(D1,0)-WEEKDAY(EOMONTH(D1,0)-2,3),EOMONTH(D1,-1)-WEEKDAY(EOMONTH(D1,-1)-1,3),EOMONTH(D1,0)-WEEKDAY(EOMONTH(D1,0)-1,3))

という数式を入れています。
これでD1セルが月の最終水曜日になった時点で前月の最終火曜日のシリアル値になります。

E4セルには
=EOMONTH(D4,1)-WEEKDAY(EOMONTH(D4,1)-1,3)

という数式を入れています。
これでE4セルにはD4セルの次の月の最終火曜日のシリアル値が表示されます。

A4セル(セルの表示形式はユーザー定義から m月度 としている)に
=E4

B4セルに単純に引き算の
=E4-D4+1

という数式を入れています。

※ D1セルのシリアル値を色々入れ替えて検証してみてください。

※ 万一、月末が最終火曜の場合はお望みどおりにならないかもしれません。m(_ _)m
「月末の自動計算」の回答画像2
    • good
    • 0

こんにちは



月末火曜日には28(または35)と表示されていて、翌水曜日から1、2、3・・・と計算されるような関数ということですよね?

もっと要領の良い回答がありそうな気がしますが、とりあえず
=IF(TODAY()<=EOMONTH(TODAY(),0)-MOD(WEEKDAY(EOMONTH(TODAY(),0),1)-3,7),TODAY()-(EOMONTH(TODAY(),-1)-MOD(WEEKDAY(EOMONTH(TODAY(),-1),1)-3,7)),TODAY()-(EOMONTH(TODAY(),0)-MOD(WEEKDAY(EOMONTH(TODAY(),0),1)-3,7)))
    • good
    • 0
この回答へのお礼

ありがとうございます!

翌水曜日から計算される関数という認識であっております。
ただ、水曜日になったら前日の火曜日分も含めて計算してほしいです。

回答としては
10月なら9/25~10/30 → A.35
11月なら10/30~11/27まで→ A.28
12月なら11/27~12/25→ A.28
という答えを求めています。
先程試したところ8と表示されるのですが11/28~今日までが8日という計算でしょうか?

とても複雑な回答で解読できなかったので教えていただけると幸いです。
恐れ入りますがよろしくお願い致します。

お礼日時:2018/12/05 14:31

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

このQ&Aを見た人はこんなQ&Aも見ています

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

Qエクセルでの名前の定義について

エクセルで シート1の患者の単に名前が下にずらっと並んでいて、シート2にそれぞれの患者の情報が
横に列ごとの項目種類でならんでいた場合シート1の患者に名前の定義をし(例 S患者名)、シート2でも患者に名前を定義し(例 B患者名) それぞれお互いにクリックして見れるようにハイパーリンクをしたが、シート2でソートなどをした関係か、シート2からシート1はいいが、シート1からシート2はずれてリンクささってしまうが、どうしてか? ご教授ください。

Aベストアンサー

No.1です。

このやり方は名前の定義は不要です。手順に沿って行うだけでよいです。
A列には普通に名前を羅列します。(例 A2:Aさん、A3:Bさん、・・・)
B列には下記の手順にしたがって数式を入力します。
C列にはリンクしたい先の名前を記載します。(例 C2:Bさん、C3:Cさん、・・・)
こちらで試したときのデータの配置を添付しました。(そちらのデータの配置は把握しておりません)

No.2の回答で、うまくいかなかった理由は、数式のシート名の部分が『sheet』になっているためと思われます。そちらのファイルではシート名は『シート○○』ですよね?

ついでに、もう一点微修正しましたので、以下の手順と差し替えてください。
(数式を変えただけで手順は同じです)
最下部の※も参照ください。

◆手順
1.シート1のB2セルに『=HYPERLINK(CELL("address",INDEX(シート2!A:A,MATCH(C2,シート2!A:A,))),C2)』と入力して、下方向にコピペします。
2.シート1のC列にリンク先患者名(例:S患者名)を記入します。
3.シート2のB2セルに『=HYPERLINK(CELL("address",INDEX('シート1'!A:A,MATCH(C2,'シート1'!A:A,))),C2)』と入力して、下方向にコピペします。
4.シート2のC列にリンク先患者名(例:B患者名)を記入します。


シート名やセル参照はそちらのデータにあわせる必要があります。
リンク(C列)に指定した名前がもう一方のシートの名簿(A列)に存在しない場合、リンクがエラーになります。
あっているはずなのにリンクがエラーになるときは、F2キーを押してからEnterを試してください。

No.1です。

このやり方は名前の定義は不要です。手順に沿って行うだけでよいです。
A列には普通に名前を羅列します。(例 A2:Aさん、A3:Bさん、・・・)
B列には下記の手順にしたがって数式を入力します。
C列にはリンクしたい先の名前を記載します。(例 C2:Bさん、C3:Cさん、・・・)
こちらで試したときのデータの配置を添付しました。(そちらのデータの配置は把握しておりません)

No.2の回答で、うまくいかなかった理由は、数式のシート名の部分が『sheet』になっているためと思われます。そちらのファイ...続きを読む

Qエクセルで名前入力をしたら最新日付のデータを抽出したい

初めての質問になります。
よろしくお願いします。

タイトル通りの内容で(A1)に名前を入力したら、
その名前(D列3から300行)の最新の日付(E列3から300行)のデータ(U列3から300行)を
(B1)に抽出をしたいです。
尚、使用している日付は2018/12/5 のタイプの日付形式です。
※シート別けしておらず同一シートです。

A1 あああ(入力) B1 100(抽出データ)

D列 E列 データ
あああ 2018/12/5 100
あああ 2018/11/5 98
あああ 2018/10/5 45
いいい 2018/12/4 88
いいい 以下略 以下略
いいい
ううう
ううう
ううう

昔から簡単な作業はやってきたのですが関数?となるとどうも苦手で、
これから勉強していきたいと思ってます。
いろいろ触っていくとエクセルって楽しいですね!
本当は質問ではなく自己解決してみたいところではあるのですが、
苦戦しつつ3時間が経過・・・ちょっと泣けてきましたので質問させて頂きました。
質問もこんな形式で理解してもらえるかわかりませんがよろしくお願いします。

初めての質問になります。
よろしくお願いします。

タイトル通りの内容で(A1)に名前を入力したら、
その名前(D列3から300行)の最新の日付(E列3から300行)のデータ(U列3から300行)を
(B1)に抽出をしたいです。
尚、使用している日付は2018/12/5 のタイプの日付形式です。
※シート別けしておらず同一シートです。

A1 あああ(入力) B1 100(抽出データ)

D列 E列 データ
あああ 2018/12/5 100
あああ 2018/11/5 98
あああ 2018/10/5 45
いいい 2018/12/4 88
...続きを読む

Aベストアンサー

何度も済みません。
[No.2]用の添付図です。

QエクセルのIF関数について教えてください

エクセル2007を使用しているのですが、IF関数について分からない事があるので分かる方アドバイスをお願いします。

A2には「お急ぎ便」「通常便」「日時指定便」のいづれかの文字が入力されています。
A3には「出荷予定日」  2018/12/1 など入力されています。
A4には「=A3+1」と入力して出荷予定日の翌日の日付が入力されるようにしています。 
     例えばA3が2018/12/1の場合には2018/12/2と表示されます。

私がやりたいことですが、A5のセルに下記の情報を入力したいです。

A2のセルに「お急ぎ便」という特定の文字が含まれている場合には、出荷予定日の翌日に到着させなければいけない為、A4の日付をA5セルに表示させるようにしたいです。

反対に「通常便」「日時指定便」の文字が含まれている場合には、A5セルに何も入力せずに「空白」にしたいです。

私も色々と試行錯誤しながら下記の関数がつかえそうだと考えてみましたが、この文字列はお急ぎ便という文字がはいっている場合は○を表示させて、入っていない場合は×と表示させるものですよね。

=IF(COUNTIF(A2,"*お急ぎ便*")=1,"○,"×")

上記の○の部分に、A4のセルで表示されている文字を表示させるようにしたいのですが、可能でしょうか?×の部分は単純に削除して空白にすればいいと思うので問題がないのですが、○の部分に=A3+1とかA4とか色々と入力しましたが、入力した内容がそのまま表示されてしまって、A4の日付をA5のセルに表示させるのはできないようです。

分かる方がいらっしゃったらアドバイス頂ければ助かります。どうぞよろしくお願いします。

エクセル2007を使用しているのですが、IF関数について分からない事があるので分かる方アドバイスをお願いします。

A2には「お急ぎ便」「通常便」「日時指定便」のいづれかの文字が入力されています。
A3には「出荷予定日」  2018/12/1 など入力されています。
A4には「=A3+1」と入力して出荷予定日の翌日の日付が入力されるようにしています。 
     例えばA3が2018/12/1の場合には2018/12/2と表示されます。

私がやりたいことですが、A5のセルに下記の情報を入力したいです。

...続きを読む

Aベストアンサー

>○の部分に=A3+1とかA4とか色々と入力しましたが、入力した内容がそのまま表示されてしまって

まずは、A5のセルの表示形式を日付にしましょう。

それから、A2には
>「お急ぎ便」「通常便」「日時指定便」のいづれかの文字が入力されています。
なので、部分一致にしなくても

A5=IF(A2="お急ぎ便",A4,"")

でよくないですか?それとも他に文字がプラスされることがあるのですか?

Qエクセル日付のみ抽出

エクセルの文章の途中の日付 ○/○ だけを抽出したいです。
左でも右でもなく文章の途中です。

お分かりの方いらっしゃいますか??

Aベストアンサー

こんばんは。

=MID(C2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},C2&1234567890)),LEN(C2)*10+1-SUM(LEN(SUBSTITUTE(C2,{0,1,2,3,4,5,6,7,8,9},))))

このように、LEN(C2)*10+1 ←と1を足せば、8/31 の場合、8/3 しか出ないのは直るのですが、

8/ までしか出ない場合は、特例で、空白が紛れ込んでいるので、例えば、原文をマウス選択して、「検索/置換」で、検索値に、半角スペースを置き、置換側は何もいれないようにして、実行すれば、半角のスペースを取り去れば、8/ までしか出ない場合も、出るようになります。

Qエクセルについて。

次の数式を求める関数(下の方のプラン表)は、どんな数式を打てば良いのでしょうか?教えていただけると幸いです。

Aベストアンサー

単純な足し算ですよね。
添付画像のように作ったとして

[C8]=SUM($B$2,C$7,$B8)

これを[C8:F12]の範囲にコピーすればOK。

通常、数式のセルは、コピー貼り付けすると、移動先に応じてセルアドレスが変わってしまいますが、
「$」をつけることで、固定することができます。

上の式だと、どこに移動しても

$B$2 は B2 を参照するように固定される。

C$7 は 7行目 を参照するように固定される。
(式を下にコピーしても、7行目に固定される)

$B8 は B列 を参照するように固定される。
(式を右にコピーしても、B列に固定される)

ということになります。
$をつけて参照先を固定するのを「絶対参照」、
つけていない普通の場合は「相対参照」、
と言います。
より詳しいことは、このキーワードで検索して調べてみてください。

金額表示については、セルの書式から、
分類:通貨
記号:\
にしてあります。
実際のセルに「\」は入力されていません。

Q【Excel】VLOOKUP検索値が複数あった場合、下の値を表示したい

D列のコードをA列の中で検索し、
B列の値をE列に表示したいのですが、
VLOOKUPを使用した場合、検索値の最初の行が表示されます。
同じコードの場合、一番下の行の値を表示するにはどうしたら良いでしょうか。

Aベストアンサー

添付画像の通りの並びが前提となってしまいますが、こんな感じでどうでしょう。

【E2セル】=INDEX(B:B,MATCH(D2,A:A,0)+COUNTIF(A:A,D2)-1)

QExcelで数値が入っているセルにおいてその数値を表示せず、代わりに任意の文字列を表示したいのですが

Excelで数値が入っているセルにおいてその数値を表示せず、代わりに任意の文字列を表示したいのですが何か方法はありますか?

あるセルに元の数値があってそれをベースに別のセルで計算を行っています。但しその元の数値を印刷時に見えなくし、代わりに任意の文字列を表示したいのです。

例えば社内でのみ閲覧可能な定価相当の数値があり、これにある掛け率で売価を計算しているとします。当然この売価は印刷時において見える必要があります。一方元の数値の入ったセル部分には実際には社内定価の数値が入っているのですがこれを表示するのではなく「オープン価格」として表示したいケースです。
いい方法はありますか?

Aベストアンサー

「セルの書式設定」-「ユーザ定義」で、”オープン価格” と定義してみては。

Qエクセルの質問です 1つのセルに複数の名前を入力していきたいのですが リストボックスを作ってそこから

エクセルの質問です

1つのセルに複数の名前を入力していきたいのですが
リストボックスを作ってそこから任意のセルに入力していくような方法はありませんでしょうか?
マクロ初心者で色々調べて見たのですがよく理解できず試してみたものもうまく動きませんでした…

リストボックスに
A子
ᗷ男
C郎
D美

とあるものとしてそこから
例えばA子とD美の名前を選択したとして
自分が選択した1つのセル内に
A子 D美 のように取得したいのです

今データを入力していくシートの名前「記録」になっていて
名前をシート「コピペ用」のA列に記入していっています

Aベストアンサー

こんな感じで、どうでしょう。

Private Sub CommandButton1_Click()
Dim i As Long
Dim s As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then
If s <> "" Then s = s & vbLf
s = s & ListBox1.List(i)
End If
Next
Selection.Cells.Value = s
End Sub

Qエクセル関数

式の中の参照部分を、D1のセルの内容によって変えたいです。
下記が実際の式なのですが
=IFERROR(IF(VLOOKUP(I6,[工場在庫.xlsm]A!$D$3:$D$1000,1,FALSE)=I6,"OK","新規追加!!"),"新規追加!!")

この式の [工場在庫.xlsm]A! の部分をD1のセルから持ってくるにはどうしたらいいかがわかりません。
D1のセルが[工場在庫.xlsm]B!だったら
=IFERROR(IF(VLOOKUP(I6,[工場在庫.xlsm]B!$D$3:$D$1000,1,FALSE)=I6,"OK","新規追加!!"),"新規追加!!")
としたいです。
ご教授お願いいたします。

Aベストアンサー

こんにちは

簡単にやるなら、INDIRECT関数を利用して参照範囲を可変にすればよさそう。

[工場在庫.xlsm]A!$D$3:$D$1000
  ↓ ↓
INDIRECT(D1 & "$D$3:$D$1000")

ただし、INDIRECT関数等は揮発性関数と言われる種類ですので、他の方の質問でこのような(↓)ものもありますのでご注意。
https://oshiete.goo.ne.jp/qa/10893054.html

Qエクセルで週番号から現在までの経過日数を割り出したい。

例えば セルにある 17.2018から本日までの経過日数を隣りのセルに表示する方法を
教えてください。

Aベストアンサー

No.1・3です。

>曜日は月曜日を基準にしております
というコトなので・・・
一気に数式で!となると相当厄介だと思いますので、
一案です。
↓の画像のようにD・E列を作業用の列としてみてはどうでしょうか?
A2セルに開始週?を小数点込みの数値で入力するとします。

D1セル(セルの表示形式はユーザー定義から yyyy/m/d(aaa) としています)に
=IF(YEAR(DATE(MOD(A$2*10^4,10^4),1,ROW(A1)))<>MOD(A$2*10^4,10^4),"",DATE(MOD(A$2*10^4,10^4),1,ROW(A1)))

これはうるう年を考慮したために少し数式が長くなってしまいました。

E1セルに
=IF(D1="","",WEEKNUM(D1,2))

これでD列シリアル値がその年の何週目か?が表示されます(月曜始まり)

D1・E1セルを範囲指定 → 366行目までフィル&コピーしておきます。

そしてB2セルに
=TODAY()-INDEX(D:D,MATCH(INT(A2),E:E,0))

という数式を入れています。

※ 画像では「本日」から2018年の第17週目月曜を単純に引いています。
月曜日を含むのであれば「+1」としてみてください。

※ 作業列が目障りであれば非表示にしておいてください。m(_ _)m

No.1・3です。

>曜日は月曜日を基準にしております
というコトなので・・・
一気に数式で!となると相当厄介だと思いますので、
一案です。
↓の画像のようにD・E列を作業用の列としてみてはどうでしょうか?
A2セルに開始週?を小数点込みの数値で入力するとします。

D1セル(セルの表示形式はユーザー定義から yyyy/m/d(aaa) としています)に
=IF(YEAR(DATE(MOD(A$2*10^4,10^4),1,ROW(A1)))<>MOD(A$2*10^4,10^4),"",DATE(MOD(A$2*10^4,10^4),1,ROW(A1)))

これはうるう年を考慮したために少し数式が長くな...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング