アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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も見ています