次の方法で共有

条件によって横のセルに買と表示させるようなことは実現可能か

Anonymous
2023-09-07T02:58:59+00:00

Microsoft office home and business 2019のExcelについて質問です。

縦のセルに○×△がランダムに並んでいて○の後に初めて×が出現すると横のセルに売と表示させる。

その後は×の後に初めて○が出現すると横のセルに買と表示させたい。

以上の事をExcelで実現させる事は可能でしょうか?

**モデレーター中**

タイトルを修正しました。

修正前タイトル:本文と同じ

Microsoft 365 と Office | Excel | 家庭向け | その他

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

ひまじん 17,185 評価のポイント
2023-09-07T15:44:27+00:00

こんにちは。

最初に、ご希望の B列の表示の確認ですが、図1のような表示で良いでしょうか?。

図1では、色々なパターンを検証するため、提示されている表の A列の文字列を少し変更しています。

・図1

以下は、図1のような表示で良い場合の数式の具体例です。

条件が複雑なため、図2のように、C列と D列を数式を入れた作業列として使い、B列に入れた数式と連携させてご希望の文字列を表示させるようにしています。

・図2:数式の結果が表示されている状態です。

図2の C列と D列は図3のように「非表示」にしておいた方が見やすいかと思います。「非表示」にしておいても数式の結果に影響はありません。

※「非表示」にする方法:C列と D列を列ごと選択しておき、右クリックから「非表示」を選んでください。

・図3:C列と D列を「非表示」にした状態です。

<数式例>

※いずれも図2の各セルに入れる数式になります。

  • 数式1:C1セルに入れる数式です。
    =IF(A1="〇",1,"")
  • 数式2:D1セルに入れる数式です。
    =IF(A1="×",1,"")
  • 数式3:C2セルに入れる数式です。
    =IF((A1<>A2)*(A2="〇"),ROW(C2),"")
  • 数式4:D2セルに入れる数式です。
    =IF((A1<>A2)*(A2="×"),ROW(D2),"")
  • 数式5:B2セルに入れる数式です。
    =IF((MAX(C$1:C2)=0)+(MAX(D$1:D2)=0),"",IF(MAX(C$1:C2)>MAX(D$1:D2),IF((INDIRECT("B"&MAX(IF(B$1:B1<>"",ROW(B$1:B1),1)))<>"買"),"買",""),IF((INDIRECT("B"&MAX(IF(B$1:B1<>"",ROW(B$1:B1),1)))<>"売"),"売","")))

※長い数式なので、変な箇所で自動的に改行されているかもしれませんが全部で 1行の数式です。
※この数式は、スピルが有効になっている最新版の Excel( Microsoft365 の Excel、Excel2021 など)以外の Excel では、数式の入力後 に Ctrl+Shift+Enter キー押下で確定して配列数式にする必要があります。
※配列数式になると、数式全体が自動的に { } で囲まれますので、必ずこれを確認してください。

数式の動作概要については長い文章になるかと思いますので省略します。ご希望があれば書いてみたいとは思いますが・・・。
尚、B1セルには何も入れないでください。

全ての数式を入れ終わったら、B2セル、C2セル、D2セルを選択し、これを必要なだけ下方向(行方向)にコピーしてください。

今回の数式の場合は、多めにコピーしておいても問題ありません。

図2では、見えてはいませんが、300行目までコピーしています。

尚、数式をコピーした後は、行の削除とか挿入とかは行わないでください。数式のセル参照位置が変化して誤動作します。

A列の文字列の追加や削除、書き換えだけでしたら問題ありません。

Excel2019 は持ち合わせていませんので、下記の組み合わせで動作確認しています。

・Windows11 と Excel2021

・Windows10 と Excel2016

Excel2019 でも問題なく動作するかと思いますので、よろしければ、お試しになってみてください。

ご参考になれば幸いです。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

5 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2023-09-08T06:11:43+00:00

    こんにちは石橋2011、

    残念ながら、これ以上のトラブルシューティングはありません。

    フォーラムには多くの知識のあるユーザーが活動しており、他の誰かがあなたの問題についてさらに洞察を提供できることを願っています。

    感謝 シャローム

    この回答は自動翻訳されています。文法や表現の誤りが発生した場合はご容赦ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2023-09-08T03:27:15+00:00

    ご回答ありがとうございます。

    私の理解不足でうまく動作させる事が出来ませんでしたがありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2023-09-08T03:25:43+00:00

    ご回答していただきありがとうございます。

    図1の表示で大丈夫です。

    教えていただいた通りすると問題が解決しました。

    正直B2セルの数式は理解出来ませんが動作してくれれば問題ありません。

    本当に助かりました。ありがとうございます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2023-09-07T03:35:05+00:00

    こんにちは石橋2011、

    私はシャロームです、そして私はあなたの質問を喜んで手伝います。このフォーラムでは、私たちはあなたと同じようにマイクロソフトの消費者です。

    はい、数式の組み合わせを使用してExcelで目的の結果を達成することが可能です。IF関数とMATCH関数を使用して、「○」の後に「×」が最初に出現するかどうかをチェックし、隣接するセルに「販売」を表示できます。同様に、これらの関数を使用して、「×」の後に「○」が最初に出現するかどうかをチェックし、隣接するセルに「買い」を表示できます。

    これを設定する方法の例を次に示します。

    セルA1から始まる列Aにデータがあるとします。

    セル B1 に、次の数式を入力します。

    =IF(A1="○",IF(ISNUMBER(MATCH("×",A2:$A$1048576,0)),"販売",""),"")

    この数式は、セル A1 の値が "○" かどうかを確認します。

    そうである場合は、MATCH関数を使用して、その下のセル(シートの最後の行までのA2)で最初に出現する「×」を検索します。一致が見つかった場合は、セル B1 に "販売中" が返されます。それ以外の場合は、空の文字列を返します。 セル B2 に次の数式を入力します。

    =IF(A2="×",IF(ISNUMBER(MATCH("○",A3:$A$1048576,0)),"buy",""),"") この数式は前の数式と同様に機能しますが、「×」の後に「○」が最初に出現するかどうかをチェックし、一致が見つかった場合は「購入」を返します。

    次に、これらの数式を列Bの残りのセルにコピーして、「○」または「×」の各出現箇所の横に「売り」または「買い」を表示できます。

    よろしくお願いいたします シャローム

    この回答は自動翻訳されています。文法や表現の誤りが発生した場合はご容赦ください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません