エクセルで条件に合ったデータが別のセルに自動に書き出され、元データの更新に応じいつも更新されるようにしたいのです。
A列   B列     C列   D列
No.   会員名   条件1  条件2
1     山田花子  ○    ○
2    田中太郎  ○   (空白)
             ×    ○
             (空白) ○

会員は200人くらい、上記のように条件は4種類です。
この表の外(できれば別シート)に条件が○○の人の名前がずらり、
×○の人の名前がずらり、というように
それぞれの条件に合った人の名前だけが表内の順序どおりに書き出され、
元データを更新すると、条件ごとに書き出した名前も
自動的に(または更新ボタン一つで、)
更新されるようにしたいのです。
マクロはできません
どうしたらいいですか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちわ。


ちょっと適当に答えすぎましたごめんなさい。
>ただ、何も入れていない列ラベルと値のフィールドが横に広く邪魔で
>そこを何とか狭く、または表示されないようにできないでしょうか?

???イマイチどの状態になっているのかよくわかりません。(画像でも張ってあればわかるのですが・・・)

また、関数を利用すればピボットテーブルと連携させ、おそらく理想の結果はできます。
(マクロやVBAは私は使わないので出来るはずだけどわかりません。)

ただ、この質問の仕方だと、具体的には答えられないんですよ・・・・
A列とB列は言いたいことがわかります。
しかし、C列とD列の具体的な条件(たとえば名前の検索をしたいのか、他に条件があり、年齢などの数字を検索対象にしたいのかなど)が不明なため、答えようがありません。

質問するときは、必要なデータを全て提示してください。(もちろん、本物のデータではなく、仮のデータでいいです。)
1、検索対象となるデータ
2、検索条件(○や×ではどうしたいのか分かりません。)
3、1のデータを2の条件で検索した結果、どのような表示結果になってほしいのか。

1、2,3のサンプルを提示してください。
そしたら具体的に答えることができます。

まあ、これらが分かれば他の方が先に答えそうな気がします。^^;
    • good
    • 0
この回答へのお礼

皆さん、すみません・・質問の仕方が簡略すぎました。
元々何のデータかというと、
ある会の定期総会の出欠の返事の集計だったのです。
条件1は出欠(○が出席、×が欠席、空白が未記入または未提出)、
条件2は委任状(○が委任OK、空白が未記入または未提出)。

2条件の返事の組み合わせ4種に対する人数の集計はDCOUNTA関数でできていました。
会場受付の利便上、2条件に対する返答の記載されたあいうえお順の会員名簿のほかに、4種の返事をしてきたのがそれぞれ誰か、名前だけを書き出したリストがほしかったのです。
時間があればオートフィルタやフィルタオプションで
私のようなものでもピックアップできるのですが、
総会直前まで、出欠の提出が続き、
最後に最終データをプリントして会場に行かなければならないので、
ボタン一つで最終データを取り込めるようにしたかったのです。

質問した時点では列と値にフィールドを入れなかったら、
「ここにデータアイテムをドラッグしてください」という
表示があるせいでピボットテーブルが横に広がってしまい、
「いくつかのピボットテーブルを隣接させて、結果を一覧したい」ということがうまくできなかったのです。

でも、値にA列のNo.をドラッグするか邪魔な列を非表示にしたら、
見た目の問題は解決できました。

ピボットテーブルは本屋では簡単な解説書が見つけられませんでしたが、もっと使いこなしたいです。

今後はご理解いただきやすい質問を目指します
ありがとうございました。

お礼日時:2009/05/15 23:49

oboburさん 今日は!


■実用編:家計簿の作成(ピボットテーブルを使う)↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituy …
例は家計簿の作成ですが、会員管理に置き換えれば出来るでしょう。
>どうしたらいいですか?
答えはExcelの勉強をもっとして下さいですか。
Excelのスキルアップサイトを紹介して置きます。
■Excel(エクセル)入門/基本/上級/実用講座の総目次↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel/Exl-_ …
■Excel2007(エクセル2007)基本講座の総目次↓
http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/i …
概要:「よねさんのWordとExcelの小部屋サイト」で図入りで、親切に解説して呉ますのでお気に入りに登録したいサイトです。
エクセルQ&A(Tips) も有り解説に無い分の検索で探せる1番のお勧めです。
■エクセルの学校・ライブラリ他↓
http://www.excel.studio-kazu.jp/excellib.html
概要:表作成全般・関数・VBA・便利機能・その他・よくある質問・困った等ジャンル別に探せます。(Mac用も一緒に見れます)
■Excel(エクセル)学習室↓
http://www.kenzo30.com/
概要:Excel (エクセル)の書式設定や関数の使い方など、学習のための材料を提供している「Excel(エクセル)学習室KENZO30」のサイトです。
『エクセル入門・初級編』 『エクセル中級・特別編』 『エクセル ワンポイント編I』 『エクセル ワンポイント編II』『エクセル質問掲示板』『作品紹介』『リンク集』のジャンル別に分かれて操作法・疑問の解決を初心者でも理解できるサイトで利用価値は有ります。
■ExcelQ&Aサロン↓
http://excelfactory.net/excelboard/
概要:「ExcelQ&Aサロンサイト」で多くの共有サイトからQ&Aが見れるのが特徴です。
■モーグ即効テクニック・モーグ学習室 ・Q&A・フリーソフト↓
http://www.moug.net/tech/
http://www.moug.net/learning/
http://www.moug.net/faq/
http://www.moug.net/cgi-bin/softwaredl.cgi?excel …
概要:「モーグ情報サイト」で特に即効テクニックは直ぐに使える実例が公開され、Excel一般・VBAに分類されています。
■エクセルの勉強部屋↓
http://kiyopon.sakura.ne.jp/index.shtml
概要:エクセルの操作に関する図解説明・ワークシート関数の説明・エクセルの便利な使い方の説明・エクセルの操作とマクロに関する自習問題と解説・マクロの作成方法を解説(例題含む)・パワーポイントによる操作説明とエクセルでの操作実習・エクセルでのみなさんの質問を寄せてください・のジャンルに分かれています。
関連:■Excelの質問(日付順)↓
    http://kiyopon.sakura.ne.jp/situmon/index01.htm
   内容:Excelの質問集で日付の新しい順に一覧リストで表示され      てます「エクセルの勉強部屋」のサイトです。
>マクロはできません
マクロのサイトも有ります。
■独学 Excel VBA 目次↓
http://www.geocities.jp/dgscs970/
概要:「ひろしちゃんのExcel VBA講座」のサイトです。
    • good
    • 0
この回答へのお礼

ピボットテーブルを使って私も自分ちの家計簿を作ったので、
ノーマルパターンはわかるのですが、
応用編がよくわかりません。
職場で日常的に使わないとなかなかコツがつかめません。

KENZO30は私もよく拝見しますが、他にもこんなにお役立ちサイトがあるんですね!
マクロは本を読んでも、単語で躓き
なんだかさっぱり、・・・なので、
ひろしちゃんの講座見てみます。
たくさんご紹介くださりありがとうございました。

お礼日時:2009/05/16 00:26

この課題が簡単(難しくない)と思って質問するのだろうが、質問者はエクセルの関数の経験不足だ。


例えばGoogleで「imogasi方式」で照会してください。ここに出てくるのは、(1)この質問コーナーの質問で(2)条件による抜き出し問題で(3)私も回答を入れたものが出てきます。そこには私以外の人が、違うやり方の解決法で、回答しています。少ない数ではないので、どういう解決法があるかほぼ出尽くしていると思います。
式の理解が難しかったり(1つの式で条件該当分を割り出している回答が有るが、こういう式の理解は質問者には当面は、まず出来ないだろう)、余分な作業列を使ったりします(imogasi方式もこれ)。
OKWAVEで、質問の課題と同じ(類似)質問だ検索して出せればそうすべきですが、検索語を決めにくいので、一部しか出ないが「imogasi方式」での検索を提案します。
ーー
毎日のように条件による抜き出し問題質問は出ます。しかしエクセルの関数はこの課題に不向きなのです。原因は条件該当の2番目以後のものを簡単に捉えられないからです。
VBAなら色々やり方はあります。すっきりしたやり方でやるのは、VBA利用です。勉強してください。
ーーー
それと質問の書き方だが、条件をもう少し具体的に書かないと、解答
に大きく影響する。
例えば
(1)条件1列が○が入力されている行
(2)もっと別の仕組みの条件とか(モありえるから)
    • good
    • 0
この回答へのお礼

imogasi方式で検索したら、600件近く抽出されました。びっくり!
関数の中身は大体理解できましたが、
自分の職場の、自分も含めた職員のレベルからいって、
あまりややこしいことをすると、
後々メンテナンスできなくなるので、
今回はimogasi方式は見送ります。
質問の経緯については、No.4さんへのお礼をご参照ください。

VBA勉強します。ありがとうございました

お礼日時:2009/05/16 00:33

こんにちわ。


関数難しい。マクロもいやん。でも自動更新したい。しかもクリックひとつで!



そんなあなたにはピボットテーブルをお勧めします。
順序もNOどおりに昇順で並べられますし、!マークをクリックすれば自動で更新してくれます。
かなり便利な機能です。

この回答への補足

やはり関数では難しいんですか・・・

ピボットテーブルで
 行ラベルに氏名、
 レポートフィルタに条件1と条件2
として、やってみたらうまく名前は抽出されました!
ありがとうございます
ただ、何も入れていない列ラベルと値のフィールドが横に広く邪魔で
そこを何とか狭く、または表示されないようにできないでしょうか?

補足日時:2009/05/15 05:49
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qエクセルで複数の条件を抽出し自動的に別シートに反映する方法を教えてください。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 井上 派遣 企画 29  未調整

◇シート2◇ ※部署が人事で移動時期が未調整の人のみ抽出
 A      B     C     D    F
1 氏名 役職 部署 年齢 移動時期 
2 高橋 役員 人事 50  未調整


補足
・元データ(シート1)はこれからもデータを追加するので
 その度、シート2、シート3もそれぞれ自動で反映されるようにした いです。

・マクロ、VBAは知識がないので
 関数で作成したいです。

・できるだけエラー(#N/Aなど)表示されないようにしたいです。

説明が不十分で伝わりにくいかと思いますが
よろしくお願いします。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 ...続きを読む

Aベストアンサー

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるため)
.Range("A1:E1").AutoFilter 'A1:E1にオートフィルタ設定
.Range("A1:E1").AutoFilter Field:=3, Criteria1:="=人事", Operator:=xlOr, Criteria2:="=企画" '左から3つ目のフィルタを"人事"と"企画"のOR条件で抽出
.Range("A1:E1").AutoFilter Field:=5, Criteria1:="未調整" '左から5つ目のフィルタを"未調整"で抽出
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") 'A1から最終セル範囲の可視セルをこのシートのA1以降に貼り付け
.AutoFilterMode = False 'オートフィルタ終了
End With 'Sheet1に対する記述おわり
End Sub

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるた...続きを読む

QEXCEL 元データを更新したら別シートも更新

シート1に所属・役職・氏名のデータがあります(元データ)。
その他に所属別に分かれたシートが複数あります(データは元データの役職・氏名)。

シート1のデータを更新したら、所属別に分かれたシートの内容も自動的に更新されるというようなことはできるでしょうか?

シート1の更新は人数の増減もあるし、所属、役職が変わるケースも出ててくるし、データの位置も変わるので=’sheet1’A1のような式を入れれば良いというようなものではありません。

Aベストアンサー

NO5です。
>実際は、Sheet2のデータ(式を入力する場所)がD21から始まります。
 ⇒数式の変更は不要ですのでD21に数式を入力して下さい。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q【エクセル】表から条件に合ったデータを別シートに順番に抽出したい

エクセルの表である条件にあてはまる行を
別シートに順番に抽出されるような関数を教えてください。


シート1のB列にあるデータが"渋谷区"のとき
シート2のE74からE80くらいまでに
シート1のC列のデータを上から順に抽出されるようにしたいです。

【シート1】
A        B         C
1 東京都 渋谷区  PC
2東京都  港区  PC
3東京都 新宿区  マウス
4東京都 渋谷区  ペン
5東京都 渋谷区  モニタ



10

【シート2】

E
74 PC
75 ペン
76 モニタ



80 


【補足】
元の表(シート1)を編集することがあるので
自動的に反映されるよう、関数で作成できたらと思います。
シート2の構成上、抽出後のソートや、フィルタオプションは避けたいです。

わかりづらい文章で申し訳ございませんが
どなたかいいアドバイスがありましたら教えてください。
お礼は明日になってしまいますが、必ずご返答いたします。
よろしくお願いいたします。

 

エクセルの表である条件にあてはまる行を
別シートに順番に抽出されるような関数を教えてください。


シート1のB列にあるデータが"渋谷区"のとき
シート2のE74からE80くらいまでに
シート1のC列のデータを上から順に抽出されるようにしたいです。

【シート1】
A        B         C
1 東京都 渋谷区  PC
2東京都  港区  PC
3東京都 新宿区  マウス
4東京都 渋谷区  ペン
5東京都 渋谷区  モニタ



10

【シート2】

E
...続きを読む

Aベストアンサー

>E74に関数を入力し、その後関数をE80までドラッグすればよいのでしょうか?
いいえ。
1.
=INDEX(シート1!C1:C11,SMALL(IF(シート1!B1:B10="渋谷区",ROW(A1:A10),11),ROW(A1:A10)))&""
の数式を掲示板上でコピーします(シート名は合わせてください)
2. E74:E80セル範囲を選択します
3. 数式バーで[Ctrl]+[V]貼り付け
4. [Ctrl]+[Shift] +[Enter] でセルへの入力を確定させます

>その際、絶対参照や相対参照は必要でしょうか?
セルのコピーはしませんので不要です。
参考まで

Qエクセルで条件に合うものを別シートに抽出(関数)

希望日    りんご   ばなな   みかん   担当   配達チェック
6月1日      2             1     山田
6月3日             4      2     佐藤      
6月1日      3                   山田      済
6月2日             1            佐藤 
6月2日                    2     山田

というデータがsheet1に入力されています。
<条件>
 ・担当 山田のもの
 ・6月2日以前(このデータでは1日と2日)
 ・配達チェックが済でないもの(空白です)

この条件を満たすものをsheet2に抽出したいのです。
希望日    りんご   ばなな   みかん   担当   配達チェック
6月1日      2              1     山田
6月2日                    2     山田
とsheet2に表示させるには関数でできますか?
できれば、セル参照でA1セルに6月2日、B1に山田と入力すると抽出されるととても便利なのですが・・・。
皆様のお知恵を拝借させてください!!

希望日    りんご   ばなな   みかん   担当   配達チェック
6月1日      2             1     山田
6月3日             4      2     佐藤      
6月1日      3                   山田      済
6月2日             1            佐藤 
6月2日                    2     山田

というデータがsheet1に入力されています。
<条件>
 ・担当 山田の...続きを読む

Aベストアンサー

こんばんは!
一例です。

↓の画像でSheet1に作業用の列を設けています。
作業列G2セルに
=IF(COUNTBLANK(Sheet2!$A$1:$B$1),"",IF(AND(A2<=Sheet2!$A$1,E2=Sheet2!$B$1,F2=""),ROW(),""))
という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。

そしてSheet2のA4セルに
=IF(COUNT(Sheet1!$G:$G)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$G:$G,ROW(A1))))
という数式を入れ列方向と行方向にオートフィルでコピー!

A列の表示形式は「日付」にしておきます。
ただ、このままではSheet1に空白セルがあれば「0」が表示されてしまいますので、
当方使用のExcel2003の場合ですが、
メニュー → ツール → オプション → 「表示」タブ → 「ゼロ値」のチェックを外すと
画像のような感じになります。

以上、参考になれば良いのですが・・・m(__)m

QExcelで文字を入力と自動的にフィルタをかけたい

お世話になります。

A1~A100に文字が入力されています。
ある場所で、フィルタをかけたい文字を入力すると自動的にフィルタが
掛かるようにしたいのです。
※フィルタの対象は複数
※フィルタをかけたい文字が都度かわるので、毎回フィルタの機能を使うのは面倒なため、フィルタの機能は×

フリーソフト、マクロ(できれば実装まで)でも結構ですので、何卒よろしくお願い申し上げます。

Aベストアンサー

とりあえず、質問中の矛盾を指摘させていただきますね。

> ※フィルタをかけたい文字が都度かわるので、
> 毎回フィルタの機能を使うのは面倒なため、フィルタの機能は×

のであれば、

> 自動的にフィルタが掛かるようにしたい

不可能です。
フィルタの機能を使わないでフィルタをかけるのは、
いかにエクセルと言えど、マクロを使うと言えど、無理なものは無理です。
だから、回答がつかないのです。



さてさて現状の確認ですが、
横に項目がいくつか並んでいて、縦にデータ行が並んでいる、
いわゆる一般的なエクセルの表で、
このある項目に対してフィルタを掛けたい、と言うイメージで良いですね。
これを前提に話を進めます。

例えば、データ表がA3:D50の範囲に用意されていて、
キー項目列から抽出したい文字列をB1セルに入力しました。
この文字列を基にA列にフィルタを掛けたいものとします。
そうすると、以下のコード

Sub FilSet()
  If Range("A3").AutoFilter = False Then
    Range("A3").AutoFilter
  End If

  Range("$A$3:$D$50").AutoFilter Field:=1, Criteria1:=Range("B1").Value
End Sub

これを実行すると、B1の文字列(値)に従ってA列にフィルタを掛けます。


フィルタを解除する機能も必要でしょう。
それは以下のコード。

Sub FilReset()
  If Range("A3").AutoFilter = True Then
    Range("A3").AutoFilter
  End If
End Sub

これでフィルタを解除できます。

これらを標準モジュールやブックモジュール、シートモジュールに貼り付けて、
図のようにボタンを作っておくと便利と思います。


このB1セルに入力規則→リストを設定しておけば
ドロップダウンから選択→フィルタの一連の動作をマウスで行う事も可能でしょう。


どちらにしても、フィルタの処理をしたいなら
マクロを使うにしてもフィルタ機能を使わないと実行できません。

なお、マクロの設定方法は別途お調べください。
Webで検索すると懇切丁寧に解説しているサイトがゴロゴロしていますので。

とりあえず、質問中の矛盾を指摘させていただきますね。

> ※フィルタをかけたい文字が都度かわるので、
> 毎回フィルタの機能を使うのは面倒なため、フィルタの機能は×

のであれば、

> 自動的にフィルタが掛かるようにしたい

不可能です。
フィルタの機能を使わないでフィルタをかけるのは、
いかにエクセルと言えど、マクロを使うと言えど、無理なものは無理です。
だから、回答がつかないのです。



さてさて現状の確認ですが、
横に項目がいくつか並んでいて、縦にデータ行が並んでいる、
いわゆる一般的...続きを読む

QExcel 抽出したデータで別シート自動作成

Excelで、条件で抽出したデータを、自動で別シート作成およびデータ出力したい

外部サイトで恐縮ですが、
こちら → http://oshiete1.nifty.com/qa6295795.html   の内容が似ているとは思いますが、

シートの自動作成まで含めるとどうなるのでしょうか

添付画像のように、
sheet1に(画像ではすでに入力済みですが)、たとえば 地区 列に「え」と入力すると
【え】というシートが自動作成の上、地区え の行が出力される
次に「え」と入力すると同シートの次の行に出力される

【い】というシートも同様です。

このようにするにはどうすればいいのでしょうか?
事情により急いでいます。何卒よろしくお願いいたします。

Aベストアンサー

続けてお邪魔します。

No.4の
(1)新しく作成されたシートの番号欄は再び1から表示するようにしたい。
(2)入力シート(今はsheet1)で消した値や行は作成されたシートでも消えるようにしたい。
 ex.バックスペースで地区に入力した値を消す
   →作成されたシートの対応する値も消える
(3)新しく作成されたシートの行列の幅は入力シートと同じにしたい。

の件について
(1)
今までのコードはSheet名を「地区」名にするようにしていましたので
「番号欄は再び1から・・・」というのがよくわからないのですが、
とりあえずは入力順にSheetが追加されるはずですので手作業でSheet見出しをドラッグして
順番を入れ替えてみてください。
(もちろんコードでSheetを並び替えることも可能ですが、そんなにたびたび並び替える必要はなさそうなので)

(2)と(3)
コードをやり替えてみました。
まず前回の「標準モジュール」のコードをすべて削除して↓のコードにしてください。

Sub Sheet分け() 'この行から
Dim k As Long, str As String, wS As Worksheet, myFlg As Boolean
Set wS = Worksheets(1)
str = wS.Cells(Selection.Row - 1, "E")
Application.ScreenUpdating = False
For k = 2 To Worksheets.Count
If Worksheets(k).Name = str Then
myFlg = True
Exit For
End If
Next k
If myFlg = False Then
Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = str
End If
Worksheets(str).Cells.ClearContents
With wS.Range("A1")
.AutoFilter field:=5, Criteria1:=str
.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Worksheets(str).Activate
ActiveSheet.Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths
Selection.PasteSpecial Paste:=xlPasteAll
End With
wS.AutoFilterMode = False
Application.CutCopyMode = False
Application.ScreenUpdating = True
wS.Activate
End Sub 'この行まで

次にSheet1のシートモジュールもすべて削除し、↓のコードにしてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim i As Long, j As Long, lastCol As Long, str As String
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
i = Target.Row
j = Target.Column
If j <= lastCol And Target.Count = 1 Then
If Target <> "" Then
Call Sheet分け
Else
str = Cells(Target.Row, "E")
Worksheets(str).Cells.ClearContents
Range("A1").AutoFilter field:=5, Criteria1:=str
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _
Worksheets(str).Range("A1")
AutoFilterMode = False
End If
End If
End Sub 'この行まで

※ E列データを消去してしまうとフィルタがかけられませんので、エラーになってしまいます。
※ 今回もE列「地区」?でフィルタを掛けてE列をSheet名としています。

今度はどうでしょうか?m(_ _)m

続けてお邪魔します。

No.4の
(1)新しく作成されたシートの番号欄は再び1から表示するようにしたい。
(2)入力シート(今はsheet1)で消した値や行は作成されたシートでも消えるようにしたい。
 ex.バックスペースで地区に入力した値を消す
   →作成されたシートの対応する値も消える
(3)新しく作成されたシートの行列の幅は入力シートと同じにしたい。

の件について
(1)
今までのコードはSheet名を「地区」名にするようにしていましたので
「番号欄は再び1から・・・」というのがよくわからないので...続きを読む

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

QExcel 別シートへのデータ抽出方法

Excelのシート1から条件が一致するデータをシート2に表示させるにはどのような関数を使用すれば良いのでしょうか?
初心者なのでわからないことばかりですがよろしくお願い致します。

イメージは下記のような感じです
〈シート1〉
A B C D
1 ID11 氏名 部署 内容
2 ID 22 氏名 部署 内容



〈シート2〉シート1のA列の値とシート2のA1に入力した値が一致する項目の行を表示させたい。
A B C D
1 ID 11 ←(できれば手段で入力したい)
2 シート1A列がID11の行全てを表示

説明がうまくできず、申し訳ありませんがどうか教えて頂けると助かります。
お願い致します。

Aベストアンサー

こんにちは!

> シート1A列がID11の行全てを表示
というコトですので、Sheet1のA列には重複してデータが存在するというコトですよね?

一例です
↓の画像のようにSheet2のA1セルに検索したい「ID」を入力するとします。
A4セルに
=IFERROR(INDEX(Sheet1!A$1:A$100,SMALL(IF(Sheet1!$A$1:$A$100=$A$1,ROW($A$1:$A$100)),ROW(A1)))&"","")

配列数式ですので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → A4セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
A4セルのフィルハンドルで列・行方向にコピーすると
画像のような感じになります。m(_ _)m

QEXCEL関数でフィルタの様にデータ抽出したい

発注品一覧表から社別にデータを抽出した発注シートを関数で作りたいです。
オートフィルタは諸事情あって使用しません。

過去の質問のこちらが、かなり近い回答なのだと思いますが
不勉強で自分用に修正ができませんでした。
http://oshiete.goo.ne.jp/qa/3157199.html

一覧表はこのようになっています。
日付 社名 品目 値段
4/1  C社 鉛筆 50円 
4/1  A社 定規 150円
4/2  C社 ペン 100円
4/2  B社 鉛筆 100円

社別の別シートに日付・品目・値段を一覧から関数で抽出できるでしょうか?
どうぞよろしくお願いします。

Aベストアンサー

拝見いたしましたが参考にされたサイトですが
データが社名順に並んでいますよね。
今回の質問ですが、データが順に並んでいませんので全く違った発想が必要になります。
簡単な方法では、作業列を一列入れる方法がわかりやすいです。
データのシートに作業列も作れないのであれば 配列関数を使うことになりますが
データの量が多くてその式を縦横にコピーして使うですからパソコンの負担も重くなります。

式の意味を理解が難しいかと思いますが
INDEX関数で 範囲の指定の部分を条件で抽出した内容が入るように工夫した式がよく見受けられます
ので一応紹介しておきます
仮に シート名 データ
日付 社名 品目 値段
4/1  C社 鉛筆 50円 
4/1  A社 定規 150円
4/2  C社 ペン 100円
4/2  B社 鉛筆 100円

別のシート
   社名 品目
   C社

日付 社名 品目 値段

とB2セルに抽出したい社名が入っているとして
A4セルに
=INDEX(データ!A:A,SMALL(INDEX((データ!$B$1:$B$100<>$B$2)*1000+ROW(A$1:A$100),),ROW(A1)))&""
と入れて 右へコピー、下へコピーしてみてください。
INDEX((データ!$B$1:$B$100<>$B$2)*1000+ROW(A$1:A$100),)
の部分が理解しにくいと思います。
社名の範囲でC社でなかったら1000倍したとてつもない大きな数字を加える
C社でればそのまま、その行番号 といった架空の列を作成します。
その架空の列の小さい数値の順に 最初のINDEX関数で取り出します
といった感じです。(なかなか文書で説明するのも難しくてすみません)

別案ですが
フィルターオプションの設定(オートフィルターではありません)
をしたほうがシンプルでデータ量が増えた時も勝手に対応してくれます。

拝見いたしましたが参考にされたサイトですが
データが社名順に並んでいますよね。
今回の質問ですが、データが順に並んでいませんので全く違った発想が必要になります。
簡単な方法では、作業列を一列入れる方法がわかりやすいです。
データのシートに作業列も作れないのであれば 配列関数を使うことになりますが
データの量が多くてその式を縦横にコピーして使うですからパソコンの負担も重くなります。

式の意味を理解が難しいかと思いますが
INDEX関数で 範囲の指定の部分を条件で抽出した内容が入るように...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報