
30問ほどのアンケートがあります。
シートに入力はしてあります。
A列にNo
B列に住まい
C列に年代
D列に問1回答
E列に問2記述
F列に問3記述
G列に問4回答
H列に問5記述
以下、続く
問2・3・5に記述があります。
各記述が入っている行を別シートに抜き出したいです。
問2の記述が入っている行のA・B・C・E列
問3の記述が入っている行のA・B・C・F列
問5の記述が入っている行のA・B・C・H列
上記を別シートに抜き出し
上から順番に並べたいです。
問2の記述を抜いたら
その下に問3
その下に問5
といった具合です。
このときにA列に問番号を入れたいです。
マクロを教えてください。

No.10ベストアンサー
- 回答日時:
未検証ですけど。
Sub megu_2()
Dim ws2 As Worksheet, rc1 As Range, rr1 As Range
Dim r2 As Range
Set ws2 = Worksheets("Sheet2") '書き出すシート
Set r2 = ws2.Range("A2") '書き出す最初のセル
ws2.Range("A1:F1").Value = Array("日付","問", "No", "住まい", "年代", "記述")
With Worksheets("Sheet1") '元データのあるシート
For Each rc1 In .Range("E1", .Cells(1, Columns.Count).End(xlToLeft))
If rc1.Value Like "*記述" Then '項目名に【記述】がある時、
'仮に記述の列に何も記載がない(データが項目行のみ)と言う場合を除く
If WorksheetFunction.CountA(rc1.EntireColumn) > 1 Then
'ある列の記述がデータとして入っているセルだけを選び出す
Set rr1 = .Range(rc1.Offset(1), .Cells(Rows.Count, rc1.Column).End(xlUp)).SpecialCells(xlCellTypeConstants, 3)
Intersect(rr1.EntireRow, .Range("A:D")).Copy r2
rr1.Copy r2.Offset(, 5)
r2.Offset(, 1).Resize(rr1.Cells.Count).Value = Replace(rc1.Value, "記述", "")
Set r2 = r2.Offset(rr1.Cells.Count)
End If
End If
Next
End With
Set ws2 = Nothing
Set rr1 = Nothing
End Sub
ありがとうございます!
本当に、ありがとうございます。
とても助かりました。
思う結果が出ました。
何度もおつ気合いいただき、感謝しています。
どうも、ありがとうございました。
No.6
- 回答日時:
>例えばアンケートを1月2日に行い、別の日の1月20日に別グループのアンケートを行いました。
この実施した日ってのはどこでわかるの?
例えばシート毎に(纏め済み?画像みたいな状態って事)違うってなら、
書き出すシート名と最初の書きだす位置を固定化しないってのと、元データのシートをアクティブシート(今現在見ているシート)って事にしてその都度マクロを実施しても良ければ可能とジジィは思えますよ。
No.5
- 回答日時:
初級レベルなジジィには無駄に多くなってしまいました。
Sub megu()
Dim ws2 As Worksheet, rc1 As Range, rr1 As Range
Dim r As Range, r2 As Range
Set ws2 = Worksheets("Sheet2") '書き出すシート
Set r2 = ws2.Range("B2") '書き出す最初のセル
ws2.Range("A1:E1").Value = Array("問", "No", "住まい", "年代", "記述")
With Worksheets("Sheet1") '元データのあるシート
For Each rc1 In .Range("D1", .Cells(1, Columns.Count).End(xlToLeft))
If rc1.Value Like "*記述" Then '項目名に【記述】がある時、
'仮に記述の列に何も記載がない(データが項目行のみ)と言う場合を除く
If WorksheetFunction.CountA(rc1.EntireColumn) > 1 Then
'ある列の記述がデータとして入っているセルだけを選び出す
Set rr1 = .Range(rc1.Offset(1), .Cells(Rows.Count, rc1.Column).End(xlUp)).SpecialCells(xlCellTypeConstants, 3)
Intersect(rr1.EntireRow, .Range("A:C")).Copy r2
rr1.Copy r2.Offset(, 3)
r2.Offset(, -1).Resize(rr1.Cells.Count).Value = Replace(rc1.Value, "記述", "")
Set r2 = r2.Offset(rr1.Cells.Count)
End If
End If
Next
End With
Set ws2 = Nothing
Set rr1 = Nothing
End Sub
どうも、ありがとうございます。
思った通りの完璧なコードを教えて頂いて言うのも申し訳ないんですが、
例えばアンケートを1月2日に行い、別の日の1月20日に別グループのアンケートを行いました。
最初に2日の記述を抜き出して、その下に20日の記述を抜き出すことは出来るでしょうか?
2行目から2日の記述が100行目まで抜き出したとして、101行目から20日の記述を追加する。また別のグループがあればその下に追加していく、といった具合です。
教えて頂いたコードを改造しようと試みましたが挫折しました。
No.4
- 回答日時:
あ~。
ちょっと引っ掛かる点があるのですが。
仮に『問2記述』の列をまず抜き出しますよね。
その時の『No』が何故飛び飛びのバラバラの順序になっているのでしょう?
単に仮データを作成した時の手違いってなら良いのですが、元のデータ順その物がキチンと並んでいない為ですかね?
それとも記述していない人がいる?にしても順序がバラバラになる訳はないですよね?虫食い状態になったとしても。
あくまでこの項目は気にすべきではなかったと言うので良いのでしょうか?

No.3
- 回答日時:
手動操作と同じソート機能をマクロから使えるようですね。
https://excel-ubara.com/excelvba1/EXCELVBA388.html
元のシートを丸ごと別シートのb列以降にコピーして、sortメソッドで並び替え。
後からA列に連番を振れば出来そうな気がします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) excelにおける転記マクロの書き方 2 2023/05/12 03:16
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) Excel VBAについて教えてください! シート1とシート2があります。 シート1とシート2を比べ 4 2023/06/29 09:11
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word2016でExcelデータを差込し...
-
Vba Copy&Pasteについて教えて...
-
エクセルで別の表を貼り付ける方法
-
Excel 表の必要箇所だけを抜き...
-
エクセルで電話番号にハイフン...
-
(Excel2000)特定の期間を表示...
-
ドロップダウンリスト
-
エクセルの関数、お願いします<...
-
エクセルのマクロを教えてくだ...
-
エクセル 並び替え
-
Excelの列表示で「R1C1形式」の...
-
Excelのピボットテーブル
-
Excelのデータの並び替えについて
-
区切り位置によるセル分割について
-
単価別売上合計の求め方
-
エクセルでのVBA(マクロ)が出...
-
EXCEL2007で2つのシートのどっ...
-
ワードで勝手に点線ラインがでる
-
WORD- - - - -点線が消えません
-
セル入力文字が、「右のセルに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word2016でExcelデータを差込し...
-
【Excel VBA】CSV取込時、数字...
-
EXCEL2007で2つのシートのどっ...
-
EXCELの列の幅
-
エクセルでページ毎の計をつけ...
-
エクセルで前年同日・前月同日...
-
EXCELで2つのシートから一致し...
-
Excel 表の必要箇所だけを抜き...
-
エクセルで電話番号にハイフン...
-
Excelで奇数行を削除
-
excelの列がいっぱいになり列を...
-
SUMPRODUCT関数で複数条件適用...
-
エクセルVBAで複数列データを1...
-
エクセルの余白を0にしても列...
-
選択範囲の表を空白を削除して...
-
EXCELで不良率を出そうと思って...
-
ExcelのIF関数について
-
マクロ実行時のエラーの原因を...
-
ドロップダウンリスト
-
VBAで列に計算式を入れたい
おすすめ情報
めぐみん様
いろんなパターンでアンケートが行われています。
入力用のシートが有り、全てをまとめて入力されています。
そのなかでA列に日付が入ります。
そのまとめたシートから記述のみを抜き出したいです。
教えて頂いたコードは私の思い通りの結果です。
とても助かっています。
別パターンで月に何度か行われるアンケートがあります。
それを年間通してまとめてみたいと思いました。
1月1日分を入力したら記述を抜き出す、1月7日分を入力したら1日に抜き出した下に続けて抜き出す・・・・日付ごとに繰り返す。
厚かましいですが、お願いいたします。