• 締切済み

セルの文字列にあうセルに数値を移動させる。

VB初心者で頑張っているのですが なかなかうまく作成できないので、よろしくお願いします。 シート1のB4には もも、りんご、みかん のどれかが入力されます。そしてC5には単価が入力されています。 もしシート1のB4にももが入力されたらももの単価(シート1のC5の値)をシート2のA2へ、 もしシート1のB4にりんごが入力されたらりんごの単価(シート1のC5の値)をシート2のA5へ、 もしシート1のB4にみかんが入力されたらみかんの単価(シート1のC5の値)をシート2のA8へ 値を移動させたいと思っています。 できそうなのですが、どうしてもできません。 どうぞよろしくお願いします。

  • orbmm
  • お礼率28% (2/7)

みんなの回答

  • NURU_osan
  • ベストアンサー率50% (297/593)
回答No.1

会社では使ってるんですが、自宅のPCにはExcelが入っていないのでうろ覚えで回答します。 Private Sub WorkSheet_Change(Byval Target As Range) If Target.Address="$B$4" Then  Select Case Target.Value   Case "もも"    WorkSheets("Sheet2").Range("A2").Value=Range("C5").Value   Case "りんご"    WorkSheets("Sheet2").Range("A5").Value=Range("C5").Value   Case "みかん"    WorkSheets("Sheet2").Range("A8").Value=Range("C5").Value  End Select End If End Sub でいけると思います。 ただし、これはC5に既に値段が入っていないと動作しません。 >もも、りんご、みかん のどれかが入力されます。そしてC5には単価が入力されています。 という質問文から、C5には予め単価が入力されているという前提で考えてあります。あと、フールプルーフは考えていませんので、C5に数値以外のものが入力されていてもやっぱり書き写してしまいます。 ま、上の構文の一部をちょっと変えればどのようにでも対応できますので、いろいろ自分で試してみてください。 それぞれの命令文の意味は確認した上で、試してみてくださいね。

orbmm
質問者

補足

本当に初心者ですみません。 Privete Subの実行ができません。 できればSubから始めたいのですが できますか?

関連するQ&A

  • EXCEL表の文字列が対象セル内に含まれるか

    シートAのB2の文字列が000-みかん_東京_001とあるとして、 シートBのB2:りんご、B3:みかん、B4:いちご C2:横浜、C3:東京、C4:名古屋 D2:赤、D3:青、D4:白 という表があるとします。 シートAのB2セルにシートBのB列とC列から両方含まれる行を探し、D列の値を取得したいのですがどのような関数を利用するのが望ましいでしょう? ちなみに、シートAのB2が調査文字でC2を答えとして、調査対象の行を追加していきたいと思ってます。 お知恵をおかしいただければ幸いです(^^)

  • エクセルでのセルの連動

    シート1に「品物名」「単価」を記入した表を作成 (プルダウンリストとして作成しました) シート2のセルに「品物名」のプルダウンを作成した際、 隣のセルに選んだ品物名の単価が表示されるようにしたいのですが、 どの様にしたらよいでしょうか? ◆シート1   A   B  1品物名 単 価 2りんご 200 3バナナ 300 4みかん 100 ◆シート2   A   B 1品物名 単 価 2りんご「   」 A-2のセルにりんごと選んだらB-2に自動的に200 と入るようにしたいのです。 教えてください。 よろしくお願い致しますm(_ _)m

  • 任意のセルをクリックするとそのセルの値を取得することは可能ですか?

    エクセルでこのようなことは可能か教えてください。 エクセルのシート1のB1からE3までにセットメニュー表があります。 イメージはこのような感じです。  A   B      C     D      E     1  りんご1個   150円  りんご1個   100円    みかん1個 2  りんご2個   250円  みかん1個   50円    みかん1個 3  りんご1個   200円   りんご2個   200円    みかん2個 表自体はもっと広範囲であるのですが、省略させていただきます。 ここで、この表の、たとえばB1セルをクリックした際に B1セルのりんご1個みかん1個 とC1セルの150円 という値を シート2の任意のセル(たとえばA1とB1セルに)に反映させることは可能ですか? 説明がわかりづらいかもしれませんがよろしくお願いします。

  • エクセル 同じセルを抜き出す

    すみません、初心者でうまく説明ができるかわからないのでそのまま書きます。 エクセルで、単語を羅列しているんですが、たとえばA列とB列に同じ単語が有った場合、それをC列に抜き出すといった作業はできるんでしょうか? 例) A1-5に『りんご』『バナナ』『みかん』『もも』『ぶどう』とあり、 B1-4に『すいか』『もも』『バナナ』『オレンジ』とあった場合に、 Cに『もも』『ばなな』と抜き出したいんです。できませんでしょうか? ご教授のほど、よろしくお願いします。

  • エクセルで納品書作成

    エクセルで納品書を作成しています。 まず、『Sheet1』に受注一覧表があります。    A    B     C      D    E   F 1 受注ID   顧客    品名    単価   数量  合計 2 100100  あい商店   みかん   150    4   600 3 100100  あい商店   りんご   150    2   300 4 100100  あい商店   ばなな   200    1   200 5 100101  (株)うえ    みかん   150    4   600 3 100101  (株)うえ    りんご   150    2   300 4 100101  (株)うえ    ばなな   200    1   200 次に、、『Sheet2』に納品書があります。 セルA1に受注IDを『100100』と入力すると、 自動的に、    A    B    C   D   5 品名    単価   数量  合計 6 みかん   150    4   600 7 りんご   150    2   300 8 ばなな   200    1   200 と表示されるようにしたいのですが・・・。 セルA6~A8に =IF(ISBLANK($A$1),"",VLOOKUP($A$1,Sheet1!$A$1:$F$9997,3)) セルB6~B8に =IF(ISBLANK($A$1),"",VLOOKUP($A$1,Sheet1!$A$1:$F$9997,4)) セルC6~C8に =IF(ISBLANK($A$1),"",VLOOKUP($A$1,Sheet1!$A$1:$F$9997,5)) 入力したのですが、↓↓こうなっちゃいましたo(;△;)o    A    B    C   D   5 品名    単価   数量  合計 6 りんご   150    2   300 7 りんご   150    2   300 8 りんご   150    2   300 至急、助けてください(/_<。)

  • Excelでセル文字列に応じて他シートからコピペ

    Excelで、 シート1には「ある値の羅列」 シート2には「特定の値についての詳細説明が複数セルにわたって記載されている」 という構成になっているとき、 シート1のセル内の部分的な値と一致する、シート2の特定のセル (詳細説明の中で必要なセルのみ)をシート1の値の横のセルから右方向に コピーアンドペーストしたいと考えています。 具体的には シート1の、A列のセル内に以下のように「:」で区切った情報の羅列が数千行分 入力されています。     A                  B 1 商品名:リンゴ:渋谷店:在庫有り  (空白セル) 2 商品名:みかん:新宿店:在庫無し  (空白セル) 3 商品名:メロン:池袋店:在庫有り  (空白セル)    ・    ・ シート2には      A     B     C     D     E      1 イチゴ      赤   甘酸っぱい  春     高価   ・・・ 2 みかん      橙   甘酸っぱい  冬     安価   ・・・ 3 リンゴ      赤    甘い    冬     普通   ・・・ 4 メロン      緑    甘い    夏     高価   ・・・ 5 バナナ      黄色   甘い    ?     普通    ・    ・    ・ という風に、ある値に対する詳細説明が列方向に記載されています このとき、シート1のA1のある値(リンゴ、みかん 等)に対応した シート2の説明行のうち、ある一定の部分(D列より右がわ)を、 シート1のB列より右に一括でコピーアンドペーストできないでしょうか? 出来上がりの希望は以下の通りです。     A                  B      C   ・・・ 1 商品名:リンゴ:渋谷店:在庫有り     冬     普通  ・・・ 2 商品名:みかん:新宿店:在庫無し     冬     安価  ・・・ 3 商品名:メロン:池袋店:在庫有り     夏     高価  ・・・    ・    ・    ・ 従来ははいちいちシート1のA列の値をコピーし、シート2で検索、 該当する情報をドラッグしてコピー、シート1の戻ってB列にペースト、 という作業を行っていました。 しかし今回、シート1の内容が数千行もあるため、できればマクロや関数でなんとかできれば、 と思っています。 この作業の自動化に付き、ご存知の方、お教えいただきたくお願いいたします。

  • エクセル WINXP VLOOKUPと COUNTIFを組み合わせる

    お世話になります。 自分なりにやってみましたがどこが違うのかわかりません。 まず、シートが二つあり、一つはデータの羅列。内容は、仕入れたものの品名、単価、数量、金額(これは横並びに。)などをどんどん仕入れたたびに下行へ入力していっています。もう一つはこのデータから一番最新のものの単価をあらわすデータを作りたいシートです。 考えているのは、 シート1に・・・  A  B   C 12/1 りんご @300 12/1 みかん @200 12/2 さとう @320 12/3 なし  @100 12/4 りんご @230 シート2に、上記の商品の最新単価を抜き出したいのです。 りんご  とA2セルに入れれば、B2にりんごの最新単価230円が入るようにしたいのです。  A    B りんご  @230 という風に。シート1のデータは何千行もあります。シート2の りんご、にあたるデータは、すでに決まっていて100行分くらいあります。 シート2の、B2のセルに・・・ (A2の「りんご」と同じものを、シート1のA1からA1000(←例えば)までの一番最下段にあるものを選び、その同じ行のC列にある単価を、とってくる。) というような式を作りたいのです。 なかなか勉強不足なのですが、どうかご伝授下さい。   

  • エクセルで列Aの同じ値のものを15行ずつ表示したい

    「エクセルで同じ列の値のものを15行ずつ表示したい」というタイトルではきちんと表現できませんでしたが、 以下のことはできますでしょうか?    A   B   C 1 りんご  1   100  ・・・ 2 りんご  9   100  ・・・ 3 みかん  4   70  ・・・ 4 なし   3   110  ・・・ 5 なし   1   110  ・・・ 6 なし   5   110  ・・・ といったシートがあるとします。 これを「A」の列を基準に15列ずつに分けたいと思います。    A   B   C 1 りんご  1   100  ・・・ 2 りんご  9   100  ・・・ ・・・15まで空白 16 みかん  4   70  ・・・ ・・・30まで空白 31 なし   3   110  ・・・ 32 なし   1   110  ・・・ 33 なし   5   110  ・・・ ・・・45まで空白 何かよい方法があれば教えてください。 よろしくお願いいたします。

  • セルに埋め込まれた文字列を式として利用したい

    品名      |ランク ------------|----------- みかん     |A いちご     |B みかん     |A みかん     |B りんご     |A りんご     |B いちご     |B りんご     |B 品名選択: -------------------- |全て選択     |▼| ←A15セル -------------------- |いちご       | |みかん       | |りんご       | |いちご&みかん   | ---------------------- 上記のようなExcelの表があります。 表の下には品名選択のコンボボックスが用意されています。 品名選択で選択されたもので、ランクがAのものを数えたいと思っていますが、 品名選択の方法が複雑なため、SUMPRODUCTで表すと式がとても長くなってしまいます。 =SUMPRODUCT((B2:B9="A")*((A15<>"全て選択")*(A15<>"いちご&みかん")*(A2:A9=A15)+(A15="全て選択")+((A15="いちご&みかん")*((A2:A9="いちご")+(A2:A9="みかん"))))) 式をもう少し簡潔にしたいと思い、以下のように品名が選択された時に隣のセル(B15)に式を表示するようにし、 -------------------- |全て選択     |▼| (A15="全て選択") -------------------- |いちご       | (A2:A9=A15) |みかん       | (A2:A9=A15) |りんご       | (A2:A9=A15) |いちご&みかん   | ((A2:A9="いちご")+(A2:A9="みかん")) ---------------------- =SUMPRODUCT((B2:B9="A")*(B15))としてみたのですが「#VALUE」となってしまい計算されません。 (=SUMPRODUCT((B2:B9="A")*INDIRECT(B15))も試してみたのですが、出来ませんでした…うーん??) コンボの隣にセットした文字列を数式の一部として使用する事は出来るのでしょうか? 出来る場合、方法を教えて下さい。 よろしくお願いします。

  • ■エクセルで複数のセルが一致する場合に返す方法

    色々試しているのですがどうしても出来ないのでどなたか教えて下さい。 例えば Sheet2に下記のような果物のその日の値段を表にした 値段表を作ったとします。    A   B   C   D… 1  日付  りんご みかん  ぶどう 2 1月1日  100   150   50 3 1月2日  200   150   40 そしてSheet2に、毎日買った分を書いていきたいのですが これを   A     B   C… 1 1月1日  りんご  100  2 1月2日  りんご  200 3 1月2日  みかん  150 ・ ・ ・ というようにA1が1月1日でB1が「りんご」だった時に Sheet1の1月1日のりんごの値段が 自動的に入るようにしたいのです。 IF関数でやってみたのですが、「AでありBである時、A'のB'の値を返す」という方法がうまくいきません。 分かりにくい説明かもしれませんがどうか良い方法を教えて下さい。

専門家に質問してみよう