[[20060130163833]] 『別のシートに同じデータを表示させたい』(まるめろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『別のシートに同じデータを表示させたい』(まるめろ)

  A

1 愛知県名古屋市東区・・・

2 静岡県静岡市葵区・・・

3 三重県津市睦合町・・・

4 愛知県豊田市本町・・・

5 長野県飯田市・・・

例えばこのようなデータが縦一列でA列に300行まで続いていて、
この300のデータを、他のブックのシート1からシート300のA1セルに一つづつ反映させたいのです。一つづつコピー貼り付けでは日が暮れてしまいそうなので、うまく説明できませんが教えてください。WindowsXPのExcel2003です。よろしくお願いします。


 何のための作業でしょうか。差し込みたいデータはA列の300行だけですか?
シート1からシート300に入っているデータやフォーマットに違いはありますか?
(みやほりん)(-_∂)b


 衝突しました。みやほりんさんが質問中ですが、取りあえずマクロを
 考えたのでUPします。
 「他のブック」に シートを挿入して、Sheet0 と名前を付け、コピー元の
 A列を Sheet0 のA列にコピーして、その後、下記マクロをお試し下さい。
 Sheet1〜Sheet300 の各A1セルに、Sheet0 のA列のデータを上から順に
 コピーしていきます。
(純丸)(o^-')b
 
 Sub datacopy()
  Dim i As Integer
  For i = 1 To 300
    Worksheets("Sheet" & i).Range("A1").Value = _
         Worksheets("Sheet0").Cells(i, 1).Value
  Next i
 End Sub

 出遅れた〜

 σ(^o^;)も、考えてみたのでUP

 標準モジュールへ
'----------------------
Sub test()
Dim MyR As Long
Dim MySh As Variant
MySh = ActiveSheet.Name
MyR = Range("A" & Rows.Count).End(xlUp).Row
For MyR = 1 To MyR
    ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Range("A1") = Sheets(MySh).Range("A" & MyR)
Next MyR
End Sub

 ※BookのSheetは、データのあるSheetだけにして下さい。

 (キリキ)(〃⌒o⌒)b

回答ありがとうございました。

何のための作業かというと、元のデーターというのは顧客のデータ一覧なので、1顧客につき1枚のデータシートを作りたかったのです。

シートを300まで増やすのにコピーをして300シートまで作ったのでシート名がSheet1(2)とかってなってしまっては上記のマクロは正常にできないんですよね??

簡単にSheet300まで作るにはどうしたらよいのでしょうか?

それともうひとつ、元のデータのA列には上記のように顧客の住所が入力されていますが、B列に顧客名が入力されているとしたら(これも同じ書式で300行まで)
他のブックにシート300枚を作る時に、そのシート名をB列の顧客名が反映されるようにこれまた一気に作成することとかもできるのでしょうか?

(まるめろ)


 まず、
 >シートを300まで増やすのにコピーをして300シートまで作ったのでシート名がSheet1(2)とかってなってしまっては
上記のマクロは正常にできないんですよね??
 これは、純丸さんやσ(^o^;)のマクロを実行してみて仰っているのでしょうか?
 
 純丸さんの場合
「他のブック」に シートを挿入して、Sheet0 と名前を付け、コピー元の A列を Sheet0 のA列にコピーして、その後、下記マクロをお試し下さい。

 σ(^o^;)の場合
※BookのSheetは、データのあるSheetだけにして下さい。

 次に、
 >B列に顧客名が入力されているとしたら

 純丸さんのコード
Range("A1") → Range("B1")
Cells(i, 1) → Cells(i,2)
に変更してください。

 σ(^o^;)のコード
Range("A" & → Range("B" &
Range("A1") → Range("B1")
に変更してみてください。

 もしも、希望と違いましたらまた教えてください〜♪

 (キリキ)(〃⌒o⌒)b


 キリキさん、ウチの分までフォローをすんません。
 ところで、、、

 >元のデーターというのは顧客のデータ一覧なので、
 >1顧客につき1枚のデータシートを作りたかったのです。

 と言うことですが、顧客のデータをいろいろ追加していくならば、
 あくまでデータ一覧があるシートに入力していき、必要に応じて
 印刷用(閲覧用)シートにデータを呼び出すような仕様にした方が
 いいと思いますが。300シートもあると、目的のシートを探すだけでも
 大変な上、上位10社を調べるなどの全体を対象とした作業が
 難しくなります。まったく的はずれでしたらすみません。
(純丸)(o^-')b

 ありがとうございます。
 なんせマクロ触ったことがないもので理解もなかなかできなくて申し訳ないのですが、
 シートをコピーして300枚作って、その後上記(純丸さん)のようにマクロを実行しても
 途中までは(255行目)上手くいったのですが、それ以降は何も反映してくれなかったので、
 それはシート名がSheet1(2)とかってなっているせいなのではないかと思ったのです。。。
 でもシートを256から300まで(しかもシート名がSheet256からSheet300)作るのってどうすればいいのかわからなくて
 (一つずつ名前を入力していけというのなら大変だなあと思って)
質問させていただきました。
 ちなみにキリキさんのマクロではひとつも反映しなかったのはたぶん自分のやり方が悪かったのだと思いますが(?_?;)
 何を直せばいいのかわからなくてスイマセン。。。
 それともうひとつの質問というのは、元のデータのB列の1行目から300行目までに入力されている顧客名を
他のブックのシート名(300枚分)に1顧客ずつ反映させることはできないのか教えてほしいです。
うまく説明できませんが宜しくお願いします。
(まるめろ)

 >シートをコピーして300枚作って、その後
 純丸さんのものも、σ(^o^;)のものも、コピーを取る前のもので考えています。
 新しいブックで顧客シートのみで行ってみてください。

 >他のブックのシート名(300枚分)に1顧客ずつ反映させることはできないのか教えてほしいです。
 こちらも応用で出来そうですが、もう少し詳しく説明をお願いしても宜しいでしょうか?
・データのあるシート名は?
・他のブックには、シートがすでに300あるのですか?
・そのシートのどの位置に反映させるのですか?

 (キリキ)(〃⌒o⌒)b

 前もって300枚シートを作っておかなくても自動で300まで作成してくれるんですね!すごい!
 しかし、キリキさんのはうまくいったのですが今度は純丸さんので実行すると
 「インデックスが有効範囲にありません」とエラーが出てしまいうまくいきませんでした。(;;)

 >・データのあるシート名は?
  ・他のブックには、シートがすでに300あるのですか?
  ・そのシートのどの位置に反映させるのですか?
 データのあるシート名は「顧客300」です。
 その顧客300のB列の1行目から300行目までのデータ300個を、先程「できましたー!」
 と言った自動でファイルが作成された300のシート名(今はSheet1〜Sheet300という名前になっているのでそこを各顧客の名前)
 と変えたいんです。

 あと、純丸さんがおっしゃっていた↓
 >顧客のデータをいろいろ追加していくならば、
  あくまでデータ一覧があるシートに入力していき、必要に応じて
  印刷用(閲覧用)シートにデータを呼び出すような仕様にした方が
  いいと思いますが。
 の、「印刷閲覧用シートにデータを呼び出すような仕様」というのはどのようになるものなのでしょうか??
 参考にしたいので教えてください。
 宜しくお願いいたします。
(まるめろ)

 ごめんなさい!!
 今、読み返したら追加でご質問があったのですね!!

 >と言った自動でファイルが作成された300のシート名(今はSheet1〜Sheet300という名前になっているのでそこを各顧客の名前)
 と変えたいんです。

 下記を追加していただければ、シート名が顧客名になると思います。
 Sheets(Sheets.Count).Name = Sheets(MySh).Range("A" & MyR)

 (キリキ)(〃⌒o⌒)b

 ありがとうございました。シート名まではいりました!
 今後の参考に、下記のマクロの意味を教えてほしいのですが、
 超初心者なので宜しくお願い致します。
Sub test()
Dim MyR As Long
Dim MySh As Variant
MySh = ActiveSheet.Name
MyR = Range("A" & Rows.Count).End(xlUp).Row
For MyR = 1 To MyR
    ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Range("A1") = Sheets(MySh).Range("A" & MyR)
Sheets(Sheets.Count).Name = Sheets(MySh).Range("A" & MyR)
Next MyR
End Sub
(まるめろ)

 σ(^o^;)の説明で解るかどうかですが、、、
 こんな感じです。。。
Sub test()
Dim MyR As Long             '変数宣言
Dim MySh As Variant         '変数宣言
MySh = ActiveSheet.Name     'MyShと言う変数に、アクティブになっているシート名を格納
MyR = Range("A" & Rows.Count).End(xlUp).Row     'A列の文字の入っている最終列番号の取得
For MyR = 1 To MyR              '1〜上記取得最終列までの繰り返し
    ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
    'アクティブになっているブックにシートを追加:今あるシートの数の次に
    Sheets(Sheets.Count).Range("A1") = Sheets(MySh).Range("A" & MyR)
    '今ある最後のシートのセルA1に、シート名(MySh)のA列のMyR番目のものと同じ物を記入
    Sheets(Sheets.Count).Name = Sheets(MySh).Range("A" & MyR)
    '今ある最後のシート名を、シート名(MySh)のA列のMyR番目のものと同じ物を記入
Next MyR                        'MyRまで、繰り返し
End Sub

 (キリキ)(〃⌒o⌒)b

 やはりもっとマクロを勉強してからでないと難しいですね(^^;)
 キリキさん長々とお付き合いくださいましてどうも有難うございました★
 感謝!(まるめろ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.