• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBA セルの文字の取得)

ExcelVBA セルの文字の取得

このQ&Aのポイント
  • Excel2010 VBAについてご教授願います。あるセルに特定のフォーマットで記述された文字列があります。その文字列から特定の部分を取得する方法について教えてください。
  • 特定のフォーマットで記述された文字列があるセルにあります。その文字列から特定の部分を抽出するVBAコードの作成方法について教えてください。
  • あるセルに特定のフォーマットで記述された文字列があります。その文字列から指定した部分を取得するExcel VBAの方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんにちは。 'あるセルに以下の様な内容''セルの内容''(改行)' という説明からして、 「ひとつのセルに セル内改行を含む文字列 がある」 という理解でいます。 求める結果の方には'(改行)'と書かれていないことから、 切り分けた文字列それぞれを複数のセル(セル範囲)に出力する、 もしくは、単に配列変数に格納できればいい、という理解でいます。 内容的には、  セルの文字列を  vbLf(セル内改行と同値)を区切り文字として、  Split()関数で配列変数に格納し、   各要素に対し、   一旦、InStr()関数で"-"の桁位置を取得して、   5桁手前以降の文字列をLike演算子で評価し、   "#####-###-###*"で始まる文字列であれば、   先頭の数字の前にvbLfを挿入し、  処理後の配列変数をvbLfで連結した文字列を  再度vbLfでSplit()関数に掛け、  求める配列を作り出します。 方法は他にもありますし、条件によっては簡略化出来そうな部分も多いですが、 比較的解り易い内容にはなっているかと。 Sub Re8909609a() Dim sBuf, arr Dim sTmp As String Dim i As Long Dim nPos As Long   sBuf = Cells(1, 1)   arr = Split(sBuf, vbLf)   For i = 0 To UBound(arr)     nPos = 1     sTmp = arr(i)     Do       nPos = InStr(nPos + 6, sTmp, "-")       If nPos Then         If Mid(sTmp, nPos - 5) Like "#####-###-###*" Then           arr(i) = Left$(sTmp, nPos - 6) & vbLf & Mid(sTmp, nPos - 5)         End If       End If     Loop While nPos   Next i   sBuf = Join(arr, vbLf)   arr = Split(sBuf, vbLf)   For i = 0 To UBound(arr)     Cells(i + 1, 2) = Trim$(arr(i))   Next i End Sub

mcs-tani
質問者

お礼

ご教授、誠にありがとうございます。 本当に感謝!感謝です!(嬉し涙) 完璧です。

関連するQ&A