- ベストアンサー
Excelで特定の条件に基づいてデータを選び出し、別のセルに代入する方法はありますか?
- エクセルのA列の数値をB列から選び出し、それに対応するC列の値をD列に代入する方法を知りたいです。
- 具体的には、A列の値と一致するB列の値を見つけ、その行にあるC列の値をD列にコピーして表示したいです。
- 質問の例では、A1の値0.1に対応するB1の値0.1を見つけ、それに対応するC1の値5をD1に表示したいということです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下の行を変更してみてください。 Sub 検索() Dim mR As Long Dim wStr As String Dim c As Range ' With ActiveSheet mR = .Cells(Rows.Count, "A").End(xlUp).Row For wI = 1 To mR wStr = .Cells(wI, "A") 'Set c = .Range("B1:B" & mR).Find(wStr) ↓ Set c = .Range("B:B").Find(wStr) '←変更 If Not c Is Nothing Then .Cells(wI, "D") = .Cells(c.Row, "C") End If Next End With End Sub
その他の回答 (3)
- pkh4989
- ベストアンサー率62% (162/260)
セルの表示形式は文字列でしょうか。 文字列の場合は、文字列後ろのスペースが有るかを確認してください。 後、表示上の内容と実際に入力された内容が違う場合は検索されません。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 D1に=IF(COUNTIF(B:B,A1),VLOOKUP(A1,B:C,2,FALSE),"")を設定、下方向にコピーして下さい。 抽出できない(A列の値がB列に存在しない)場合、空白としています。
補足
ご回答ありがとうございます。 どうにか今立ちはだかっていた問題を解決することができました。 補足なのですが、表の一部でこのようなことになってしまいました。 この表は実際に私が行ったデータです。 A B C D 0 0 0 0 0.016 0.001 0 #N/A 0.033 0.002 0 0.05 0.003 0 0.066 0.004 0 0.083 0.005 0 0.1 0.006 0 -3 0.116 0.007 -1 #N/A 0.133 0.008 -1 -3 0.15 0.009 -1 -3 0.166 0.01 -2 #N/A 0.183 0.011 -2 #N/A 0.2 0.012 -2 -3 0.216 0.013 -2 #N/A 0.233 0.014 -3 #N/A 0.25 0.015 -3 -3 0.266 0.016 -3 -3 0.283 0.017 -3 #N/A 0.3 0.018 -3 -3 0.317 0.019 -3 #N/A 0.333 0.02 -3 #N/A もしよろしければ、なぜこのようになるのか補足をお願いします。
- pkh4989
- ベストアンサー率62% (162/260)
マクロです、試してみてください。 Sub 検索() Dim mR As Long Dim wStr As String Dim c As Range ' With ActiveSheet mR = .Cells(Rows.Count, "A").End(xlUp).Row For wI = 1 To mR wStr = .Cells(wI, "A") Set c = .Range("B1:B" & mR).Find(wStr) If Not c Is Nothing Then .Cells(wI, "D") = .Cells(c.Row, "C") End If Next End With End Sub マクロ貼付 (1) Alt+F11 (ツール → マクロ → Visual Basic Editor) →「挿入」→「標準モジュール」で表示される画面に貼り付け (2) 実行は、(F5を押す)又は、シート画面に戻って Alt+F8を押してマクロ一覧からマクロ名を選択して実行
補足
ご回答ありがとうございます。 下の表は実際に私が行ったものです。 0 0 0 0 0.016 0.001 0 -3 0.033 0.002 0 0.05 0.003 0 0.066 0.004 0 0.083 0.005 0 0.1 0.006 0 -3 0.116 0.007 -1 -3 0.133 0.008 -1 -3 0.15 0.009 -1 -3 0.166 0.01 -2 -3 0.183 0.011 -2 -3 0.2 0.012 -2 -3 0.216 0.013 -2 -3 0.233 0.014 -3 -3 0.25 0.015 -3 -3 0.266 0.016 -3 -3 0.283 0.017 -3 -3 0.3 0.018 -3 -3 と、空欄ができ、またこれより下は何も表示されませんでした。 よろしければ対策を教えてください。
補足
ご回答ほんとにありがとうございます。 おかげさまでここまで仕上げることができました。 何度も補足申し訳ありませんが、 A列の数値は必ずB列にあるはずなのですが、 D列3~6の箇所がどうしても表示されません。 A B C D 1 0 0 0 0 2 0.016 0.001 0 -3 3 0.033 0.002 0 4 0.05 0.003 0 5 0.066 0.004 0 6 0.083 0.005 0 7 0.1 0.006 0 -3 8 0.116 0.007 -1 -3 もしよろしければ解決方法を教えてください。