dポイントプレゼントキャンペーン実施中!

A1,B1,C1,D1・・・と数字が入力されています。
それを必要な箇所まで選択コピーし、別シートの1つのセルにカンマ区切りで値の貼付けをしたいです。これをマクロで行いたいのですが可能でしょうか?
※コピーも値の貼付けもActiveシートで行います。
宜しくお願いします。

質問者からの補足コメント

  • "Macro1() 'べた"のマクロで思うように動作しました!感動です!!
    ちなみに、参照元の値が空白だと0を表示することは可能ですか?
    (例)
    5,5,5,0
    0,5,0,4,6

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/05/25 10:06

A 回答 (2件)

こんにちは


>必要な箇所まで選択コピーし、別シートの1つのセルにカンマ区切りで値の貼付けをしたいです。
コピーではないのですがコードの例です

Excel2016以降ならTextJoin関数で
Sub Macro()
Dim iRng As Range, oRng As Range
On Error Resume Next
With Application
Set iRng = .InputBox(prompt:="入力セル範囲を選択してください", Type:=8)
If Err.Number <> 0 Then Exit Sub
Set oRng = .InputBox(prompt:="出力セルを選択してください", Title:="出力", Type:=8)
If Err.Number = 0 Then oRng.Value = .TextJoin(",", 1, iRng)
End With
End Sub

違えば、べたに
Sub Macro1() 'べた
Dim c As Range, iRng As Range, oRng As Range
Dim strData As String
On Error Resume Next
Set iRng = Application.InputBox(prompt:="入力セル範囲を選択してください", Type:=8)
If Err.Number <> 0 Then Exit Sub
For Each c In iRng
If strData <> "" Then
strData = strData & "," & c.Value
Else
strData = c.Value
End If
Next
Set oRng = Application.InputBox(prompt:="出力セルを選択してください", Title:="出力セルを選択", Type:=8)
If Err.Number = 0 Then oRng.Value = strData
End Sub

Sub Macro2() 'Join
Dim i As Long, iRng As Range, oRng As Range
Dim strData()
On Error Resume Next
Set iRng = Application.InputBox(prompt:="入力セル範囲を選択してください", Type:=8)
If Err.Number <> 0 Then Exit Sub
ReDim strData(iRng.Cells.Count)
For i = 1 To iRng.Cells.Count
strData(i - 1) = iRng(i).Value
Next
Set oRng = Application.InputBox(prompt:="出力セルを選択してください", Title:="出力セルを選択", Type:=8)
If Err.Number = 0 Then oRng.Value = Left(Join(strData, ","), Len(Join(strData, ",")) - 1)
End Sub
不明なところはInputBoxにしました
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2021/06/01 09:50

こんにちは



>マクロで行いたいのですが可能でしょうか?
多分、可能でしょう。

>それを必要な箇所まで選択コピーし
マクロなので、各値を配列に入れてJOIN関数でつなげるのが簡単と思います。
よくわからなければ、ワークシートのTEXTJOIN関数を利用しちゃうとかでも良いかも。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!