アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelにて、行の各セルに入力すると別の特定のセルに入力順に新しいデーターへ書き換わる
ような事が出来るでしょうか。

やりたいこと

例えば、I7~BR7(行)までのセルに順次データを入れていったとします。
I7に1と入力すれば、D7に同じく1と入る、次にJ7に2と入れれば、D7へ2となり
D7セルは常に新しいデーターへ書き換わる様にしたいのですが、可能なのか分からず
可能であれば、ご教授願います。(関数?マクロ?)

D7       I7 J7 K7 ・・・・・
1        1 

D7       I7 J7 K7 ・・・・・
2        1 2

D7       I7 J7 K7 ・・・・・
3        1 2 3

よろしくお願いいたします。

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

  • ありがとうございます。
    > I7~BR7(行)までのセルに順次データを入れていったとします。
    入力が、①(I7に1)、②(K7に3)、③(J7に2)、④(K7に4)、⑤(L7に5)、⑥(I7に1)(I7に前と同じ値を入力)、⑦(M7に4)とした場合、
    D7は、①②③④⑤⑥⑦で、どう表示させたいのでしょうか。
    ⇒I7 J7 K7 L7 M7 N7・・・・BR7の間は、最初は空セルです
    ⇒I7 J7 K7 L7 M7 N7・・・・BR7の間で、データー入力は、右へと順次(I7 J7 ・・と入力)
    入力していくので、同じ数字が入ることもあります。
    D7には、最後に入力した数字を表示させたいです
    > D7セルは常に新しいデーターへ書き換わる
    ⇒D7には、最後に入力した数字を表示するようにしたいです。
    説明不足ですみません

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/12/29 13:47

A 回答 (4件)

>⇒I7 J7 K7 L7 M7 N7・・・・BR7の間で、データー入力は、右へと順次(I7 J7 ・・と入力)


>D7には、最後に入力した数字を表示させたいです

としいうことは、一番右の列に入力されているものが最も新しいデータということになりますが、それでよろしいのでしょうか?

例えば、入力の順番をミスしてM7より先にN7を入力してしまったときは、ルール違反とはいえ、あくまでも右にあるN7の値がD7に表示されるということでよいのでしょうか?

また、そのあとミスに気づいてM7に入力すると最新の入力値はM7になるのですが、ルールとしては右側が最新なので、N7の値がD7に表示されるということでよいのでしょうか?

上記の前提がすべてOKであれば、D7に関数を記述する方法でも解決可能です。

No.3さんの
=LOOKUP(10^10,I7:BR7)・・・・・・・・・・・・・・・・・・①
という数式も一つの方法ですが、以下の制約条件があります。
(1)I7:BR7には数値のみの入力とすること
(2)I7:BR7には10桁以上の数値は入力しないこと
上記(1)(2)の制約条件がOKならこの方法で問題ありません。

この制約条件を取り払うとすると以下の数式になります。

=IFERROR(INDIRECT("R7C"&MAX(INDEX((I7:BR7<>"")*(COLUMN(I7:BR7)),0)),0),"")・・・・・・・・・②

上記①②数式の結果の違いは添付画像をご覧ください。

※②の数式の解説
INDEX((I7:BR7<>"")*(COLUMN(I7:BR7)),0)・・・・・・・・・(A)
*I7:BR7セルのうち空欄でないものの列番号を返す配列を求める
MAX((A))・・・・・・・・・・・・(B)
*I7:BR7セルの空欄以外の列番号のうちの最大値(最右列の列番号)を求める
INDIRECT("R7C"&(B)),0)・・・・・・・・・(C)
*INDIRECT関数でI7:BR7セルの空欄以外の最右列のセルの内容を求める
IFERROR((C),"")
*INDIRECT関数でエラーが発生したら空欄にする

No.3さんも述べておられますが、最右列でなく、入力順も考慮するならVBAが必要だと思われます。
「Excelにて、行の各セルに入力すると別」の回答画像4
    • good
    • 0
この回答へのお礼

御礼がおそくなりすみませんでした
分かりやすく丁寧に教えていただきありがとうございます
=IFERROR(INDIRECT("R7C"&MAX(INDEX((I7:BR7<>"")*(COLUMN(I7:BR7)),0)),0),"")・・・・・・・・・②

数式を使わせていただきます

お礼日時:2021/01/05 06:38

必ず左から右へと入力されるということで常に一番右端のデータを表示したいなら



=LOOKUP(10^10,I7:BR7)

では?
入力セルが前後することがあり入力順まで考慮するなら、マクロになります。
    • good
    • 0
この回答へのお礼

ありがとうございます
参考にさせて頂きます。

お礼日時:2021/01/05 06:39

> I7~BR7(行)までのセルに順次データを入れていったとします。



入力が、①(I7に1)、②(K7に3)、③(J7に2)、④(K7に4)、⑤(L7に5)、⑥(I7に1)(I7に前と同じ値を入力)、⑦(M7に4)とした場合、
D7は、①②③④⑤⑥⑦で、どう表示させたいのでしょうか。

> D7セルは常に新しいデーターへ書き換わる

⑥は作業としては新しいですが、内容は以前と同じです。
⑦は作業としては新しいですが、K7に(4)があるので、新しいデータではないかもしれません。

内容にもよりますが、入力をチェックして動作を決めればいいのであれば、マクロでできます。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2021/01/05 06:40

フォームを使えば出来るでしょう。


マクロは私にはわかりませんが、単純にここでコードだけ教えて貰っても応用が利きません。
フォームで出来る事を理解すれば、いくらでも応用が出来ます。
  
https://www.pc-koubou.jp/magazine/31560
    • good
    • 0
この回答へのお礼

参考にさせて頂きます

お礼日時:2021/01/05 06:40

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