電子書籍の厳選無料作品が豊富!

エクセルで以下の作業を簡単にする方法を教えて下さい。

1行目には見出しがあり、A・B・C・D列の2行目から下にデータが入っています。(約3000行)
A列 B列 C列 D列
111 空白 222 AAA
222 空白 333 BBB
333 空白 999 CCC
444 空白 444 DDD
555 空白 777 EEE


A列の数値をC列から検索し、完全に一致するD列の文字列をB列の空白に挿入したいです。(約3000行)

関数での作業は難しそうなので、VBAだと助かります。
使用エクセルは、Excel 2010です

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

  • すいません。やりたい事が大きくなってきてしまい手におえない状態です。
    上記の内容に補足したいです。

    A列の数値をF列から検索し、完全に一致するG列の文字列をB列の空白に挿入。
    一致した場合、H・I・Jの文字列を、C・D・E列へ挿入。

    ド素人なのに、やりたい事が広がってしまってすいません。
    結果は、下の画像のようにでると嬉しいです。

    「エクセル 同じ値を検索して、隣の数値をコ」の補足画像1
      補足日時:2016/06/01 10:10

A 回答 (5件)

まずは、行列/検索関数をマスターしてください


OFFSET関数は、読み飛ばして結構です
http://excel-ubara.com/excel3/EXCEL015.html
No.4のhallo-2007さんの回答でひき数を合わせるだけでできることが分かるはず。

冗長部分をすっきりさせてみました
B2セルに
=CHOOSE(SUM(1*(COUNTIF($F:$F,$A2)>={0,1,2})),"",
INDEX(G:G,MATCH($A2,$F:$F,0)),"重複")
右へ下へオートフィル
「エクセル 同じ値を検索して、隣の数値をコ」の回答画像5
    • good
    • 1
この回答へのお礼

仰る通り、行列/検索関数をマスターする必要がありますね。
しかしながら、何から手を付けて良いのかさっぱりわからず
焦りと時間だけが過ぎてしまっていました。
ありがとうございます、本当に助かりました。
これから、しっかりと勉強して行きたいとおもいます。
参考になるような、サイト等あればご教授お願いします。

お礼日時:2016/06/01 15:04

難しく考えずに Vlookup関数ではダメでしょうか?


=Vlookup(A2,C:D,2,Flase)
でA2に対応するD列に表示されますよね。
もし、なければエラーです。
複数ある場合も考量すると
=IF(COUNTIF(C:C,A2)>1,"重複があり",IF(COUNTIF(C:C,A2)=0,"該当なし",VLOOKUP(A2,C:D,2,FALSE)))
で下へコピーしてみてはいかがでしょうか。
    • good
    • 2
この回答へのお礼

ありがとうございます。
Vlookup関数ですよね、なぜか上手く出来ないんですよね。
複数ある場合の関数は上手く出来ました、ありがとうございます。
ちなみに、C列の文字列にA列の類似文字列があった場合、”類似あり”とメッセ出すことは可能でしょうか?
A列:AAA C列:AABといった感じです。

お礼日時:2016/06/01 09:07

恐らく3000行程度ならNo2の方法が一番早い。


ただ、C列に重複がある場合は結果は出ないはずです。

以下のサンプルコードでは、C列の重複2個までならメッセージがでます。
(3個以上は一緒。最初と次に見つかった行だけ表示している)

For i = 2 To ActiveSheet.UsedRange.Rows.Count
isMatched = False
matchedRow = 0
For n = 2 To ActiveSheet.UsedRange.Rows.Count

If (Cells(i, 1).Value = Cells(n, 3).Value) Then
If isMatched Then
MsgBox n & "行目と" & matchedRow & "行目が重複してる:" & Cells(n, 3).Value
GoTo nextloop
End If

Cells(i, 2).Value = Cells(n, 4).Value
isMatched = True
matchedRow = n
End If
Next n
nextloop:
Next i
    • good
    • 1
この回答へのお礼

ありがとうございます。
VBAのコードですよね?全くのど素人ですので上手く出来ませんでした。
せっかくご回答頂いたのに申し訳ありません。

お礼日時:2016/06/01 08:56

直接的な関数はないが、関数を組み合わせた数式なら


B2セルに
=IF(ISNA(MATCH(A2,C:C,0)),"",INDEX(D:D,MATCH(A2,C:C,0)))
フィルハンドルダブルクリック

VBAは苦手なのでほかの方に譲ります
「エクセル 同じ値を検索して、隣の数値をコ」の回答画像2
    • good
    • 1
この回答へのお礼

ありがとうございます。関数の組み合わせですね。
ちなみに、C列に重複した数値があった場合には、B列に何かしらのメッセが出るようにとか出来るんでしょうか?

お礼日時:2016/05/31 17:16

=IF(A2=C2,D2,"")


これをコピーして、B2セルに貼り付ける。
そしてさらにB2セルを必要な行までコピーする。

もしもB列に何らかの値が記入されていて、B2セルから連続でコピーできないなら、
B列を選択して、Ctrl+Gでジャンプを呼び出し、セルの選択から「空白セル」を選んだ後に貼り付ける。
    • good
    • 1
この回答へのお礼

ありがとうございます。
C列にソートがかけれないので、上手く出来ませんでした。
ご回答ありがとうございました。

お礼日時:2016/06/01 08:58

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

このQ&Aを見た人はこんなQ&Aも見ています