[[20190315223253]] 『行ごとに最も左のデータが入力されたセルの右隣セ』(あらくま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『行ごとに最も左のデータが入力されたセルの右隣セルに文字入力』(あらくま)

     A      B     C      D   E      F     G      H      I     J    K      L     
1   6年         5年         4年        3年          2年         1年
2 上野知子  P   
3              松本太郎 P              松本二郎
4 大阪尚子 P               大阪文雄
5 森川 悠 P                           森川節夫
6                           福島京子 P               福島文子                                      
7                                                     青井蒼太  P
8                                                                   山田花子  P

最終的に上記のような表を作成したいと考えています。

A,C,E,G,I,K列には児童名が入力されています。
同一行に2名以上の児童名が入力されている場合、その児童同士には兄弟姉妹です。

このような作業が施されて後に、
行ごとに、上位の学年にある児童名の右隣のセルに"P"という文字を自動で入れる、
そのような方法をご教授願えないでしょうか。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 もっとスマートな式がご希望なんでしょうけど、、
 力業でボチボチ条件を増やしていけば、その様な結果になるにはなりますけどね

 6年		5年		4年		3年		2年		1年	
 上野知子  P =IF(A2<>"","P","")										
		松本太郎 P =IF(AND(A3="",C3<>""),"P","")			松本二郎					
 大阪尚子  P			大阪文雄							
 森川悠	  P					森川節夫					
				福島京子 P			福島文子			
								青井蒼太 P		
										山田花子 P =IF(AND(A8="",C8="",E8="",G8="",I8="",K8<>""),"P","")
(SoulMan) 2019/03/15(金) 23:01

SoulManさん、早速のご教授ありがとうございました。
貴台のご提案に沿って、B,D,F,H,J,Lの各列にIF文の式を入力すると、
希望した形の表が自動で作成することができました。

作成依頼者に提案したところ、年度が変わるとき、
作成された現行の6年生データ列(A,B列)を削除、現行5年生以下のデータ列を左に2列ずつ移行し、
新たに6年〜2年とし、最も右の2列に新たな1年生データを付加する新旧作業にも対応するものにで
きないかとの意向が示されました。
このような依頼に応じるにはどうしたらよいでしょうか。
示されたものでは、左2列を削除すると、式がエラー状態になってしまうので・・・
策はあるでしょうか。

(あらくま) 2019/03/16(土) 00:30


 B列に以下の式を入力して、D・F・H・J・L列にB列から式をコピペして下さい。

 B2 =IF(AND(A2<>"",COUNTIF($A2:A2,"P")=0),"P","")
 必要数下にフィルコピー

 A・B列が削除されるとD列にあった式がB列と同じ式に自動で修正されるので、
 削除後のB列からL列に式をコピペして下さい。

 学年も自動で変わるようにするなら、以下のようにして下さい。

 A1 =TEXT(6-COLUMN(A1)/2,"0年")
 C1・E1・G1・I1・K1 にコピペ

 新年度はPの式と同様に削除後のA1セルからK1セルにコピペして下さい。

(sy) 2019/03/16(土) 02:37


 おはようございます。

 元の表に数式を入力すると循環になるので作業列を使う形になってしまいますが、

 名前の列に
 =IF(A2<>"",A2,"")

 Pの列に
 =IF(MIN(IF(COLUMN($A1:$L1)*($A2:$L2<>"")>0,COLUMN($A1:$L1)*($A2:$L2<>"")))+1=COLUMN(B1),"P","")

 と入力して配列で確定して、二つのセルを選択した状態で右に下に必要数フィルすると一応そんな感じになります。

 AB列を削除するとそれに対応した列の数式がエラーになりますが、、それはもう必要のない数式なので健全な数式を

 また、二つ選択した状態で 右に下にフィルすると復活します。

 まぁ、、別案ということでちょっと無理くりぽっいですけど、、何かの参考になれば幸いです。

 今日は、これからちょっと出掛けますので音信不通になります。m(__)m
(SoulMan) 2019/03/16(土) 08:54

syさん、ご教授ありがとうございました。
お教えいただいたもので試したところ、希望どおりの動きを実現することができました。
しかも、学年も自動で変わる仕様、嬉しい限りです。
お示しいただいた式をしっかりと読み解き、今後に生かしていきたいと思います。

SoulManさん、新たなご提案、感謝いたします。
示された式をどこに入力すればよいのでしょうか。
名前の列とは、小生の示した表のA,C,E,G,I,K列のことでしょうか。
また、Pの列とは、B,D,F,H,J,L列のことでしょうか。

(あらくま) 2019/03/16(土) 21:05


 あっ、そうですけど、
解決されたのなら私のは無視してください
(SoulMan) 2019/03/16(土) 21:19

 ちょっと誤解があるといけないので追記です
場所は、どこでもいいんですね
別の場所に表示する形になってしまいます
なので今回は、syさんの式を参考にしてください
(SoulMan) 2019/03/16(土) 21:36

SoulManさん、最後までご心配いただき、ありがとうございました。
(あらくま) 2019/03/16(土) 22:42

 SoulManさんの式ですけど、そもそも今回の要件を誤解されてると思います。

 今回の質問では、新年度に列そのものを物理的に削除するので、
 =IF(A2<>"",A2,"")
 この式ではA列が参照エラーになり、

 =IF(MIN(IF(COLUMN($A1:$L1)*($A2:$L2<>"")>0,COLUMN($A1:$L1)*($A2:$L2<>"")))+1=COLUMN(B1),"P","")
 此方は、COLUMN(B1) この部分が参照エラーになります。

 それに同じシートに式を入力していると、毎年2列づつ削除されるので、M列より右に設定していても、
 左にシフトして、入力欄に干渉してしまいますし、

 行を11行目とか表の下に入力していたら、表と一緒に削除されてしまいます。

 別に表示させるなら、シートも別にしないと上記の問題が発生します。

 因みに別シートに表示させるなら、A・C・E・G・I・K列に以下の式を入力すれば、
 Pの式や、学年の式は、(sy) 2019/03/16(土) 02:37 で提示したものと全く同じ式で出来ます。
 A2 =INDIRECT("Sheet1!RC",0)&""
 下にフィルコピー
 A列の式を、C・E・G・I・K列にコピペ

(sy) 2019/03/16(土) 23:34


 おはようございます

 また、また、頓珍漢な回答ですみません

 別シートに表示するようなイメージだったんでしょうね

 同じシートでも右に式を入力して削除されてエラーになったら

 式も削除してまた右にフィルすればいいかな?

 と思ったんですけど、、

 面倒ですよね?

 ただ、どんな方法でも削除したら追加したり

 挿入するから同じかな?とも思ったり、

 いずれにしても、トピ主さんが解決されて良かったです

 syさん、ありがとうごさいました
(SoulMan) 2019/03/17(日) 06:40

 と、言ったものの気になってパソコンで確認しましたら、

 削除されてエラーになってもそのとなりの式はC参照がA参照に変わるでしょ?

 (残った式の参照先がCのまんまだったら、、駄目ですけど、、、)

 なので、、↓の場合は

 >この部分が参照エラーになります。

 ↓として復活させればいいかなと、、思ってました。
 >AB列を削除するとそれに対応した列の数式がエラーになりますが、、それはもう必要のない数式なので健全な数式を
 > また、二つ選択した状態で 右に下にフィルすると復活します。

 >それに同じシートに式を入力していると、毎年2列づつ削除されるので、M列より右に設定していても、
 >左にシフトして、入力欄に干渉してしまいますし、

 ↑これは、、そりゃ干渉しそうになったら、、行を挿入していただいて右にシフトして頂ければいいわけで、、、(^^;

 物理的に列を削除するわけですから、、何かしら操作はしないといけないでしょうから、、

 ちょっと言葉がたりませんでしたかね(^^;
(SoulMan) 2019/03/17(日) 07:33

 だんだん目が覚めてきました(^^;

 ところで、、↓これって、そもそも、、エラーになった式をDeleteで消して

 >それに同じシートに式を入力していると、毎年2列づつ削除されるので、M列より右に設定していても、
 >左にシフトして、入力欄に干渉してしまいますし、

 ↓新たな一年生を欄を挿入すれば、、干渉しませんよね???

 >新たに6年〜2年とし、最も右の2列に新たな1年生データを付加する新旧作業にも対応するものにで 
 >きないかとの意向が示されました。 

 削除するか挿入しないで追記すれば、、干渉しますけどね。(運用の仕方の問題?)

 正直、、エラーのことは考えましたけど、、干渉のことはそうも思いませんでした。

 もうトピ主さんは解決されているのでいいんですけど、、

 まぁ、、どっちにして私の案は、、面倒だし、、

 >まぁ、、別案ということでちょっと無理くりぽっいですけど、、何かの参考になれば幸いです。

 で、一長一短で参考になるひともいらっしゃるかもしれませんし、、、

 うん?何が言いたいんだか???ちょっとまだ寝とぼけている????(^^;
(SoulMan) 2019/03/17(日) 08:30

 SoulManさん

 >エラーになった式をDeleteで消して
 エラー列を削除すると言うメンテナンス部分の一手間増えるのもそうですが、
 単純に削除して右にコピペで追加するだけでは、使用できません。
 COLUMN($A1:$L1) の部分が、COLUMN($A1:$J1) になってしまいますので、
 更新ごとに式そのものを修正する必要が出てきます。

 INDIRECTなどで参照範囲が削られないようにしないといけません。

(sy) 2019/03/17(日) 10:50


 あぁぁぁ、、そうですね(^^;

 >COLUMN($A1:$L1) の部分が、COLUMN($A1:$J1) になってしまいますので、

 大変失礼いたしました。m(__)m
(SoulMan) 2019/03/17(日) 11:09

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.