Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(その他 : その他)
複数セルの内容を1つのセルに入力したい
投稿日時: 20/09/14 17:47:00
投稿者: Yukstar

 MS 365使用です。
 複数セル(A列)に縦に入力されているデータを1つのセル("C1")に入力したいです。
 例えば、A2 = りんご, A3 = みかん, A4 = ぶどうとあった場合、C1 = りんご/みかん/ぶどう
 と文字の間に"/"を入れて羅列できるのが理想です。
 A列に入力されるデータの数は可変で、最大値は決まっていません。
 
 
 ■稚拙ながらここまでは書いてみたのですが、データの数が可変のため
  行き詰まっております。現在のコードではC1に最後のデータが表示されるだけです。
 
      Sub test()
 
           'データ個数をカウント
           Dim i As Long, cnt As Long
               i = 2
 
           Do While Cells(i, 3) <> ""
              cnt = cnt + 1
              i = i + 1
           Loop
                     
            'ここからが問題
            Dim ii As Long, i2 As Long
                i2 = 2
                     
            For ii = 1 To cnt
                Range("C1").Value = Range("A" & i2) & " / "
                i2 = i2 + 1
            Next ii
 
        End Sub
 
 
  ヤフトピなどの類似の質問も参照してみましたが、残念ながら自分の力量では
  回答者の方のコードを完全に読み解くことができず、こちらに投稿させていただきました。
  
  恐れ入りますが、皆さまにご教授いただければ幸いです。
  宜しくお願いいたします。
 
 
  

回答
投稿日時: 20/09/14 18:17:41
投稿者: WinArrow
投稿者のウェブサイトに移動

VBAで悩んでいるよりは
TEXTJOIN関数をお勧めします。
  
   
尚、VBAでやる上でも、データの個数をカウントする必要ありません。
  
Range("C1").Value = ""
 For Each myCELL In Range(Range("A1"), Cells(Rows.Count,"A").End(xlUp))
     If Range("C1").value <>"" Then Range("C1").value = Range("C1").value & "/"
     Range("C1").Value = Range("C1").Vlue & myCell.Value
 Next
   
テストしていませんが、これだけでできると思います。
  

回答
投稿日時: 20/09/14 18:22:17
投稿者: WinArrow
投稿者のウェブサイトに移動

TEXTJOIN 関数の例
 
=TEXTJOIN("/",TRUE,OFFSET(A1,0,0,COUNTA(A:A),1))
 
A列のデータ個数は可変になっています。

投稿日時: 20/09/14 18:32:55
投稿者: Yukstar

 WinArrowさま
 
 TEXTJOIN関数を使ったことがなかったので、目から鱗でした。
 こんなに早く解決してくださり、本当にありがとうございました!