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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
文字列の結合を空白行まで実行
Visual Basic(VBA)
-
複数セルに入力した数字をカンマを入れてつなげる
Excel(エクセル)
-
Excel関数 該当する値を複数抽出し、一つのセルにカンマで区切ってまとめる方法
Excel(エクセル)
-
-
4
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
5
EXCELマクロを使い、空白行ではさまれた範囲の数字を合計
Excel(エクセル)
-
6
エクセルVBAで、複数セルのデータをひとつのセルに改行してまとめたいのですか・・・
Excel(エクセル)
-
7
エクセルについて
Excel(エクセル)
-
8
Excel VBA 空白セルがあったらメッセージボックスで知らせたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セルの数を求めたい
-
ある表にフィルターをかけて出...
-
Lookup関数
-
Excelを無料で使うには? パソ...
-
IFとIFS関数
-
エクセルの数式バーのフォント...
-
EXCELの散布図で日付が1900年に...
-
Excelの表示についての質問
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
Excelピボットテーブルの1行目
-
エクセル日付 文字列の関数がエ...
-
西暦や和暦の表示をyyyymmdd表...
-
エクセルで「ページレイアウト...
-
【ExcelVBA】名前を付けて保存→...
-
Excelに詳しい方! B列が「日...
-
Excelで50個のセルに同じ文字を...
-
Excelについて
-
Excel関数について教えてくださ...
-
Excelで表を作ったところに文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報