アプリ版:「スタンプのみでお礼する」機能のリリースについて

 お忙しいところありがとうございます。エクセルで以下のような表があるとします。

名前    生年月日   年       500歳以上
浦島太郎  1700/8/17   datedif関数   =if(c1>500,c1,"")
かぐや姫  1400/9/6    datedif関数   =if(c2>500,c2,"")
一寸法師  1500/1/1    datedif関数   =if(c3>500,c3,"")
  :       :       :        :
と、いうような感じで、名前がずらっと200以上(数は毎回可変)は並んでいます。
そして、年齢をdatedif関数で割り出し、さらにそれがある基準を超えたらその年を表示、超えなければ空白を表示する、という風にしています。(この例では「500歳以上」の列)
問題はここからで、「500歳以上」の列に表示されているデータだけの、「名前」の列を別のシートに表示したいのです。その際、空白セルがあるデータはとばして、年齢だけが入っているデータの列を上に詰めて表示させたいのです(この例では、かぐや姫と一寸法師が該当)
 わかりにくい質問で申し訳ありません。関数でもVBAでもかまいませんのでどうかよろしくお願い致します。

A 回答 (3件)

こんにちは。


単純な方法ですが、一度だけ作業をすればいいのであれば・・
1.データ→フィルタ→オートフィルタ で オートフィルタの▼を出す

2.If関数の部分の▼をクリックし (空白以外のセル) を選択して
 データが入っているセルを選択

3.表示されているデータの名前部分を別シートにコピーペースト

ではではダメでしょうか?
上記作業をマクロ記録して、列全体をコピーするように
設定すれば、何度も使用出来ます。
    • good
    • 0
この回答へのお礼

御礼が遅くなり申し訳ありません。
ご指摘の方法で出来ました。オートフィルタを分からない人でもマクロ記録すれば応用が出来そうですね。
ありがとうございました

お礼日時:2007/01/24 13:50

作業列を使い、空白でない列に連番を振ります。


そして別シートの行番号と対応付けて値をとってきます。
するとデータのある行が詰まります。
imogasi方式です。WEBでimogasi方式と入れて照会してください。沢山私の回答が出ます。
作業列を使う欠点もあるが、どういう理屈で処理しているかわかりやすい方法と思います。
作業列を使わないやり方は、慣れない方には、式が相当理解が難しくなります。
    • good
    • 0
この回答へのお礼

御礼が遅くなり申し訳ありません。
検索させてもらい、少し学ばせていただきます。
ありがとうございました、まずはお礼を言わせて下さい。

お礼日時:2007/01/24 13:55

Sheet1のA列が名前、C列が年齢だとして、別シートのA1に以下の式を貼り付けて下にコピーすれば表示できます。



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

表示の開始行が2行目のときは式中の「-0、+0」の箇所を「-1、+1」に変更して下さい。(3行目以降は1ずつアップ)
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
式の内容を理解するには及びませんが、ご指摘の方法で出来たみたいです。
じっくり時間をかけて式の部分部分の意味を理解してみようと思います。
ありがとうございました

お礼日時:2007/01/24 14:29

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