• ベストアンサー

Excelの処理:番号の摺合?を教えてください。

見づらくて申し訳ありません。 年表に例えると、1937年からの出来事の記録を想定します。 この飛び飛びの年の間に、1938年~1945年を入れて 1947年~1956年を入れて…。 結果、右側のように1937年~1956年~が欠落の無いような年表にしたいのです。 高度で簡単な方法も知りたいのですが、知識レベルの低い私が使用したいので 易しく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (774/1618)
回答No.2

 欠番のない年表が、Hから始まっていますが、便宜上で、本当はAから始めたいのかもしれません。しかし、関数を使う以上、前のデータは保存しておく必要があるので、Hから始める様にしました。  C・Dに出来事があり、E~Gは空白としました。左の年表が何行あるかわからないので、 100行にしました。もっとある場合、式を変更して下さい。  1977年の様に2行に跨る場合、L列とM列に表示するようにしました。必要なければL1・M1は入力しなくてもいいです。 I1 =IFERROR(VLOOKUP(H1&"年",B$1:D$100,1,FALSE),"") J1 =IFERROR(VLOOKUP(H1&"年",B$1:D$100,2,FALSE),"") K1 =IFERROR(VLOOKUP(H1&"年",B$1:D$100,3,FALSE),"") L1 =IF($B2="",IFERROR(INDEX(C1:C100,MATCH($H1&"年",$B$1:$B$100,FALSE)+1,0),""),"") M1 =IF($B2="",IFERROR(INDEX(D1:D100,MATCH($H1&"年",$B$1:$B$100,FALSE)+1,0),""),"") 下へコピー  このままでは、何もないところに、0が表示される事があるので、セルの書式設定・ユーザー定義で# にして下さい。  Aからの表にしたい場合、シート全体をコピーして、形式を選択して貼り付け、値にします。その後A~G列を削除します。

lovelykajiyan
質問者

お礼

>L1 =IF($B2="",IFERROR(INDEX(C1:C100,MATCH($H1&"年",$B$1:$B$100,FALSE)+1,0),""),"") この関数が、能力の限界を超えています。 既成の年表をExcelの一行を一年として表示して、 出来事の無い年は表示されていないので、 (1938)年とかのセルだけを挿入して左側は空白としたいのです。 INDEX~MATCH関数は、テンプレートで見ただけで、まだ使用できません。ここらが、このキモですね。 先ずは、解析して仕組みを理解できるよう心がけます。 ありがとうございます。 。

その他の回答 (1)

  • neo_kiyo
  • ベストアンサー率0% (0/2)
回答No.1

1行1年にして、年を入れた行でソートをかけるのはどうですか? 1年の出来事が2行になっている場合、1セルの中で2行にして、1年の出来事を1行にしておく。 B    C     D 1981年 CD企画発… スペースシャトル… 1957年 レコードが…南極に昭和基地… 1946年 ・・・・・ といった形にしておく。 「データ」タブをクリックし、「並べ替えとフィルター」グループの「並べ替え」と押して開いた「並べ替え」にて、 「最優先されるキー」を年号の入ったB列にする。 そしてOKを押せば、 1946年 ・・・・・ 1957年 レコードが…南極に昭和基地… 1981年 CD企画発… スペースシャトル… と、年号順に並ぶと思うのですが、これではだめでしょうか?

参考URL:
http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=016326
lovelykajiyan
質問者

お礼

1946年 ・・・・・ ↓ここに、1947~1956年の行を入れる 1957年 レコードが…南極に昭和基地… ↓ここに1958~1980年の行を入れる 1981年 CD企画発… スペースシャトル… 上記のような処理を素早くしたいのです。 ありがとうございます