文字列
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
文字列を区切り文字で分割したするにはSplit関数を使用します。結果は配列として取得されます。TEXTSPLITと違い一次元配列を生成しますので、セルに縦方向に出力する場合はTRANSPOSE関数を使用する必要があります。
データを並び替える際Excelは「ふりがな」順を優先するため、稀に同じデータでも違う場所に並び変わってしまうことがあります。その対策として、選択範囲のフリガナを一括で削除するマクロを紹介します。
セル内テキストを置換するRange.Replaceメソッドと、Replace関数は、単体ではReplace関数の方が高速でした。しかしそれ以上にセルのアクセス回数の影響が大きく、配列を使用して初めて高速化します。
VBAの関数「Replace」と、Excelのシート関数「SUBSTITUTE」の違いを解説します。どちらも文字列を置換する関数です。第1引数~第3引数までは全く同じ関数で、第4引数以降で設定できる機能に違いがあります。
文字列を置換する、Replace関数の使い方を解説します。置換する文字列の設定の他、開始位置や置換回数なども指定可能です。セル範囲を一括で置換する場合はRelplaceメソッドを使用することもできます。
VBA関数Formatとシート関数TEXTの違いを解説します。両者とも「値を指定の表示形式の文字列に変換する関数」でほとんど同じ仕様の関数です。分を専用で指定できる「n」を使えるのが一番大きな違いです。
文字列を指定の表示形式に変換するFormat関数を使用します。TEXTと同様日付をyyyymmddや和暦、曜日に変換したり、数値の桁区切りや小数点桁数を調整したり、100円などの単位を付与するなど幅広い用途で使用できます。
VBAで文字列を改行したり、改行を操作する方法を解説します。文中の改行を文字列として表現する改行コードにはCR、LF、CRLFの三種類があり、VBAではそれぞれvbCrLf、vbCr、vbLfを使って挿入することができます。
VBAにおいて文字列内の特定文字を変換する際はStrConv関数を使用します。第2引数で変換内容を指定でき、英数カナの全角↔半角、英数字の大文字↔小文字、かな↔カナの変換をなどを行うことができます。
文字列をすべて全角/すべて半角にするには、StrConv関数を使用し、第2引数にvbWide/vbNarrowを渡します。英数字だけでなくカタカナも対象になってしまうため、これらを個別に変換する場合は1文字ずつ変換します。
文字列を比較する際、通常は大/小文字や全/半角は区別されます。この設定を変更し、大/小文字、全/半角を同一とみなす("A"="a"をTrueと判定する)設定にするには、Option Compare ステートメントを使用します。
文字列の順序を比較する際に使用する際はStrComp関数を使用します。StrComp(文字列1, 文字列2, 比較種類)という式で、文字列大小によって-1,0,1の3つの値が返ります。大文字小文字を区別するかを指定できます。
文字列の文字数を数えるLen/LenB関数の使い方を解説します。構文は簡単ですが、Len関数には「引数がString型でない場合は消費メモリを返す」という仕様があり、Long型は常に4が返ってしまうため注意してください。
セル内の文字列を文字ごとに操作する、RangeオブジェクトのCharactersプロパティを解説します。書式を設定するFont、テキストを取得、置換するText、削除・挿入を行うDelete/Insetメソッドなどが使用できます。
セル内の文字列を一部だけ着色(書式変更)する方法を解説します。RangeオブジェクトのCharactersプロパティ、Fontプロパティを使用します。Bold、Name、Sizeで太字、サイズ、フォント種類も設定できます。
セル内の特定の文字列を着色する方法を解説します。Instr関数で文字列の位置を特定し、Charactersプロパティを用いて特定文字列だけを書式設定します。サイズ/太字/フォント/背景色なども同じように設定可能です。
ある文字列を含むセルを検索する方法を解説します。For文またはFor Each文でセルをループし、Instr関数で特定の文字列を含んでいるか判定します。より複雑な判定を行う場合はLike演算子を使用してください。
セル値や変数、配列の中身が文字列か判定するには、TypeName関数を使用します。ただしTypeName関数は"200"や"2025/4/1"なども文字列と判定するため、場合によってIsNumericやIsDateと併用してください。
文字列の中から文字列を検索して削除する方法を解説します。通常はReplace関数を用いますが、n個目だけを削除したい、八謙一の前後も削除したいなどに対応する場合はSubstitute関数やInstr関数を用います。
文字列中のひらがなをカタカナにしたり、カタカナをひらがなに変換する方法を解説します。StrConv関数を使用し、引数にvbHiragana、vbKatakanaを渡します。半角カナに対応するには別の方法が必要になります。
文字列中の半角カナを全角カナに変換する場合は、StrConv関数を使用します。しかし半角⇒全角を行う引数vbWideはすべての半角文字を変換してしまうため、半角英字や半角数字をそのままにする処理が必要です。
文字の種類(数字/アルファベット/カナ)を判定する方法を解説します。主にLike演算子を利用し、数字なら"#"、アルファベットなら"[A-Z]"または"[a-z]"、カナなら"[ァ-ヶ]"などの文字列と比較して判定します。
数値の0埋めにはFormat関数を利用します。ただし、変数に入れるときはString型、セルに出力する際は書式を「文字列」にするか値の先頭にシングルクォーテーション「'」を付けてから出力する必要があります。
数値が何桁か数える場合は、Len関数を使用します。ただしLen関数は「String型以外に使用すると使用するメモリ数を返す」という仕様があるため、CStr関数を使って一度文字列にしてから実行してください。
文字列を時刻に変換するTimeValue関数の使い方を解説します。日付・時刻ともにデータ型としては同じDate型のため、正確には日付が0(1899年12月31日)の時刻を返します。シリアル値には実行できません。