プロが教える店舗&オフィスのセキュリティ対策術

エクセルでA1からE1に項目、A2からは各項目の人数を入力すると、E2からは一つのセルに(項目人数~~~)と表記される計算式は出来ますか。出来るのであれば教えてください。ホテルのフロントなどで使いたいのです。
A B C D E
1 大人 A B C
2 1 2 1 1 → 大人1A2B1C1
3 2 1 3 2 → 大人2A1B3C2
4 2 2 1 1 → 大人2A2B1C1

「各セルの表記を(項目人数~~~)と一つの」の質問画像

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

  • HAPPY

    エクセルの賢者の皆様より、可能なことを知りました。ありがとうございます。誠に恐縮ではございますが、実際に使用したい変換方法が、添付画像です。A1及びA12の(大人)表記を空白にしたら、3名様の計算式で(大人)は消えました。予約課で作成されたシートをフロント・客室清掃スタッフに一目瞭然となる書類を作成しなければならないのです。賢者の皆様のお知恵をお授けください。_(._.)_。

    「各セルの表記を(項目人数~~~)と一つの」の補足画像1
      補足日時:2023/12/29 23:15

A 回答 (6件)

No.3,4です。


No.5さんのご指摘のとおり、
>Excelのバージョンを書かないと適切な回答は得られません。
という訳で、仮にスピル機能が有効なバージョンなら前回回答の数式をもっと簡潔にできます。
もともと、ご質問者が示されたデータのように、A1~G1セルに項目名、A2~G2セル以下にデータ(数値)が入力されているとすると、

=A2&CONCAT(REPT($B$1:$G$1&B2:$G2,B2:G2<>""))・・・①

上記①の数式をI2に入れて、下方向へコピーすればよいと思います。
    • good
    • 1
この回答へのお礼

3度もすばらしい計算式を作成して頂き、大変感謝しております。同僚のスタッフが、この計算式が入力しやすいとのことでベストアンサーに選ばせて頂きます。バージョンはオフィス2021でした。大変感謝しております。ヽ(^o^)丿!

お礼日時:2024/01/02 17:23

最初に Excelのバージョンを書かないと適切な回答は得られません。


最新前提でいいなら A12:I19にテーブル書式を設定して

=CONCAT([@大人],TOROW(IF(テーブル1[@[A]:[Infant]]="","",VSTACK(テーブル1[[#見出し],[A]:[Infant]],テーブル1[@[A]:[Infant]])),,TRUE))
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2024/01/02 17:15

No.3です。


回答者の数式を比較検討されたようですね。
しかし、前回回答では、前提条件として
>各項目に該当者がいない場合も「空欄」とせず、「0」を入力する
と書いておいたのですが、ご理解いただけなかったようです。
ただ、ご質問者から質問内容を修正した画像が掲出されましたので、そちらに対応する数式を改めてお示しすることにします。
こちらは該当者がいない場合は「空欄」でOKです。
添付画像をご覧ください。
前回回答数式の応用になりますが、I2セルに、

=A2&REPT($B$1&B2,B2<>"")&REPT($C$1&C2,C2<>"")&REPT($D$1&D2,D2<>"")&REPT($E$1&E2,E2<>"")&REPT($F$1&F2,F2<>"")&REPT($G$1&G2,G2<>"")・・・①

という数式を入れて下方向へコピーしています。
ご覧の通り、ご希望の結果が表示されていると思います。
「各セルの表記を(項目人数~~~)と一つの」の回答画像4
    • good
    • 0
この回答へのお礼

助かりました

お礼日時:2024/01/02 18:40

添付画像をご覧ください。


E2セルに、

=REPT(CONCAT(INDEX(A$1:D$1&A2:D2,)),A2<>"")・・・①

を入れて、下方向へコピーしています。
既にTEXTJOIN関数を用いた回答がなされていますが、前提条件としては各項目に該当者がいない場合も「空欄」とせず、「0」を入力するということのようです。
また、TEXTJOIN関数はバージョン2019以降でのみ使用可能な関数です。ご質問者のEXCELのバージョンが不明ですが、前提条件は同じだとして、2019の一つ前のバージョン2016でも使用できる数式として①を投稿しました。
「各セルの表記を(項目人数~~~)と一つの」の回答画像3
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2023/12/28 20:10

こんにちは



すでに回答がありますけれど・・

E2セルに
=TEXTJOIN("",0,INDEX(A$1:D$1&A2:D2,))
を入力して、下方にフィルコピーでもできると思います。

365などスピル機能が使える環境であれば
=TEXTJOIN("",0,A$1:D$1&A2:D2)
でもいけます。


あらかじめフィルコピーしておいた際に、入力がない行にも計算値が表示されてしまうのがうるさいようなら、
=IF(A2="","",TEXTJOIN("",0,INDEX(A$1:D$1&A2:D2,)))
のような要領で、空白にしておけば良いでしょう。
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2023/12/28 20:10

E2に


=$A$1&$A2&$B$1&$B2&$C$1&$C2&$D$1&$D2
を張り付けて、あとは下へコピペしていってください。
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2023/12/28 20:10

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

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


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