
Excelの数式について教えてください。
セルE4に設定した数式を自動更新する方法を教えてください。
セルA2に基準日:数式「=EOMONTH(TODAY()+1,-MOD(MONTH(TODAY()+1),3)-1)」があります。現在は2022年11月30日と表示されており、自動で3か月毎に更新(例えば次は2023年2月28日、2023年5月31日、2023年8月31日等々)となります。
セルA4にはプルダウンで日付が選択できるように設定しております。
セルC4には「=MAX($A$2,$A$4)」の数式があります。
セルE4には「=IFS(NOT(ISNUMBER(C4)),"",C4<DATE(2023,3,1),DATEVALUE("2022/11/30"),1,DATEVALUE("2023/2/28"))」の数式があり、この数式はセルC4の日付により表示が変わります。
C4が2023年2月28日以前の日付だと「2022年11月30日」と表示
C4が2023年3月1日以降の日付だと「2023年2月28日」と表示されます。
この式のDATE(2023,3,1),DATEVALUE("2022/11/30"),1,DATEVALUE("2023/2/28")は固定式ですが、この固定部分をセルA2の基準日に合わせて3か月毎に更新できる方法を教えてください。
基準日:2023年2月28日の場合は
C4が2023年5月31日以前の日付だと「2023年2月28日」と表示
C4が2023年6月1日以降の日付だと「2023年5月31日」と表示
基準日:2023年5月31日の場合は
C4が2023年8月31日以前の日付だと「2023年5月31日」と表示
C4が2023年9月1日以降の日付だと「2023年8月31日」と表示
等々と変更できる方法を教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
C4って数値以外が入ることあるんですか?
とりあえずざっと見た感じでつくっただけですが
E4=IF(C4>EOMONTH(A2,3),EOMONTH(A2,3),A2)
ではどうでしょう?
C4の数値判定は入れてません。
No.1
- 回答日時:
こんにちは
私は関数を全然わからないのですが、すでに使われている関数を組み合わせれば出来そうですね
ご質問をよく理解していないかも知れません
セルE4に
=IFS(NOT(ISNUMBER(C4)),"",C4>EOMONTH(A2+1,MOD(MONTH(A2),3)),EOMONTH(A2+1,MOD(MONTH(A2),3)),1,EOMONTH(A2+1,MOD(MONTH(A2),1)-1))
使われている関数を組み合わせているだけなので もっと良い書き方があると思います
ご質問とは関係ない事で恐縮ですが、
私が回答した
https://oshiete.goo.ne.jp/qa/13299658.html
での回答は間違いです 間違いのまま認識されるのは本意ではありませんので こちらに訂正回答させて頂きます
問題は結合セルへのAutoFitが機能しない為です(改行コードは関係ありません)
VBAで処理を行う場合
AutoFitした行で作業セル(単セル)へフォントサイズなど考慮し値を代入して
得られたRowHeightを再設定し作業セルを.Clearするような手順になると思います
参考コード(ご質問表組を対象にしています 複雑な結合セルがある場合、結合セルの検証などを追加、書き直す必要があります)
作業用セルの取得は仮で40行目としていますが一番右迄使われている見出しなどがあれば その行に変更してください
訂正コード
Sub 行調整()
Dim r As Range, workCell As Range
Dim n As Integer, i As Integer, existingWidth As Single
Const C As Integer = 4
Const DefaultRowHeight As Double = 27
Application.ScreenUpdating = False
For Each r In Range("B26:B60") 'MergeArea(1) B~E = C =4
If WorksheetFunction.CountIf(r.Resize(, C), "<>") > 0 Then
'値ありセル
r.Rows.AutoFit
'40行目 最終列取得行
n = Cells(40, Columns.Count).End(xlToLeft).Column + 2
For i = 0 To C - 1
If r.Offset(, i).MergeCells Then
Set workCell = Cells(r.Row, n).Offset(, i)
With workCell
existingWidth = .ColumnWidth
.Column Width = GetMaregeColumnWidth(r.Offset(, i).MergeArea)
.WrapText = True
.Font.Size = r.Offset(, i).MergeArea.Font.Size
.Value = r.Offset(, i).Value
End With
End If
Next
If Not workCell Is Nothing Then
r.RowHeight = r.RowHeight
Cells(r.Row, n).Resize(, C).Clear
Cells(r.Row, n).Resize(, C).ColumnWidth = existingWidth
Set workCell = Nothing
End If
Else
'空白行のみ
r.RowHeight = DefaultRowHeight
End If
Next
Application.ScreenUpdating = True
End Sub
Function GetMaregeColumnWidth(RngMarge As Range) As Long
Dim n As Long, r As Range
For Each r In RngMarge.Columns
n = n + r.ColumnWidth
Next
GetMaregeColumnWidth = n
End Function
参考まで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/12/22 17:29
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/04/13 10:55
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Excel(エクセル) Excelで2つのセルにある日付を参照させ期間として1つのセルに表示したいです。 例 c9セルに開始 3 2023/04/06 12:16
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Excel(エクセル) 【関数】ハイフン(-)を月や日に変えたい。スペースを削除したい。 4 2023/07/12 08:49
- Excel(エクセル) 計算式 5 2023/04/21 23:43
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
名前の間のスペースをそろえる...
-
エクセルでラベルシールを印刷...
-
重複しない値を抽出したい
-
空白処理を空白に
-
エクセルの循環参照を削除したい!
-
列挿入をVBAで
-
エクセルの難問。「コピペする...
-
【マクロ 画像あり】Exact関数...
-
【マクロ 画像あり】セル範囲の...
-
至急お願いします!エクセルの...
-
空白のはずがSUBTOTAL関数でカ...
-
エクセルの数式について教えて...
-
エクセルで教えてください。 例...
-
Excelファイルを開くと私だけVA...
-
スプレッドシート(Excelでも良...
-
Excelの数式?について質問です...
-
【マクロ】条件付き書式設定を...
-
ミリ秒を時間へ変更するには? ...
-
VBA_日時のソート
-
エクセルのセルに画像は埋め込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの設定、下へスクロー...
-
別のシートの指定列の最終行を...
-
【マクロ】シート追加時に同じ...
-
Excelファイルを開くと私だけVA...
-
Excelの関数を教えて下さい。
-
マクロを実行すると、セル範囲...
-
エクセルの設定、特定の列以降...
-
Excelの条件付書式について教え...
-
Excelで作成した出欠表から日付...
-
Excelでの文字入力について
-
Excel 日付の表示が直せません...
-
Excel関数の解決方法
-
システムファイルについて
-
自動的に日付入力 応用
-
UNIQUE関数の代用
-
エクセル内に読み込んが画像の...
-
勤務外時間を出す表が作りたい
-
Excel 偶数月の15日(土日祝...
-
【マクロ】Call関数で呼び出し...
-
【マクロ】1回目の実行後、2...
おすすめ情報