[[20250627073453]] 『マクロでの置換について』(モタード) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『マクロでの置換について』(モタード)

お世話になっております。

 どうかご教示いただきたい事がございます。

 マクロについてお伺いいたします。

 =SUMIFS('4月'!$H$5:$H$1000,'4月'!$C$5:$C$1000,D9)
 上記関数が、セルのE9からE500まで入力されているとします。(関数は例です)

 セルのE2には、月を選択できるセルがありますが、マクロ処理で、

 上記関数の4月を、セルE2の月に置換するマクロをご教示ください。

 ネットで調べてみましたが、分かりませんでした。

 よろしくお願いいたします。

< 使用 Excel:Excel2019、使用 OS:Windows11 >


 Dim m As String
 m = Range("E2").Value
 Range("E9:E500").Formula = "=SUMIFS('" & m & "'!$H$5:$H$1000,'" & m & "'!$C$5:$C$1000,D9)"
(month) 2025/06/27(金) 08:24:00

マクロの方が処理が面倒のなりそうです。
マクロでなくてもINDIRECT関数で処理できますが?

=SUMIFS(

  INDIRECT("'"&$E$2&"'!$H$5:$H$1000"),
  INDIRECT("'"&$E$2&"'!$C$5:$C$1000"),
  D9
)

(暇な人) 2025/06/27(金) 08:53:27


 既に適切な回答がありますが、置換にこだわるなら以下です。
 対象範囲を選択して置換する動作をマクロ記録すれば、殆ど完成形に近いマクロが得られます。
 ポイントは「検索対象」を「数式」に指定するくらいでしょうか。
 数式を直接指定する必要が無い一方で、置換前と置換後の両方を指定することが特徴でしょう。
 学習の一環でしょうからこちらもトライされたらいかがですか?
(xyz) 2025/06/27(金) 12:44:30

複数のご回答ありがとうございます。

 当方の説明不足もあり、実際の関数は次のとおりとなります。
 =IF(D9=0,0,IFERROR(INDEX('4月'!$C$3:$AK$222,MATCH(D9,'4月'!$C$3:$C$222,0),MATCH($D$5,'4月'!$C$3:$AK$3,0)),""))

 (xyz)さんの回答で動作マクロを作成してみましたが、やはり数式の指定方法が不明です。

 (暇な人)さんの回答で関数の場合、追加で関数のご教示をいただければ幸いです。

 よろしくお願いいたします。
(モタード) 2025/06/27(金) 15:32:25

 「検索対象」について、置換は「数式」しかないのでした。
  失礼。トホホ。ポイントでもなんでもなかったという・・・・
(種類が複数あるのは検索のときだけでしたね。)

 それで結果はどうだったのでしょう。置換はうまくいったのですか?

(xyz) 2025/06/27(金) 15:45:31


 (XYZ)さん、ご返信ありがとうございます。

 うまくいきません。

 E2のセルに入力された月に置換したいのですが、方法が分かりません。

 申し訳ございません。ご教示ください。
(モタード) 2025/06/27(金) 16:39:01

 いったん4月を5月に変更する動作を実行して、マクロ記録してください。
 そのあとで、E2セルの値に修正するコードを追加します。
 まずは、4月を5月に変更する動作のマクロ記録をこちらにアップして下さい。

(xyz) 2025/06/27(金) 16:52:36


 (XYZ)さん。ありがとうございます。

 以下、動作マクロとなります。

 Sub Macro1()

    Range("E9:E18").Select
    Selection.Replace What:="4月", Replacement:="6月", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
 End Sub

 4月を6月に変更しました。

 よろしくお願いいたします。
(モタード) 2025/06/27(金) 17:11:13

 Sub Macro1()
     Dim s  As String
     s = Range("E2").Text
     Range("E9:E18").Replace What:="4月", Replacement:=s, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
 End Sub

 なお、"4月"のところも固定ではなく、動いていくので、
 置換前の情報を予めE1セルに入れ、同じようにして What引数を修正できると思います。
(xyz) 2025/06/27(金) 18:09:54

 (XYZ)さん、ご回答ありがとうございます。

 できれば、追加のコードについてもご教示ください。

 無理を申し上げます。よろしくお願いいたします。
(モタード) 2025/06/27(金) 18:59:04

 お断りします。
 ここまで提示しているのですから、是非ご自分でトライしてください。
 その上で詰まったら、どこが不明なのか具体的に質問して下さい。
 Replaceメソッドのヘルプを読んで、What引数,Replace引数が何かを調べて、内容を理解されれば
 さほど難しいことではないと思います。
 マクロ記録も提示されているじゃないですか。マクロもご存じなんでしょう。
 是非頑張ってください。

(xyz) 2025/06/27(金) 19:26:26


 (XYZ)さん、ありがとうございました。

 いわれるように頑張ってみます。ありがとうごあいました。
(モタード) 2025/06/27(金) 20:03:46

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.