教えてください。
A列に会社名が200社で1000件ランダムに入っています。それを会社名ごとにシート名もA列に入力している会社名に分けたいのですがどうしたらよいのでしょうか?

例えば、

A列   B列   C列       A列   B列   C列
 
C社   ○    AAA       A社   ×    CCC
A社   ×    CCC   →   A社   ×    CCC
B社   △    DDD
A社   ×    CCC       A社(シート名)

分かり難くてすみません。1000件を200の会社ごとにシート名を付けてに分けたいのです。

どうかよろしくお願いいたします。

A 回答 (5件)

元リストのシートを開く


ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub macro1()
dim h as range
on error goto errhandle
for each h in range("A1:A" & range("a65536").end(xlup).row)
h.entirerow.copy destination:=worksheets(h.value).range("A65536").end(xlup).offset(1)
next
exit sub
errhandle:
worksheets.add after:=worksheets(worksheets.count)
worksheets(worksheets.count).name = h
activesheet.range("A1:C1") = array("社名", "データ1", "データ2")
resume
end sub

F5キーを押す
今登録したmacro1を選んで実行する
ファイルメニューから終了してエクセルに戻ると既に完成しています。
    • good
    • 0

一般機能で一度にシートをたくさん作るにはピボットテーブルが便利です。



A列に会社名、B列に項目1、C列に項目2と項目名をつけておいて、

表内にカーソルを置き、データ→ピボットテーブルとピボットグラフレポート→次へ→次へ→作成先を適当に決め完了

ページのフィールドに会社名(ここが重要)、データのフィールドに項目名(一つでいいです)をドラッグ

ピボットテーブルツールバーの左端にある「ピボットテーブル」をクリック→ページの表示→OK

で会社名ごとのシートができます。

その後最初のシートを選択し、Shiftを押しながら最後のシートを選択してから、どこか未入力のセルをコピーしピボットテーブル全体に貼り付け

これでシート名だけ入ったシートが完成します。

以上は2003までの操作です。

中のデータに関しては他の方の回答を参考にして下さい。
    • good
    • 0

 今仮に、元データーが入力されているシートのシート名がSheet1であるものとします。


 又、Sheet2のA列を作業列として使用するものとします。

 まず、Sheet2のA1セルに次の数式を入力して下さい。

=INDEX(Sheet1!$A:$A,ROW())&COUNTIF(Sheet1!$A:$A,INDEX(Sheet1!$A:$A,ROW()))

 次に、Sheet2のA1セルをコピーして、、Sheet2のA2以下に(Sheet1のリストの行数を上回るのに充分な行数となるまで)貼り付けて下さい。

 次に、例えば

A社

という名前のシートを作成し、そのA2セルに、次の数式を入力して下さい。

=MID(CELL("filename",A2),FIND("]",CELL("filename",A2))+1,999)

 次に、A社シートのA3セルに、次の数式を入力して下さい。

=IF(ROWS($2:3)>COUNTIF(Sheet1!$A:$A,A$2),"",A$2)

 次に、A社シートのB2セルに、次の数式を入力して下さい。

=IF(ROWS($2:2)>COUNTIF(Sheet1!$A:$A,$A$2),"",INDEX(Sheet1!B:B,MATCH($A$2&ROWS($2:2),Sheet2!$A:$A,0)))

 次に、A社シートのB2セルをコピーして、A社シートのB2~C3の範囲に貼り付けて下さい。
 次に、A社シートのA3~C3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。

 以上でA社シートは完成で、後はA社シートをコピーしたシートを作成して、そのコピーシートのシート名を、別の会社名に変更する事で、別の会社用のシートを作成して下さい。(シート名と、Sheet1のA列に記載されている会社名が一致していれば、全て自動的に表示されます)
    • good
    • 0

方法は、関数、VBA(マクロ)、エクセルのフィルタ機能などがありますが、関数やVBAは簡単ではありませんので、エクセルのフィルタ機能を使う方法を紹介します。


(1)先ず元データシート(仮にSheet1)に見出し行を挿入します。
(2)Sheet1のA列を選択⇒データ→フィルタ→フィルタオプションの設定→重複するレコードは無視するを選択→OK
   会社名一覧を別シートにコピペし、再度(2)の操作で重複するレコードは無視するは選択なし→OK
(3)Sheet2のA1にSheet1のA1をコピペ、A2に=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)を入力、シート名を手動にて変更(先ほどの会社名一覧)
(4)Sheet2のA3を選択→データ→フィルタ→フィルタオプションの設定→指定した範囲を選択、リスト範囲欄にSheet1A:C、検索条件範囲欄にA1:A2、抽出範囲欄にA3→OK

尚、(3)で会社名一覧分を事前に作成しておけば、(4)の操作をマクロ記録で後はシートを選択してマクロ実行(ショートカットキー押下)するだけで抽出できますが如何でしょうか。
    • good
    • 0

関数で出来るのでは、と質問しているのではないですか。

しかしエクセルは条件(例A社)を付けた抜き出しは苦手です。
一発でA者の行を抜き出すのも複雑な式です。しかもその会社名の重複の無いリストと連動しないと、A社、B社、・・と
手作業で打ち込まないとならない。
ですからVBAを勉強しないとスムーズに行かないでしょう。仕事などにエクセルを使うならVBAが直ぐ必要になる1例です。
フィルタの操作とコピー貼り付けのマクロの記録を採って考えるのが、その入り口です。
こういう表の組み換えになると、エクセル関数は非力です。
ーー
係数のカウントや、計算なら1シートに各社を混在しておいても、可能な場合があるかもしれない。
またフィルタで洋画たる場合もあるかもしれない。だから
各社にシートで分けて、その後どうするの、も質問に書いておくべきなんです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

Qシート1のA列にある会社名を探してB列にある住所が入力されたら、シート2のB列に○を付けたい

シート1
A列        B列
株式会社A     東京都町田市…
株式会社B     
株式会社C     北海道札幌市…
↓↓↓↓↓
シート2
A列        B列
株式会社C     ○
株式会社A     ○
株式会社B

上記のように表示したいです。
できれば、関数でできれば助かります。

追加:シート2の会社名はシート1の会社名と順番が違います。

よろしくお願いします。

Aベストアンサー

こんばんは!

↓の画像でSheet2のB2セルに
=IFERROR(IF(VLOOKUP(A2,Sheet1!A:B,2,0)<>"","○",""),"")
という数式を入れフィルハンドルで下へコピーしています。m(_ _)m

Qエクセル 他のファイル(ブック)へシートをコピー

エクセル(2003)で他のファイル(ブック)にシートをコピーする場合,コピー元のシートに他のシートの値を参照するセルがあると,コピー後のシートに参照エラーが起きてしまいます.
これを回避するため,コピー元のシートを全選択してコピーし,コピー先で「形式を選択して貼り付け→数値と数値の書式」をした後,再度コピー元のシート全選択コピーし,コピー先で「形式を選択して貼り付け→書式」とする,という方法で今は作業していますが,一発でできる方法はないでしょうか.
もちろん,コピー先にコピー元の数式を反映させる必要はなく,値がコピーできればOKです,

Aベストアンサー

ワークシートを他のブックにコピーする方法ですが
>コピー先にコピー元の数式を反映させる必要はなく,値がコピーできればOKです,
「反映させる必要が無く」という部分を「反映させてもかまわない」と
解釈すれば
コピー元ブックとコピー先ブックの両方を同時に開いておきます。(コピー先ブックを新規作成する場合は、コピー先ブックは開いておく必要はありません)
コピー元ブックのコピーするワークシートをアクティブにしてメニューバー[編集]~[シートの移動またはコピー]
「シートの移動またはコピー」ダイアログボックスで
「移動先ブック名」の項目で移送先ブックを選びます、新しく作成する場合は「(新しいブック)」を選びます。
「挿入先」の項目で、コピーするシートを挿入する位置を選びます。
「コピーを作成する」項目にチェックを入れます。
[OK]ボタンをクリック
これでワークシートごとコピーすることができます。

ただし、コピー元ブックのほかのワークシートを参照している箇所は、そのまま外部ブックへの参照となっていますので、コピー元ブックを変更した場合、コピーブック先ブックにも反映されてしまいます。

これが不都合なら
コピー先ブックで
メニューバー[ツール]~[オプション]で
「オプション」ダイアログボックスの「計算方法」タブの中の
項目「外部リンクの値を保存する」にチェックが入っていることを確認したうえで
メニューバー[編集]~[リンクの設定]で
「リンクの編集」ダイアログボックスの[起動時の確認]ボタンをクリック
「起動時の確認」ダイアログボックスの[メッセージを表示しないで、リンクの自動更新も行わない]を選択し[OK]ボタンをクリックします。

こうしておけばリンクの手動更新をしない限り、コピー元ブックを変更しても反映されませんし、コピー元ブックをフォルダの移動やあるいは削除してしまっても、参照エラーになることはありません

ワークシートを他のブックにコピーする方法ですが
>コピー先にコピー元の数式を反映させる必要はなく,値がコピーできればOKです,
「反映させる必要が無く」という部分を「反映させてもかまわない」と
解釈すれば
コピー元ブックとコピー先ブックの両方を同時に開いておきます。(コピー先ブックを新規作成する場合は、コピー先ブックは開いておく必要はありません)
コピー元ブックのコピーするワークシートをアクティブにしてメニューバー[編集]~[シートの移動またはコピー]
「シートの移動またはコピ...続きを読む

Q列×列を列ごとに示したいです。

エクセル表計算についての質問です。困っているのでよろしくお願いいたします。

A B C

1 1 2
2 3 4
3 5 6
4 7 8

A×Bの結果をCに示したいんですがどうすればよいでしょうか??(c1に1×2=2,c2に3×4=12、c3に30、C4に56・・・と言う感じです。)

Aベストアンサー

C1のセルに、=A1*B1と入力したあと、セルの罫線部分の右下にポイントを当てて(表示が変わる部分)、下に向かってドラッグすればOKです。

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

Qエクセルで1列にあるデータを郵便番号変換ウィザードで出てくる字名までとそれ以外との2列に分離したい

市町村合併で住所録の市町村名を変更する必要があります。今、A1:424-0082、B1:静岡県清水市旭町1-1を、C1:静岡県静岡市清水旭町、D1:1-1にしたいと思います。C1はA1を元に郵便番号変換ウィザードで変換できるのですがD1の入力が面倒です。B1を字部分と番地部分で分離するうまい方法はありませんか。数が多くてかないません。

Aベストアンサー

B1の番地部分というのが
左から探して最初に数字が出現した位置以降のもの、で問題ないのでしたら、こんな感じで...

数字が含まれないときは空白になります

=MID(B1,MIN(1+LEN(B1),IF(NOT(ISERROR(FIND({"0","1","2","3","4","5","6","7","8","9","0","1","2","3","4","5","6","7","8","9"},B1))),FIND({"0","1","2","3","4","5","6","7","8","9","0","1","2","3","4","5","6","7","8","9"},B1))),LEN(B1))

Qワークシートを別ファイルにコピー出来ない

エクセル2010です。
コピー元ファイルを開き、ファイルメニュー→新規→空白のブック
により新ファイルを開き、コピー先ファイルとして名前を付けて保存、
コピー元ワークシートを選択しシートコピーしようとすると、以下のエラー表示があります。

文面忘れましたが、
コピー元とコピー先でワークシートの行列数が異なるため、コピー出来ない。ワークシートでなくデータを選択し、コピー&ペーストせよ。

ちなみに、作成したコピー先ファイルを一旦閉じて再度開くと、何故か普通にワークシートコピー出来ます。

メッセージに従うとセル幅や印刷範囲の設定がコピーされないので、やりたくありません。
普通にシートコピーしたいのです。一旦閉じて再度開くなどという動作は回避出来ないのでしょうか?

Aベストアンサー

先にコピー先のファイルを作成するのではなく、
コピーしたいシート見出しを右クリック
「移動またはコピー」をクリック
移動先Book名「新しいBook」
「コピーを作成する」にチェック

ではどうでしょうか?

これでもうまくいかなければ、、同様に作業するほかないのかもしれません。

QA列とB列の合計を行ごとにC列に表示させたい

お早うございます。エクセルのセルの計算で教えてほしいのですが、A列とB列の合計を行ごとにC列に表示させたいのです。例えばA1のセルに“1", B1のセルに“2"と入れます。それで、C1のセルに“=A1+B1"と入力します。そうするとC1のセルは“3”と表示されますよね。そこで同じように違った数字の合計を100行ほどそれぞれC列に表示させたいのです。セルごとではなく縦全部列ごとでもかまいません。宜しくお願いします。

Aベストアンサー

A1+B1=C1
A2+B2=C2

というふうにしたい!ということですね.

でしたら,
C1にはA1+B1というルールができているので,
A2,A3,A4…とB1,B2,B3…と二つの場所にそれぞれ数字を入れておきます.
その後,C1セルを選択し,そのセル自体の右下の方(選択して太線で囲まれている□自体の右下ですよ!)にカーソルを持って行くと
カーソルが太い「+」のように変わります.
そこで押したまま下に(C2,C3と下の方向です)ずーっと下げてください.
するとその部分の計算が自動的に行われるはずですよ!

日本語が下手でうまく伝わるかわかりませんが,
わかりにくかったらまたきいてください♪

QEXCELシートのコピー

あるExcelブックに統計表シート、グラフシート、グラフ用の数値シートがあります。

グラフシートだけ別の場所にコピーすると、コピーしたグラフシートのブックを開いたとき、このグラフシートはコピー元の数値シートにリンクしたままになりますが、このリンクを無効にしてシートコピーする方法はありますか。

Aベストアンサー

こんにちは。

グラフを、セルの値にリンクしないカタチにしたい
という主旨であると判断しました。

グラフをまず選択してください。

そしてShiftを押しながら、メニューの[編集]を選択すると、
「図のコピー」というメニューが現れます。

これをクリックすると、ダイアログが現れますが、
そのままOKします。

そして、シートの何もない部分をクリックします。

そして、メニューから
 編集-貼り付け
で、セルの値にリンクしないグラフ
(正確に言うとこれはグラフの「画像」です)
が貼り付けられます。

QA列にくだもの名 B列に色 C列にに指定の単語を入力する方法を教えてください

エクセル2010 Windows10 を使用しています。
例えば、A列にくだものの名前 B列に色 をドロップダウンリストで選べるようにするとします。
A列からイチゴ、B列から赤を選んだ時、C列に栃木
A列からみかん、B列からグリーンを選んだ時、C列に和歌山・・・
などと、指定の単語を入れたいのですが、どうしたらいいのか教えてください。
同じような質問が出ているのかもしれませんが、探せず質問させていただきました。

Aベストアンサー

A列とB列の組み合わせによってC列を抽出するのであれば、
例えばE列にくだもの、F列に色、G列にそのくだものと色の組み合わせによる都道府県。
という一覧を作ります、
同じくだものと色の組み合わせは存在しないものとします。

そしてD=E&"-"&F(D2なら=E2&"-"&F2と入力すると言う意味です)
とすることで、D列にはくだものと色を用いたID的なものが表示されます。

C=VLOOKUP(A&"-"&B,D:G,4,FALSE)
(同様にC2なら=VLOOKUP(A2&"-"&B2,D:G,4,FALSE)です。D:Gは列全体なので行番号不要です)
これにより、A列とB列を組み合わせたものに一致するデータをD列から探し、一致する行のG列を表示できます。


人気Q&Aランキング

おすすめ情報