• ベストアンサー

excelで1つのセルに複数の値を返す方法はありますか?

おせわになっております。 excelで質問です。 excel関数でもVBAでもいいのですが、1つのセルに複数の値を返す方法はありますでしょうか?? たとえばVLOOKUP関数だと1つのセルに1つしか返せませんよね?? a=りんご b=バナナ c=すいか d=いちご e=キウイ と設定したしたとして、 a,c,dと入力すると→りんご,すいか,いちご とすべて1つのセルに出るようにしたいのです。りんご,すいか,いちごという値にしたいので、それぞれを別々のセルに入れることはしたくありません。可能でしょうか?? よろしくお願いいたします。

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

  • ベストアンサー
  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.5

#3です。ご期待にそえたようでうれしく思います。 >jlookupのjに何か意味はあるのでしょうか?? 深い意味はありません。 てきとーに考えてJoin(結合)のJをつけただけです。 自由に変更して構いませんが、その場合、 下から2行目の  jlookup = Join(myAry, ",") の左辺もあわせて変更する必要があります。 ---------------------------------------- >コンマの代わりににスペースで区切る場合はどのようになりますでしょうか?? #3のコードについて、 myAry = Split(myStr, ",") ↓ myAry = Split(myStr, " ") とすれば、検索値が半角スペースで区切られているものとして動作します。 jlookup = Join(myAry, ",") ↓ jlookup = Join(myAry, " ") とすれば、戻り値を半角スペースで区切って返します。 ---------------------------------------- なお、引数を増やして区切文字をその都度自由に選べるようにすることもできます。 ●拡張VLOOKUP(検索値,範囲,列番号,検索の型,区切文字(検索値),区切文字(戻値)) 区切文字の指定を省略した場合は、","を区切文字として動作する仕様です。 '-------------↓ ココカラ ↓------------- Function 拡張VLOOKUP( _  ByVal myStr As String, _  ByVal myRng As Variant, _  ByVal myCol As Long, _  ByVal myOpt As Boolean, _  Optional ByVal kyDiv As String = ",", _  Optional ByVal rtDiv As String = "," _  ) As Variant  Dim myAry As Variant  Dim i   As Long  myAry = Split(myStr, kyDiv)  For i = 0 To UBound(myAry)   myAry(i) = WorksheetFunction. _    VLookup(myAry(i), myRng, myCol, myOpt)  Next i  拡張VLOOKUP = Join(myAry, rtDiv) End Function '-------------↑ ココマデ ↑------------- ご参考まで。

cinnamonnu
質問者

お礼

本当にありがとうございます!! 2つの式を見比べてみると仕組みがちょっとだけわかりましたが、自分では変更不可能でした^^; もっと勉強します。 今後この式はJLOOKUPで使わせていただきます♪ 本当に助かりました、ありがとうございます。 また宜しくお願い致します m(_ _)m

その他の回答 (4)

  • roze333
  • ベストアンサー率34% (32/93)
回答No.4

こんにちは、 全体を選択(スクロール)してから、 1)右クリックで、セルの書式設定を選択 2)配置を選択 3)折り返して全体を表示する 又は 縮小して全体を表示する にチェックを入れる。 お役に立つかどうか分かりませんが、家計簿や文章作成する時この方法を使っています。見当違いな回答ならごめんなさいね。  

cinnamonnu
質問者

お礼

私が求めていた答えとは異なっていたのですが、返信いただけて嬉しいです。ありがとうございました!!

  • _Kyle
  • ベストアンサー率78% (109/139)
回答No.3

検索する個数が不定の場合は、組込み関数だけでやるのは困難ですね。 VBAでもよいということなので、 とりあえずユーザー定義関数を書いて見ました。 JLOOKUP(検索値,範囲,列番号,検索の型) 検索値は、キーとする値をカンマで区切って結合した文字列。 戻り値は、それぞれのキーについてVLOOKUPした結果をカンマで区切って結合した文字列になります。 '-------------↓ ココカラ ↓------------- Function jlookup( _  ByVal myStr As String, _  ByVal myRng As Variant, _  ByVal myCol As Long, _  ByVal myOpt As Boolean _  ) As Variant  Dim myAry As Variant  Dim i   As Long  myAry = Split(myStr, ",")  For i = 0 To UBound(myAry)   myAry(i) = WorksheetFunction. _    VLookup(myAry(i), myRng, myCol, myOpt)  Next i  jlookup = Join(myAry, ",") End Function '-------------↑ ココマデ ↑------------- ご参考まで。

cinnamonnu
質問者

お礼

す、すごいです!!! これがしたかったんです。 ありがとうございます!! ところで、jlookupのjに何か意味はあるのでしょうか?? また、コンマの代わりににスペースで区切る場合はどのようになりますでしょうか?? たびたびすみません、よろしくお願いいたします。

  • WDY
  • ベストアンサー率27% (121/433)
回答No.2

一つの関数で全て出そうとしないで 複数の関数で返却される値を連結すれば 一つのセルに複数の回答を入力する式も作れますよ =VLOOKUP(条件)&VLOOKUP(条件)

cinnamonnu
質問者

お礼

ありがとうございます。こういう方法もあるのですね。参考にさせて頂きます。

  • Turbo415
  • ベストアンサー率26% (2631/9774)
回答No.1

別々のセルにa,b,dと入れて一つのセルに「りんご,すいか,いちご」と返すなら可能だと思います。しかし、一つのセルにカンマ区切りで複数入れた物をとなると難しいかも知れません。まあ、入力がアルファベット1桁と決まっているなら、カンマで区切らないでmid関数とかで分解してVlookup関数で引いてきて文字列を結合させる等の方法はあると思いますけど。一発の式でやると大変なのでワークエリアを作ってmid関数で入力値を分解、それぞれの値をVlookup関数で引いてくる、&などを使って結合して表示とするとできると思いますけど。 また、この場合入力する値の個数をある程度考えておかないとうまく使えなくなる可能性が有りますが。

cinnamonnu
質問者

お礼

mid関数で分解というのは思いつきませんでした。参考にさせて頂きます。ありがとうございました。

関連するQ&A

  • エクセル 値の入ったセルを左に寄せる

    エクセルの関数で質問です。 値の入ったセルを左に寄せて表示したいのですが、 どうかご教授ください。    1     2    3    4   5 A リンゴ      キウイ    ライチ B リンゴ  キウイ ライチ Aには別表からVLOOKUPで値を返してきています。 関数でBの様に左に寄せる方法はありますでしょうか?

  • excelのvlookup関数で値ではなくセルの位置を返せますか?

    どなたかお詳しいかた教えていただけますでしょうか? excelのvlookup関数は通常該当するセルの値を返すと思うのですが、そのセルの位置(A4とか)を返す方法はありますか? 例えば、以下のようなEXCELのシートがあったとします。 =VLOOKUP("いちご",A1:B4,2,0)とすると、”200円”と表示されると思うのですが、このセルの位置(この場合は"B4")を求める方法ははありますか?   A  B 1りんご 100円 2みかん  80円 3バナナ 150円 4いちご 200円 お詳しい方よろしくお願い致します。 m(__)m

  • Excelで複数条件で抽出した複数データを出力

    Excelで複数条件で抽出した複数データを出力したい Shett1のセルAとセルBの複数条件で、Sheet2を検索し一致したSheet2のセルCを Sheet1の該当するセルCに入れたいのです。 それを関数でするのはどうしたらいいのでしょうか? Sheet1 A B NAME ID(タイトル) いちご A01 いちじく A02 かき B01 すいか C01 なし D01 ぱいなっぷる E01 ばなな E02 ぶどう F01 みかん G01 めろん H01 もも I01 りんご J01 Sheet2 A B C 名前 ID 漢字(タイトル) みかん G01 蜜柑 いちご A01 苺 ぶどう F01 葡萄 りんご J01 林檎 もも I01 桃 かき B01 柿 なし D01 梨 すいか C01 西瓜 いちじく A02 無花果

  • エクセル出の並び替えについて質問

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方がありましたら教えてください。 どうぞ宜しくお願いします。

  • エクセル関数でおしえてください。

    エクセル関数でおしえてください。 以下のような表があります。   A     B     C     D     E  1 いちご   1 2 バナナ        1  3 ぶどう             1 4 サクランボ                1 5 もも    1 6 りんご        1 7 なし              1 8 すいか                  1 9 果物(1) いちご バナナ ぶどう サクランボ 10果物(2) もも  りんご なし  すいか B1~E8に「1」のフラグをたてます。 (フラグはランダムにたちます) 9、10行目に関数をいれて、いちご、もも・・と果物の名前を表示させたいです。 どなたかいい知恵をかしてください。 よろしくお願いします。

  • Excel2003 並び替えに関する質問 VBA初心者

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方をVBAで組みたいのですが、まずはどうすればよいのかわかりません。 もし、これを見て答えられるようであれば、どなたか教えていただければ幸いです。 どうか宜しくお願いします。

  • vlookup関数のことになりますm(_ _)m

    エクセルのvlookupに関してですが、どうやっても表から対象の内容を 1つしかひっぱてこないので、どうやったら、入力した内容に合致した 全ての内容をひっぱてくれるのか教えてくださいませm(_ _)m 表は.... 入力するところは1つです。 入力する数値⇒【  】   参照する表は A  B 200 ばなな 200 みかん 300 りんご 300 イチゴ 300 キュウイ 500 すいか 700 めろん になります。。。(Aは重さ、Bは果物名です) 現在 結果の欄に【=VLOOKUP(入力欄,A1:B7,2,TRUE)】と式を入れているのですが、この場合、数値を"400"と入力した場合 結果欄には【キュウイ】が表示されますが、同じ数値である【イチゴ】と【りんご】を下のセルもしくは別のセルに併せて表示させるにはどのようにしたらいいのでしょうか? ※結果には入力欄に入力した値よりも低いけれども一番近い物が選ばれる様にしたいのです。例えば 入力値が260であれば【ばなな】【みかん】が、、入力値が520であれば【すいか】だけが表示されるという形で。。。 ※果物は100ぐらいありますので、200<300 という風に1個づつしてしまうのは。。チョットきついかもしれないです

  • エクセルVBAで設定したセルの値

    エクセルVBAについての質問です。 例えば、A1とB1のセルの値を参照している数式がC1セルに設定してあるとします。 さらに、D1のセルにはC1の値を参照している数式が設定してあるとします。 VBAでA1、B1のセルの値を変更したとします。 次のステップのVBAでC1、D1のセルを参照すれば、A1、B1の変更が反映された後の正しい値である C1、D1の値が取得できるのでしょうか? できて当たり前だと思うのですが、セルに設定してある数式が大変複雑であったりすると、ちゃんとA1、B1の変更が反映された正しいC1、D1セルの値がVBAで取得できるのかちょっと不安です。 ばかな質問かもしれませんが、回答をよろしくお願い致します。

  • エクセルで、スペースで区切られた言葉をわける。

    たとえば、セルのA1に、  りんご■バナナ■みかん■ぶどう■いちご (■=半角スペース) とあったときに、 B1のセルにりんご C1のセルにバナナ D1のセルにみかん E1のセルにぶどう F1のセルにいちご となるようにB1~F1に入力する関数があれば教えてください。

  • エクセル 複数列からの抽出

    表題の質問をさせていただきます。 以下の表があります。 りんご --- --- --- --- りんご --- --- みかん --- バナナ --- --- --- --- バナナ バナナ --- みかん --- りんご・みかん等はVLOOKUPで表示されており、「---」部も、ここでの質問上 便宜的に「---」としていますが 実際にはVLOOKUP関数が入っていてエクセル上では 見た目は空白になっています。 さて、質問なのですが、上記表から文字が入っている部分のみを抜き出して以下のようにしたいのです。 抜き出し先は同一シート内でも別シートでもかまいません。 りんご りんご バナナ バナナ みかん     みかん バナナ 実際の表は30列・80行前後でして、現在は各列毎にオートフィルタの空白以外のセルで選択してコピペを列数分だけ繰り返しています。 関数やVBAで効率よく選択することが出来ますでしょうか。 エクセル2003です。よろしくお願いいたします。