人気マンガがだれでも無料♪電子コミック読み放題!!

【 EXCELで悩んでいます 】
複数のシートから特定の言葉の記入がある行だけ、
新規ワークシートへ自動で書き出したいのですが難儀しています。

当方エクセル初心者でして、
ピボットテーブルもマクロも組んだことがありません。
工程数がかかってもいいので、できるだけ優しい方法を教えて下さい。

仕事で使うデータで、これがあると非常に助かります。

【 準備しているデータ 】
・参照したいデータシートは8枚
・それぞれ、同じフォーマットで内容が異なる60行弱の文字データ
(画像参照ください。このようなデータシートが8枚あります)

【 やりたいこと 】
8枚にも渡るシートの内容のなかから、
特定の文字が入っているもの(画像でいうと、G列「進捗」の「作業中」になっている行)だけを自動的に抽出して
一枚の新規シートにまとめて一覧化したい

【 環境 】
EXCEL 2003
Windows

面倒かとは思いますが、
お優しいエクセルマスター様がいらっしゃると信じております。
どうかよろしくお願い申し上げます。

「EXCEL:複数シートから特定行を一覧化」の質問画像

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

A 回答 (6件)

>なお、MackyNo1様がお考えの記録マクロの利用する方法もよろしければお知らせいただきたいのですがよろしいでしょうか?



以下のようなキー操作でマクロを記録してください。

まず、準備として、1行目に項目名を記載した集計シートを作成しておきます。

「ツール」「マクロ」「新しいマクロの記録」から、以下の操作をします。

集計シートのA2セルからデータ挿入範囲を大きめに選択し、Deleteキーで以前のデータを削除します(最初は何も入力されていませんが)。
次に1枚目のシートの項目行を選択し、データの入力されているA2セルからデータ範囲を大きめに選択し(予定最大データ数分まで選択します)、「データ」「フィルタ」「オートフィルタ」で必要なデータを表抽出し、Ctrl+Cでコピーして、集計シートのA2セルでCtrl+Vで貼り付けます。
2枚目のシートからは以下の操作を行います。
同様に、2枚目のシートのA2セルから、データ範囲を大きめに選択してからフィルタで抽出したデータをコピーし、集計シートのA1セルを選択して、Ctrl+↓のショートカット操作を行い、マクロの記録ツールバーの「記録終了」右にある「相対参照」のアイコンをクリックし、↓キーを押してから、相対参照ボタンをもう一度押して捜査隊参照を解除してCtrl+Vで貼り付けます。
この操作を8枚目のシートまで行い、最後にすべてのシートのフィルタモードを、「データ」「フィルタ」「オートフィルタ」で解除すれば完成です。

最終セルの選択にCtrl+↓のショートカット操作を利用すること、相対参照の記録ボタンをA列の一番下のデータの1つ下のセルを選択すること、各シートのデータ範囲を最初に選択しておいてからフィルタ操作するところが記録マクロ操作のポイントです。
    • good
    • 5
この回答へのお礼

私にもできました!!
PhotoShopでいうところの「アクションの記録」のような機能なんですね。
本当に助かりました。
これで仕事がはかどりそうです。


お答えいただいた方全員をベストアンサーとさせていただきたいところですが
二度もご丁寧にお教えいただいたこと、
ならびに初心者の私でも実現できたことを踏まえ、
こちらをベストアンサーとさせていただきます。

本当にありがとうございました。

お礼日時:2011/09/30 11:06

>ピボットテーブルもマクロも組んだことがありません。



今回のように、シートが分離されているようなケースで簡便な操作を行うにはマクロを利用する必要があります。
エクセルには「マクロの記録」という機能が用意されていますので、これを利用してご希望の操作を行うことも可能ですが、エクセルの基本的操作を熟知している必要があります。
また、マクロを利用する場合はご自分でコードの修正ができる程度の最低限の知識は必要になります(例えばクロで実行したものは通常の入力と違い「元に戻す」という操作ができないので、重大なミスにつながる可能性があります)。

また、ピボットテーブルの機能はエクセルの基本機能の一つですが、この程度はご自分でできるレベルになるようにされたほうが、今後のためにも良いと思います。

>工程数がかかってもいいので、できるだけ優しい方法を教えて下さい。

個人的には記録マクロを利用した方法が最も簡便と思われますが(記録マクロに挑戦する気持ちがあるのなら具体的な操作方法を提示します)、初心者でもわかりやすいという方法なら、リンク貼り付けとオートフィルタの機能を併用することをお勧めします。

作業用のシートを追加し、1行目に項目名を入力し、1枚目のシートのデータ範囲+α(60行目まで)をコピーし、作業用シートのA2セルで右クリック「形式を選択して貼り付け」で「リンク貼り付け」します。
同様に2枚目のシートのデータ範囲+αを選択して、作業用シートのA61セルにリンク貼り付けします。
すべてのシートのデータ範囲を1枚のシートにリンク貼り付けしたら、準備完了です。

必要なデータを抽出したい場合は「データ」「フィルタ」で抽出対象を絞り込みます。
この絞り込んだデータシートを新規シートにコピー貼り付けすれば完成です。

#Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。
    • good
    • 0
この回答へのお礼

恥ずかしながら「リンク貼り付け」というコピペ方法を知りませんでした!
これなら、元データを修正してもちゃんと更新されますし、
なにより簡単でしたので、私でもできました。

本当にありがとうございました。

また、バージョンについても、ご指摘いただきましてありがとうございました。
しかもEXCEL2003と書いてしまっていましたが
実際は2000でして(大汗)。

Excel 2000 9.0.6926 SP-3
でした。

大変失礼致しました。


なお、MackyNo1様がお考えの
記録マクロの利用する方法も
よろしければお知らせいただきたいのですがよろしいでしょうか?

何卒よろしくお願い申し上げます。

お礼日時:2011/09/29 10:38

「マクロも組んだことが」ない私や関数が苦手な人向けの方法を紹介します。


少々工数がかかるけど「優しい方法」だと思います。

少々見づらい添付図を判読しながら下記の手順をお読みください。
1.8枚(簡単のために、此処では Sheet1~Sheet3 の3枚)のシート(添付図では内容を簡略化)のデータ部分をそっくり別シート Sheet9 にコピーして、最上行に[オートフィルタ]を設定。その結果を Fig-1 に示す。
2.[進捗]の列において、[オートフィルタ]で“作業中”“と等しくない”の条件でデータを抽出した後、抽出されたレコードの全ての行全体を選択。その結果を Fig-2 に示す。
3.その選択範囲内でマウスの右クリックから[行の削除]を選択する。
4.[オートフィルタ]を解除する。その結果を Fig-3 に示す。

なお、添付図の中でどれかの拡大図を欲しければその旨をお知らせください。
「EXCEL:複数シートから特定行を一覧化」の回答画像4
    • good
    • 1
この回答へのお礼

ご丁寧に画像まで作成いただきまして、
本当に本当にありがとうございます!
ただ、この方法ですと、sheetの元データの内容が修正された際には
反映されないような気がしました。
お手間をいただいたのに、恐縮です。
ありがとうございました。

お礼日時:2011/09/29 10:30

こんにちは!


一番簡単で操作しやすいのは、No.1さんが仰っているように各Sheetでオートフィルタをかけ、
表示されているものを新規Sheetにコピー&ペーストしていく方法だと思います。

関数でやろうと思えば可能だとは思いますが、下準備とかなり長い数式が必要かと思います。

そこでお望みの方法ではないと思いますがVBAの一例を載せておきます。
騙されたと思って参考程度で試してみてください。

※ 新規SheetはSheet見出しにある最後(9番目)のSheetとして、Sheet1~Sheet8で
G列が「作業中」だけのものをSheet9に表示するようにしてみました。

尚、すべてのSheetのフォーマットは同一としてタイトル行が2行まで、データは3行目からとします。
Sheet9のH列セルの表示形式は「日付」にしておきます。

Alt+F11キー → VBE画面が出ますので、画面左下にある「This Workbook」をダブルクリック! →
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です。)

Sub 一覧表示() 'この行から
Dim i, j, k As Long
i = Worksheets(9).Cells(Rows.Count, 1).End(xlUp).Row
If i > 2 Then
Range(Worksheets(9).Cells(3, 1), Worksheets(9).Cells(i, 8)).ClearContents
End If
Application.ScreenUpdating = False
For k = 1 To 8 'Sheet1~Sheet8まで
For i = 3 To Worksheets(k).Cells(Rows.Count, 1).End(xlUp).Row '3行目~最終行まで
For j = 1 To 8 'A列~H列まで
If Worksheets(k).Cells(i, 7) = "作業中" Then
Worksheets(9).Cells(Rows.Count, j).End(xlUp).Offset(1) = _
Worksheets(k).Cells(i, j)
End If
Next j
Next i
Next k
Application.ScreenUpdating = True
End Sub 'この行まで

※ Sheet1~Sheet8のデータ変更があった場合、最終作業としてマクロを実行します。

以上、参考になれば良いのですが・・・m(__)m
    • good
    • 1
この回答へのお礼

ご丁寧に、マクロ内容の詳細まで記入いただきまして
誠にありがとうございました。

がんばってマクロに挑戦してみましたが、
撃沈しました。
エラーが出たり、そもそもまったく反応しなかったりで・・・。
素人のため、どこが悪いのかも分からずただ時間だけが過ぎていく感じでしたのであきらめました。
ご丁寧にご回答いただいたにもかかわらず
大変申し訳ありませんでした。

お礼日時:2011/09/29 10:26

ちょっと初めの作業は面倒ですが次のようにしてはどうでしょう。


8枚のシートではないですが仮に3枚のシートの場合について取り上げます。
それぞれのシート名がこだわりませんがここではシート1からシート3までのデータがあり別のシートにお求めの表を作成するための方法を示します。
シート1のJ列は作業列としてJ3セルには次の式を入力して下方にオートフィルドラッグします。

=IF(G3="","",G3&COUNTIF(G$3:G3,G3))

シート2のJ列は作業列としてJ3セルには次の式を入力して下方にオートフィルドラッグします。

=IF(G3="","",G3&COUNTIF(G$3:G3,G3)+COUNTIF(Sheet1!G:G,G3))

シート3のJ列には次の式を入力して下方にオートフィルドラッグします。

=IF(G3="","",G3&COUNTIF(G$3:G3,G3)+COUNTIF(Sheet1!G:G,G3)+COUNTIF(Sheet2!G:G,G3))

そこでまとめのシートですがA1セルには抽出ワードとかの文字列を入力しA2せるには仮に作業中を表示させたい場合には作業中と入力します。
3行目、4行目はシート1などと同じに項目名を並べます。
A5セルには次の式を入力してH5セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF(COUNTIF(Sheet1!$J:$J,$A$2&ROW(A1)),INDEX(Sheet1!$A:$H,MATCH($A$2&ROW(A1),Sheet1!$J:$J,0),COLUMN(A1)),"")&IF(COUNTIF(Sheet2!$J:$J,$A$2&ROW(A1)),INDEX(Sheet2!$A:$H,MATCH($A$2&ROW(A1),Sheet2!$J:$J,0),COLUMN(A1)),"")&IF(COUNTIF(Sheet3!$J:$J,$A$2&ROW(A1)),INDEX(Sheet3!$A:$H,MATCH($A$2&ROW(A1),Sheet3!$J:$J,0),COLUMN(A1)),"")

これでお望みの表を得ることができます。
シートの数が8ですから式は長くなってきますがここで示した例を参考にして挑戦してみてください。
    • good
    • 0

ツールバーの、データのフィルタのオートフィルターの(オプション)で、進捗と作業中をORで抽出し、それをコピーして新規シートに貼り付けて、8枚のデータシートをまとめてはいかがでしょう。

    • good
    • 2
この回答へのお礼

確かに…一番簡単ですね。
やっぱりこれがいいのでしょうかねえ・・・。

お礼日時:2011/09/28 21:39

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

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

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

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

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

Q複数シートの同じセル内容を1シートに順番に貼り付けたい

複数あるシートの同じ番地のセルをコピーして、1シートの一覧にしたいと思っています。簡単な方法があったら教えてください。

Aベストアンサー

次のようにしてはどうでしょう。
あるシートのA2セルから下方に例えばSheet1,Sheet2などとシート名を入力します。
B1セルには表示したいセル番地を例えばA1のように入力します。他にも表示させたい場合にはC1セルにセル番地を入力します。
そこでB2セルには次の式を入力し右方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。
=IF(OR($A2="",B$1=""),"",INDIRECT($A2&"!"&B$1))

QExcel:複数シートから条件に合う行を抽出(空白は次の行または別シートを参照)

なにか良い方法があれば教えてください。

複数シート(30シートほど)の特定範囲内で、特定セルに入力があれば1行まるまる抽出し、
一覧にしたいです。
なお、特定範囲には入力がないこともあるので、その場合は、次の行もしくは別シートを参照するようにしたい。
マクロは使わず、関数のみで処理できるとありがたいです。

(例)
シート1:
会社名 購入物 値段
ABC   ペン  200
あいう  けしごむ 300

シート2:
会社名  購入物 値段

シート3:
会社名  購入物 値段
(1行空)
かきく  けしごむ 300


↓最終形態

合算シート:
会社名 購入物 値段
ABC   ペン  200
あいう  けしごむ 300
かきく  けしごむ 300

宜しくお願い致します。

Aベストアンサー

> マクロは使わず、関数のみで処理できるとありがたいです。
1シートずつ IFERROR込みの数式を作って それらを30個「&」で
繋げば「関数のみで処理」できます。「関数のみで処理」することに
何のメリットがあるのかは分かりませんが……

計算に使うのなら同じ種類のデータを分けてはいけませんね。関数で
何とかしたいと思っているなら猶更です。入力データは一元管理が大
前提ですよ。

QExcel、複数シート同セルを別シートで列に表示するいい方法教えてください

Excelで、複数シートの同セルに数値又は、文字が入力されているものを別シートの列に表示(反映)させるいい方法を教えてください。

・sheet1は、一覧表(sheet名):纏めるsheet
・sheet2~は、各物件名(sheet名)
となっています。

例)
sheet2~sheet4のA1セルに数値、B2に文字が入力されていたとします。
それを、sheet1(一覧表)のB2、B3、B4とC2、C3、C4にそれぞれ表示させたい。以下参照。

   A    B   C
1 物件名  件数 有・無
2 北海道  10   有
3 青森   15   無
4 岩手   20   無

・sheet1(一覧表)には項目、物件名は入力済です。
 データのみ反映させたい。
・sheetは、左から順番に並んでます。
 (北海道、青森、岩手の順に)
・集計するわけではないので、最終行には合計とかはいりません。
-------------------------------------------------------------
また、できるかどうかわかりませんが、
sheet1(一覧表)を修正したらそれぞれの物件(sheet2~)も修正される。というような、画期的なこともできるのでしょうか?
こちらは、上記が出来た上でのことなので、出来なければ出来ないで構いません。

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

Excelで、複数シートの同セルに数値又は、文字が入力されているものを別シートの列に表示(反映)させるいい方法を教えてください。

・sheet1は、一覧表(sheet名):纏めるsheet
・sheet2~は、各物件名(sheet名)
となっています。

例)
sheet2~sheet4のA1セルに数値、B2に文字が入力されていたとします。
それを、sheet1(一覧表)のB2、B3、B4とC2、C3、C4にそれぞれ表示させたい。以下参照。

   A    B   C
1 物件名  件数 有・無
2 北海道  10   有
3 青森   15  ...続きを読む

Aベストアンサー

質問タイトルをちょっと変えて
Excel 複数シート同セルを別シートで列に表示する
として検索すれば結構見つかります。

参照URLを参考にして
参照シート名をA列に入力し、各シートのA1を得るなら
=INDIRECT(A1&"!A1",TRUE)
で可能でることがわかります。

参考URL:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1326105703

Qエクセル:複数シートのデータを一覧シートに自動的に表示させるには?

エクセル:複数シートのデータを一覧シートに自動的に表示させるには?

こんにちは。
以前同じ質問をさせて頂いたのですが、締め切った後で試したところ
どうにもうまくいかず(試さずに締め切ってしまった私が悪いのですが・・)、
もう一度質問させていただきます。

複数シート(6シート程度)に同一形式のリストがあり、あるシートに入力していくと
同一ファイル内の「一覧シート」に自動的にID番号順に表記される(※下記参照)
というようにしたいと考えております。

何かよい方法はありますでしょうか?
お知恵を拝借できれば幸いです。宜しくお願い致します。

(例)
Sheet1
ID 日付     名前  達成度・・・(項目=15項目ぐらい)
1 2010/10/17  山田  A
4 2010/10/30  鈴木  A



(それぞれのシートに100個ぐらいのリスト)

Sheet2
ID 日付     名前  達成度・・・
2 2010/10/17  佐藤  C
3 2010/10/20  中村  B




一覧シート
ID 日付     名前  達成度・・・
1 2010/10/17  山田  A
2 2010/10/18  佐藤  C
3 2010/10/20  中村  B
4 2010/10/30  鈴木  A


エクセル:複数シートのデータを一覧シートに自動的に表示させるには?

こんにちは。
以前同じ質問をさせて頂いたのですが、締め切った後で試したところ
どうにもうまくいかず(試さずに締め切ってしまった私が悪いのですが・・)、
もう一度質問させていただきます。

複数シート(6シート程度)に同一形式のリストがあり、あるシートに入力していくと
同一ファイル内の「一覧シート」に自動的にID番号順に表記される(※下記参照)
というようにしたいと考えております。

何かよい方法はありますでしょうか?
...続きを読む

Aベストアンサー

 横から失礼します。

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

 作業用シートと併用すれば、関数でも可能です。

 まず、例えば

作業用シート

という名称のシートを設けて下さい。
 次に、作業用シートのA列に、

A1セル  Sheet1
A2セル  Sheet2
A3セル  Sheet3
A4セル  Sheet4
 ・    ・
 ・    ・
 ・    ・

という具合に、元リストが存在しているシートの名称を、入力して下さい。
 この時、シート名を並べる順序は特に気にされなくても結構ですが、同じ名称を重複して入力する事はなさらないで下さい。(途中に空欄や、存在しないシート名が入力されていても、そのシート名を無視して、処理する事が可能です)
 次に、作業用シートのC1セルに、次の数式を入力して下さい。

=IF(ISERROR(INDIRECT(INDEX($A:$A,MOD(INT(ROW()-0.5),MATCH("/",$A:$A,-1))+1)&"!IV65536")),"",IF(ISNUMBER(INDIRECT(INDEX($A:$A,MOD(INT(ROW()-0.5),MATCH("/",$A:$A,-1))+1)&"!A"&INT((ROW()-0.5)/MATCH("/",$A:$A,-1))+1)),INDIRECT(INDEX($A:$A,MOD(INT(ROW()-0.5),MATCH("/",$A:$A,-1))+1)&"!R"&INT((ROW()-0.5)/MATCH("/",$A:$A,-1))+1&"C"&COLUMNS($A:A),0),""))

 次に、作業用シートのB1セルに、次の数式を入力して下さい。

=IF(ISNUMBER($C1),$C1+COUNTIF($C$1:$C1,$C1)/COUNTIF($C:$C,$C1),"")

 次に、作業用シートのB1~C1の範囲をコピーして、同じ列の2行目以下に、全ての元リストの行数の合計を、上回るのに充分な行数に、貼り付けて下さい。
 そして、作業用シートのC列全体をコピーして、C列よりも右にある列に貼り付けて下さい。(例えば、元リストがO列まである場合には、それよりも2列多い、Q列にまで貼り付けて下さい)

 次に、一覧シートの
A1セルに「ID」、
B1セルに「日付」、
C1セルに「名前」、
D1セルに「達成度」、
と入力して下さい。
 次に、一覧シートのA2セルに、次の数式を入力して下さい。

=IF(ROWS($1:1)>COUNT(作業用シート!$B:$B),"",VLOOKUP(SMALL(作業用シート!$B:$B,ROWS($1:1)),作業用シート!$B:$IV,COLUMNS(作業用シート!$B:C),0))

 次に、一覧シートのA2セルをコピーして、同じ行のA列よりも右にあるセルに貼り付けて下さい。(例えば、元リストがO列まである場合には、O列にまで貼り付けて下さい)

 次に、B2セルの書式設定の表示形式を、日付にして下さい。
 最後に、作業用シートの2行目をコピーして、3行目以下に貼り付けて下さい。

 これで準備は完了です。
 後は、作業用シートのA列に名称を入力した、各シートの元リストにデータを入力すると、そのデータが自動的に一覧シートに、ID順に表示されます。

 横から失礼します。

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

 作業用シートと併用すれば、関数でも可能です。

 まず、例えば

作業用シート

という名称のシートを設けて下さい。
 次に、作業用シートのA列に、

A1セル  Sheet1
A2セル  Sheet2
A3セル  Sheet3
A4セル  Sheet4
 ・    ・
 ・    ・
 ・    ・

という具合に、元リストが存在しているシートの名称を、入力して下さい。
 この時、シート名を並べる順序は特に気にされなくても結構ですが、同じ名...続きを読む

Qエクセルで多数のシートをまとめる方法

エクセルで10以上あるシートを一発でひとつにまとめる方法はあるでしょうか?

コピー&ペーストを繰り返すしかないのでしょうか…

仕事で明日やらなければならないので、
お分かりになる方、是非教えてください!

Aベストアンサー

まぁ既出回答にもあるように,10数回程度コピー貼り付けすることで,どうという作業ではないとは思います。

さておき。
ご利用のエクセルのバージョンが不明ですが,ご利用のOfficeのバージョンによっては

1.ワードを起動する
2.挿入のファイルからエクセルブックを指定する
3.添付図のようなダイアログが表示されたらラッキー成功です,ブック全体を指定して挿入する
4.Ctrl+Aで全体を選び,コピーして,エクセルの新しいシートに貼り付ける

と一発でできます。
添付図のようにならなかったときは,出来ません。

Q複数エクセルから特定シートの特定行だけを別シートに抽出するマクロ

エクセルブックが160ほどあります。
それらは全て同じ作りで、シートが2つづつ存在しています。
その2シート目(シート名”集約”シート)にある特定のセル(A2からT2)だけを
別のエクセルに集めて一覧にしたいです。

色々とやってみてネット検索もしてみたのですが、うまくいかないので
どなたか教えていただけませんでしょうか。

Aベストアンサー

こんな感じで、どうでしょう。
MyPathで指定したフォルダ内の .xlsx ファイルを対象に一覧化します。
一覧は、A列にファイル名、B列以降に各ブック中の”集約”シートのA2~T2が表示されます。
ただし、”集約”シートが無い場合は、ちょっとおかしな動作をします。おかしな動作については、お楽しみ!!(元のファイルが壊れることは無いので、安心して実行してみて下さい)

Sub sample()
Dim MyPath As String
Dim MyFile As String
Dim I As Long
MyPath = "C:\教えてGoo\"
MyFile = "*.xlsx"
MyFile = Dir(MyPath & MyFile)
Do While MyFile <> ""
I = I + 1
Cells(I, "A") = MyFile
Range(Cells(I, "B"), Cells(I, "U")).Formula = "='" & MyPath & "[" & MyFile & "]Sheet1'!A2"
MyFile = Dir
Loop
End Sub

こんな感じで、どうでしょう。
MyPathで指定したフォルダ内の .xlsx ファイルを対象に一覧化します。
一覧は、A列にファイル名、B列以降に各ブック中の”集約”シートのA2~T2が表示されます。
ただし、”集約”シートが無い場合は、ちょっとおかしな動作をします。おかしな動作については、お楽しみ!!(元のファイルが壊れることは無いので、安心して実行してみて下さい)

Sub sample()
Dim MyPath As String
Dim MyFile As String
Dim I As Long
MyPath = "C:\教えてGoo\"
MyFile = "*.xlsx"...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q【VBA】全ての複数シートから指定した列をコピー、新しいブックの1シートに抽出する

図1のような形式のシートが複数シートあります。

行いたいことは、図2のような表を作ることです。
全シートから、図1でいうB列の値だけをコピーし、
新しいブックの1つのシートに"値の貼り付け"をしていきたいです。
二回目以降の貼り付け時には、
コピーしたセルの1つ下のセルから張り付けたいです。

その際、図1の上部にあるシートタイトルやヘッダの部分も、
図2のように分けて表示させたいです。
その他にも、シート名や日付も表示させたいと考えています。
なお、対象ブックのあるパスをセルに入力して
「抽出」等のコマンドボタンをクリックしたら
そのパスを読み込んで抽出処理を行うようにしたいです。

VBAを勉強し始めたばかりでなかなか完成できず困り果てています。
コマンドボタンの配置方法や、クリック時に動作する方法は分かります。
が、セルに入力されたパスを読み込むことに手こずっています。
今まで調べてきたなかで、getPathやgetDirなどを使うんだろうなというイメージですが
動くものを作ることができません。

複数シートが対象なので、for文でシートの終わりまでループを回すことは
想像がつくのですが、実際にコードが書けません。
「こういう考え方で出来る」などでもかまいませんので
何かアドバイスをいただけませんでしょうか。

以上、よろしくお願い致します。

図1のような形式のシートが複数シートあります。

行いたいことは、図2のような表を作ることです。
全シートから、図1でいうB列の値だけをコピーし、
新しいブックの1つのシートに"値の貼り付け"をしていきたいです。
二回目以降の貼り付け時には、
コピーしたセルの1つ下のセルから張り付けたいです。

その際、図1の上部にあるシートタイトルやヘッダの部分も、
図2のように分けて表示させたいです。
その他にも、シート名や日付も表示させたいと考えています。
なお、対象ブックのあるパスを...続きを読む

Aベストアンサー

もう少し詳しく書いたほうがよさそうです。

・図が不鮮明、小さくて読めない
・読み込みたいデータのファイルは一つなのか(一つのファイルに複数シート)、
 複数ファイル(パスを指定した先のフォルダにある全ファイル)なのか、
 で、さらに複数シートなのか
・図2にある日付、元のデータとの関係性が不明。

というわけでざっくりの回答となります。
手作業でやることを考えて書いていってはどうでしょうか。

あくまで一例です。いろいろ組み合わせてみてください。

1) ファイルを開く
 Workbooks.Open FileName:=パス名からのファイル名

2)あるフォルダにある全ファイルを開く
 Dir関数と言うのがあります。
http://officetanaka.net/excel/vba/tips/tips95.htm

たとえば
'---------------------------------------
Sub BBB()
Dim myPath As String, FlNam As String

myPath = "C:\Users\tomoya\Desktop\"
FlNam = Dir(myPath & "*.xlsx")

Do Until FlNam = ""
Workbooks.Open Filename:=myPath & FlNam

FlNam = Dir()
Loop
End Sub
'---------------------------------------

3) あるファイルの全シートをループする
'---------------------------------------
Sub ccc()
Dim k As Integer
For k = 1 To Worksheets.Count
Worksheets(k).Select
Next k

End Sub
'---------------------------------------

4) 最終行を取得する
Dim LstRow As Long
LstRow=Cells(Rows.Count,1).End(xlUp).Row
貼付先は、最終行の次でしょうから、実際には上記に +1 をするとよいでしょう。


5)B8セルから一番下までの範囲を指定する
Dim Rng As Range
Set Rng =Range(Cells(8,2),Cells(8,2).End(xlDown))

もう少し詳しく書いたほうがよさそうです。

・図が不鮮明、小さくて読めない
・読み込みたいデータのファイルは一つなのか(一つのファイルに複数シート)、
 複数ファイル(パスを指定した先のフォルダにある全ファイル)なのか、
 で、さらに複数シートなのか
・図2にある日付、元のデータとの関係性が不明。

というわけでざっくりの回答となります。
手作業でやることを考えて書いていってはどうでしょうか。

あくまで一例です。いろいろ組み合わせてみてください。

1) ファイルを開く
 Workbooks.Open ...続きを読む

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複数のエクセルファイルからデータ抽出とまとめる方法について。

500のエクセルファイルがあり、それぞれのエクセルデータのA2からF2までのデータのをまとめた一覧表(1行目は、1枚目のエクセルファイルのA2-F2、2行目は2枚目のエクセルファイルの・・・、という感じでです)のを、新しいエクセルファイルもしくはテキストなどにでも手早く作れる方法をご存知の方、ご教授ください。コピペでやっていますが嫌になってしまいました。。マクロも触っては見たのですが、2枚目のエクセルファイルを2行目に、3枚目のエクセルファイルを3行目になどの方法の解決は思いつかず、挫折しました。よろしくお願いいたします

Aベストアンサー

対象のフォルダをcドライブの「sample」とした場合で回答します。
新規エクセルブックのシート名タブを右クリックし「コードの表示」
右側のエディタエリアに下記コードを貼り付け、実行して下さい。
G列にファイル名が入るようになっています。不要であれば
Cells(rIdx, 7).Value = fName
を削除して下さい。


Sub getA_F()
Const myPath As String = "c:\sample\"
Dim rIdx As Long
Dim fName As String
fName = Dir(myPath & "*.xls")
Do Until fName = ""
Workbooks.Open Filename:=myPath & fName
rIdx = rIdx + 1
Me.Range(Cells(rIdx, 1), Cells(rIdx, 6)).Value = ActiveSheet.Range("A2:F2").Value
Cells(rIdx, 7).Value = fName
Windows(fName).Close
fName = Dir
Loop
End Sub

対象のフォルダをcドライブの「sample」とした場合で回答します。
新規エクセルブックのシート名タブを右クリックし「コードの表示」
右側のエディタエリアに下記コードを貼り付け、実行して下さい。
G列にファイル名が入るようになっています。不要であれば
Cells(rIdx, 7).Value = fName
を削除して下さい。


Sub getA_F()
Const myPath As String = "c:\sample\"
Dim rIdx As Long
Dim fName As String
fName = Dir(myPath & "*.xls")
Do Until fName = ""
Workbooks.Open ...続きを読む


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

人気Q&Aランキング