練習問題と内容について
・練習問題の狙い
このシリーズでは課題を元にマクロVBAを実践することでスキルを身につけることが出来ます。
正直、ソースコード作成については実践あるのみです!
答えのコードについては数例挙げますが、「もっといい答えがある」などの意見があれば
問い合わせから連絡ください!
こんな問題を作ってほしいなどの意見もお待ちしております!
・練習問題22について
こちらはマクロVBAの知識で少し発展した課題になります。
今回は指定範囲内の文字・数値を置換する練習問題となります。
それでは頑張っていきましょう!
練習問題の内容と動作説明
問題内容
セル番地A1からA10までのセルに入力されたテキストの中で、一部の文字列を別の文字列に置換して、結果をセル番地C1からC10に表示する。
動作説明
この問題では、セル番地A1からA10までのセルに入力されたテキストを操作し、指定した文字列を別の文字列に置換します。
そして、置換後の結果をセル番地C1からC10に表示します。
ヒント
以下のヒントを参考にして解答コードを作成してみてください。
・ヒントその1
テキストの置換には、VBAの組み込み関数であるReplace関数を使用します。
この関数は、指定した文字列内の一部の文字列を別の文字列に置換するために使用されます。
– 対象文字列: 置換を行いたい文字列。
– 置換前の文字列: 置換したい部分文字列。
– 置換後の文字列: 置換後の文字列。
– 開始位置 (オプション): 置換を開始する位置。省略すると1番目の文字から置換が始まります。
– 置換回数 (オプション): 置換を行う回数。省略するとすべての一致箇所が置換されます。
– 比較方法 (オプション): 文字列の比較方法を指定します。省略するとバイナリ比較が行われます。
これらのヒントを参考にして、解答コードを作成してみてください。
以上のヒントを参考に課題に取り組んでみてください!
Excel 2013以下を使用している方はサポートが終了しているので注意が必要です!
【最新2023年】Excel・Officeの価格比較!あなたに合ったオススメの製品の選定方法から購入 ► 独学エクセル塾 (dokugakuexcel.com)
解答コード
では回答を見ていきましょう!
・回答その①
Sub Exercise22to1()
Dim rng As Range
Dim cell As Range
‘ 対象範囲を指定
Set rng = Range(“A1:A10”)
‘ 置換処理を実行
For Each cell In rng
cell.Offset(0, 2).value = Replace(cell.value, “エクセル”, “Excel”)
Next cell
End Sub
上記のコードでは、セル番地A1からA10までのセルに入力されたテキストの中で、エクセルをExcelに置換しています。
置換後の結果は、元のテキストとは別のセルのC列に表示されます。
それでは実行してみましょう。
結果はこのようになります。
エクセルをExcelに置き換えることが出来ていますね。
・回答その②
Sub Exercise22to2()
Dim rng As Range
Dim cell As Range
‘ 対象範囲を指定
Set rng = Range(“A1:A10”)
‘ 置換処理を実行
For Each cell In rng
cell.Offset(0, 2).value = WorksheetFunction.Substitute(cell.value, “エクセル”, “Excel”)
Next cell
End Sub
上記のコードでは、WorksheetFunction.Substitute関数を使用して文字列の置換を行っています。
この関数は、指定した文字列内の一部の文字列を別の文字列に置換するために使用されます。
必要な知識
この問題を解くためには、以下の基本的な知識が必要です。
Offsetメソッド
Offsetメソッドは、Rangeオブジェクトの位置をずらすために使用されます。
Offsetメソッドを使用して、対象セルからの相対的な位置に移動することができます。
Replace関数
Replace関数は、指定した文字列内の一部の文字列を別の文字列に置換するために使用されます。
置換前の文字列と置換後の文字列を指定することで、テキストの置換を行うことができます。
WorksheetFunctionの使用
Substitute関数の置換をするためには、WorksheetFunctionが必要です。
下記参考記事で紹介しています!
まとめ
この練習問題では、指定したセル範囲に入力されたテキストの中から一部の文字列を置換する操作について学びました。
具体的には、セル番地A1からA10までのセルに入力されたテキストの中で、指定した文字列を別の文字列に置換し、
結果を別のセル範囲に表示する問題を解きました。
解答コードでは、RangeオブジェクトやOffsetメソッドを使用して対象範囲を指定し、Replace関数を使用してテキストの置換を行いました。
VBAを使うことで、セル内のテキスト操作や置換など、様々なデータ処理を自動化することができます。
練習問題を通じて、VBAのスキルを向上させ、エクセルの操作を効率化する方法を学んでいきましょう。
以上が練習問題21となります。お疲れ様でした!