[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの参照』(よ〜さん)
初歩的な質問で恐れ入ります
次のような表があります
A B C E F G 前期 中期 後期 1 徳川家康 前 A 徳川家康 2 豊臣秀吉 中 B 明智光秀 3 織田信長 後 C 云々 4 明智光秀 前 B 5 夏目漱石 中 E 6 安倍真三 後 F 7 小泉純一郎 前 G 8 織田信長 中 H 9 明智光秀 後 I
上記E列前期の下行の条件はB列が前、C列がAとなります。
その下行はB列が前でC列がBの場合です。
以上のような条件のとき、
E列F列G列に入る関数をご教示いただきたいのですが、
よろしくお願いいたします。
>E列前期の下行の条件はB列が前、C列がAとなります。 >その下行はB列が前でC列がBの場合です
単に前・中・後 だけでなく、C列のアルファベットも条件のようですが、 明智光秀の下は B列が前でC列はCですか?
また、F列G列に来るべき、中期・後期以外のアルファベットの条件は?
例えばF3は「中・H」で、織田信長が参照されるように
したいのです。
こんにちは〜♪
抽出範囲の表を こんな表にしてはいかがでしょうか?
E F G H I J [1] 前期 中期 後期 [2] A 徳川家康 H 織田信長 C 織田信長 [3] B 明智光秀
★前期 中期 後期の抽出列の隣の列の セルに A B などの条件を入力します。。。
式は ★前期の列 F2セルへ =INDEX(A:A,100-MAX(INDEX((($B$1:$B$100&"期"&$C$1:$C$100)=F$1&$E2)*100-ROW($1:$100),)))&""
下にコピーします。 ★中期は 前期の式の =F$1&$E2 → =H$1&$G2 に変えます。
★後期は 前期の式の =F$1&$E2 → =J$1&$I2 に変えます。
そしてそれぞれ下へコピーします。
ご参考にどうぞ〜。。。
。。。Ms.Rin〜♪♪
数式が、易しくなりますので
D列に作業列を使う方法です。。。
A B C D [1] 徳川家康 前 A 前A [2] 豊臣秀吉 中 B 中B [3] 織田信長 後 C 後C [4] 明智光秀 前 B 前B [5] 夏目漱石 中 E 中E [6] 安倍真三 後 F 後F [7] 小泉純一郎 前 G 前G [8] 織田信長 中 H 中H [9] 明智光秀 後 I 後I
★D1セルへ =B1&C1 下にコピーします。。
抽出範囲のレイアウトは、前レスと同じです。
★前期の場合 F2セルへ =IF(COUNTIF(D:D,LEFT(F$1,1)&$E2),INDEX(A:A,MATCH(LEFT(F$1,1)&$E2,D:D,0)),"") 下にコピーします。
中期 LEFT(F$1,1)&$E2 → =LEFT(H$1,1)&$G2
後期 LEFT(F$1,1)&$E2 → =LEFT(J$1,1)&IG2
に変更して下さい。。。
こちらもご参考にどうぞ。。。
。。。Ms.Rin〜♪♪
またまた出遅れ。。。 どうも、この手のご質問時は、Ms.Rinさんとかぶりますね(笑)
作業列を使うものと使わないものの二案ですが、 A〜Zの順番を決める為に文字コードを使っています。半角文字の『Z』は、全角文字の『A』 より文字コードNo.が小さいので、見た目重視の為に、半角文字に置き換えた(ASC関数)コードにしました。 また、同じ期で同じ記号の場合は、上の行を優先にしてます。 ※ここの意味を取り違えていると、余計な事に時間を費やした事になりますが....
[作業列を使う方法] A B C D E F G H I 1 前 中 後 前期 中期 後期 2 徳川家康 後 F 70002 明智光秀 豊臣秀吉 織田信長 3 豊臣秀吉 中 B 66003 小泉純一郎 夏目漱石 徳川家康 4 織田信長 後 C 67004 織田信長 安倍真三 5 明智光秀 前 B 66005 明智光秀 6 夏目漱石 中 E 69006 7 安倍真三 後 F 70007 8 小泉純一郎 前 G 71008 9 織田信長 中 H 72009 10 明智光秀 後 I 73010
D1:F1に前・中・後と手入力し、 D2セルに =IF($B2=D$1,($B2=D$1)*CODE(ASC($C2))*10^3+ROW(),"") として、F10までの範囲にコピペ。 G2セルに =IF(COUNT(D$2:D$10)<ROW(G1),"",INDEX($A$1:$A$10,RIGHT(SMALL(D$2:D$10,ROW(G1)),3)*1)) として、I10までの範囲にコピペ。
[作業列を使わない方法] A B C D E F G 1 徳川家康 後 F 前期 中期 後期 2 豊臣秀吉 中 B 明智光秀 豊臣秀吉 織田信長 3 織田信長 後 C 小泉純一郎 夏目漱石 徳川家康 4 明智光秀 前 B 織田信長 安倍真三 5 夏目漱石 中 E 明智光秀 6 安倍真三 後 F 7 小泉純一郎 前 G 8 織田信長 中 H 9 明智光秀 後 I
E2セルに (改行してます) =IF(COUNTIF($B$1:$B$9,LEFT(E$1,1))>=ROW(E1), INDEX($A$1:$A$9,MATCH(SMALL(INDEX(($B$1:$B$9=LEFT(E$1,1))*CODE(ASC($C$1:$C$9))*10^3+ROW($C$1:$C$9),0), SUMPRODUCT(N($B$1:$B$9<>LEFT(E$1,1)))+ROW(E1)), INDEX(CODE(ASC($C$1:$C$9))*10^3+ROW($C$1:$C$9),0),0)),"") として、G10までの範囲にコピペ。 (sin)
以下の表のB列とC列は固定されたデータではなく、
可変されるデータです。 そして下図のように、E列F列G列それぞれのセルには B列とC列に入力されたデータを指定しております。 従って空白なども出てくるようになりますね。 ちょっと質問が要領を得なくて申し訳ありません。(よ〜さん)
A B C D E F G 前期 中期 後期 1 徳川家康 前 A (前A)徳川家康 (中A)織田信長 (後A)聖徳太子 2 豊臣秀吉 前 G (前B)明智光秀 (中B) (後B) 3 織田信長 中 A (前C) (中C)福沢諭吉 (後C) 4 明智光秀 前 B (後E)小泉純一 5 福沢諭吉 中 C 6 安倍真三 後 R 7 小泉純一 後 E 8 聖徳太子 後 A
あれ?
>F3は「中・H」で、織田信長が参照されるように したい
のではなかったっけ?
例示データを変えたり、条件を変えたりすると回答したくてもできなくなります。
sinさんの考えを勝手に頂戴致しまして E列を作業列に使います。 [A] [B] [C] [D] [E] [F] [G] [H] [1] 徳川家康 前 A 前期 中期 後期 [2] 豊臣秀吉 前 G A 徳川家康 織田信長 聖徳太子 [3] 織田信長 中 A B 明智光秀 [4] 明智光秀 前 B C 福沢諭吉 [5] 福沢諭吉 中 C E 小泉純一 [6] 安倍真三 後 R G 豊臣秀吉 [7] 小泉純一 後 E R 安倍真三 [8] 聖徳太子 後 A E2の数式バーにに =IF(SUMPRODUCT((MATCH($C$1:$C$8,$C$1:$C$8,0)=ROW($C$1:$C$8))*1)<ROW(A1),"", CHAR(SMALL(IF(MATCH($C$1:$C$8,$C$1:$C$8,0)=ROW($C$1:$C$8),CODE($C$1:$C$8),""),ROW(A1)))) ↑の2行をコピペして【Ctrl+Shift+Enter】で確定 数式が{ }で囲まれるので、確認して下にコピーします。 (=IF(・・・・・・) のままですと#VALUE!が表示されます。) F2に =IF(SUMPRODUCT(($B$1:$B$8=LEFT(F$1,1))*($C$1:$C$8=$E2)*(ROW($A$1:$A$8)))=0,"", INDEX($A$1:$A$8,SUMPRODUCT(($B$1:$B$8=LEFT(F$1,1))*($C$1:$C$8=$E2)*(ROW($A$1:$A$8))))) ↑の2行をコピペして(こちらは普通にEnter)、右下にコピー。
C列は全角で記入してあるものとしています。 と言う条件で、E2の式を少し短くしました。
☆やっぱり追記です。 私の一つ前に投稿なさった方、署名をお願いします。
(HANA)
例題を変えましたことお詫びします。
HANA様へ
大変複雑な関数に驚いております。レス回答される皆さん本当にすごいです。 コピペしまして試しました。 例題では福沢諭吉が中のCでしたが そのCをBに変えますとその上のセル(G3)に表示されるはずと 思うのですが、うまくいきません。 それとA列のデータ(名前)を追加した場合、どうなるでしょう。 本当に面倒をおかけしてすいません。 (よ〜さん)
「上手く行きません」とは、どの様になりますか? (こちらでは 上手く行くのですがね。) 試しに、C4セルをコピーしてC5セルに貼り付けてみて下さい。 (明智光秀 は、表示されていますよね?)
名前が増えた場合は、数式内の「$8」の部分を変更して下さい。
(HANA)
よく考えると、アルファベットが違った場合は E列に違った様に表示されるはずですね・・・・。
一つ確認ですが、実際のレイアウトに併せて 数式を変更してませんか? 上と全く同じレイアウト、同じ数式でC5をC→Bに変更したとき 上手く表示されないのでしょうか?
(HANA)
私の理解できる世界からは、飛び出してるかも??? >B列とC列は固定されたデータではなく、可変されるデータです。 Delete、上書き は、問題ないと思います。 削除に関しては、問題が出る可能性があるかも? >E列F列G列それぞれのセルには B列とC列に入力されたデータを指定しております。 指定って、入力しているという事?だとしたら同じセルに該当データを表示させるのは、関数では無理です。 マクロなら出来るかも?ただ、再利用までは??? 入力しているのではなく、一番上がA、次がB、その次がC・・・・という感じで位置を決めているのでなるなら、 G列において、A→B→C→E なぜEなのかが分かりません。普通に考えるとDでは? もう少し柔らかく考えると、C列のアルファベットの重複しない順番となりますが、 これは、HANAさんが書かれている方法っぽい(ぽい:E列の作業列だけで判断)けど・・・ 前・中・後は、各期の事だと判断できるけど、このC列の件がハッキリしないことには、???。 ※出来ない理由の推測:アルファベットの半角・全角の違いではないでしょうか?
ふと思ったのは、順番に使うだけなら、アルファベットでなくて、数字の方が楽っぽい。 (sin) HANAさんこそっと応援してますので、がむばっつて。。。
私のはsinさんのご推察通り 「C列のアルファベットの重複しない順番」です。 また、同じ組み合わせの重複には対応しておりません。
※出来ない理由ですが例えば、 bとか有るとE列にそれが追加される仕組みになっているはずですので ・・・全角半角は関係ないと思います。 (自分でつくっておいて、断言できない辺りが。)
私の持つ疑問も、sinさんと同様ですのでどうしてこの様なデータなのか もし宜しければ教えていただきたい所存です。
(HANA)sinさん、こそっとありがとう。
FIND関数使ってるかと思ったら、使ってなかった。 でも、CODE関数めっけ。 と思ったら、書き出し用だった。 >・・・全角半角は関係ないと思います。 確かに。。。 じゃー、これか? (←↓無理がありそうですが) 「MATCH 関数では、英字の大文字と小文字は区別されません。」 それとも、おまけのスペースがあるとか? 実は二文字とか? (sin)
どうも質問の仕方に問題がありますね。 つまり可変状態のB列とC列のデータの組み合わせ 例えばB列、そしてC列の任意の文字との 組み合わせ、前Aあるいは中Dまたは後Hなどが F列もしくはG列それぞれ任意に指定して、指定された 同じ行のA列のデータを表示させたいと思っています。
簡単な例題ですと A B C D E F G データ 組合せ 出力セル 1 あ A F AH 2 い B G CH う 3 う C H EI 4 え D I DG 5 お E F BG い
というような具合なのですが、ご理解頂けたでしょうか? (よ〜さん)
え〜と、 その組合せ(並び方 or 順番)をどの様にExcel君に認識させるのでしょうか? 念力は通じませんので、 ●Ms.Rinさんが最初にかかれている様に前期・中期・後期それぞれに対して作業列を設けて、 C列のどれを入れるか入力する。 とか、 ●HANAさんが提示されたE列を作業列としてC列より重複しない様に引き出す。 はたまた、 ●今回よ〜さんsanがかかれているようにE列に任意の順番を入力する。 この場合、元のデータですとB列の前・中・後がE・F・G列の前期・中期・後期との照合となりますから、 C列のアルファベットをE列に入力する事になりますが、これはHANAさんが書かれている方法で、 労せずして、書き出せますよね。 問題があるとすると、順番を決めるのにどんな決め事があるかですが、 順番を決定する規則性があるのなら、その規則を書いてもらわないと。 ないのなら いちいち手入力するより方法がありません。 適当な順番でよいならRAND関数を使う方法もありますが・・・
一番肝心な点が、ここですよ!
(sin)
どうやら、「ご要望のことをするために何が分からないのか」 (その他の疑問は単なる興味ですので、捨て置いても) が上手く伝わっていない様ですが・・・、sinさんの仰る部分です。
C列の組合せの任意の選定方法が 「C列のアルファベットの重複しない順番」 と言うことでよいのであれば >例題では福沢諭吉が中のCでしたが >そのCをBに変えますとその上のセル(G3)に表示されるはずと >思うのですが、うまくいきません。 この部分が不可解ですので詳しく教えてください。
(HANA)
本当に理解が鈍くてご迷惑おかけします。 HANA様の関数を何度も試しまして、何とか理解できました。 間違いなく見事に表示しました。 F・G・H列の決め事ですが最初は不規則な組み合わせを 考えおりましたが、これはA1、B2、C3のように 順序正しく組み合わせた方が いいようですね。
そこで今ひとつお教えいただきたいのですが、 B列の前中後の文字列を他の文字列に 或いはF・G・H列1行目の前期中期の文字列を変更したところ 表示できなかったのですが、いかがなものでしょうか? 本当に何度も申し訳ありません。 (よ〜さん)
本題の質問は 何に変更したいのですか?
興味の質問は 何のデータですか? (これは単なる興味ですので差し障りがある場合は 「差し障りがある」とお答え下さい。)
(HANA)
はい、実は某イベントの大勢(80人程度)の人の役割表を テンキー操作で簡単に配置できる表を作成したいと思っております。 対象となる人のデータに2つの条件をつけて役割表に反映しようというものです。 役割表E列〜G列の見出しは、実は坐、前半、後半というものです。 役名(文字列)はE列〜G列2行〜15行ほどあります。 B列のデータは坐、前、後となります。 C列も実は役名なのですが、簡略表示で1文字にしたいと思っております。
実はこの表を扱う(データを入力する)方が殆どパソコンになじみのない方 〜私もその一人(^_^;)(笑)なのでできるだけ扱い易くしたいと思っています。 (よ〜さん)
役割表の役名はD列に入りますね。 B列のデータは坐、前、後でこれは言えば出番です。 またまた例題を換えるようで恐縮ですが、以下のような表ですね。 A B C D E F G H 1 氏名 出番 役割 坐 前半 後半 2 徳川家康 坐 楽2 踊り手1 安倍真三 3 織田信長 坐 音3 踊り手2 小泉純一 4 明智光秀 後 楽1 踊り手3 聖徳太子 5 福沢諭吉 後 楽3 楽器1 明智光秀 6 安倍真三 前 踊1 楽器2 徳川家康 夏目漱石 7 小泉純一 前 踊2 楽器3 福沢諭吉 8 聖徳太子 坐 踊3 音響1 9 夏目漱石 前 楽2 音響2 10 勝 海舟 後 音3 音響3 織田信長 勝 海舟
以上のように入力セルはBとC列のみです。
(よ〜さん)
-重複するので削除しました。-HANA
質問1 音響1と音響2はC列に出てきませんがE列に存在して良いのですか? (存在する役割名が一覧として書いてある様に見えるのは、 私の希望的観測によるものですかね?)
質問2 B・C列とE列・F1・G1・H1が等しくないため数式が煩雑になります。 (この場合 対応表を作るのが賢明な選択となってくるでしょう。) 入力を簡易にしたいなら、こちらを参考にして「省略して入力」するのではなく 「リストから選ぶ」事にして出番・役割名を統一することは出来ませんか? https://www.excel.studio-kazu.jp/tips/0601/
例えば、それぞれが統一してあり、E列・F1・G1・H1が事前に入力されているなら そんなに難しいことは考えなくても良さそうな気がします。 (リストボックス用にデータをつくる必要もありませんしね。)
(HANA)
これから仕事に出ますので、明日返信させていただきます
(よ〜さん)
はいはい、ごゆっくりどうぞ〜〜。 ・・・じゃなかった、「頑張ってきて下さい。」(笑)
(HANA)
>音響1と音響2はC列に出てきませんがE列に存在して良いのですか?
C列に音の文字にて出ております。
> B・C列とE列・F1・G1・H1が等しくないため数式が煩雑になります。
E列・F1・G1・H1はあらかじめ手入力しております。
>ふと思ったのは、順番に使うだけなら、アルファベットでなくて、 数字の方が楽っぽい(SIN)様
その通りでして 出番や役割は別に一覧にしておいて 入力はB列とC列の間に列を挿入し VLOOKUP関数などをつかって、数値にして テンキー入力したいと思っております。 願わくばリストボックスは使わない方法にしたいのですが・・
C1:C10の中には“音3”しか出てないですが・・・・ 「E列はあらかじめ手入力」と言うことですので追求しないことにします。 それにしても、↑の一言を最初に書いて於いていただければ みなさんが、こんなに色々数式を作る必要が無かったのですがね。
VLOOKUP関数等で役職を表示させるのは、良いと思いますよ。 【最終的な】レイアウトを教えてください。
「入力されている数値を小さい順に並べる」は関数で出来ますので “小さい順に並べて、VLOOKUP関数等で役職を表示”させれば E列に手入力する必要が無くなりますが・・・・。 どのようになさりたいのですかね?(今一つ状況が分からないのですよね。)
(HANA)
質問が要領を得ずご迷惑をお掛けいたしております。 よく考えているつもりでもぬか穴だらけ。。申し訳ありません。m(_ _)m 未熟さ加減に我ながら少々落ち込んでおります。 しかしあきらめず何とかこの問題をクリアいたしたいと念願いたしております。 E列の役割が手入力であること、本当に最初に申し述べるべきでした。反省・・
>【最終的な】レイアウトを教えてください。 とのことですのでもう一度修正して表示してみます. B列とC列は検索値、D列とE列はVLOOKUP関数を入力してあります D列とE列に簡略表示させるのは入力の際、視覚的に分かりやすくするためです。 果たしてこれで状況がおわかり頂けるでしょうか?
A B C D E F G H I J
[1] (入力) (出力) (役割一覧) [2] 氏名 出 役 出 役 役割 坐 前半 後半 [3] 徳川 2 3 前 踊3 踊り1 安倍 [4] 織田 1 4 坐 楽1 踊り2 福沢 夏目 [5] 明智 3 6 後 楽3 踊り3 徳川 [6] 福沢 2 2 前 踊2 楽器1 織田 [7] 安倍 2 1 前 踊1 楽器2 小泉 [8] 小泉 1 5 坐 楽2 楽器3 明智 [9] 聖徳 3 3 後 音3 音響1 [10] 夏目 3 2 後 踊2 音響2 勝 [11] 勝 1 8 坐 音2 音響3 聖徳
(参照表)VLOOKUP 出番 役割 1 坐 1 踊1 2 前 2 踊2 3 後 3 踊3 4 楽1 5 楽2 6 楽3 7 音1 8 音2 9 音3 H3、I3、J3以下に入る関数を知りたいと思っております。 作業列が必要なら差し支えはありません。 (よ〜さん)
其処まで分かってしまえば、そんなに難しくは無いですよ。 ・・・たぶん・・・。
「作業列を作っても良い」と言う事ですので、G列を挿入して 役割の参照表に対応する数字を入力してください。 一つずれますので、I3セル(坐−踊り1)に入れる式は =IF(SUMPRODUCT(($B$1:$B$11=COLUMN(A1))*($C$1:$C$11=$G3)*ROW($A$1:$A$11))=0,"", INDEX($A$1:$A$11,SUMPRODUCT(($B$1:$B$11=COLUMN(A1))*($C$1:$C$11=$G3)*ROW($A$1:$A$11)))) です。コピペ後I3セルをコピーし、必要範囲に貼り付けしてください。
人数が増えた場合は、$A$11,$B$1:$B$11,$C$1:$C$11の範囲を変更してください。 SUMPRODUCT関数はこちらをご参考にどうぞ。 https://www.excel.studio-kazu.jp/mag2/backnumber/mm20040824.html https://www.excel.studio-kazu.jp/lib/e3h/e3h.html
長い式に見えますが、ほとんど重複しています。 SUMPRODUCT関数を「行番号」と言う言葉に置き換えると =IF(行番号=0,"",INDEX($A$1:$A$11,行番号))となります。
I3を例に少しだけ書いておきますと SUMPRODUCT関数を使って、 SUMPRODUCT(($B$1:$B$11=COLUMN(A1))*($C$1:$C$11=$G3)*ROW($A$1:$A$11)) [ B列 が 1 ]で[ C列 が 1]の【 行番号 】 を求め INDEX関数で、名前を表示(INDEX($A$1:$A$11,求めた行番号))させています。 最初がIF関数で始まっているのは、該当の出番-役割の人が居ないときは 空欄「""」を返すためです。(無視してると、INDEX関数でエラーが出ます。) 実際に =SUMPRODUCT(($B$1:$B$11=COLUMN(A1))*($C$1:$C$11=$G3)*ROW($A$1:$A$11)) この式をどこかのセルに入れ、右下にコピーし計算させた結果を 確認してみると分かりやすいかもしれません。
(HANA)
思えば長い道のりでした。それも全ては私の責任なんですが・・
最後に分かりやすく関数を言葉に置き換えてご教示下さるなど 本当にご親切な対応に心より感謝いたしております。 お陰様で理解の鈍い私にも心底納得できました。
やはり表の場合はとくにきちんとしたレイアウトが欠かせないこと、 そして相手にこちらの思いを伝えることの難しさを痛感しました。
エクセルはとても素晴らしいソフトであると常日頃思っておりますが、 まだまだこれからですので、今後ともご指導お願い申し上げます。 SIn様、。。。Ms.Rin〜♪♪様 他みなさま本当に有り難うございました。
(よーさん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.