「教えて!ピックアップ」リリース!

Excel以下のシート1~3のシートから、シート4へ開催期間が早い順で並べたいのですが、どのような関数を使用すればよいのかわからず教えていただけませんか。どうぞ宜しくお願いいたします。

シート1、(B4~名前)、(C4~開催日)、(F4~概要)※今後も予定が決まり次第追記予定
シート2、(B5~名前)、(C5~開催日)、(F5~概要)※今後も予定が決まり次第追記予定
シート3、(B4~名前)、(C4~開催日)、(F4~概要)※今後も予定が決まり次第追記予定

シート4、(A2~日付早い順)、(B2~名前)、(C2~概要)※今後も予定が決まり次第自動で追加

「Excel複数シートから日付と文字を取り」の質問画像

質問者からの補足コメント

  • Belltreeriverさん
    詳細本当にありがとうございます!EXCEL初心者なので細かく教えていただき感謝です。
    現在使用しているシートがGoogleスプレッドシートなのですが、
    >②開催日を抽出
    >シート4のA2
    >=IFERROR(SMALL(Sheet1:Sheet3!H:H,ROW(A1)),"")

    上記内
    (Sheet1:Sheet3!
    の3シートを選択すると式としては無効となってしまいます。
    Googleスプレッドシートの仕様なのかなんなのかがわからず、、
    もしGoogleスプレッドシートで3シートをうまく選択して式をアクティブにすることをご存じでありましたらご教示いただけませんでしょうか。
    厚かましいご質問ですみませんが、もしご存じでしたら回答いただければありがたいです。

    No.5の回答に寄せられた補足コメントです。 補足日時:2022/06/08 07:58

A 回答 (6件)

NO.3の場合同日日付が多数あるとエラーになるパターンがありましたので、作成し直しました。

一般数式です。少々短くなりました。

<考え方>作業列に日付情報と行№情報とSheet№情報を含んだ数値を作成

①各シートのH列に作業列を作成
シート1はC4+(ROW()/100000)+0.000001
シート2はC4+(ROW()/100000)+0.000002
シート3はC4+(ROW()/100000)+0.000003
<例>C4セルが6/1の場合  44713.000041
       整数部は2022/6/1のシリアル値
       小数点第1位~5位までは行№
       小数点第6位はSheet№
データ行まで下へコピペ
②開催日を抽出
シート4のA2
=IFERROR(SMALL(Sheet1:Sheet3!H:H,ROW(A1)),"")
③氏名(2列目)を抽出(ADDRES関数(開催日の小数点に含まれる行№とSheet№)でセル番地取得)
シート4のB2
=IFERROR(INDIRECT(ADDRESS(--MID(TEXT(A2,"#.00000"),FIND(".",TEXT(A2,"#.00000"))+1,5),2,,,"sheet"&RIGHT(TEXT(A2,"#.000000"),1))),"")
④概要(6列目)を抽出
シート4のC2
=IFERROR(INDIRECT(ADDRESS(--MID(TEXT(A2,"#.00000"),FIND(".",TEXT(A2,"#.00000"))+1,5),6,,,"sheet"&RIGHT(TEXT(A2,"#.000000"),1))),"")

②③④をデータ行分下へコピペ
この回答への補足あり
    • good
    • 0
この回答へのお礼

こちら活用させていただきました!詳細本当にありがとうございました!

お礼日時:2022/06/09 18:34

№5です。


スプレッドシートは使用したことがありませんので、わかりません。
質問時にEXCELではなく、スプレットシートで***という質問をお願いします。EXCELでもVersionにより使用できる関数も異なりますし、複数シートにまたがった領域を参照可能な関数となるとさらに限られます。質問時には使用環境を伝えることをお勧めします。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます!言葉足らずですみませんでした!
他、諸々ご丁寧にお教えいただきありがとうございました!

お礼日時:2022/06/09 18:32

№3です。

①の数式を変更します。(1000人まではOK!)
シート1はC4+(ROW()/10)  ⇒ シート1はC4+(ROW()/1000)
シート2はC5+(ROW()/100)⇒ シート1はC4+(ROW()/10000)
シート3はC4+(ROW()/1000) ⇒ シート1はC4+(ROW()/100000)
    • good
    • 0

各シートに作業列を作成し、かつローテクで大変長い数式です。


手順は
①開催日をユニーク(各シート間やシート内に同一日付が存在する前提)にするため各シートのH列に作業列を作成
シート1はC4+(ROW()/10)
シート2はC5+(ROW()/100)
シート3はC4+(ROW()/1000)
データ行まで下へコピペ
②開催日を抽出
シート4のA2
IFERROR(SMALL(Sheet1:Sheet3!H:H,ROW(A1)),"")
(SMALL関数は串刺し範囲指定がOK!)
③氏名を抽出(列全体参照だと処理が重いので100行までを対象とした)
シート4のB2
CONCATENATE(
IFERROR(INDIRECT(ADDRESS(MAX(N(IF($A2=Sheet1!$H$1:$H$100,ROW(Sheet1!$C$1:$C$100)))),2,,,"sheet1")),""),
IFERROR(INDIRECT(ADDRESS(MAX(N(IF($A2=Sheet2!$H$1:$H$100,ROW(Sheet2!$C$1:$C$100)))),2,,,"sheet2")),""),
IFERROR(INDIRECT(ADDRESS(MAX(N(IF($A2=Sheet3!$H$1:$H$100,ROW(Sheet3!$C$1:$C$100)))),2,,,"sheet3")),"")
)
Ctr+Shift+Enterで確定入力
④概要を抽出(列全体参照だと処理が重いので100行までを対象とした)
シート4のC2
CONCATENATE(
IFERROR(INDIRECT(ADDRESS(MAX(N(IF($A2=Sheet1!$H$1:$H$100,ROW(Sheet1!$C$1:$C$100)))),6,,,"sheet1")),""),
IFERROR(INDIRECT(ADDRESS(MAX(N(IF($A2=Sheet2!$H$1:$H$100,ROW(Sheet2!$C$1:$C$100)))),6,,,"sheet2")),""),
IFERROR(INDIRECT(ADDRESS(MAX(N(IF($A2=Sheet3!$H$1:$H$100,ROW(Sheet3!$C$1:$C$100)))),6,,,"sheet3")),"")
)
Ctr+Shift+Enterで確定入力
※開催日(H列)がどのシートに存在するか不明なので、シート毎に検索し、
CONCATENATE関数で連結(存在しないシートはエラーなので””(ブランク)が
返るので存在したシートの値だけになる)

⑤③と④の数式をデータ行分下へコピペ

※①②は一般数式 ③④は配列数式(CSE)
    • good
    • 0

VBAでシート1~3からシート4に転記して、シート4のソートを行えば良いと思います。

    • good
    • 0
この回答へのお礼

回答ありがとうございます!
VBAのスキルが乏しく、仕方が今の自分にはわからずなのですが、参考にさせていただきます!

お礼日時:2022/06/08 08:06

シート5を作って、


そこにシート1~4までの情報を
マージしてソートする。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
Excel初心者なもので、マージの仕方がどのようにすれば最適かを模索したのですがなかなか考えが及ばすですが、参考にさせていただきます!

お礼日時:2022/06/08 08:04

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング