人に聞けない痔の悩み、これでスッキリ >>

はじめまして。
エクセルが得意な方よろしくお願いします。
文字列を検索して、違うセルにその文字列から置き換えをしたデータを表示させたいです。

例えば

A列に品名が入っています。(りんご、みかん、なし・・・・)
B列にその品名の価格が入っています。(100、200、300・・・・)

C列に品名が型番とともに複数書いてあります。
(りんご-01、みかん-01、りんご-02、なし-01、、、)

C列の文字列を検索して、A列に記載した文字列と適合した場合、D列にB列の価格を表示させる。

このような検索置き換え?はSUBSTUTEで出来そうでしたが、上手くいきません。

説明がなかなか上手く伝えられず申し訳ないです。
おわかりの方、よろしくお願いいたします。

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

A 回答 (3件)

同じシートに 基準となる 価格表 では あとあと 扱いにくいかも。




Sheets("価格表")  シート名は基準なので固定
場所は自由 品名の 右に 価格
りんご100
みかん200

データのあるシート("データ") シート名は任意
B列2      C列 ユーザー定義「価格表から価格抽出」設定
りんご-01=価格表から価格抽出(B2)
みかん-05=価格表から価格抽出(B3)

同じシートに 価格表を置いて 参照するなら
Sheets("価格表").Cells.Find(検索品名)
 を  Range("a:a").Find(検索品名)  ・・に変更か
   Range("価格表").Find(検索品名)  ・・に変更
 して 価格表の場所の名前を("価格表")にするなど・・

↓マクロの 標準モジュールに追加↓

Function 価格表から価格抽出(セル)

'セパレータ '半角/全角 ハイフン "-"or "-"
検索品名 = Trim(Split(セル.Value, "-", 2, 1)(0))
If Not Sheets("価格表").Cells.Find(検索品名) Is Nothing Then
価格 = Sheets("価格表").Cells.Find(検索品名).Offset(0, 1).Value '品名の右の価格を取得
Else
価格 = "m(_ _)m" '見つかりません。
End If
価格表から価格抽出 = 価格

End Function
    • good
    • 0

セルD1に


=OFFSET($A$1,MATCH(LEFT(C1,LEN(C1)-3),A:A,0)-1,1,1,1)*VALUE(RIGHT(C1,2))
を代入し、下へドラッグしてください。Cに何も入っていないと「#VALUE」が表示されますが、
これを嫌うのであれば、ISERR関数を使ってさらに条件分岐をしてください。ちなみにこんなに長くなりました。
=IF(ISERR(OFFSET($A$1,MATCH(LEFT(C1,LEN(C1)-3),A:A,0)-1,1,1,1)*VALUE(RIGHT(C1,2))),"",OFFSET($A$1,MATCH(LEFT(C1,LEN(C1)-3),A:A,0)-1,1,1,1)*VALUE(RIGHT(C1,2)))


ちょっと長いですか? よろしければ前半の式について以下数式の説明をしますね。

一応、LEFT(C1,LEN(C1)-3) で、セルC1の「りんご-01」という文字列から「りんご」を取り出しています。
また、VALUE(RIGHT(C1,2)) で、セルC1の「りんご-01」という文字列から数字の「1」を取り出しています。
したがって上の式は

=OFFSET($A$1,MATCH("りんご",A:A,0)-1,1,1,1) * 1

と言い換えられます。最後の「*1」はりんごの数量、前半がりんごの単価を求めています。
MATCH("りんご",A:A,0)
が、A列で「りんご」が何行目にあるかを探す式ですから、例ではセルA1に「りんご」があるので =1 となります。
で、OFFSET($A$1,1-1,1,1,1)と言い換えられます。これは、セルA1から下へ1-0、右へ1ずらした、高さ1、幅1のセルの値ということですので、つまりセルB1の値を指すことになります。
    • good
    • 0

VLOOKUPを使って


検索する値(-NNを切り取って)
LEFT(C1,LEN(C1)-3)
検索する範囲
An:Bm
取り出す列
2
検査の型
FALSE
でやればいいと思います
例:
D1
=VLOOKUP(LEFT(C1,LEN(C1)-3),A1:B20,2,FALSE)
以下コピー
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Q【EXCEL】指定したセルの値を他セルに代入する

EXCELにおいて、
あるセルD1で記入したアルファベットX(列指定情報)
あるセルE1に記入した数字Y、(行指定情報)
において、
あるセルF1=X行Y列のセルの値

というふうにするにはどのようにすればよろしいでしょうか?
よろしくお願いいたします。

以下は例です
----------------------------
# A B C D E F
1 12 ## A 3 34
2 23
3 34
4 54
5 89
----------------------------

Aベストアンサー

No1です。INDIRECT関数がありました。
=INDIRECT(D1&E1)

QExcel 指定の文字列を含むとカウントするようにしたい場合は?

ただいまエクセルと格闘中の初心者です。
関数等はオートSUMくらいしか使ったことがなく、必要時にいちいち調べているような状態です。
今回は文字列を含むとカウントするところで躓いております。

表の中から特定の文字列を含むとカウントするようにしたい時COUNTIFを使うと思うのですが、この場合正確にその言葉じゃなければカウントされませんよね?

例えば「ボールペン」「サインペン」「シャープペン」のようなペン類をまとめてカウントしたい時、ペンだけで認識してくれるようにすることは可能なのでしょうか?
COUNTIF関連で探してみているのですが、中々思うような検索ができていません(もしくはわからずに見逃しているのかも?)

エクセルにお詳しい方、アドバイスを頂ければと思います。
よろしくお願い致します。

Aベストアンサー

検索条件に「*ペン*」としてみてはいかがですか。

ちなみに上記は「ペン」がどこかにあるものを対象とする。
「*ペン」は文字列がペンで終わるものを対象にする。
「ペン*」は文字列がペンで始まるものを対象とする。

Qエクセル 同じ値を探して隣の数値をコピーする

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

Sheet1の1行目には見出しがあり、A列とB列の2行目から下にデータが入っています。(約200行)
A列     B列
田中    13
山本     8
谷口    11
鈴木    6
佐々木    9
奥村     15




Sheet2のA列1行目から下には別のデータが入っています。(約600行)
A列
太田川
山村
田中
多賀先
鈴木
奥村
幸田




Sheet2のA列のデータと完全一致するデータ(名前)をSheet1のA列から探して、同じ名前があれば、その隣のB列にある数値をSheet2のB列に貼り付ける。
見つからない場合はSheet2のB列は空欄のままです。
Sheet2
A列      B列
太田川     
山村
田中    13
多賀先
鈴木     6
奥村    15
幸田


Aベストアンサー

シート2のB2セルには次の式を入力して下方にドラッグコピーします。

=IF(COUNTIF(Sheet1!A:A,A2)=0,"",VLOOKUP(A2,Sheet1!A:B,2,FALSE))


人気Q&Aランキング