• ベストアンサー

vlookupで出した値を区切り位置で区切る方法

お世話になってます。エクセル初心者で以下の件で悩んでいます。 vlookupで他のシートから日付を出してきた。(例) 2014. 1.1 これを年・月・日と区切りたいが、区切り位置をしようとすると、「選択したデータ」として表れるのが「2014.1.1」ではなく、「=VLOOKUP(A2, .........)」となってしまい、日付の区切りができない。 選択したデータが関数としてではなく、その結果出てきた数値として参照できるようにする方法があればご教示ください。。。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

VLOOKUPで日付を持ってきてるということは変動する可能性があるということを前提に書かせていただきます excelの区切り機能ではあくまでそのセルに入力されている値(計算式)を対象として処理をしますので 数式などで参照してきた値を区切ることはできません。 関数でそれぞれ年、月、日を取り分ける必要があります。 以下の方法で出来ます(2通りの方法でやってみました) A1に日付「2014.1.2」が入っているとします (1.1でしたら月と日の見分けが出来ないため変えています) ■文字列として扱い取り分ける場合 (1)「年」を取り出すには =LEFT(A1,SEARCH(".",A1)-1) (2)「月」を取り出すには =MID(A1,SEARCH(".",A1)+1,SEARCH(".",A1,SEARCH(".",A1)+1)-SEARCH(".",A1)-1) (3)「日」を取り出すには =RIGHT(A1,LEN(A1)-SEARCH(".",A1,SEARCH(".",A1)+1)) 解説__________________ ○使用している関数は以下のものになります。 LEFT・・・指定した文字の左から何文字か取り出す関数 MID・・・指定した文字の何文字目から何文字目までを取り出す関数 RIGHT・・・指定した文字の右から何文字か取り出す関数 LEN・・・指定した文字の文字数を返す関数 SEARCH・・・指定した文字の中から指定した指定した検索文字のある場所を返す関数 ○方法 SEARCHでドット「.」の位置を調べてLEFT、MID、RIGHTと組み合わせて文字を取り出しています  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■日付として扱い取り分ける場合 (1)「年」を取り出すには =YEAR(DATEVALUE(SUBSTITUTE(A1,".","/"))) (2)「月」を取り出すには =MONTH(DATEVALUE(SUBSTITUTE(A1,".","/"))) (3)「日」を取り出すには =DAY(DATEVALUE(SUBSTITUTE(A1,".","/"))) 解説__________________ ○使用している関数は以下のものになります。 YEAR・・・指定したシリアル値から年を取得して返します MONTH・・・指定したシリアル値から月を取得して返します DAY・・・指定したシリアル値から日を取得して返します DATEVALUE・・・日付としてシリアル値(1900/1/1を1としたときの日数)に変換します SUBSTITUTE・・・指定した文字から指定した文字を検索して指定した文字へ置換します ○方法 値が2014/1/2とかでしたらエクセルは日付として認識できるのですが、 区切り文字がドット「.」でしたらそのままでは文字列としか認識してくれません。 SUBSTITUTEで「.」を「/」に置換してからDATEVALUEで日付に変換し YEAR、MONTH、DAYを取り出しています  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 前者の方法を覚えると文字の取出しが自由にできるようになるとおもいます。 が、この場合シンプルでわかりやすいのは後者でしょうかね。 ~~~~~~~~~~~~~~~~~~~~~~~~~ そもそも VLOOKUPで取り出した日付がそれ以降変動させる必要がない場合、 関数で取り出した値「2014.1.2」をそのまま文字列として変換し、 excelの区切り機能で分けることが可能です。 (1)A1をコピー (2)A1を右クリック「形式を指定して貼付」を選択 (3)「値」を選んで「OK」をクリック でA1のVLOOKUPの数式が無くなり日付の「2014.1.2」がA1に入りますので excelの区切り機能で区切り文字を「.」としてください。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>vlookupで他のシートから日付を出してきた。(例) 2014. 1.1 例示の2014.1.1は文字列でしょうか?、それともシリアル値(数値)の表示形式を日付形式にしたものでしょうか? 何方かによって処理の方法が異なります。 >選択したデータが関数としてではなく、その結果出てきた数値として参照できるようにする方法があればご教示ください。。。 処理の途中はどのような方法でも、最終目的に合えば良いと思います。 VLOOKUP関数の返り値(2014.1.1)が文字列としたとき以下のような数式で対応できます。 年の値(数値)=YEAR(VALUE(SUBSTITUTE(VLOOKUP($A1,$E$1:$F$3,2),".","/"))) 月の値(数値)=MONTH(VALUE(SUBSTITUTE(VLOOKUP($A1,$E$1:$F$3,2),".","/"))) 日の値(数値)=DAY(VALUE(SUBSTITUTE(VLOOKUP($A1,$E$1:$F$3,2),".","/"))) この数式を使ってExcel 2013で検証した結果の画像を添付します。 文字列の切り出し以外に年・月・日の値を切り出す方法があります。 今回の処理では数値として取り出しましたがそれを文字列に変換するにはTEXT関数を使えば良いでしょう。 今回の数式はVLOOKUP関数の戻り値をSUBSTITUTE関数に渡し、VALUE関数で数値に置き換えた上で、YEAR関数で年の数値に、MONTH関数で月の数値に、DAY関数で日の数値に変換しています。

raisonraison
質問者

お礼

なるほど、戻り値をSUBSTITUTE関数、VALUE関数、そしてYEAR/MONTH/DAY関数で変換することができるのですね。とても勉強になりました。誠にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

ご質問内容の情報が抜けているので、きちんとした回答ではないのですが、 >「2014.1.1」ではなく、「=VLOOKUP(A2, .........)」 これは、「=VLOOKUP(A2, .........)」の数式のセルが、[書式]--[文字列]になっているのが原因ですから、まず、それを[標準]などに修正しないことには、どんな数式でも解決しないはずです。 その後は、例えば、こんなふうになります。 =YEAR(SUBSTITUTE(VLOOKUP(A2,D1:E10,2),".","/")*1) これで、数値データになります。

raisonraison
質問者

お礼

なるほど、そもそも書式の修正が必要なのですね。修正して再度トライしてみます。ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! VLOOKUP関数で表示されているのは質問通りの 2014.1.1 となっているのでしょうか? そうであれば参照先は「文字列」というコトだと思います。 ただ、数式によって表示されているデータを「区切り位置」で区切れませんので、実データにしてやります。 仮にB列に結果が表示されているとします。 B列すべて(もしくは区切りたいデータ)を範囲指定 → 右クリック → コピー → そのまま右クリック → 「形式を選択して貼り付け」 → 「値」を選択しOK 後は普通に「.」で区切れば大丈夫だと思います。 ※ 質問文をみるとまずそういうコトはないと思いますが、 「値」にして、5桁数値の場合はシリアル値ですので、区切り位置で区切るコトはできません。 その場合B2セルに5桁数値が表示されているとすると C2セルに =YEAR(B2) D2セルに =MONTH(B2) E2セルに =DAY(B2) のように各セルに数式を入れたやる必要があります。m(_ _)m

raisonraison
質問者

お礼

セルの形式を「値」にする方法がわからなかったのですが、tom04さんの説明でよくわかりました。本当にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VLOOKUPの値を使ってVLOOKUP

    VLOOKUPで別シートから取得したデータを使用してさらにVLOOKUPでデータを表示させるという事はできるのでしょうか? EXCEL2010 (例) シート1 A1 1  A2 あああ シート2 A1 1  A2 VLOOKUP(A1,シート1のA1:G2,2)   ※【あああ】と表示される シート3 A1 あああ A2 VLOOKUP(A1,シート2のA2:G2,1)

  • VLOOKUP 検索値 2つ

    掲題の件につきまして、御教示ください。 検索値に2つの列を持ってきたい場合、 (例) 日付と数字の列が2列あり、1/1~12/31でそれぞれ1-10までの数字が入力されています →検索値で1/10の5の行のデータをひっぱてきたい。 フィルターを使って日付ごとにすればVLOOKUP使えるのはわかるのですが、 IF関数などと組み合わせて1/1-12/31すべてまとめて関数処理できますでしょうか? どなたか詳しい方、御教示ください。 よろしくお願いします。

  • VLOOKUPによる他シートの値参照

    初心者で以下の処理を行うコーディングの方法が分りません。 いろいろと他の質問、サイトを調べましたが、解決できませんでしたので、ご指導頂ければ有り難いです。 (1)"Sheet1"に下記例の通り、2列にデータが並んでいる。  左列には商品、右列にはその単価がセットされている。 (例) 商品1  \11 商品2  \22 商品3  \33 : (2)別シート"Sheet2"の左列には、商品が"sheet1"とは 異なる順序で並んでいる。また同一商品が複数存在することもある。 この商品の右列にそれぞれの単価をセットしたい。 商品3  (Sheet1を参照して値をセット) 商品7  (Sheet1を参照して値をセット) 商品1  (Sheet1を参照して値をセット) : 、って感じです。EXCEL関数の"VLOOKUP"を使おうと思っているのですが、どうも思った通りの結果がでません。 商品のデータ数は当然変動するのでVLOOKUPの参照セルに変数を使おうと思っているのですが、 その方法がまずいのでしょうか?

  • VLOOKUP関数でのセルの書式設定

    エクセルマイスターの皆様へ VLOOKUP関数を、やっと使い始めた初心者です。 皆様のご回答をいろいろ検索して、セルの書式設定を”文字列”に統一したり、”区切り位置”の妙策を使ってみたりしてみましたが、私のやり方が悪いせいか、なかなかうまくいきません。 検索は、一つのデータから2系統で実行したかったので、元データのシートから関数を実行するシートへ2系統の表にして「リンクの貼り付け」をしました。それぞれの検索をするセルについては、セルの書式設定で”文字列”を選択したつもりなのですが。 皆様の御知恵をお貸し下さい。

  • OpenOffice 【Calc】 複数シート VLOOKUPについて

    シート1、データ1、データ2、データ3 の4シートがあります。 データ1のシートには、    品名   価格  売価 1 雑炊の素   800   500 2 焼飯の素   700   350 3  柿の種    280    200 データ2のシートには、    品名   価格  売価 101 うどん   380   350 102 そば    380   350 103 そうめん  350   320 のようにして、シート3は201~始るようにデータが入っています。 それぞれのシートの検索範囲にLIST1、LIST2、LIST3 と名前を付けて、シート1のB20セルに =IF(ISERROR(VLOOKUP($B20;LIST;2));"";VLOOKUP($B20;LIST;2))&IF(ISERROR(VLOOKUP($B20;LIST2;2));"";VLOOKUP($B20;LIST2;2))&IF(ISERROR(VLOOKUP($B20;LIST3;2));"";VLOOKUP($B20;LIST3;2)) と関数をいれてみたところ、動作は正しくできているのですが、 価格などの数値をVLOOKUPしてくると、文字列の扱いになる様子で、 1,000 とはならず、1000 で表示されてしまいます。 書式設定で数値、カンマ区切りを選択してみても変わらず。 使う関数が悪いのか、その他に問題があるのか判らず、悩んでいます。 適正な関数または、設定が判る方、教えてください。

  • VLOOKUP関数 正しい値が返されない

    sheet1にデータリストを入力、sheet2のA1にコード番号を入力し以下の表にSheet1の対象データを参照するというところ(VLOOKUP関数のみ)まではよかったのですが、元データに空欄の時は「データなし」と表示過去の質問を参照して下のような式に変更しました。 =IF(ISERROR(VLOOKUP($A$1,範囲,列番号,"")),”データなし”,(VLOOKUP($A$1,範囲,列番号,FALSE))) はじめは正しく表示はされたのですが、A1に違う値を入力し直しても値が変化しません。 エラー表示はでませんが、数式がどこか間違っているのでしょうか。 どなたかお知恵をお貸しください。

  • VLOOKUPに関して?

    以前はエクセル2003で以下の様なシートを使っていました。 印刷帳票のシートの一部(下の例ではF21のセル)に、入力規則で別のシート(この例ではリストシート)の氏名部分をリスト表示させ、作業する人が該当する氏名を選択します。帳票完成に必要なその他のセルには、以下の関数と同様のものがアチコチに配置されています。 =IF(VLOOKUP(F21,リストシート!B:L,9,FALSE)="","",VLOOKUP(F21,リストシート!B:L,9,FALSE)) このシートを利用し、氏名だけを選択すれば印刷帳票が出来上がりました。ただ、エクセル2007に変更したら、リストで氏名を選択しても他のセル(VLOOKUPが有るセル)が連動しなくなりました。 ちなみにリストから氏名を選択後、各々のVLOOKUPのあるセルを選択し、決定(エンターキー押下)しなおすと、該当するデータに入れ替わります。一つ一つのセルに対して、選択決定を繰り返すのは煩雑です。 今までは出来ていただけに困っています!

  • VLOOKUPで返った値が不満足

    ビギナー以前のイントロダクションです。宜しくお願い致します。 OS・・・Win95 EXCEL・・・Ver97 社員データベースをシート1に、個人用(一人一枚プリントアウト用)をシート2に作成しています。 VLOOKUPで大体のデータは返るのですが、 生年月日などの日付が、データベースのセルが空欄の場合、何故か "M33.01.00"と表示してしまいます。 その他データベースの空欄のセルに対しても、"0"を表示してしまうので、これを" "と表示させたいのです。 良き関数を教えて下さい。

  • 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

  • エクセルのVLOOKUP関数について教えてください。

    エクセルのVLOOKUP関数について教えてください。 まずは、添付画像を参照下さい。 元データ(B2:D6)に対し、C10でVLOOKUP関数を以下の通り使用しました。 =VLOOKUP(B10,B2:D6,2,FALSE) この場合、新品番57010に対し、旧品番が3パターンありますが、VLOOKUP を使用すると、その3パターンのうちいずれか(数値の小さいもの?)を勝手に 選択してしまうため、困っています。 このような一つの対象に対し、複数の対象が一致するものについては、 エラーの出るようにしたいのです。(作業上のミスを防ぐため) そういったことは可能でしょうか。 あるいは関数の特性上仕方のないことなのでしょうか。 説明下手ですみませんが、よろしくお願いします。

このQ&Aのポイント
  • 最近購入したキヤノンのts6330ではがきの印刷ができません。取扱説明書の通りに後トレイをセットしたのですが、サポート番号1003が表示されて何が問題なのかさっぱり分かりません。
  • ts6330を購入してからはがきの印刷がうまく行きません。後トレイを正しくセットしたのに、サポート番号1003が表示されて印刷ができません。困っています。
  • 購入したばかりのキヤノンのts6330ではがきの印刷ができません。後トレイをセットしたのに、サポート番号1003が表示されて印刷ができない状況です。何が原因なのか教えてください。
回答を見る

専門家に質問してみよう