• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelについての質問です。)

Excelで特定の条件に基づいてデータを選び出し、別のセルに代入する方法はありますか?

このQ&Aのポイント
  • エクセルのA列の数値をB列から選び出し、それに対応するC列の値をD列に代入する方法を知りたいです。
  • 具体的には、A列の値と一致するB列の値を見つけ、その行にあるC列の値をD列にコピーして表示したいです。
  • 質問の例では、A1の値0.1に対応するB1の値0.1を見つけ、それに対応するC1の値5をD1に表示したいということです。

質問者が選んだベストアンサー

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.3

以下の行を変更してみてください。 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

starmotoki
質問者

補足

ご回答ほんとにありがとうございます。 おかげさまでここまで仕上げることができました。 何度も補足申し訳ありませんが、 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 もしよろしければ解決方法を教えてください。

その他の回答 (3)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.4

セルの表示形式は文字列でしょうか。 文字列の場合は、文字列後ろのスペースが有るかを確認してください。 後、表示上の内容と実際に入力された内容が違う場合は検索されません。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 D1に=IF(COUNTIF(B:B,A1),VLOOKUP(A1,B:C,2,FALSE),"")を設定、下方向にコピーして下さい。 抽出できない(A列の値がB列に存在しない)場合、空白としています。

starmotoki
質問者

補足

ご回答ありがとうございます。 どうにか今立ちはだかっていた問題を解決することができました。 補足なのですが、表の一部でこのようなことになってしまいました。 この表は実際に私が行ったデータです。 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)
回答No.1

マクロです、試してみてください。 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を押してマクロ一覧からマクロ名を選択して実行

starmotoki
質問者

補足

ご回答ありがとうございます。 下の表は実際に私が行ったものです。 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 と、空欄ができ、またこれより下は何も表示されませんでした。 よろしければ対策を教えてください。