• 締切済み

Excel  オートフィルタと関数

お世話になっております。 Excel2000です。 ブックの中にABというシートがあり、 A        B 名前      日付 りんご みかん みかん りんご きうい というふうにならんでいたとします。 オートフィルタをかけてたとえばみかんだけにして、 シートをコピーしてあたらしくCDというシートをつくりました。CDというシートに日付をどんどん入力していっているのですがその日付をABのシートにリンクさせたいのです。B2に=CD!B2というようにリンクさせる関数をいれ、オートフィルしましたが、どうしても中に1900/1/0というものがでてきてしまいます。どうしたらうまくリンクさせることができるでしょうか?

みんなの回答

  • ThunderV2
  • ベストアンサー率58% (119/205)
回答No.9

こんばんは、#2,8です。 質問者さんも、何故?って感じなんですね。 はっきりした事が分からないので、何とも言えませんが、 #6の方が回答してるようにLOKKUP関数やVLOOKUP関数を使えば、リンクさせる事は可能だと思いますよ。 ただ、オートフィルタをかけて抽出してるので、重複データになってしまいます。 これを回避するには、キーになる項目が必要ですね。 #6の方がA列に連番になるような仕組みを入れているように、何行目のみかんなのかをはっきりさせてやらないと一番最初に見つかったみかんのデータの日付をリンクさせてしまう結果になりかねないです。 本来、ABのシートとCDのシートの管理が違う意味とか分かれば、もう少しアドバイスもできそうですが・・・ もし、キー項目を追加するのであれば、CONCATENATE関数など使うといいかもしれません。 明日は、セミナー受講のため、回答できまないです。 あまりお役に立てないようですみません。

aimer
質問者

補足

ありがとうございますペコリ(o_ _)o)) >ABのシートとCDのシートの管理が違う意味とか分かれば、もう少しアドバイスもできそうですが・・・ ABのシートは本社で管理。CDのシートはそれぞれの支社店の管理です。 支社店でどんどんデータを追加したものを取り寄せて、 本社の管理ABのシートにリンクさせたいんです。 AB=Sheet1 CD=Sheet2

  • ThunderV2
  • ベストアンサー率58% (119/205)
回答No.8

こんにちは。 今回の質問の最終的な目的ってなんですか? オートフィルタをかけて、CDのシートにみかんをコピーするのは分かりますが、まず、なんでCDにコピーする必要がのか? 元のABのシートに日付をリンクさせるくらいなら、そのままフィルタをかけた状態でABのシートに日付入力はしてはまずいんですかね? 空白だから、「1900/1/0」の結果が出てきてしまうのは、回答者のみなさんも分かってると思います。 でも、なぜ?そのリンクをさせないといけないのかが見えてきません。 その辺をもう少し補足説明お願いします。

aimer
質問者

お礼

私がつくったものではないのですが、人の質問をうけてしまったので。。 その質問を聞いたとき、わたしも おっしゃるようなことを 当初の質問者にかえしたのですが。。 オートフィルタをかけた状態で、コピーし、「CD」のシートをつくり、そこにどんどん日付やいろいろな情報を入力したのだそうです。それを 元ファイル(AB)にも反映させたいのだそうです。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

みなさんの回答のレスを読み直してみました。 特に、#2 の方と、#3 の私のを読み返してみて、 >おしえていただいた関数をいれると、空白の欄が(ま、当然なのですが(笑))できてしまいます。。) 「(ま、当然なのですが(笑))」と書かれて、「当然」といわれても、こちらは、何がダメで、何をされたいのか、さっぱり伝わってきません。 関数で参照させようとしても、 元の範囲に、ダブりがあって、検索値もダブりがあるのでは、通常の方法ではうまくできるとは思えませんが。 単に、1900/1/0 も、空白もダメといわれたら、回答の糸口が見つかりませんね。 たぶん、肝心なところの説明が抜け落ちてしまって、結果から言っているのだと思います。 ただ、冷静に理屈から考えると、 オートフィルタで抜き出し、別のシートにコピー・ペーストしたデータに対して、日付を加えて、元のデータに反映させるには、常識的な考え方からすれば、マクロ処理になるのだろうと思います。

aimer
質問者

お礼

ありがとうございます。うまく質問できませんですみません

  • comxyz
  • ベストアンサー率50% (22/44)
回答No.6

シートAB A B C 名前      日付 1 りんご 2 みかん 3 みかん 4 りんご 5 きうい シートCD=sheet2 A B C 名前      日付 1 りんご 2005/10/21 4 りんご 2005/11/5 このとき A B C 名前      日付 1 りんご =IF(B2="りんご",LOOKUP(A2,Sheet2!$A$2:$A$3,Sheet2!$C$2:$C$3),"") 2 みかん =IF(B3="りんご",LOOKUP(A3,Sheet2!$A$2:$A$3,Sheet2!$C$2:$C$3),"") 3 みかん =IF(B4="りんご",LOOKUP(A4,Sheet2!$A$2:$A$3,Sheet2!$C$2:$C$3),"") 4 りんご =IF(B5="りんご",LOOKUP(A5,Sheet2!$A$2:$A$3,Sheet2!$C$2:$C$3),"") 5 きうい =IF(B6="りんご",LOOKUP(A6,Sheet2!$A$2:$A$3,Sheet2!$C$2:$C$3),"") とすると A B C 名前      日付 1 りんご 2005/10/21 2 みかん 3 みかん 4 りんご 2005/11/5 5 きうい 以上のようにはなります。(WinXP Excel2002) Aに連番をいれ、それをシートCDにコピーするやり方です。 IF文をつけないと2と3には2005/11/5が入ってしまいます。 お役に立ちますでしょうか。

aimer
質問者

お礼

ありがとうございます。 わかっていただけたようですごくありがたかったのですが、 関数をいれると、値が0になってしまい、うまく できませんでした・・

noname#16136
noname#16136
回答No.5

内容がちょっとわかりにくいのですが、 「どうしても中に1900/1/0というものがでてきてしまいます。」ということなのですが、その対応するCDシートは空白になっていませんか? それならば、ABシートのB列に[セルの書式設定]で日付を設定している場合、『1900/1/0』というものが出てくると思います。 違う原因だったら、また考えます。

aimer
質問者

お礼

当然といえば当然なのですが、おっしゃるとおり、空白です ありがとうございます。わたしの説明もとても悪くてすみません。 ABのシートのA列にならんだ果物の名前にオートフィルタをかけて、「みかん」だけにして、それをコピーして「CD」というシートのA列にコピー。隣のB列に日付をみかんの数だけテキトウにいれるとします。 ABのシートのB列に 「CD」のシートのB列からリンクさせて 日付をABに反映させたいんです。 そうすると、やっぱり1900/1/0というものがでてきます。 なぜだろうと、オートフィルタを解除してみて、1900/1/0となっているところの関数をみてみると、やっぱり「CD」列の空白の欄を参照してしまっているんですよね。 うまくリンクさせる方法ないでしょうか? ちなみに形式を選択して貼り付け→値 でもだめですが・

aimer
質問者

補足

ありがとうございます。 当然といえば当然ですが、空白です。おっしゃるとおりです。 わたしの説明もとても悪くてすみません。 ABのシートのA列にならんだ果物の名前にオートフィルタをかけて、「みかん」だけにして、それをコピーして「CD」というシートのA列にコピー。隣のB列に日付をみかんの数だけテキトウにいれるとします。 ABのシートのB列に 「CD」のシートのB列からリンクさせて 日付をABに反映させたいんです。 そうすると、やっぱり1900/1/0というものがでてきます。 なぜだろうと、オートフィルタを解除してみて、1900/1/0となっているところの関数をみてみると、やっぱり「CD」列の空白の欄を参照してしまっているんですよね。 うまくリンクさせる方法ないでしょうか? ちなみに形式を選択して貼り付け→値 でもだめですが・

  • comxyz
  • ベストアンサー率50% (22/44)
回答No.4

ABシートをみかんでフィルタをかけておいて CDのシートはみかんの抽出結果が上から並んでいるはずですから、日付の列のデータを選択してコピーしてABのB列に貼り付けるというのはどうでしょうか。 関数で処理したいということでしたらもう少し考えます。

aimer
質問者

補足

ありがとうございます。わたしの説明もとても悪くてすみません。 ABのシートのA列にならんだ果物の名前にオートフィルタをかけて、「みかん」だけにして、それをコピーして「CD」というシートのA列にコピー。隣のB列に日付をみかんの数だけテキトウにいれるとします。 ABのシートのB列に 「CD」のシートのB列からリンクさせて 日付をABに反映させたいんです。 そうすると、やっぱり1900/1/0というものがでてきます。 なぜだろうと、オートフィルタを解除してみて、1900/1/0となっているところの関数をみてみると、やっぱり「CD」列の空白の欄を参照してしまっているんですよね。 うまくリンクさせる方法ないでしょうか? ちなみに形式を選択して貼り付け→値 でもだめですが

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

私も、お話が見えてきません。 [ABシートの]B2に > =CD!B2 は、 =IF(CD!B2=0,"",CD!B2) とすればよいのですが、なぜ、そのようなことをするのか、文章の読んだ限りでは、良く分かりません。なお、空白も、0 と扱われるはすです。

aimer
質問者

補足

ありがとうございます。わたしの説明もとても悪くてすみません。 ABのシートのA列にならんだ果物の名前にオートフィルタをかけて、「みかん」だけにして、それをコピーして「CD」というシートのA列にコピー。隣のB列に日付をみかんの数だけテキトウにいれるとします。 ABのシートのB列に 「CD」のシートのB列からリンクさせて 日付をABに反映させたいんです。 そうすると、やっぱり1900/1/0というものがでてきます。 なぜだろうと、オートフィルタを解除してみて、1900/1/0となっているところの関数をみてみると、やっぱり「CD」列の空白の欄を参照してしまっているんですよね。 うまくリンクさせる方法ないでしょうか? おしえていただいた関数をいれると、空白の欄が(ま、当然なのですが(笑))できてしまいます。。)

  • ThunderV2
  • ベストアンサー率58% (119/205)
回答No.2

こんにちは。 質問の意図がうまく飲み込めなくて申し訳ないんですが、 1900/1/0となってしまうセルって、空白のセルだったり しませんか?(もしくは、数値の0) そうだったら、 B2に=IF(OR(CD!B2="",CD!B2=0),"",CD!B2) と入力すれば、空白セルや0のセルは、空白で表示させるようにできますが。 違っていたらすみません。 できれば、1900/1/0となってしまうセルのリンク元には、 どう言った内容が書かれているのか教えてください。

aimer
質問者

お礼

ありがとうございます。わたしの説明もとても悪くてすみません。 ABのシートのA列にならんだ果物の名前にオートフィルタをかけて、「みかん」だけにして、それをコピーして「CD」というシートのA列にコピー。隣のB列に日付をみかんの数だけテキトウにいれるとします。 ABのシートのB列に 「CD」のシートのB列からリンクさせて 日付をABに反映させたいんです。 そうすると、やっぱり1900/1/0というものがでてきます。 なぜだろうと、オートフィルタを解除してみて、1900/1/0となっているところの関数をみてみると、やっぱり「CD」列の空白の欄を参照してしまっているんですよね。 うまくリンクさせる方法ないでしょうか? ちなみに形式を選択して貼り付け→値 でもだめですが・・

回答No.1

b2/cd!b2 一つのセルに複数のシート名を指定することは 出来ないと思いますが・・・ =シート名!セル番地 で参照できますよ。 もしくはコピーして形式を選択して貼り付け リンク貼り付けでも出来ると思います。

aimer
質問者

補足

ありがとうございます。 一つのセルに複数のシート名を指定はしません。もちろん ひとつです。 ちなみに「AB」という名前のシート であり、「CD」という名前のシートです。

関連するQ&A