Excelマクロ・VBA CSVなどの文字列の分割を行う方法

2022年9月12日

カンマなど特定の文字で区切られている文字列を

セルごとに分割する方法がExcelでは三つあります。

  1. テキストファイルウィザード
  2. 文字列関数
  3. ユーザ定義関数(マクロ・VBA)

それぞれ下記の特徴があります。

-方法特徴
テキストファイルウィザード柔軟性が高いが手間も大きい。
定型化されていない業務に適切。
文字列関数一度関数を作れば、その後の手間が小さい。
ただし数式が非常に複雑。
何度も分割を行う場合に適切。
TEXTSPLIT関数2022年9月のアップデートで追加された関数。
簡潔な数式で文字列の分割が可能です。
最新の関数が利用できる状況では最もお勧めです。
ユーザ定義関数(マクロ・VBA)マクロ・VBAを使う必要があるが
手間の少なさと数式のシンプルさで
②より優秀

この記事では③のユーザ定義関数(マクロ・VBA)で行う方法を紹介します。

他の方法は関連記事よりリンクする別の記事で紹介します。

サンプルファイル

使用方法

※セキュリティの警告が出る場合は有効化してください。(解除方法↓)

サンプルファイルの中に保存されている

ユーザ定義関数MySplitを利用します。

=MySplit(文字列,区切り文字,取得する要素番号)
引数省略時の値説明
文字列省略不可対象文字列を指定。
区切り文字省略不可,などの区切り文字を指定。||など2文字以上でも可。
取得する要素番号省略不可分割した結果の何番目の結果を返すかを指定
引数の詳細

一つ目の引数にCSVなどの文字列、

二つ目の引数にカンマなどの区切り文字、

三つ目の引数に何番目の結果を表示するかを指定します。

(例では2行目にセル指定)

カンマ区切りを分割

||(パイプ)など区切り文字が2文字以上でも構いません。

||(パイプ)区切りを分割

コードサンプル

コードは下記のとおりです。

標準モジュールを追加してペーストすれば

任意のブックで使用可能です。

on Explicit
Function MySplit(文字列 As String, 区切文字 As String, 取得する要素番号 As Integer)
  On Error GoTo catchError 
  MySplit = Split(文字列, 区切文字)(取得する要素番号 - 1) 
  Exit Function
catchError:
    ' 該当する文字列が存在しない場合は空白を結果とする
    MySplit = ""
End Function

Excel完全マスター: 関数・テクニック・新機能を網羅した決定版ガイド

本書は、Excelの基礎から応用まで、包括的に学べるガイドブックです。当サイトの豊富な情報を、電子書籍向けに最適化し、読みやすく再構成しました。

【本書の特徴】

  • 情報量:Word-A4サイズ換算で1,400ページ相当
  • 基本操作から高度なテクニックまで、段階的に学習可能
  • 140種類の関数を詳細に解説
  • 109種類の実用的なテクニックと具体例を紹介
  • 最新機能(XLOOKUP関数、LET関数、シートビュー、LAMBDA関数、スピル等)を徹底解説

【対象読者】

  • Excel初心者からプロフェッショナルまで
  • 体系的にExcelスキルを向上させたい方
  • 業務効率化を目指すビジネスパーソン
  • データ分析や可視化のスキルを磨きたい方

【本書の強み】

  • 実務に即した例題と解説
  • 視覚的な図表やスクリーンショットで理解を促進
  • 最新のExcelバージョンに対応した内容
  • 著者の長年の経験に基づく、実践的なTipsを多数収録

【更新とサポート】

  • 常に最新の情報を反映するため、定期的に内容を更新
  • 最新版の入手方法:Amazonカスタマーサポートへお問い合わせください

【入手方法】

  • 買い切り:950円
  • Kindle Unlimited:読み放題プランで利用可能

Excelマスターを目指す方、業務効率を劇的に向上させたい方に、自信を持っておすすめできる一冊です。この1冊で、Excelの可能性を最大限に引き出す力が身につきます。

関連記事

マクロ・VBAの学習・活用方法の記事一覧

他の方法で区切り文字列の分割を行う

テキストファイルウィザード

文字列関数

活用例

姓と名(苗字と名前)を結合・分割する方法