
No.1ベストアンサー
- 回答日時:
こんばんは!
>・・・結合して他セルに表示させたい。
とありますが、どこのセルに表示すれば良いのか判らないので
元データはSheet1にあり、Sheet2に表示するようにしてみました。
(質問ではG列までしかないようですが、もっと列数が増えても対応できるようにするため)
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, j As Long, cnt As Long
Dim myStr As String, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.Clear
With Worksheets("Sheet1")
For i = 3 To .Cells(Rows.Count, "A").End(xlUp).Row
For j = 3 To .Cells(1, Columns.Count).End(xlToLeft).Column
If .Cells(i, j) = "○" Then
myStr = myStr & .Cells(1, j) & ","
End If
Next j
If Len(myStr) > 0 Then
cnt = cnt + 1
wS.Cells(cnt, "A") = .Cells(i, "A")
wS.Cells(cnt, "B") = Left(myStr, Len(myStr) - 1)
End If
myStr = ""
Next i
wS.Columns.AutoFit
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.3
- 回答日時:
ユーザ定義関数での実装はいかがでしょう。
下記のユーザ定義関数(userCONCATENATE)を標準モジュールに張り付けた後、シート上に次の式を入力して、下にコピーしてください。
H3セル =userCONCATENATE($C$1:$G$1,C3:G3)
Function userCONCATENATE(出荷コード範囲 As Range, 丸印範囲 As Range) As Variant
Dim i As Long
userCONCATENATE = ""
For i = 1 To 丸印範囲.Count
If 丸印範囲(i).Value = "○" Then
If userCONCATENATE <> "" Then userCONCATENATE = userCONCATENATE & ","
userCONCATENATE = userCONCATENATE & 出荷コード範囲(i).Value
End If
Next
End Function
お礼が遅くなり申し訳ありません。
ユーザ定義関数の実装、勉強になりました!
userCONCATENATE関数の貼りつけ先セルが
Excelマクロをあまり知らない方に消されないか心配でしたので、また別の機会にユーザ定義関数を実装しようかと思います。ありがとうございます!
No.2
- 回答日時:
私には、ご質問の意味がよく分からない部分があります。
>w001,s332 と結合して他セルに表示させたい。
結合って、セルとセルをくっつけるExcel独特の用語だったと思います。
文字列と文字列をカンマでつなぐことは、単に文字列を合わせただけのように思います。セルとセルは結合しても、文字列は、左側のものしか残りません。それ以外に何か特別な意味があるのでしょうか。
なお、◯がひとつもないものは出力しません。
また、◯には同じしか見えない別の種類のものがありますから、二種類はヒットするようにしました。
出力の場所は、ご自身でお決めください。
'//
Sub OutputLists()
Dim DeliCode As Variant
Dim i As Long, j As Long, k As Long
Dim outList As String
Dim buf As String
Dim Arbuf() As Variant
With ActiveSheet
DeliCode = .Range("C1:G1").Value
DeliCode = Application.Index(DeliCode, 1, 0)
For i = 3 To .Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To 5
'同じ丸でも、種類があります。
If .Cells(i, 2 + j).Value Like "[○◯]*" Then
If Len(buf) = 0 Then
buf = DeliCode(j)
Else
buf = buf & ", " & DeliCode(j)
End If
End If
Next j
If buf <> "" Then
ReDim Preserve Arbuf(1, k)
Arbuf(0, k) = .Cells(i, 1).Value
Arbuf(1, k) = buf
k = k + 1
End If
buf = ""
Next i
End With
With Worksheets("Sheet2") '出力
.Range("A1:B1").Value = Array("商品名", "出荷コード")
With .Range("A2") 'A2から
For i = 0 To k - 1
.Offset(i, 0).Value = Arbuf(0, i)
.Offset(i, 1).Value = Arbuf(1, i)
Next i
End With
End With
End Sub
'//
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
- Excel(エクセル) 重複データの抽出について 2 2023/07/21 14:52
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Visual Basic(VBA) VBAで質問があります 1 2022/10/19 10:32
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) 条件付き書式の色付きセルのカウント方法について 2 2022/10/21 14:51
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Excel(エクセル) エクセルのVBAで上の表の最下行を求める 4 2022/09/14 15:22
- Excel(エクセル) エクセル関数のXlookupのフィルハンドル機能(類した機能でも可)を知りたいです。 3 2022/09/20 20:02
このQ&Aを見た人はこんなQ&Aも見ています
-
複数セルに入力した数字をカンマを入れてつなげる
Excel(エクセル)
-
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
Excel関数 該当する値を複数抽出し、一つのセルにカンマで区切ってまとめる方法
Excel(エクセル)
-
-
4
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
5
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
6
VBAで重複する項目を1つにまとめて金額を合計したい
Excel(エクセル)
-
7
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのVBAで集計をしたい
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセルのdatedif関数を使って...
-
【画像あり】オートフィルター...
-
【マクロ】アクティブセルの時...
-
【マクロ】列を折りたたみ非表...
-
他のシートの検索
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
ページが変なふうに切れる
-
【マクロ】実行時エラー '424':...
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】【相談】Excelブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報