- ベストアンサー
複数のセルにまたがった文字の検索
- セルに,図のような記号がランダムに配置されています。空白と四角とハイフンが並んでいます。これらの文字列は1つのセルに入力されているわけではなく,1セルに付き1文字入力されています。
- 空白で区切られた□と-を1つのグループとして,各グループの個数と,各グループのセル長を抽出したいです。
- マクロなしで関数のみで処理したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
計算が重くなりますので作業列を作って対応します。 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セルにはお求めの結果が表示されます。
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>できればマクロなしで関数のみで処理したいです。 あえてマクロでユーザー定義関数を作ってみました 以下のコードを標準モジュールに貼付 セルには =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
お礼
ありがとうございました。
お礼
お返事を忘れていました。 このままだと文字列群が1グループだけの時にうまくいきませんでしたが,教えていただいた内容を改良することで対処できました。ありがとうございました。