エクセル雑感
文字列のセルだけ結合

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日:2020-06-15

文字列のセルだけ結合


ツイッターに出したたお題です。
セル範囲の、文字列のセルだけを文字列結合してください。
つまり数値のセルは無視して文字列結合するという事です。


お題「文字列のセルだけ結合」

さて、図のように、数値のセルを無視して数値以外のセル値のみ文字列結合してみましょう。

※条件:データは半角限定です。

ちなみに、いじわる問題です。

エクセル VBA 文字列のセルだけ結合 PHONETIC関数



こちら、あまり反応無いのですけど、
あれっ、簡単すぎた?、それとも難しい?
あっ、いじわる問題と書いたからでしょうか。
いじわると言うより、いかに幅広い関数知識があるかという問題です。

最初に「いじわる問題」と書いたように、あまり真剣に考えられちゃうと、用意した答えを出しづらいかも…
問題に条件を付けるのは、
その条件が無いと成立しない、もしくは、その条件下ならではの答があるという事です。

で、条件をもう少し正確に書く必要がありました。
※データは半角英数限定



1個の関数だけで実現できます

いろいろと回答ありがとうございました。
用意した回答は、
=PHONETIC(A1:A7)
範囲を指定できて、そして結合してくれます。
なので、漢字があると問題として都合悪いので、半角限定にしました。
正確には、英数限定とした方が良かったかもしれません。

PHONETIC関数については、以下を参照してください。
PHONETIC関数(文字列からふりがなを抽出)
文字列から「ふりがな」を抽出します。セルに「ふりがな」が無い場合(他のソフトから文字列をコピペ等)は、セルの値がそのまま表示されます。PHONETIC関数の書式 PHONETIC(範囲) 範囲 ふりがなの文字列を含む1つまたは複数のセル参照を指定します。

せっかくなので、普通に考えた時の数式の例としては、
=CONCAT(TEXT(A1:A7,""))
=CONCAT(IF(ISNUMBER(A1:A7),"",A1:A7))
これらは、回答で頂いたものとほぼ同じです。

VBAでの回答も

Sub sample()
  Dim ary
  ary = WorksheetFunction.Transpose(Range("A1:A7"))
  Dim i As Long
  For i = LBound(ary) To UBound(ary)
    If TypeName(ary(i)) <> "String" Then
      ary(i) = ""
    End If
  Next
  Range("C1") = Join(ary, "")
End Sub

このVBAは、他の回答と被らないように、わざわざ少し変わった書き方をしていますので、模範解答とは違います。
こういう書き方もあるというご参考に。



同じテーマ「エクセル雑感」の記事

アルファベットの26進(ツイッターお題)
ナンバープレート数字遊び:ツイッターお題
保護されたブックの非表示シートについて
文字列のセルだけ結合
時間に関する関数の扱い方
COUNTIF関数の結果は?
【超難問】エクセル数式問題
IFステートメントの判定
日付の謎:IsDateとCDate
ツイッター投稿用に文字数と特定文字で区切る
マクロ記録での色のマイナス数値について


新着記事NEW ・・・新着記事一覧を見る

エクセル馬名ダービー|エクセル雑感(2021-07-21)
在庫を減らせ!毎日棚卸ししろ!|エクセル雑感(2021-07-05)
日付型と通貨型のValueとValue2について|エクセル雑感(2021-06-26)
DXってなんだ? ITと何が違うの?|エクセル雑感(2021-06-24)
エクセルVBA 段級位 目安|エクセル雑感(2021-06-21)
ローカル版エクセルが「Office Scripts」に変わる日|エクセル雑感(2021-06-10)
新関数SORTBYをVBAで利用するラップ関数を作成|VBA技術解説(2021-06-12)
VBA今日のひとこと/VBA今日の教訓 on Twitter|エクセル雑感(2021-06-10)
VBAの演算子まとめ(演算子の優先順位)|VBA技術解説(2021-06-09)
画像が行列削除についてこない場合の対処|VBA技術解説(2021-06-04)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.Excelショートカットキー一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.RangeとCellsの使い方|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.マクロって何?VBAって何?|VBA入門
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
8.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
9.セルに文字を入れるとは(Range,Value)|VBA入門
10.とにかく書いてみよう(Sub,End Sub)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ