電子書籍の厳選無料作品が豊富!

図の表1のような出欠表があります(/が欠席です)。
この表から表4のように日付ごとの欠席者を書き出したいと思います。
現在、以下のような手順を考えています。
まず表1のデータから表2を作成する。
B11に =IF(B3="/",$A3,"")
次にTRASPOSE関数で表2から表3を作成
A18に =TRANCEPOSE(B10:E15)
最後に表3のデータを表4にまとめる。
B24に =TEXTJOIN("、",TRUE,$B18:$F18)

これでできなくはないのですがもっとシンプルなやり方がありそうに思います。
お知恵をお借りしたく質問しました。
よろしくお願いします。

「Excelで作成した出欠表から日付ごとの」の質問画像

A 回答 (2件)

こんにちは



お使いのバージョンが不明ですが、スピル機能が使える環境(=Office365等)であれば、ご提示のレイアウトで、

B24セルに
=BYROW(A24:A27,LAMBDA(d,TEXTJOIN("、",1,FILTER(A3:A7,OFFSET(A3:A7,0,MATCH(d,B2:E2,0))="/",""))))
を入力すれば、自動で下方にスピルされます。
※ 式中の"/"は、表中に使用されている記号と同じものにしてください。
※ スピルのため、B25:B27は空白にしておく必要があります。
(表2、表3は不要になります)


スピル機能が使えない場合は、配列数式になりますが・・
B24セルに
=TEXTJOIN("、",1,IF(OFFSET(A$3:A$7,0,MATCH(A24,B$2:E$2))="/",A$3:A$7,""))
の式を入力し、Shift+Ctrl+Enterキーを押して確定。(←必須です)
その上で、B24セルを下方にフィルコピーで可能と思います。
    • good
    • 0
この回答へのお礼

ご提示いただいた2つの方法、どちらもうまくいきました。
数式の意味はよくわかりませんのでこれから調べないとですが(^^;
取り急ぎお礼申し上げます。ありがとうございました!

お礼日時:2025/02/16 15:04

》 A18に =TRANCEPOSE(B10:E15)


英語の綴りが間違ってますよ。そして、…
Excel 2019 の場合の、表3の作成手順は

範囲 A18:F21 を選択⇒[数式バー]上で式 =TRANSPOSE(B10:E15)
を入力した直後に(単に Enterキーでなく)Ctrl+Shift+Enterの3つの
キーを同時に憎々し気に「エイヤッ!」と叩き付けにゃアキマヘンでし
たよッ!
つまり配列(CSE)数式なので、[数式バー]上の式の最終の姿は
{=TRANSPOSE(B10:E15)} になりました。

ついでながら、表3から表4を得る手順は下記としました。
範囲 A10:E15 を選択⇒Ctrl+C⇒セル A24 を選択⇒マウスの右クリック
⇒[貼り付けのオプション]直下の[123](値)アイコンをツン⇒
(面倒臭いけど)表4で、ちょっと見、空白に見えるセル(C24:F24、
D25:E25、B26:D26、E27:F27、B25、B27、F26)は Delキーでツン
ツンして完全空白セルにしておく⇒Ctrl+G⇒[セル選択]⇒"空白セル"に
目玉入れ⇒[OK]⇒任意の空白セル上で、マウスの右クリック⇒[削除]⇒"左方向にシフト"に目玉入れ⇒[OK]
オ・シ・マ・イ(フ~)
    • good
    • 0
この回答へのお礼

>TRANCEPOSE 
間違ってましたね。ご指摘ありがとうございます。
Excelのバージョンによる違いの件、2019ではそのようになるのですね(当方Microsoft 365を使用しております)。
表3から表4を作成する手順ですが、最初にコピーする範囲はA18:F21ですかね? それをA24に値のみの形式で貼り付け。以下ご説明のとおりでうまくいきました。成程、いろいろな方法があるものですね。ご回答いただきありがとうございました。

お礼日時:2025/02/16 22:03

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

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


おすすめ情報

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