[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数セルの文字列を連結する方法』(にゅるん)
よくA列にひたすらデータを入力していって、これらを「、」などで区切って1行にしたものをコピペして他のソフトに貼り付けると言った作業をするのですが、連結するのが結構手間です。
最短で作業するにはどんな方法が良いと思いますか。件数は多くても20件程度です。
データの例(型などの決まりは特にありません。)
1開始
2右に1歩
32歩
4ジャンプ
5終了
普段やっている方法は、
1.B1に「=A1&"、"」を書いてオートフィル
2.適当なセルに「=CONCATENATE(」を打ち込み
3.右手でB1クリック→左手で「,」入力→右手でB2クリック→以下略
です。
「A1:A20」という指定方法が使えれば楽になるのになぁと常々思うのですが・・・
2016ではTEXTJOIN関数なるものが増えたようですが、使えない環境です。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
B1セルに =A1 B2セルに =B1&","&A2 と入力しB2セルを下へフィルピー、ではどうか? なお、TEXTJOIN関数はOFFICE2016(買い切り)のEXCEL2016では使えず、OFFICE365(使用料を払っている期間だけ使用できる) のEXCEL2016でしか使用できない。 (ねむねむ) 2018/07/23(月) 10:38
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim R As Range Dim cw As String
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
For Each R In Target If R.Column = 1 And R.Value <> "" Then If cw <> "" Then cw = cw & "、" End If cw = cw & R.Value End If Next R
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText cw .PutInClipboard End With Cancel = True End Sub (???) 2018/07/23(月) 11:09
Sub 回答例()
Dim i As Long, Lr As Long With ThisWorkbook.Sheets("Sheet1") .Range("B1") = "" Lr = .Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To Lr If .Range("B1") = "" Then .Range("B1") = .Cells(i, "A").Value Else .Range("B1") = .Range("B1").Value & "、" & .Cells(i, "A").Value End If Next i End With End Sub
(TAKA) 2018/07/23(月) 11:20
すまない、区切り文字は"、"だったか。 =B1&","&A2 を =B1&"、"&A2 に修正してくれ。 (ねむねむ) 2018/07/23(月) 11:36
Sub Macro2()
Dim i As Long, Lr As Long With ThisWorkbook.Sheets("Sheet1") .Range("B1") = .Range("A1").Value Lr = .Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To Lr .Range("B1") = .Range("B1").Value & "、" & .Cells(i, "A").Value Next i End With End Sub
(TAKA) 2018/07/23(月) 11:48
要は、そのままブックを保存して取っておくんじゃ無くて、入力欄として使い捨てするんですよね。
ある程度マクロの使用に抵抗がなくて、連続するセル範囲という限定が付きますけど、ユーザー定義関数作っちゃうのはどうです?
Function TEXTJOINもどき(セル範囲 As Range, 区切文字 As String) Dim buf As String Dim tmp As Variant
For Each tmp In セル範囲 buf = buf & tmp.Value & 区切文字 Next tmp
TEXTJOINもどき = Left(buf, Len(buf) - 1) End Function
マクロに全然抵抗がないなら???さんのように取り込みたい(複数可(というか元々複数セル希望ですよね)、連続して無くてもok)セルを選択してから右クリックすると、クリップボードにデータを送り込むようにしてしまえば手間が無くていいとおもいますが。。。
(もこな2) 2018/07/23(月) 12:47
他の回答者の方々
質問文作成中に消してしまっていたのですが、様々な環境で使う場合にささっと作る方法がしりたかったので、標準関数のみでの実現を求めていました。
お手数掛けまして申し訳ございませんでした。
以上、ありがとうございました。
(にゅるん) 2018/07/23(月) 13:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.