次の方法で共有

実行日の時間が5時半PMの前か後かによって決済日を返すエクセルの式

Anonymous
2017-02-26T17:43:53+00:00

コミュニティーの皆さま:

ご質問させていただきます。

下のように実行日(日付+時間の値)が入ったセルのある表があるとします。

実行日の5:30PM以前のものは次の日に決済され、5:30PM以降は次の次の日に決済されるとします。

E行に実行日が5:00PM以前の値は実行日+1日追加した日付

E行に実行日が5:00PM以後の値は実行日+2日追加した日付

を入力できる式を入力することはできますでしょうか?

実をいうと実行日がテキストで入っているのかよくわからないので、隣にコピーして数字フォーマットを選びました。

シリアル番号が出たので、テキストでは入っていないと思うのですが・・・。

もしよろしかったらお知恵を頂けると幸いです。

Windows 7, Excel 2013です。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2017-02-28T06:56:01+00:00

土日を考慮した数式にするならE2セルに以下のような数式を入力します。

=WORKDAY(F2-"17:30",2)

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

19 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-02-28T09:13:13+00:00

    何の工夫もないマクロで恥ずかしいのですが、、、

    Sub 決済日入力マクロ()

        Dim i As Long

        Dim last As Long

        last = Cells(Rows.Count, 6).End(xlUp).Row

        For i = 2 To last

            If Weekday(Cells(i, 6)) = vbMonday And TimeValue(Cells(i, 6)) <= TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 1

            ElseIf Weekday(Cells(i, 6)) = vbMonday And TimeValue(Cells(i, 6)) > TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 2

            ElseIf Weekday(Cells(i, 6)) = vbTuesday And TimeValue(Cells(i, 6)) <= TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 1

            ElseIf Weekday(Cells(i, 6)) = vbTuesday And TimeValue(Cells(i, 6)) > TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 2

            ElseIf Weekday(Cells(i, 6)) = vbWednesday And TimeValue(Cells(i, 6)) <= TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 1

            ElseIf Weekday(Cells(i, 6)) = vbWednesday And TimeValue(Cells(i, 6)) > TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 2

            ElseIf Weekday(Cells(i, 6)) = vbThursday And TimeValue(Cells(i, 6)) <= TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 1

            ElseIf Weekday(Cells(i, 6)) = vbThursday And TimeValue(Cells(i, 6)) > TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 4

            ElseIf Weekday(Cells(i, 6)) = vbFriday And TimeValue(Cells(i, 6)) <= TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 3

            ElseIf Weekday(Cells(i, 6)) = vbFriday And TimeValue(Cells(i, 6)) > TimeValue("17:30") Then

                Cells(i, 5) = Cells(i, 6) + 4

            ElseIf Weekday(Cells(i, 6)) = vbSaturday Then

                Cells(i, 5) = Cells(i, 6) + 3

            ElseIf Weekday(Cells(i, 6)) = vbSunday Then

                Cells(i, 5) = Cells(i, 6) + 2

            End If

        Next

    End Sub

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2017-02-28T09:07:07+00:00

    ここはExcelをコピー貼り付けるだけで表が出来上がります。

    質問をよく読まずに回答してたので削除しました。

    マックちゃん (敬称略)の回答みてきがつきました。

    すみませんでした。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2017-02-28T08:57:01+00:00

    ファ~様:

    ありがとうございました。

    エクセルの表を添付できるのかと探したのですが、添付するクリップが見つかりませんでした。

    表の作成のアイコンをクリックしても何もでてこなかったのでエクセルを付けることができずに申し訳ございません。

    式をよく見て内容を理解して使用させていただきます。

    祭日・・・そうですね。 実は祭日があるとパターンがちょっと崩れるのですが、祭日の時だけは手作業で決済日をちょちょっと調節する予定です。

    今一番の鬼門が土日ですので、そこをクリアできると非常に楽になります。

    ありがとうございました。

    6:30を足してやってそのあと書式なり切り捨てなり

    つかえばよさそう。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2017-02-28T08:53:49+00:00

    マックちゃん様:

    お久しぶりでございます。

    同結果を得ることが出来ました。

    ありがとうございました。

    関数WORKDAYの勉強をしてまたコメントさせていただいてよろしいですか?

    こういう関数があることは知りませんでした。

    なぜこの式がすべての行に等しく使えて正しい決済日が返されるのかちょっと考えてみます。

    土日を考慮した数式にするならE2セルに以下のような数式を入力します。

    =WORKDAY(F2-"17:30",2)

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません