和風スパゲティのレシピ

日本語でコーディングするExcelVBA

文字列

16本目:無駄な改行を削除

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

24本目:全角英数のみ半角

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

60本目:「株式会社」の表記ゆれ置換

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

65本目:固定長テキスト出力

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

72本目:ITをDXに変換(文字列操作)

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

文字列を区切り文字で分割する - Split関数

文字列を区切り文字で分割したするにはSplit関数を使用します。結果は配列として取得されます。TEXTSPLITと違い一次元配列を生成しますので、セルに縦方向に出力する場合はTRANSPOSE関数を使用する必要があります。

セルに設定されたふりがなを一括削除するマクロ

データを並び替える際Excelは「ふりがな」順を優先するため、稀に同じデータでも違う場所に並び変わってしまうことがあります。その対策として、選択範囲のフリガナを一括で削除するマクロを紹介します。

ReplaceメソッドとReplace関数の速度比較

セル内テキストを置換するRange.Replaceメソッドと、Replace関数は、単体ではReplace関数の方が高速でした。しかしそれ以上にセルのアクセス回数の影響が大きく、配列を使用して初めて高速化します。

Replace関数とSUBSTITUTE関数の違い

VBAの関数「Replace」と、Excelのシート関数「SUBSTITUTE」の違いを解説します。どちらも文字列を置換する関数です。第1引数~第3引数までは全く同じ関数で、第4引数以降で設定できる機能に違いがあります。

文字列を置換する - Replace関数

文字列を置換する、Replace関数の使い方を解説します。置換する文字列の設定の他、開始位置や置換回数なども指定可能です。セル範囲を一括で置換する場合はRelplaceメソッドを使用することもできます。

Format関数とTEXT関数の違い

VBA関数Formatとシート関数TEXTの違いを解説します。両者とも「値を指定の表示形式の文字列に変換する関数」でほとんど同じ仕様の関数です。分を専用で指定できる「n」を使えるのが一番大きな違いです。

文字列を指定の表示形式に変換する-Format関数

文字列を指定の表示形式に変換するFormat関数を使用します。TEXTと同様日付をyyyymmddや和暦、曜日に変換したり、数値の桁区切りや小数点桁数を調整したり、100円などの単位を付与するなど幅広い用途で使用できます。

文字列を改行する/改行を消す/別文字に置換する

VBAで文字列を改行したり、改行を操作する方法を解説します。文中の改行を文字列として表現する改行コードにはCR、LF、CRLFの三種類があり、VBAではそれぞれvbCrLf、vbCr、vbLfを使って挿入することができます。

全半角/大小文字/カナを変換する - StrConv関数

VBAにおいて文字列内の特定文字を変換する際はStrConv関数を使用します。第2引数で変換内容を指定でき、英数カナの全角↔半角、英数字の大文字↔小文字、かな↔カナの変換をなどを行うことができます。

文字列の全角/半角を切り替える - StrConv関数

文字列をすべて全角/すべて半角にするには、StrConv関数を使用し、第2引数にvbWide/vbNarrowを渡します。英数字だけでなくカタカナも対象になってしまうため、これらを個別に変換する場合は1文字ずつ変換します。

文字列比較の設定を変更する - Option Compare

文字列を比較する際、通常は大/小文字や全/半角は区別されます。この設定を変更し、大/小文字、全/半角を同一とみなす("A"="a"をTrueと判定する)設定にするには、Option Compare ステートメントを使用します。

文字列の順序を比較する - StrComp関数

文字列の順序を比較する際に使用する際はStrComp関数を使用します。StrComp(文字列1, 文字列2, 比較種類)という式で、文字列大小によって-1,0,1の3つの値が返ります。大文字小文字を区別するかを指定できます。

文字列の文字数を数える - Len/LenB関数

文字列の文字数を数えるLen/LenB関数の使い方を解説します。構文は簡単ですが、Len関数には「引数がString型でない場合は消費メモリを返す」という仕様があり、Long型は常に4が返ってしまうため注意してください。

セル内文字列を文字ごとに操作する - Characters

セル内の文字列を文字ごとに操作する、RangeオブジェクトのCharactersプロパティを解説します。書式を設定するFont、テキストを取得、置換するText、削除・挿入を行うDelete/Insetメソッドなどが使用できます。

セル内の文字列を一部だけ着色する - Characters

セル内の文字列を一部だけ着色(書式変更)する方法を解説します。RangeオブジェクトのCharactersプロパティ、Fontプロパティを使用します。Bold、Name、Sizeで太字、サイズ、フォント種類も設定できます。

セル内の特定文字列だけを着色する - Characters

セル内の特定の文字列を着色する方法を解説します。Instr関数で文字列の位置を特定し、Charactersプロパティを用いて特定文字列だけを書式設定します。サイズ/太字/フォント/背景色なども同じように設定可能です。

特定の文字列を含むセルを検索する - Instr関数

ある文字列を含むセルを検索する方法を解説します。For文またはFor Each文でセルをループし、Instr関数で特定の文字列を含んでいるか判定します。より複雑な判定を行う場合はLike演算子を使用してください。

セル値や変数が文字列(String)か判定する

セル値や変数、配列の中身が文字列か判定するには、TypeName関数を使用します。ただしTypeName関数は"200"や"2025/4/1"なども文字列と判定するため、場合によってIsNumericやIsDateと併用してください。

文字列内の指定文字列を削除する - Replace関数

文字列の中から文字列を検索して削除する方法を解説します。通常はReplace関数を用いますが、n個目だけを削除したい、八謙一の前後も削除したいなどに対応する場合はSubstitute関数やInstr関数を用います。

ひらがな↔カタカナの相互変換 - StrConv関数

文字列中のひらがなをカタカナにしたり、カタカナをひらがなに変換する方法を解説します。StrConv関数を使用し、引数にvbHiragana、vbKatakanaを渡します。半角カナに対応するには別の方法が必要になります。

半角英数はそのままに半角カナを全角カナに変換する

文字列中の半角カナを全角カナに変換する場合は、StrConv関数を使用します。しかし半角⇒全角を行う引数vbWideはすべての半角文字を変換してしまうため、半角英字や半角数字をそのままにする処理が必要です。

文字の種類(数字/アルファベット/カナ)を判定する

文字の種類(数字/アルファベット/カナ)を判定する方法を解説します。主にLike演算子を利用し、数字なら"#"、アルファベットなら"[A-Z]"または"[a-z]"、カナなら"[ァ-ヶ]"などの文字列と比較して判定します。

数値の桁数を揃える(0埋めする) - Format関数

数値の0埋めにはFormat関数を利用します。ただし、変数に入れるときはString型、セルに出力する際は書式を「文字列」にするか値の先頭にシングルクォーテーション「'」を付けてから出力する必要があります。

数値の桁数を取得する/小数点第何位か調べる

数値が何桁か数える場合は、Len関数を使用します。ただしLen関数は「String型以外に使用すると使用するメモリ数を返す」という仕様があるため、CStr関数を使って一度文字列にしてから実行してください。

文字列を時刻(Date型)に変換する-TimeValue関数

文字列を時刻に変換するTimeValue関数の使い方を解説します。日付・時刻ともにデータ型としては同じDate型のため、正確には日付が0(1899年12月31日)の時刻を返します。シリアル値には実行できません。