昨日も似たような質問をしたのですが、新たに困った事が出てきたので
質問します。

Sheet1のセルに例えば下記のようにA列に番号、B列に苗字、C列に名前
    A  B   C
 1  1  山田 太郎
 2  2  田中 一郎
 :  :  :   :
と記載されていて、
Sheet2のセルB1に苗字、C1に名前を入力したらA1に自動的にその人の
番号が表示されるようにしたいのですが…。
VLOOKUP関数をうまく使えば出来るのでしょうか??
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

ソート C++」に関するQ&A: C++ ソートのやり方

A 回答 (3件)

検索のキーが何なのかを把握して下さい。


A列の数字ではなくB+Cの文字列ですね。
従って、B+Cの文字列で昇順に並び替えないと番号は導き出せません。

つまり、Sheet1のA列はB+C、B列は数字、C列は姓、D列は名とします。

検索文字はSheet2のC+Dですから、文字列を結合させる関数を使います。

検索結果の表示はB列ですから2になります。

Sheet1の列順番を変える事も可能ですが、VLOOKUPを理解してからの方が良いかと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
VLOOKUPでなくてもよいのですが、
具体的にどのような関数を使えば可能でしょうか。
よろしければ教えていただけないでしょうか。
初心者なもので。。

お礼日時:2007/09/12 08:57

No.1の方の方法ですと下記のように入力します。



Sheet1
   A  B  C  D
1  ア  1  山田 太郎
2  イ  2  田中 一郎
:  :  :  :  :
※B~D列のデータをC列をキー列として昇順でソート。
※アには「=C1&D1」。これをイ以下に複写。

Sheet2
   A  B  C  D
1  ア  カ
2  イ  キ
:  :  :  :  :
※アには「=C1&D1」。これをイ以下に複写。
※カには「=VLOOKUP(A1,Sheet1!$A$1:$B$10,2)」。これをキ以下に複写。
(ただし、データが10行目まであるとしたとき)

これで、C・D列にそれぞれ姓名を入力すれば、B列に対応する数字が表示されます。
    • good
    • 0

次の数式は如何でしょうか。


シート2のA1に次の数式を設定し、下方向にコピーして下さい。(仮で表範囲はA1:C10としていますので調整して下さい)
=IF(COUNTBLANK(B1:C1)=0,INDEX(Sheet1!$A$1:$A$10,SUMPRODUCT((CONCATENATE(Sheet1!$B$1:$B$10,Sheet1!$C$1:$C$10)=B1&C1)*ROW(Sheet1!$A$1:$A$10))),"")
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
VLOOKUP使わなくても↑↑のようなやり方があるんですね。凄いです。
申し訳ないのですが、ご存知でしたら教えてください。
↑↑でやってみたんですが、Sheet2で入力ミスしたときも、
関係の無い数値が出てきちゃいます。
これは諦めるしかないんでしょうか??
よろしくお願いいたします。

お礼日時:2007/09/12 22:37

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

このQ&Aと関連する良く見られている質問

QA列 B列 C列 に値が入っていたら「★」、入っていなかったら「-」

ある範囲の列に値が
入っていたら「★」
入っていなかったら「-」を表示させたいです。

1 A列 B列 C列
2 100        →★
3    100 50   →★
4           →-


if関数で =IF(A2,"★","-") とやればできるのですが
できれば、A2~C2 という風に範囲指定したいです。

ご教授よろしくお願いします。

Aベストアンサー

私は、このような時count関数を使います。
=count(a1:c1) とすると、この範囲で数値の入っているセルの数を返してきます。
よって、
=if(count(A1:c1)>0,"★","ー")
とすればいいと思います。

Q「C = A + (B - A % B)」とすると「C」が必ず「B」の倍数になるのは何故ですか。

※数値はすべて整数だと思ってください。

表題の件ですが、例えば、「A」が入力された文字数、「B」が基準となる文字数とします。
すると「C = A + (B - A % B)」で「C」に代入される数値はかならず「B」の倍数になることが保証されています。

具体的には:
A=15、B=16の場合 => C = 15 + (16 - 15 % 16) なので C は 16
A=17、B=16の場合 => C = 17 + (16 - 17 % 16) なので C は 32
A=3、B=10の場合 => C = 3 + (10 - 3 % 10) なので C は 10
A=10、B=3の場合 => C = 10 + (3 - 10 % 3) なので C は 12

となり、入力された文字数が基準となる文字数に満たない場合は基準まで文字数を補填し、入力が基準以上の場合は基準の倍数まで文字数を補填することになります。

そうなることは分かるのですが、「なぜそうなるのか?」がうまく説明できずモヤモヤしています。

「A」が「B」より小さいときは、まだ分かるのですが(基準に足りない分を足しているだけなので)、「A」が「B」より大きい場合に、「C」が必ず「B」の倍数になることをどう証明したら良いでしょうか。

皆さんのお知恵を拝借できれば幸いです。

よろしくお願いします。

※数値はすべて整数だと思ってください。

表題の件ですが、例えば、「A」が入力された文字数、「B」が基準となる文字数とします。
すると「C = A + (B - A % B)」で「C」に代入される数値はかならず「B」の倍数になることが保証されています。

具体的には:
A=15、B=16の場合 => C = 15 + (16 - 15 % 16) なので C は 16
A=17、B=16の場合 => C = 17 + (16 - 17 % 16) なので C は 32
A=3、B=10の場合 => C = 3 + (10 - 3 % 10) なので C は 10
A=10、B=3の場合 => C = 10 + (3 - 10 % 3) ...続きを読む

Aベストアンサー

失礼しました。
先の回答で、r は不要でした。混乱させてしましました。

一言で言えば、
「ある数を別の数で割って、あまりが出たら、ある数から予めあまりの分を引いたものは、割り切れる」です。(あまり0になるので)

さて、一般に、AをBで割ったときに、商が n あまりが r という関係は、
A = nB + r と書けます。
右辺のうち、nB は B で割ると(割り切れて)n ですし、その後、r が余ります。

質問の式では、あまりが A % B という式で表されていますから、あまりをこれで置き換えると

A = nB + (A % B) になります。
質問の式の右辺
A + (B - A % B)
の順序を入れ替えると

A - (A % B) + B です。
A - A % B は、上述の通り、Bで割り切れて、(商を n とすると)
A - A % B = nB と表現できます。

あとは、+B ですが、一般に、
「ある数で割り切れるふたつの数を足したり引いたりした結果も、その数で割り切れる」と言えます。
だから、A - A % B (ここまで、Bで割り切れる) + B(これも、Bで割り切れる)の結果は、Bで割り切れます。

式で表現すると、

A - A%B + B = nB + B = (n + 1)B なので、Aは、商 n + 1 (ここで、n は、A をBで割った商)で割り切れます。

失礼しました。
先の回答で、r は不要でした。混乱させてしましました。

一言で言えば、
「ある数を別の数で割って、あまりが出たら、ある数から予めあまりの分を引いたものは、割り切れる」です。(あまり0になるので)

さて、一般に、AをBで割ったときに、商が n あまりが r という関係は、
A = nB + r と書けます。
右辺のうち、nB は B で割ると(割り切れて)n ですし、その後、r が余ります。

質問の式では、あまりが A % B という式で表されていますから、あまりをこれで置き換えると

A = nB + (A ...続きを読む

QC列の値の右下の十字を下にドラッグにて値や式をコピーするとき、指定した列(B列)に値のある行だけコピーに反映させたい

例えば、
A:1からA:30まで順番に1日から30日まで入力
B列にはA列の中で通院した日のみ、「1」と入力。
C列では通院一回あたりの交通費1230円を入れるが、B列に値が入力されてる行だけC列に1230円と入力したい。
この場合C列の先頭に1230と入力して下にドラッグしてコピーすると、通院していない日も全てコピーされてしまう。通院した日だけ1230と、楽に入力するにはどうしたらいいか?(一個一個だと面倒なので)

それから、B列に「1」ではなく、「★」などの記号を入れ、オートSUMなどでB列の「★」の総数を見る方法はありますか?現在はわからないので「1」と入力し、オートSUMで処理しています。

スミマセンがどなたか教えてください!

Aベストアンサー

C1に下記1行を入れてください。
=IF($B1=1,1230,"")
それをC列にコピーしてください。
C2 には 下記の様にはいります。
=IF($B2=1,1230,"")
これで B列に1があった場合だけ C列に値が表示されます。

数の数え方ですが、任意のセルに下記の式を入れると 1 の数が数えれます。
=COUNTIF(B1:B30,1)
同様に下記で ★の数が数えれます。
=COUNTIF(B1:B30,"★")

C列の式も下記で対応できます。
=IF($B1="★",1230,"")

QRange("A1:A100")をセルから

Range("A1:A100")をセルから読み取りたいと考えております。

Win7 Excel2007を使っております。

各セル
B1=A
B2=1
B3=A
B4=100

説明が上手くできずすみません

宜しくお願い致します。

Aベストアンサー

row1 = Range("B2")
col1 = Range("B1")
row2 = Range("B4")
col2 = Range("B3")

Range(col1 & row1 & ":" & col2 & row2).Select

とか。

QA列に同文字がありB列に個数が表示する関数

A列に同じ文字がありB列に個数が表示される関数ないですか?
事務の仕事をしていえて2万件の中から同じ文字を探してと言われ
イメージはこんな感じです。

A列 B列
田中 2
山田 1
田中 2
中村 1


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

Aベストアンサー

B1に

=COUNTIF($A:$A,$A1)

として、必要なだけ下にフィルしてください


人気Q&Aランキング

おすすめ情報