[[20160624220653]] 『ランダムな日付を年、月、日の順に並べたい。』(安藤) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ランダムな日付を年、月、日の順に並べたい。』(安藤)

    A列      B列
1行 2002/4/23    りんご
2行 2001/5/21    みかん 
3行 2002/4/21    すいか
4行 2012/11/11    りんご

と、縦に日付が入力されています。

これを別シートに、
    A列   B列   C列    D列    E列
1行      2001年  2002年   2002年  2012年
2行       5月    4月    4月   11月
3行       21日   21日    23日   11日
4行  みかん みかん
5行  りんご            ○    ○
6行  すいか       △ 

としたいのです。
よろしくお願いします。

< 使用 Excel:Excel2007、使用 OS:Windows8 >


すいません、書き忘れました。
関数でやりたいのですが、無理でしょうか。
元々の日付は、年、月、日に分けて入力してもよいとは思っています。
よろしくお願いいたします。

(安藤) 2016/06/24(金) 22:53


 交通整理だけです。

 別シートの4行目からがよくわかりません。

 1.A列の みかん、りんご、すいか 等も関数で自動セット?
   それとも、ここは、あらかじめ入力されている?

 2.B列以降について、みかんの行には みかん とあります。
   りんごの行は ○ になっています。 すいかの行は △ になっています。
   この表示ルール(みかん だったり ○ だったり △ だったり)はどういうものですか?

(β) 2016/06/24(金) 23:42


 とりあえず 別シートのA列には、あらかじめ、みかん 等が記入されているとして。
 該当の場所には ○ を表示します。

 別シートの

 B1 : =IFERROR(SMALL(Sheet1!$A$1:$A$100,COLUMN(A1)),"")

 これを右にずずずっとフィルコピーして、そのまま下に3行目までフィルコピー。

 1行目、表示書式 ユーザー定義で yyyy年、2行目、表示書式 ユーザー定義で m月、3行目 表示書式 ユーザー定義で d日 と設定。

 B4 : =IF(ISERROR(MATCH(B$3&$A4,Sheet1!$A$1:$A$100&Sheet1!$B$1:$B$100,0)),"","○")

 これを Ctrl/Shift/Enter で配列数式として入力し、右に ずずずっと フィルコピーして、そのまま下にフィルコピー。

 とか。

(β) 2016/06/25(土) 00:04

早速ありがとうございます。

「みかん」などの名前と「○」が混在してるのは、どちらの仕様にするか決まっていないため、両方質問しようと思ったからです、すいません。

B1 : =IFERROR(SMALL(Sheet1!$A$1:$A$100,COLUMN(A1)),"")
で、小さい順になったのですが、重複を避けたいのです。
同じ日付が出ないようにするにはどうすればよいでしょうか。

また、B4 : =IF(ISERROR(MATCH(B$3&$A4,Sheet1!$A$1:$A$100&Sheet1!$B$1:$B$100,0)),"","○")
ですが、
A列は自動表示ではなく、sheet1から読み取っての表示になります。
上から順に、登場する日付が最も古いものとなりますので、
例の場合は「みかん」になります。

すいません、よろしくお願いいたします


 まず、レスは、編集で直接追加ではなく、下の コメント欄に書きこんでアップしてください。

 で、昇順【同時】に重複の削除は、関数素人のβの手に余りますので、専門家さんの回答をお待ちください。
 (一度作業列で重複を削除してから、そこを参照すればいいとは思いますが)

 A列に 重複を削除して、Sheet1から自動で引っ張ってくる方法、いろいろあると思いますが
 βは、↓しかしらないので。

 A4 : =Sheet1!B2

 A5 : =IFERROR(VLOOKUP("*",IF(COUNTIF(A$4:A4,Sheet1!B$3:B$100)=0,Sheet1!B$3:B$100),1,FALSE),"")
      これを Ctrl/SHift/Enter で入力し、下にフィルコピー。

(β) 2016/06/25(土) 08:07


 A5 : =IFERROR(VLOOKUP("*",IF(COUNTIF(A$4:A4,Sheet1!B$1:B$100)=0,Sheet1!B$1:B$100),1,FALSE),"")

 でしたね。

(β) 2016/06/25(土) 10:15


 作業列使いまくりですが

 元シート(Sheet1) の 

 C1 : =IF(COUNTIF(A$1:A1,A1)=1,A1,"") これを下にフィルコピー
 D1 : =IFERROR(INDEX($C$1:$C$100,SMALL(IF($C$1:$C$100<>"",ROW($C$1:$C$100)),ROW(A1))),"") これを Ctrl/Shift/Enter で入力し下にフィルコピー

 別シートの B1 : =IFERROR(SMALL(Sheet1!$D$1:$D$100,COLUMN(A1)),"") これを Ctrl/Shift/Enter で入力し右にフィルコピー

 そのほかは アップ済みの通りに。

 これで、一応、できますかね?

(β) 2016/06/25(土) 11:08


 こんにちわ。

 重複しない古い日付順ですか。
 一発で求めるとなると、2010以降ならAGGREGATEが使えるので式も簡単なんですが、
 2007だともっと良い式は有るかも知れませんが下のように結構複雑な式になります。

 別シートのB1セル =IFERROR(SMALL(IFERROR(1/(MATCH(Sheet1!$A$1:$A$100,Sheet1!$A$1:$A$100,0)=ROW($A$1:$A$100))*Sheet1!$A$1:$A$100,""),COLUMN(A1)),"")
 [Ctrl]+[Shift]+[Enter]同時押し
 下右にオートフィル
 βさんと同じで表示書式で年月日を表示させて下さい。

 βさんの作業列案の方が分かりやすいので、特別な理由が無い限りそちらをお勧めします。
 因みにβさんの作業列のD列は必要ないですね。
 別シートのB1セル =IFERROR(SMALL(Sheet1!$C$1:$C$100,COLUMN(A1)),"")
 で行けますよ。

 >A列は自動表示ではなく、sheet1から読み取っての表示になります。 
 >上から順に、登場する日付が最も古いものとなりますので、 
 >例の場合は「みかん」になります。 

 これ一番古い日付が2件以上あって、B列も違う時は、どうなるんですか?

(sy) 2016/06/25(土) 11:53


何とかなったみたいです。
ありがとうございました!
(安藤) 2016/06/26(日) 07:15

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.