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

エクセル初心者です。

今、下の画像(上段)のような
データベースを作りました。

ここにある日付を古いもの順に
下段の画像のような形に
したいのですが、IF関数がうまく使えず
困ってしまいました。

どうすれば、日付順番に並ぶのでしょうか。

教えてください。

※添付画像が削除されました。

A 回答 (7件)

シート1のA列およびD列の2行目以下には1991年10月というように表示されているとします。


しかしこのように表示するためには1991/10/1と入力してセルには1991/10/1と表示されますがAおよびD列を選択してから右クリックして「セルの書式設定」から「表示形式」のタブで分類に「ユーザー定義」を選び種類の窓には yyyy"年"m"月" と入力します。これらの操作で例えば1991年10月のように表示することができます。
このようにすることでお望みのような操作ができるようになります。
シート1のC2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A2="","",RANK(A2,A:A,1))

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

=IF(D2="","",RANK(D2,D:D,1)+MAX(C:C))

なお、A列には2行目から下方に年月のデータがあり、D列についても同じですがA列の年月よりはより新しい年月が入力されているとします。

次にまとめの表ですがシート2に作成するとしてA1セルには年月、B1セルには売上と項目名が有るとします。
シート2のA2セルには次の式を入力してB2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF(COUNTIF(Sheet1!$C:$C,ROW(A1))>0,INDEX(Sheet1!$A:$B,MATCH(ROW(A1),Sheet1!$C:$C,0),COLUMN(A1)),IF(COUNTIF(Sheet1!$F:$F,ROW(A1))>0,INDEX(Sheet1!$D:$E,MATCH(ROW(A1),Sheet1!$F:$F,0),COLUMN(A1)),""))

なお、A列についてはA列を選択したのちにシート1のA列と同じようにセルの書式設定をします。
    • good
    • 0

 各販売日の欄の表示が日付ではなく、月になっているという事は、各月ごとの売上額を集計したいという事なのでしょうか?



 もし、そうだとすれば、売上が無かった月に関しても、下の表に表示して、売上額欄を0円と表示させた方が、月が連続しますから、月を見間違えるおそれが減るため、望ましいのではないかと思います。

 それを、関数で行う方法の一例は以下の通りです。
 今仮に、上の表がSheet1に存在しているものとします。
 まず、集計結果を表示させるシートのA2セルに、次の数式を入力して下さい。

=IF(COUNT(Sheet1!$A:$A)+COUNT(Sheet1!$D:$D)=0,"",MIN(Sheet1!$A:$A,Sheet1!$D:$D))

 次に、集計結果を表示させるシートのA3セルに、次の数式を入力して下さい。

=IF(MAX(A$1:A2)=MAX(Sheet1!$A:$A,Sheet1!$D:$D),"",DATE(YEAR(A2),MONTH(A2)+1,1))

 次に、集計結果を表示させるシートのB2セルに、次の数式を入力して下さい。

=IF($A2="","",SUMIF(Sheet1!$A:$A,$A2,Sheet1!$B:$B)+SUMIF(Sheet1!$D:$D,$A2,Sheet1!$E:$E))

 次に、集計結果を表示させるシートのB2セルをコピーして、同じシートのB3セルに貼り付けて下さい。
 次に、集計結果を表示させるシートのA3~B3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。

 以上です。
    • good
    • 0

こんなのを関数でやろうとするのは愚です。


複雑になるだけ。関数は並べ替えも得意ではない。
エクセルの考えでは、質問の下の表データをまずつくり、上の表のように分離するほうが、まだまともなニーズかと思う。
これも抜き出し問題で難しいが。
質問者のレベルでは、左表の下へ右の表をコピペと並べ替えでやるのが順当。
ーー
例データ
A,B列
1997/10/1 100
1997/11/1 200
1997/12/1 300
D,E列
1998/1/1 400
1998/2/1 500
1998/3/1 600
ーー
A2:A4とD2:E4の範囲名をhan1とする
A8に=SMALL(han1,ROW()-7)
下方向に式を複写
B8に=IF(ISERROR(MATCH(A8,$A$2:$A$4,0)),INDEX($D$2:$E$4,MATCH(A8,$D$2:$D$4,0),2),INDEX($A$2:$B$4,MATCH(A8,$A$2:$A$4,0),2))
下方向に式を複写
結果
1997/10/1100
1997/11/1200
1997/12/1300
1998/1/1400
1998/2/1500
1998/3/1600
ーーー
上記はデータによってはうまく行かない場合がある。同じ日付が2度出てくる場合など。
まあ複雑になるという例で示したものと考えてください。
ーー
実際はどんなデータを作ったのか知らないが、データベースとは、エクセル程度では、名前がおこがましい。
    • good
    • 0

複数範囲のピボットテーブルを使えばいいのでは?


http://office.microsoft.com/ja-jp/excel-help/HA0 …
    • good
    • 0

No1様の回答の様にデータを貼り付けて1つの表にしての並び替えが一般的です



あえて関数での拾い出しを行いたいと言うことであれば

{=SMALL(データ範囲*(見出="販売日"),COUNT(データ範囲)/2+ROW()-1)}

データ範囲=A2:E4、見出=A1:E1です

配列計算ですのでShift+Ctrl+Enterで確定してください

考え方の一つとして
    • good
    • 0

こんばんは!



↓の画像のようにSheet1のデータをSheet2に表示するようにしてみました。
Sheet1のA列のセルの表示形式は「標準」で単に 1997年10月 のように入力したとします。
その場合は 1997年10月1日 のシリアル値になります。

一応そういう入力方法だとしての一例です。

Sheet2のA2セルに
=IF(COUNT(Sheet1!$A:$A)>=ROW(A1),INDEX(Sheet1!A:A,MATCH(SMALL(Sheet1!$A:$A,ROW(A1)),Sheet1!$A:$A,0)),IF(COUNT(Sheet1!$A:$A,Sheet1!$D:$D)>=ROW(A1),INDEX(Sheet1!D:D,MATCH(SMALL(Sheet1!$D:$D,ROW(A1)-COUNT(Sheet1!$A:$A)),Sheet1!$D:$D,0)),""))
という数式を入れ、隣のB2セルまでとりあえずオートフィルでコピー!
Sheet2のA2セルの表示形式はユーザー定義から
yyyy年m月 としておきます。

最後いA2・B2セルを範囲指定し、B2セルのフィルハンドルで下へコピーすると
画像のような感じになります。m(__)m
「エクセル関数」の回答画像2
    • good
    • 0

これは関数の問題ではありません。



コピーペーストでデータをひとつにつなげて、並べ替えをすればできます。

まず2つのデータを上下に一箇所に並ぶように別な場所にコピーペーストします。

その後、その貼り付けたデータを、データの並べ替えで年月をキーにしてソートします。

これでご希望のデータが出来上がりです。

コピーペースト、並べ替えともExcelの基本的な機能ですから是非覚えましょう。
    • good
    • 0

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