• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のセルにまたがった文字の検索)

複数のセルにまたがった文字の検索

このQ&Aのポイント
  • セルに,図のような記号がランダムに配置されています。空白と四角とハイフンが並んでいます。これらの文字列は1つのセルに入力されているわけではなく,1セルに付き1文字入力されています。
  • 空白で区切られた□と-を1つのグループとして,各グループの個数と,各グループのセル長を抽出したいです。
  • マクロなしで関数のみで処理したいです。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

計算が重くなりますので作業列を作って対応します。 A列は空白にしてB1セルからAN1セルまでにお示しのようなデータが有るとします。 B2セルには次の式を入力してAN2セルまでドラッグコピーします。 =IF(AND(A1="",B1<>""),1,IF(AND(A1<>"",B1<>""),A2+1,"")) B3セルには次の式を入力してAN3セルまでドラッグコピーします。 =IF(AND(B2<>"",C2=""),B2,"") B4セルには次の式を入力してAN4セルまでドラッグコピーします。 =IF(B3<>"",IF(A4<>"",A4&","&B3,B3),IF(A4="","",A4)) AN4セルにはお求めの結果が表示されます。

noname#182764
質問者

お礼

お返事を忘れていました。 このままだと文字列群が1グループだけの時にうまくいきませんでしたが,教えていただいた内容を改良することで対処できました。ありがとうございました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>できればマクロなしで関数のみで処理したいです。 あえてマクロでユーザー定義関数を作ってみました 以下のコードを標準モジュールに貼付 セルには =vsbsetb(A1:AM1) と式を記入してください。 Public Function vsbsetb(Target As Range) As String   Dim myStr As String   Dim c As Range, i As Long   Dim arr As Variant   For Each c In Target      If c.Value = "" Then       myStr = myStr & " "     Else       myStr = myStr & c.Value     End If   Next   myStr = WorksheetFunction.Trim(myStr)   arr = Split(myStr)   For i = 0 To UBound(arr)     arr(i) = Len(arr(i))   Next   vsbsetb = Join(arr, ",") End Function

noname#182764
質問者

お礼

ありがとうございました。

関連するQ&A