- ベストアンサー
エクセルVBA 行列を一気に変換する方法教えて
エクセル シート1 A1列 東京駅 9:30 出身大阪 男性 56番 大阪駅 10:00 出身京都 女性 22番 名古屋駅 12:00 出身東京 男性 102番 といったデータを シート2 に 東京駅 9:30 出身大阪 男性 56番 大阪駅 10:00 出身京都 女性 22番 名古屋駅 12:00 出身東京 男性 102番 に転記したいのですが、 行列を変換してコピーという手作業をやってます。 限界なんでVBAでやりたいのですが どのような記述になりますでしょうか?
- ch20090926
- お礼率85% (54/63)
- オフィス系ソフト
- 回答数2
- ありがとう数28
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! Sheet1・A列のデータは1行目からあり、5行で一塊とします。 標準モジュールにしてください。 Sub Sample1() Dim i As Long, cnt As Long, wS As Worksheet Set wS = Worksheets("Sheet2") Application.ScreenUpdating = False With Worksheets("Sheet1") For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row Step 5 cnt = cnt + 1 .Cells(i, "A").Resize(5).Copy wS.Cells(cnt, "A").PasteSpecial Paste:=xlPasteAll, Transpose:=True Next i Application.CutCopyMode = False End With Application.ScreenUpdating = True wS.Activate End Sub こんな感じではどうでしょうか?m(_ _)m
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7940)
わざわざマクロを持ち出してやりたいならそれも一つの方法ですが、簡単に手作業で。 手順: シート2のA1に =Sheet1!A1 シート2のB2に =Sheet1!A2 シート2のC3に =Sheet1!A3 シート2のD4に =Sheet1!A4 シート2のE5に =Sheet1!A5 の数式を記入 A1:E5を選択、下向けにシート1に用意したリストの下端までオートフィルドラッグしてコピー #参考 =IF(Sheet1!A1="","",Sheet1!A1) のような数式にしても勿論構わない A:E列を選択 Ctrl+Gを押す 現れたダイアログでセル選択をクリックする 現れたダイアログで空白セルにマーク 右クリックして削除を選択、上に詰めて完成。 >…という手作業をやってます という作業を毎回やってるなら、上述で準備したシート1に新しいデータを埋めてやれば、次回からはシート2に勝手に欲しい結果が並んでます。 必要に応じてシート2から更にコピーし、どこか必要な場所に形式を選んで貼り付けの「値」で貼り付けて値化しても勿論構いません。 #参考 sub macro1() dim n as long worksheets("Sheet2").range("A:E").clearcontents n = worksheets("Sheet1").range("A65536").end(xlup).row \ 5 worksheets("Sheet2").range("A1:E" & n).formula = "=INDEX(Sheet1!$A:$A,(ROW()-1)*5+COLUMN())" worksheets("Sheet2").range("A1:E" & n).value = worksheets("Sheet2").range("A1:E" & n).value end sub とかで一気にやっても構いません。 このマクロで記入させてるような数式を、マクロとか使わず手で記入するだけでも勿論出来ます。
お礼
素早い回答ありがとうございました。 関数をマクロを使って入力してしまう方法もあったんですね ありがとうございます。
関連するQ&A
- Excel VBAで作成するにあたって、画像上部の元データを
Excel VBAで作成するにあたって、画像上部の元データを 画像下部のように行列位の違いがあるような項目に データを抽出して転記するにはどうしたらよいでしょうか? 手順 ・支店ごとにデータを抽出し、シート名を付ける ・データを転記する VBA初心者で勉強中ですが大変困難です。 どなたか教えてください。よろしくおねがいいたします。
- ベストアンサー
- オフィス系ソフト
- Excel VBAで作成するにあたって、画像上部の元データを
Excel VBAで作成するにあたって、画像上部の元データを 画像下部のように行列位の違いがあるような項目に データを抽出して転記するにはどうしたらよいでしょうか? 手順 ・支店ごとにデータを抽出し、シート名を付ける ・データを担当者ごとに1行に集約して転記する VBA初心者で勉強中ですが大変困難です。 どなたか教えてください。よろしくおねがいいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAについて教えて下さい。
エクセルVBAの質問です。 (1)の一覧から「出張」の項目のみを抽出し、別シートへ(2)のような形で記載したいのですが、VBA初心者なのでこれが出来るのかもよく分かりません。もし出来るならやり方を教えてください。 (1) A B C D E F G H I JOB NO 内容 担当者 日付 日数 行先 時間 02AAA001 出張 田中 2/2 ~ 2/4 3日間 名古屋 日勤 02AAA002 出張 佐藤 2/3 ~ 2/4 2日間 大阪 夜勤 02AAA003 作業 鈴木 2/5 ~ 2/8 4日間 工場 日勤 02AAA004 出張 吉田 2/4 ~ 2/6 3日間 東京 夜勤 ・ ・ ↓↓ (2) A B C D E F 佐藤 田中 鈴木 吉田 2/1 日 2/2 月 名古屋 2/3 火 *大阪 名古屋 2/4 水 *大阪 名古屋 *東京 2/5 木 *東京 2/6 金 *東京 2/7 土 ・ ・ ☆出張の場合のみ(2)表に記載する ☆日付、曜日、氏名は既に入っていて、日付と氏名の交差する所に行先を入れる。 ☆夜勤の場合、行先の前に『*』を入れる。 説明が下手ですみません。分かる方いらっしゃいましたらお願い致します。
- ベストアンサー
- オフィス系ソフト
- ExcelのVBAについて。
ExcelのVBAについて。 画像のようなコードを利用してセルに入力時の日付時間を自動的に付加させたいのですが、、 VBA初心者な為に上手くいきません。 コード自体はサイトのを切り貼りして使えるのですが、これ以上の応用例に行き着けません。目的としては、データベース的に、あと入力数値から特定文字を抜き出して変数を当て嵌め文字列の語呂を当てます。様式はまだ作成中ですが、ある種の図表化してプリントアウトまでしたいと思っています。 何が上手くいかないか、まず自動的に付加させる所は何となく出来ているので、これをシート1とした場合に、シート2に図表化した転記内容を構成し、、シート1入力、シート2表示、またシート1A3セルに戻るというコードにしたいです。 この記述は不味いとかこうこうああした方が良いというアドバイスや指摘をお願いします。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- Excel VBA で行挿入
Excel2002を使っています。 質問させていただきます。 VBAで行を挿入したいのですが、たとえば以下のようにデータがあります。 A列 東京 東京 東京 大阪 大阪 名古屋 予めデータはソートされています。 この状態で、東京と大阪の間、大阪と名古屋の間に1行挿入(空行)したいです。 コマンドボタンをクリックしたときの動作の一つとして実現したいのですが方法がわかりません。 ご指導いただければ幸いです。
- ベストアンサー
- オフィス系ソフト
- 【VBA】数値を入力して特定のセルを転記・印刷する
VBA初心者です。よろしくお願いします。 データの転記について伺います。 名簿シートに入力された情報を申請書シートに転記し、さらに印刷したいのですが このとき転記する範囲をセルに直接入力して指定することはできますでしょうか。 イメージとしては以下のような感じです。 「No2からNo4の人の氏名、住所、備考を転記したい」 【名簿シート】 A B C D E ____________________ 1│No 氏名 住所 性別 備考 2│1 鈴木 東京 男性 継続契約 3│2 田中 大阪 女性 電話無 4│3 荻 愛知 男性 眼鏡有 5│4 矢作 青森 男性 眼鏡有 ・ ・ ・ 【申請書シート】 ○○様 以下のとおり申請します。 ──────────── │氏名 │住所 │備考 │ ──────────── │田中 │大阪 │電話無 │ ──────────── │荻 │愛知 │眼鏡有 │ ──────────── │矢作 │青森 │眼鏡有 │ ──────────── 【印刷範囲指定シート】 Noを入力して指定 ─── ─── │ 2 │ - │ 4 │ ─── ─── ── │印刷│ ── ※マクロボタン↑ ※これを押すと指定範囲が印刷される アドバイスよろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセル2000で教えて下さい。
エクセル2000で下記のような表を作りたいのですが 教えて下さい。 シート1を入力すれば勝手にシート2の表が作成されるように したいのです。 シート1のD列に数値が入った場合のみ、その行のすべてが シート2の上から順番に並ぶようにしたいのです。 参考までに大阪なら数値は必ず「入」の列に入ります。 東京なら数値は必ず「出」の列に入ります。 すべて関連付けされていますが名前は100種類くらいあります。 同じ東京と入った場合でも数値もその都度変わります。 どなたかご教授下さい。 例 (シート1) A B C D 1 日付 名前 出 入 2 10/20 東京 200 3 10/20 大阪 300 4 10/20 名古屋 400 5 10/21 福岡 300 6 10/21 仙台 550 7 10/22 京都 900 8 10/23 東京 500 9 10/23 京都 750 (シート2) A B C D 1 日付 名前 出 入 2 10/20 大阪 300 3 10/22 京都 900 4 10/23 京都 750
- ベストアンサー
- オフィス系ソフト
- エクセルのVBAについて
初めて質問します。 VBA初心者で勉強中なのですが教えてください! sheet1に下記 顧客番号 物件名 4月 5月 6月 0 31 0 1111 神戸 1,200 1,300 0 31 0 1112 大阪 1,300 1,400 0 31 0 1113 名古屋 1,500 1,600 0 31 0 1114 熊本 1,600 1,700 0 31 0 1116 群馬 1,650 1,600 sheet2に下記 顧客番号 物件名 6月 0 31 0 1111 神戸 1,600 0 31 0 1113 名古屋 1,800 0 31 0 1114 熊本 1,900 0 31 0 1115 北海道 1,800 0 31 0 1116 群馬 1,700 の二つのシートがありsheet2のデータを全コピしてsheet1のデータに上書きで貼り付けたら 又はsheet3に下記完成形 顧客番号 物件名 4月 5月 6月 0 31 0 1111 神戸 1,200 1,300 1600 0 31 0 1112 大阪 1,300 1,400 0 31 0 1113 名古屋 1,500 1,600 1800 0 31 0 1114 熊本 1,600 1,700 1900 0 31 0 1115 北海道 空白 空白 1800 0 31 0 1116 群馬 1,650 1,600 1700 を作りたいのですが、なにかいい方法はありますでしょうか・・・ 今後も7月8月とデータは増えていきます(空白は空白セルです) 6月データがない所も残しつつ、新規に6月からデータができたとこも追加して 重複してるのはそのまま6月分を追加したい感じです。 わかりにくい説明かもしれませんが、ぜひお願い致します。
- 締切済み
- Visual Basic
- エクセルでデータを蓄積するVBA
蔵書管理用の一覧表です。 エクセルでデータ入力用のフォームは作ることができたのですがシートに転記するVBAをどのように書けばよいのか分かりません。 データは次々に増えていきます。 A列には番号を入力せずに自動的に番号が増えていくようにしたい。 3番まで入力済みのあとは、自動で「4」と番号が付与されて、下の行に転記されるようにしたい。 VBA初心者です。よろしくお願いします。 A B C D 番号 分類 図書名 冊数 1 文庫本 日本の歴史 3 2 週刊誌 新潮 1 3 月刊誌 月刊ゴルフ 1
- 締切済み
- オフィス系ソフト
- excel vba 複数シートをまとめる
お世話になります。 A.xlsというブックがあります。 その中に[集計]というシートがあります。 このシートに[ボタン]を配置してクリックしたら以下の動作を実現させたいのです。 (1)[集計]シートのA2に位置セット (2)[東京]、[大阪],[名古屋]という名称のシートの列=A2~A62、行=A2~データ最下行にある全データを[集計]シートにどんどんコピー貼り付けして追加していきたいのです。 上記動作を実現するVBAのロジックをどなたかご教授いただけますでしょうか。 よろしくお願い致します。
- ベストアンサー
- Excel(エクセル)
お礼
素早い回答ありがとうございました。 セルにしてデータが 2400こデータがあり なんとかならないかと考えているところです。 また 質問させていただきます。