- 締切済み
シートを串刺しで抽出したいのですがそれはマクロですか?
こんにちは。 エクセルの串刺し集計ではなく、串刺し抽出のことでわからないので 教えて下さい。 ・同じブック内に顧客20件のデータが管理されています。 ・1シート毎が1顧客の単価帳になっています。 ・A1に顧客の名前(同じくシート名もこれと同じく顧客の 名前をつけています。) ・抽出したいのは顧客20件の各シートのA50:B53です。 同じブックの新規シートに「A1の顧客名」と(どれを抽出したか わからなくなってしまうから必要なのかな?と思います。) 20シート全ての「A50:B53」を抜き出すことは可能でしょうか? 抜き出したいセル番地は20シート一緒です。 それぞれのシートはA2からA49までの抽出しなくてもいいセルは、 不規則にだらだらと製品名や個々の単価が入力されています。 転職した会社でデータ管理がなされていなくてビックリしています。 とは言え私もマクロなどは経験がなく、なにをしたらできるのかが さっぱり分かりません。 でも確か前の会社ではできていたのに・・・? あれはアクセスだったのかなぁ? などという状態です。 VBAマクロの本を読みあさりましたが よくわかりませんでした。 とっかかりを教えていただければありがたいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- suz83238
- ベストアンサー率30% (197/656)
c=c+10はおっしゃるとおり10行空けるために足してます。一般的にプログラムでの"="は数学に意味と違って、右辺のものを左辺にすると言う意味に使われます。ですからc=c+10はもとのcに10を足したものをcにするということです。 c=1は1行目から書くという意味です。c=2にしておけば2行目からです。 さて、Range("A" & c)の意味ですが、 Range("A1").value="ABC" Range("A2").value="ABC" Range("A3").value="ABC" の変化している数値について、変数を使用できます。 For i=1 to 3 Range("A" & i).value="ABC" Next i このあたりのことは、下記を見てください。 http://park14.wakwak.com/~aoiro-taro/old/taro/hanni.htm お勧めの本やサイトは、特にないんですが、分からない関数とか出てきたらその都度ネットや本で意味を理解しておくことだと思います。私もはじめの頃は"For Each ~"の意味が理解できないで苦労しました。 VBAはホントおもしろいですよ。エクセルの世界が100倍くらい広くなります。 それではがんばってください。
- suz83238
- ベストアンサー率30% (197/656)
ちょっと作りかえました。 A50:F53は Sub xxxx() c = 1 For Each SH In Sheets If SH.Name <> "a" Then Sheets("a").Range("A" & c).Value = SH.Name SH.Range("A50:F53").Copy Sheets("a").Range("A" & c + 1) c = c + 10 End If Next End Sub A50:F53,A55:F58は Sub xxx() c = 1 For Each SH In Sheets If SH.Name <> "a" Then Sheets("a").Range("A" & c).Value = SH.Name SH.Range("A50:F53", "A55:F58").Copy Sheets("a").Range("A" & c + 1) c = c + 15 End If Next End Sub
- suz83238
- ベストアンサー率30% (197/656)
シートを1つ増やします。そのシート名を「a」とします。試しに下記をやってみてください。 Sub xxx() c = 1 For Each sh In Sheets If sh.Name <> "a" Then Sheets("a").Range("A" & c).Value = sh.Name Sheets("a").Range("A" & c + 1 & ":B" & c + 4).Value = sh.Range("A50:B53").Value c = c + 6 End If Next End Sub
お礼
さっそくの回答をありがとうございました!! できました! すごく嬉しいです。 全部手作業でやるのかと思っていたので感激しました。 マクロの素人で申し訳ありませんが A50:B53のところの範囲を広げたい場合はどこを直したらよろしいのでしょうか? 別件でもう少し広範囲(例えばA50:F53)横に長い範囲の場合は?と どうなるのですか? またA50:F53,A55:F58のように範囲指定を2箇所することもできるのですか?
お礼
あっ 今やってみてわかりました。 +10は 10列行間を空けるの意味ですか? 最初のc=1という部分がポイントですか?
補足
ありがとうございます! 今回もきちんと作動しました。 もっともっと勉強したくなり本日ExcelVBAトレーニングという本を 購入してみました。 suz83238さまの書いてくださったものを日本語にすると ・・・シートaにセルA&cの値を取得する。ということですよね? でもこの&cはなんのことでょうか? c = c + 10とはなにに10加えるのですか? なんども伺って申し訳ありません。 suz83238さまのお勧めの本やサイトなどはございますか?