プロが教えるわが家の防犯対策術!

AとBの表からCという表を作成したいです。
C表の指定列にはAから参照してる場合は指定列の値からA1,A2,A3と入力し、B列から参照してる場合はBとしたいです。
どのような関数を書けばいいでしょうか。

「エクセルの関数について教えてください」の質問画像

A 回答 (4件)

こんにちは



わざわざ形式を変えたり、文字の置き換えをしたりと難しくしているとしか思えません。
きちんと手順を踏めば、何の問題もなく実現できると思いますが、面倒な形式にしておいて一気に結果を求めたいというのは、ご自分で自分の首を絞めているとしか・・


セルのレイアウトも不明ですが、「A」とあるのがA1セル、「B」とあるのがD1セル、「C」がF1セルと仮定しました。
そのレイアウトでよければ、F3セルに
=VSTACK(IFS(OFFSET(A3,,,COUNTA(A:A)-2,2)="①","A1",OFFSET(A3,,,COUNTA(A:A)-2,2)="②","A2",OFFSET(A3,,,COUNTA(A:A)-2,2)="③","A3",1,OFFSET(A3,,,COUNTA(A:A)-2,2)),IFS(COLUMN(OFFSET(C3,,,COUNTA(D:D)-2,2))=3,"B",1,OFFSET(C3,,,COUNTA(D:D)-2,2)))

の式を入力すれば、ご提示の結果が得られます。

※ スピル機能が使えるバージョンを想定しています。(365ほか)
※ 項目タイトルやA,B,Cの文字もご提示のままに入力されているものと想定しています。
(データ数をカウントする際に考慮する必要があるので・・考慮しなくても良い式にもできますが、式が長くなるので割愛しました。そのようにしたい場合は、ご自身でチャレンジしてください)
    • good
    • 0

・書かれている通りのデータである。


・実際の入力セルがわからないので1行目からデータが入っている前提。
・列はA、B、D、F、G列を使用していてF1に入れる式である。

という前提で、

F1=IF(COUNTIF($D$1:$D$3,G1),"B","A"&CODE(INDEX($A$1:$A$3,MATCH(G1,$B$1:$B$3,0)))-11552)

範囲は任意に広げてください。
どちらにもなかった時のエラー処理はしていません。
    • good
    • 0

C判定=


IF ( ISERROR(VLLOKUP(Cid,Aid範囲,1,1,false)),
   IF( ISERROR(VLLOKUP(Cid,Bid範囲,1,1,false)),"err","B"),
  "A" )
 )

ただ、この場合は、A1-3の区別が無いです。

A1-3の区別が、A判定①-③のことであれば、
VLOOKUPのA表検索範囲を3分割して、
上のIF文の階層を増やせばよいと思います。
    • good
    • 0

> C表の指定列にはAから参照してる場合は指定列の値からA1,A2,A3と入力し、B列から参照してる場合はBとしたいです。



これはセルに書き込み関数を使った数式で出来ることではありません。
Excelマクロという関数を使ったプログラムを作成する必要があります。
そのプログラムの処理手順は上記の引用したご試問にある文章を処理手順としたVBAで書かれたものです。

で。
「C表の指定列」とありますが、この指定は具体的にどういう操作で行うのかを決めましょう。
「C表の指定列にはAから参照してる場合は」、「B列から参照してる場合」の「場合」とは具体的にどう決まるのか・・・利用者が何らかの操作で指定するのか、A表、B表の内容の何処かを比較することで決まるのか、具体的な仕様を明確にしないと処理手順を文章に書き表すことが出来ません。

プログラムは人が「こういうことをしたい!」、「こういう入力をするとこういう処理をしてこういう結果を出力したい!」という要求を実行するための処理手順をプログラミング言語で書き表したものです。それを書くには、ますはその具体的処理手順を自然言語(ほとんどの日本人にとっては日本語)で書き表すことが出来ないと実現できません。

参考まで。
    • good
    • 0

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