Excelデータの切り貼りマクロ

このQ&Aのポイント
  • Excelデータを切り貼りするマクロについて初心者向けに解説します。
  • 複数のファイルに含まれる大きなデータを担当者と会社名ごとに切り貼りする方法をマクロで実現する手順を解説します。
  • マクロを使用して、Excelデータ内の担当者と会社名を一覧化する方法について説明します。
回答を見る
  • ベストアンサー

excelデータの切り貼りマクロ

excelマクロの初心者です。 データの切り貼りをするマクロについて教えてください。 以下のような担当者と会社名の入った縦に大きなデータを 担当 社名 佐藤 A社 佐藤 B社 佐藤 C社 田中 D社 田中 E社 田中 F社 鈴木 G社 鈴木 H社 鈴木 I社 高橋 J社 高橋 K社 高橋 L社 最終的に 佐藤 田中 鈴木 高橋 A社 D社 G社 J社 B社 E社 H社 K社 C社 F社 I社 L社 このように一番上に担当者、下に該当する社名を羅列されるように切り貼りをしたいと思っています。 ファイルがいくつもあり、また行数はファイルごとに異なり一定ではありません。 マクロでどのように書いたらよいかご教授頂けないでしょうか。 よろしくお願いいたします<(_ _)>

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

どのようにしても出来ますが、まぁあんまり一行一行舐めまわして作成するようなよりは、もうちょっと高速なやり方を考えてみます。 状況の設定: 1行目にタイトル行、2行目からデータ、A,B列にデータ。 沢山やらなきゃならないのは構いませんが、具体的に一体「どこに」どんな風に結果を並べたいのかご相談で考えられてないので、てきとーにシートを作成して並べ替えることにする データのあるシートを開いてマクロを実行する。 sub macro1()  dim w0 as worksheet  dim h as range ’準備  set w0 = activesheet  worksheets.add after:=w0 ’担当一覧の抽出  w0.range("A:A").advancedfilter action:=xlfiltercopy, copytorange:=range("A1"), unique:=true  range("A2:A" & range("A65536").end(xlup).row).copy  range("A1").pastespecial transpose:=true  range("A2:A" & range("A65536").end(xlup).row).clearcontents ’担当ごとの抽出  for each h in range(range("A1"), range("IV1").end(xltoleft))   w0.range("A:A").autofilter field:=1, criteria1:=h.value   w0.range("B2:B" & w0.range("B65536").end(xlup).row).copy destination:=h.offset(1)  next  w0.autofiltermode = false end sub

tmk0114
質問者

お礼

ありがとうございます! いっっっしゅんでできましたTT 感動しました。。。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例です。 元データはSheet1のA・B列にあり、1行目は項目行でデータは2行目以降にあるとします。 Sheet2に表示するようにしてみました。 標準モジュールです。 Sub Sample1() Dim j As Long, lastRow As Long, wS As Worksheet Set wS = Worksheets("Sheet2") Application.ScreenUpdating = False wS.Cells.Clear With Worksheets("Sheet1") .Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=.Range("D1"), unique:=True lastRow = .Cells(Rows.Count, "D").End(xlUp).Row Range(.Cells(2, "D"), .Cells(lastRow, "D")).Copy wS.Range("A1").PasteSpecial Paste:=xlPasteAll, Transpose:=True Application.CutCopyMode = False lastRow = .Cells(Rows.Count, "A").End(xlUp).Row For j = 1 To wS.Cells(1, Columns.Count).End(xlToLeft).Column .Range("A1").AutoFilter field:=1, Criteria1:=wS.Cells(1, j) Range(.Cells(2, "B"), .Cells(lastRow, "B")).SpecialCells(xlCellTypeVisible).Copy wS.Cells(2, j) Next j .AutoFilterMode = False .Range("D:D").Clear End With Application.ScreenUpdating = True wS.Activate End Sub ※ Sheet1のD列を作業用の列として使用していますので、D列は使っていない状態にしておいてください。 こんな感じではどうでしょうか?m(_ _)m

tmk0114
質問者

お礼

ありがとうございます!!! あっという間にできてしまってびっくりしました。 本当に助かりました!!!

関連するQ&A

  • Excelのマクロを教えてください。

    Excelのマクロを教えてください。 Sheet1 F列(商品) F2テレビ、F3DVD、F4携帯電話、サプライ、、、F32まで商品あり。 I列~N列の1段目(人*増える場合あり) I1佐藤、J1高橋、K1田中、L1中村、、、 I2~N32まで、1、2、3と個数が入力されています。 A列~E列とG列とH列は今回の処理に不要なデータがいます。 これをSheet2に A列に人、B列に商品、C列に数 例) A1 佐藤、B1 テレビ、C1 1 A2 佐藤、B2 DVD 、C2 3 A3 高橋、B3 携帯電話、C3 2 のように、書き出すマクロを教えていただけませんか? 別にマクロでなくても、Excel2007までの機能でできることであればそれでもいいです。 丸投げして申し訳ありません。

  • エクセルのマクロ(データの出力について)

          12345678910・・・・ ← 日付 田中    1 1  1    中村     1  1   鈴木    11111    ・  ・  ・ 上のようになっている表を下記のように変換したいのですが、マクロがうまく書けません。 A B C D E F G H I J K L  M   1   2   3   4   5   6  7  ← 日付   田中  中村  田中  鈴木  中村  田中   鈴木  鈴木  鈴木      鈴木 Sub test01() d = Worksheets("Sheet1").Range("A65536").End(xlUp).Row r = Worksheets("Sheet1").Range("IV2").End(xlToLeft).Column k = 4 '新規作成用の行ポインター For j = 2 To r For i = 3 To d If Worksheets("Sheet1").Cells(i, j) = 1 Then Worksheets("新規作成用").Cells(k, 2 * (j - 6)) = Worksheets("Sheet1").Cells(i, 2) k = k + 1 End If Next i Next j End Sub ここまで書いていきづまってしまいました。どなたかご指南ください。

  • 【Excel】マクロを使用した重複チェックについて

    教えて下さい! 以下のような表があります。 月|日|A担当|コード|サブ|コード|B担当|コード 5  1    田中   1   佐藤   5   鈴木   3 5  2    佐藤   5   鈴木   3   田中   1 5  3    鈴木   3   田中   1   佐藤   5 5  4    佐藤   5   鈴木   3   田中   1 行ごとにかぶっている人がいると”■行の○○さんが重複しています”といったようなメッセージが表示されるようにしたいのです。 行は30行ほどあります。 一つフォームのボタンを作り、それをクリックすることにより重複チェックのマクロが流れるようにするにはどうしたらいいのでしょうか?

  • マクロ 別シートへ移動

    マクロ超初心者です。 <受付待ち>シートに  A      B       C      D     E  担当者 お客様名 同行者名 予定日  備考  ○○   鈴木           4/10  ■■   田中     田中子  4/10  ○○   佐藤           4/10  ○○   高橋           4/8 とデータが入っています。 受付を確認したお客様の横一列のデータ 「担当・お客様名・同行者・予定日・備考」を全て 「受付」ボタンを押すと <受付済み>シートへ移したいと思っています。 例:佐藤さんの受付をしたら佐藤さんの所を指定して ボタンを押すと横一列のデータを<受付済み>シートへ移動させる。 というマクロを作りたいです。 全くの初心者で全くわかりません。 よろしくお願いします。

  • excel マクロ <フィルタ>

    excelのマクロで分からないことがあるので質問させてもらいます。 たとえば↓の写真のようなデータがあったとして、アルファベットさん(Aさん~Nさん)だけを表示するマクロを作る時は、フィルタをして、番号1~14にチェックをつけて・・・ってことをすると思います。そこに、ボタンをつけたいと思っています。 ボタン(チェックボックス)A、ボタン(チェックボックス)B、ボタン(チェックボックス)C、ボタンD、ボタンEをつけたいと思います。 ボタンAを押すと(チェックをつけると)→アルファベットさん(Aさん~Nさん)だけを表示 ボタンBを押すと(チェックをつけると)→山田、田中、鈴木だけを表示 ボタンCを押すと(チェックをつけると)→斉藤、佐藤、高橋、渡辺、伊藤だけを表示 で A、Bにチェックをつけるとアルファベットさんと山田、田中、鈴木を表示 B、Cにチェックをつけると山田、田中、鈴木、斉藤、佐藤、高橋、渡辺、伊藤を表示 ボタンDを押して、フィルタを解除。 ボタンEを押して、フィルタされた範囲を印刷。 ・・・・・という風に・・・ 【ボタンか、チェックボックスって書いたのは、どちらを使ったらいいのかわからないからであって、ほかにもフォームの種類がありますから、最適なのがありましたら教えてください。】 まとめると、データをボタンで絞り込んで(解除もできる)、ボタンで印刷したい。ということです。 結構、初心者なので、質問の内容がよくわからないかもしれませんけど、わかりやすく教えてください。 お願いします。

  • Excelでのリストアップ

    佐藤さん、鈴木さん、鈴木さん、高橋さん、田中さん、鈴木さんというデータから 「使われた苗字は佐藤さん、鈴木さん、高橋さん、田中さんの4種類です。」という動作をExcelでしたい時には何かよい方法はありますでしょうか。 のべ、といいますか、この動作をなんと言うか思いつかなかったため調べることが出来ずにいました。 アドバイスを頂けたらと思っております。 宜しくお願いいたします。

  • エクセルでの集計関数No.2

    前回の質問より複雑なデータの集計が飛び込んで困っています。 例    A   B   C   D   E   F   G   H   I   J 1  鈴木 田中 佐藤 八木 石島 須藤 徳間 遠藤 伊藤 斉藤 2  田中 八木 田中 遠藤 鈴木 伊藤 佐藤 佐藤 鈴木 徳間 3  石島 鈴木 徳間 鈴木 伊藤 .... といったデータが存在しています(A1:J3)の範囲内で最頻値の文字列を検出する関数の組み合わせを教えてください。回答例 鈴木  しかも、鈴木 佐藤が同一の場合メッセージを表示させるには..とほほです。よろしくお願いします。                                               

  • EXCELマクロVBAについて

    Excel2007、XPを使用しています。 AからE列に下記のような情報が入力されています。 A / B / C / D / E ID / 名前 / 住所 / 電話 / 注文日 11111 / 田中 / 東京都 / 00000000000 / 2012/08/10 11111 / 田中 / 東京都 / 00000000000 / 2012/08/09 11111 / 田中 / 東京都 / 00000000000 / 2012/08/18 11112 / 佐藤 / 京都府 / 00000000000 / 2012/08/10 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/11 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/15 A列のIDでくくったとして、 E列の注文日が最大のみの行を表示させたいです。 A / B / C / D / E ID / 名前 / 住所 / 電話 / 注文日 11111 / 田中 / 東京都 / 00000000000 / 2012/08/18 11112 / 佐藤 / 京都府 / 00000000000 / 2012/08/10 11113 / 鈴木 / 北海道 / 00000000000 / 2012/08/15 このようなことはマクロで可能なのでしょうか? 恐れ入りますがご教授お願い致します。

  • VBAでグループごとソートする方法がわかりません。

    下記のようなソートをVBAで行いたいのですがわかりません。 3行2列ずつ入れ替え、その結果を別シートに作成したいのです。 A    B    C    D    E    F    G    H    I    J    K    L 5    佐藤  6    鈴木 3    高橋  8    磐田 5   中根  5    後藤 da8       da4       da6       da1       da1      da5  ↓(2行目の数を基準に3行2列ごと入れ替え) E    F    A    B    I    J    K    L    C    D    G    H 3    高橋  5    佐藤 5   中根  5    後藤  6    鈴木  8    磐田 da6       da8       da1      da5        da4      da1  ↓(最初の条件を満たしたまま、3行目のdaに続く数を基準に3行2列ごと入れ替え) E    F    I    J    K    L    A    B    C    D    G    H 3    高橋  5    中根 5   後藤  5    佐藤  6    鈴木  8    磐田 da6       da1       da5      da8        da4      da1 最近VBAを勉強し始め、「かんたんプログラミング EXCEL VBA」という書籍を読んだ知識レベルのため、なかなか苦戦しております。お時間ありましたら、考え方のヒントもしくは教えていただけないでしょうか? 以下を貼り付けてカット&ペーストしていただいたらデータを作成しやすいです。 ABCDEFGHIJKL 5佐藤6鈴木3高橋8磐田5中根5後藤 da8da4da6da1da1da5

  • EXCELの関数またはマクロ教えてください。

    こんばんは。 よろしくお願いいたします。 EXCEL2000です。 (1)こんな縦に重複した名前の表を、 名前 コード 内訳名 金額 鈴木  1   飴   \100 鈴木  2    ガム  \150 鈴木  4    米   \1,000 鈴木  6    食器  \500 佐藤  1    飴   \100 佐藤  2    ガム  \200 佐藤  3    パン  \300 田中  1    米   \1,300 田中  2    ガム  \200 田中  4    米   \1,300 田中  6    食器  \600 (2)横に一人一レコードにまとめたいのです。  列の項目が内訳名になり増ますよね。 名前  飴    ガム  パン    米    食器 鈴木  \100   \150  \1,000  \500 佐藤  \100   \200  \300 田中  \1,300  \200       \1,300   \600 (3)欲を言えば、飴とガムは合計したいです。これが最終形態です。 名前 お菓子 パン   米  食器 鈴木 \250  \1,000 \500 佐藤 \300  \300 田中 \1,500 \1,300    \600 せめて(1)から(2)にする方法で何かよい関数などないでしょうか。 でなくても、「はじめからこんなマクロ・VBAでこんなのできるよ。」 なんてのがあれば、モジュールで教えてください。 本当に本当によろしくお願いいたします。 このデータは後、300くらいあります。 私のレベルは、MOS上級取得なので、多少理解力はあるかと思います。 というか、必死で頑張りますのでお願いします。m(__)m

専門家に質問してみよう