【EXCEL VBA】データの並べ替えの方法

このQ&Aのポイント
  • 元データが左から右へ氏名コード、日付(2011/5/1)、出社時刻、退社時刻、日付(2011/5/2)、出社時刻、退社時刻、・・・・・日付(2011/5/31)、出社時刻、退社時刻、と順に1ヶ月分入力されています。
  • このデータを一番左端に氏名コード、上から日付(2011/5/1)、出社時刻、退社時刻、行を変えて日付(2011/5/2)、出社時刻、退社時刻、・・・・・日付(2011/5/31)、出社時刻、退社時刻。(画像下)と言う形に行・列の並べ替えをしたいと考えています。
  • EXCELの機能である、「コピー→編集→形式を選択して貼り付け→行列を入れ替える」では対応できず、VBAマクロ又は関数で試みようとしましたが、こちらも対応方法が見つかりません。
回答を見る
  • ベストアンサー

【EXCEL VBA】データの並べ替えの方法

元データが左から右へ氏名コード、日付(2011/5/1)、出社時刻、退社時刻、日付(2011/5/2)、出社時刻、退社時刻、・・・・・日付(2011/5/31)、出社時刻、退社時刻、と順に1ヶ月分入力されています。(画像上) このデータを一番左端に氏名コード、上から日付(2011/5/1)、出社時刻、退社時刻、行を変えて日付(2011/5/2)、出社時刻、退社時刻、・・・・・日付(2011/5/31)、出社時刻、退社時刻。(画像下)と言う形に行・列の並べ替えをしたいと考えています。 EXCELの機能である、「コピー→編集→形式を選択して貼り付け→行列を入れ替える」では対応できず、VBAマクロ又は関数で試みようとしましたが、こちらも対応方法が見つかりません。 何かいい方法がございましたら、ご指導のほど宜しくお願い致します。 尚、作業環境はWindows7、MS office2010です。 

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

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

ぺたぺたと,順繰りに貼り付けていくだけです。 sub macro1()  dim w as worksheet  dim n as long, i as long  dim h as range ’準備  set w = activesheet  n = range("A65536").end(xlup).row  worksheets.add after:=w ’転記  for i = 2 to w.range("IV2").end(xltoleft).column step 3   set h = range("A65536").end(xlup).offset(1)   w.range("A2:A" & n).copy destination:=h   w.range(w.cells(2, i), w.cells(n, i + 2)).copy destination:=h.offset(0, 1)  next i ’名前順に並べ替え  range("A1") = "unknown"  range("A:D").sort key1:=range("A1"), order1:=xlascending, header:=xlyes end sub

La_Ola_Azul
質問者

お礼

返信遅くなりまして済みません。 記述頂いた内容で無事解決しました。 ご回答頂き有難うございました。m(_ _)m

関連するQ&A

  • 【EXCEL VBA】COUNTIF関数について

    A列・B列:氏名コード、C列:日付、D列:出社時刻、E列:退社時刻、F列:勤務時間といった具合に1ヶ月分のデータが入力されています。 各々氏名コード毎にG列の月末日の箇所に1ヶ月分の勤務時間の合計を入れているのですが、出社時刻と退社時刻がブランク(休日等)の場合、F列の勤務時間が0時間でなく24:00:00で換算されてしまう為、実質1ヶ月分の勤務時間の合計がその分加算されてしまいます。(画像参照) そこで、各々氏名コード毎にH列の月末日の箇所に24:00:00で換算されてオーバーしてしまった時間を自動的にカウント出来るようにしたいのです。 手動で勤務時間の1ヶ月の合計を算出する場合は、 [=IF(A32<>A33,SUMIF(A:A,A32,F:F),"")]で、 また手動で24:00:00で換算されてオーバーしてしまった時間をカウントする場合は、 [=COUNTIF(F2:F32,"24:00:00")] と関数対応できるところまではこじつけたたのですが、マクロで自動的に反映させる方法が分かりません。 何かいい手順がございましたら、ご指導の程宜しくお願い致します。 尚、作業環境はWindows7、office2010です。

  • 【Excel VBA】複数範囲の並べ替えは可能でしょうか?

    【Excel VBA】複数範囲の並べ替えは可能でしょうか? Excel2003を使用しています。 CSVデータを元に作成された下記のような表があります。 A列…日付、B列…受注番号、C列…摘要(会社名・品名等)、D列…金額となっています。 6行目以下に上記の内容でデータが入力されていますが、会社ごとのデータ内で日付順に並べ替えをしたいのですが、VBAで複数の範囲を選択して、それぞれの範囲内での並べ替えは可能でしょうか?     A     B     C    D 6             ○○会社 7   1/20   123   AAA   1,000 8   1/15   120   BBB   2,000 9 10              計     3,000 11 12            ××会社 13 計の1行上と下は空欄行で、以下、会社名の後にデータが続くというパターンの繰り返しで数十社分あります。 Excelのデータ⇒並べ替えでは複数選択した状態での並べ替えはできないので、VBAで可能であればと思い、質問させていただきました。 よろしくお願いします。

  • データの並べ替え

    40万行くらいあるデータベースの並べ替えをしたいのですが、エクセルでは6万行くらいしかインポートできません。データを分割すれば良いのかもしれませんがなるべく一つのデータとして扱いたいのです。良い方法はないでしょうか?

  • VBA Excel 特定の記号を含む行で

    Excel VBAにて、質問します。お手数ですが宜しくお願いします。 画像の様に、E列に特定の記号"●"や"▲"含んだ行以外、抽出し 印刷のシート名に貼り付けしたいと思います。 ですが、条件がありまして、その条件とは、InputBoxを使って 抽出したい日付を入力し、入力した日付、時刻までの記号"●"や"▲"以外 を抽出できる様にしたいです。 例えば実行時の日付が8/21日ならば InputBoxに、8/28 20:00と入力したら、入力した日付、時刻までの 記号"●"や"▲"以外を抽出となります。 画像の様に、1行目の見出し名も貼り付けできる様に、VBAを使って できませんでしょうか? ※ 画像ではSheet1のみ載せましたが、 Sheet2とSheet3とSheet4とSheet5とSheet6まで似た内容のデータがあるので シート名を指定して動作できると良いです。 Array("Sheet1","Sheet2","Sheet3","Sheet4","Sheet5","Sheet6")見たいな 感じでできますでしょうか? どの様なコードを書けば良いでしょうか? 御面倒お掛けしますが宜しくお願いします。

  • Excelのデータでコピペの良い方法は?

    出社日 帰社日 氏名 出社時間 帰社時間 仕事内容 171216 171216 伊藤  8:00  17:00   ○○ 171216 171216 伊藤  空白   空白 △△ 171218 171219 伊藤 8:00   10:00   ○○ 171220 171221 伊藤  8:00 14:00   ○○ 171221 171222 伊藤 空白   空白    ×× 171225 171226 伊藤  8:00 10:00   □□ このようなデータを 日付 出社時間 退社時間 171216  8:00 17:00 171217 空白   空白 171218  8:00 空白 171219  空白   10:00 171220 8:00 空白 171221 空白   14:00 このように日付毎に出社時間、退社時間のみ抜き出して、違うシートに作成したいのですが、何か良いコピペの方法など 有りましたらお教えいただきたく、宜しくお願いします。 わかりにくい上にデータの表示が見にくくて、すいません。

  • Excel2000での並べ替え

    会社で住所録を作っているのですが、 会社名、支店名、担当者、住所、電話番号、種別などの項目のうち会社名の50音順で並べ替えを行いたいのですが、うまくいきません。 ヘルプで調べて、ヘルプに載っていた方法(空白セルに1を入力して、会社名のところに形式を選択して貼り付けで演算の乗算をするという方法)でやってみたのですが、並べ替えを行ったとたん、入力したデータがすべて消えてしまいます。 どうしたらいいのでしょうか? 教えてください。

  • accessのデータの並べ替えについて

    初めてaccessデータベースを作る為、マニュアルを読んでもわからなかったので、初歩的な質問をさせてください。 顧客データを管理しているのですが、一つのテーブルを元に、データを管理しています。(氏名・住所・希望予算・連絡先・顧客ランクなど) それをレポート出力するにあたって、ソート(並べ替え)をかけるのですが、時と場合によって、「今日は、顧客来店日付順」「今日は担当者別」「今日は予算別」という風にソートの基準が違います。 レポートの雛型は作成してあるのですが、それは日付順でしか並べ替えできません。 任意に、並べ替えの基準を変えて並べ替えをし、既存のレポートに出力することはできるのですか? それとも、並べ替えをするたびにレポート書式をデザイン作成しなくてはいけないのですか? 初心者なので、なるべく簡単な方法があるとよいのですが・・・。

  • excel2000でVBAのコード相談

    添付図にあるように、 A列 日付 B列 時刻 C列 値 という表があります。 そして、画像のように 値が3以上の時の、日付と時刻を、F列~J列の表に書き出したいです。 書き出す表は、上から順に 1回目が9行目、2回目が10行目、3回目が11行目 ・・・ といった具合です。 どういったコードがいいか、なかなか思い浮かばず、いいものを教えていただければ幸いです。 よろしくお願いいたします。

  • VBA Excel 特定の記号を含んだ行

    Excel VBAにて、質問します。お手数ですが宜しくお願いします。 画像の様に、E列に特定の記号"●"や"▲"含んだ行以外、抽出し 印刷のシート名に貼り付けしたいと思います。 ですが、条件がありまして、その条件とは、InputBoxを使って 抽出したい日付を入力し、入力した日付、時刻までの記号"●"や"▲"以外 を抽出できる様にしたいです。 例えば実行時の日付が8/21日ならば InputBoxに、8/28 20:00と入力したら、入力した日付、時刻までの 記号"●"や"▲"以外を抽出となります。 画像の様に、1行目の見出し名も貼り付けできる様に、VBAを使って できませんでしょうか? ※ 画像ではSheet1のみ載せましたが、 Sheet2とSheet3とSheet4とSheet5とSheet6まで似た内容のデータがあるので シート名を指定して動作できると良いです。 Array("Sheet1","Sheet2","Sheet3","Sheet4","Sheet5","Sheet6")見たいな 感じでできますでしょうか? 御面倒お掛けしますが宜しくお願いします。

  • Excel2007:ブロック単位での並べ替え

    Excel2007:ブロック単位での並べ替え Excel2007で名簿を作成しています。 新規のデータがあれば、表の一番下に足していくのですが、 新規データを入れた後にあいうえお順に並べ替えをしたいと思います。 名簿にはたくさんの項目があり、1件につき 4行7列 を使用しており、 セルの結合をしている個所もあります。 上手く並べ替える方法を教えていただきたく、ご質問させていただきます。 表の形式については、画像を添付いたしましたので、ご覧いただけましたらと思います。 お詳しい方、どうぞよろしくお願いいたします。

専門家に質問してみよう