エクセル雑感
文字列のセルだけ結合(ツイッターのお題)

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

文字列のセルだけ結合(ツイッターのお題)


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


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

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

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

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

エクセル 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は、他の回答と被らないように、わざわざ少し変わった書き方をしていますので、模範解答とは違います。
こういう書き方もあるというご参考に。



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

エクセル関連ツイートNo2
エクセル関連ツイートNo3
エクセル関連ツイートNo4
エクセル関連ツイートNo5
ツイッターで出されたVBAのお題をやってみた
「VBAによる解析シリーズその2 カッコ」をやってみた
ツイッターのお題「CSV編集」
文字列のセルだけ結合(ツイッターのお題)
時間に関する関数の扱い方(ツイッター投稿)
アルファベットの26進(ツイッターお題)
COUNTIF関数の結果は?(ツイッターお題)


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

COUNTIF関数の結果は?(ツイッターお題)|エクセル雑感(5月30日)
エクセル&VBA オンライン講座|エクセル セミナー(5月29日)
アルファベットの26進(ツイッターお題)|エクセル雑感(5月19日)
VBAが消えてしまった!マクロが壊れて動かない!|エクセル雑感(5月8日)
時間に関する関数の扱い方(ツイッター投稿)|エクセル雑感(5月6日)
文字列のセルだけ結合(ツイッターのお題)|エクセル雑感(5月5日)
表示形式.言語設定|エクセル入門(5月1日)
GoogleスプレッドシートをExcelにインポートする|VBAサンプル集(4月28日)
ツイッターのお題「CSV編集」|エクセル雑感(4月25日)
プログレスバーを自作する|ユーザーフォーム入門(4月18日)


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

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




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


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



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