• 締切済み

Excel 数値に近い文字列を2つ表示させたい

添付図罫線より左側がG2に上りと入力した例【上り場合】、 右側がG2に下りと入力した例【下りの場合】になります。 A列に路線名、B列に方向、C列に駅名、D列にkmが入力されています。 G1に路線名を京浜東北、G2に方向を上り、 G3にkmを1.5と入力すると、 京浜東北、上りの1.5kmはどの駅からどの駅の区間になるのかを探し、 G4に秋葉原、G5に神田と表示させたいです。 G2が下りと入力された場合は、 【下りの場合】という添付図右側のように、 神田から秋葉原と表示させたいです。 一致するkmを探して駅名を表示するには、 以下の関数かと思うのですが、 =index(c1:c25,sumproduct((a1:a25=g1)*(b1:b25=g2)*(d1:d25=g3),row(c1:c25))) 近い数値もしくは一致する数値(km)を探して、 結果(駅から駅)を表示するには、 どのようにすればいいのかご教示いただきたくお願いいたします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

時間をかけて考えて文章にしたものが、いつ締め切られて、無駄になるかわからないので、テストが十分でないが、取り急ぎ上げてみます。 京浜東北線以外も同じ延長線でできると思う。 ーー 2,3日考えたが、本質問の難しさは、データによって参照する(調べる)表を 使い分けないとダメな点です。 小生が前回答で喩えたのは、男・女という(体脂肪率)の2区分でした。 しかし本質問では 1.路線 2.上がり・下り 3.駅名 の3.を除く、路線と上がり・下りの2区分で調べる表の「シート上の範囲}を 自動的に使い分けないといけないということです。 1だけ1つでも、エクセル関数の難問と思うが、2つ以上はWEBなどでも見たことがない。 多分、難問です。 ーー エクセルシートに「表を作って」、調べないといけない(計算では答えが出ない)と思うが、 それらの表を ・別シート ・別ブック・別シート に分けない方が複雑にならず良いと思う。 ーー シートには 1.検索データをシートのセルに、人間が入力する範囲 A列 路線名  指定 B列 上がり・下り 指定 C列 距離数 指定 2.結果を表示する範囲 D列には 求める駅名 E列には D列の、「次の駅」(1行下にある) 3.調べる表データの列 上り路線での F列 駅名 G列 距離(始発駅からの) 4.下りの路線での H列 駅名(F列の逆順序の駅名) I列 距離(終着駅=下りの始発駅からの) == 5.調べる表データを作成する作業 6.セル範囲に名前を付ける作業。 A列+B列+駅名(またはA列+B列+距離)の文字列を結合した文字列を「名前」ボックスに入れたとき 正しい「調べる表データの列のセル範囲」を指定する、ように 名前定義を、質問者(ユーザー)が行う(設定する)。 京浜東北線上り駅名 京浜東北線上り距離 京浜東北線下り駅名 京浜東北線下り距離 山手線上り駅名 山手線上り距離 山手線下り駅名 山手線下り距離 以下略。 (路線ごとに4種範囲定義する) システムを作った時に、1度だけ名前定義をするだけでよい。 上端行で名前定義やVBAで名前定義等で、楽する方法はあるが、質問者は 知らないだろうから、繰り返し人手で、作業するほかないだろう。 == 7.エクセル関数を作り入力する作業 その後の基本的考えは、INDIRECT関数で、調べる範囲を割り出し、 その範囲内で、MATCH関数で(距離数で)該当行を見つける事です。 次の駅は、見つかった行番号に+1下行の駅名を採ればよい。 === 例データ A B C D E F G H I<ーー列位置 指定路線 上り下り 指定距離 駅名FROM 駅名TO 京浜東北下り 京浜東北上り 京浜東北 上り 3 ああ いい 東京 0 ああ 0 京浜東北 下り 5.7 浜松町 品川 有楽町 3.4 いい 3.8 京浜東北 下り 4 有楽町 浜松町 浜松町 5.6 うう 4.8 京浜東北 上り 5.8 うう ええ 品川 7.3 ええ 5.9 おお 6.7 数式はD3に =INDEX(INDIRECT($A3&$B3&"駅名"),MATCH(C3,INDIRECT($A3&$B3&"距離"),1)) E3の数式は =INDEX(INDIRECT($A3&$B3&"駅名"),MATCH($C3,INDIRECT($A3&$B3&"距離"),1)+1) 結果は上記。 ーー 当方で誤りがあったら済まぬ。これ以上時間をかける気がしないので、回答として、1例として、上げます。 ーー 上記のように、この複雑なものを、質問者は、テスト的に検証し、 本番に合わせて、テーブルや式などを修正できるか? まず無理だろう。(質問文の作成ぶりからそう思う) 回答も良いものが出ているか、今後出るかな? 会社内のエクセルが「相当」できそうな人に相談したら(使い始めた人ではだめ)。 またVBAなどで、システム業者などに、依頼すべきだろう。 ーー 京浜東北の北行き、南行きの点は、ご指摘、ごもっともだがそのままにした。 こういうように、よく考えないで喩え・例えを作ると、よくわかった、詳しい人には、かえって誤解を招き理解してもらえない場合が起こるが、そのケースだと思う。適当な例えを作るのも実力のうち。

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

>一致するkmを探して駅名を表示するには、以下の関数かと思うのですが、 距離が一致する駅名を抽出するには提示の数式で良いでしょう。 >近い数値もしくは一致する数値(km)を探して、結果(駅から駅)を表示するには、 提示の数式を変形すれば可能と思います。 私の論理では次の数式で良いという結果になりました。 上りの場合の起点から指定の距離以上遠く、起点に1番近い駅は次のようになります。 G4=INDEX(C2:C10,MATCH(LARGE((INDEX((A2:A10=G1)*(B2:B10=G2)*(D2:D10>=G3)*D2:D10,0)),SUMPRODUCT((A2:A10=G1)*(B2:B10=G2)*(D2:D10>=G3))),D2:D10)) また、もう1つの要件を満たす駅は次のようになります。 G5=INDEX(C2:C10,MATCH(MAX(INDEX((A2:A10=G1)*(B2:B10=G2)*(D2:D10<=G3)*D2:D10,0)),D2:D10)) 貼付画像はExcel 2010で検証した結果です。 下りについては同様な論理なので、あなたの応用力で数式を変更してください。 尚、計算範囲を10行目までにしていますので範囲を増やす場合は10行目の前に必要行数を挿入すると数式の範囲が自動的に挿入した分だけ増えますので試してください。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.5

余談めきますが、現存する通過駅名と路線名として「京浜東北線」を挙げておられますが、当該路線は東京駅を挟んで運行されるため、「上り」「下り」が適用できないために代わりに「北行」「南行」と称されていることをご存知でせうか?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

#2です。 下記を思いついたので、追加。 次の駅名も求めるためならVLOOKUPよりも、 MATCH関数の第3引数が1の方が、次の行をつかむのには、よさそうだ。 例データ A1:E7 A,B列は元データ駅名とそこまでの距離 c列は(問題の)距離 D列はFROM駅の名、E列はTo駅の名 東京  0  1 東京 神田 神田  1.3 2 御徒町 ああ 御徒町 2 3.4 ああ いい ああ  3   4.1 いい うう いい  3.5 4.5 いい うう うう 4.6   5.6 うう ええ ええ 6.1 D列の関数 =INDEX($A$1:$A$7,MATCH(C1,$B$1:$B$7,1)) E列の関数 =INDEX($A$1:$A$7,MATCH(C1,$B$1:$B$7,1)+1) 次の行ということで+1している。 この例がもし正しいなら、質問の例を作るのも簡単で、画像なんかいらないだろう。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.3

同じ「●●線」に、「D」駅を基点とする上下線と「え」駅を基点とする上下線があるのは何故でせう?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

前の取り消した質問の場合も、わかりにくい質問で、変な例を挙げる人だなと思ったが、本件もよくわからない。 本当のニーズを換骨脱胎して(やっていることや職場を隠したいために)、別のケースの例に置き換えたのかな、と思うが、それが適当でなく、読者にわかりにくくするのかなと思う。 エクセルの質問でも、適当な例を挙げられるのは相当勉強や経験が要ると思う。 ーー 下記は見当はずれなら、済まない。 しかし下記は使えれば有用な関数利用分野だとおもうので、我慢して付き合って。 エクセル関数の、VLOOKUP関数のTRUE型を使うべき問題ではないかと思うが、質問者の挙げる例が悪くて、よくわからない。鉄道路線の始発駅からの距離を問題にするような例は、人生でも職場でも起こらないだろう。 あるいは交通費の精算などで、運賃を算出したいのか? ーー 全く勝手な例を挙げておく。 これと「一脈を通じる問題ではないか」考えてほしい。この(問題の要点のパターン化)判定能力もエクセルの経験がいる(一番大切な能力だ)とは思うが。 ーーー 数値のどの範囲区分に属するかを、調べて、別列の文字列を引いてくる問題。 一例  体脂率の判定の問題 男性 女性 0 低い   0 低い 10 標準   20 標準 20 やや高い 30 やや高い 25 高い   35 高い 上記の男性と女性のカテゴリの別は、質問の場合は鉄道の路線(京浜東北、山手など)に相当するのかなと思う。もっと多数あっても良い。 基準表のデータは、数値データは、少ないものから大きいものの順に表をつくっておくこと。 例データ A,B列に C列に関数結果が出る カテゴリ データ 検索結果(望む結果) 男性 23 やや高い 女性 14 低い 男性 12 標準 女性 31 やや高い 男性 21 やや高い 女性 30 やや高い 男性 15 標準 女性 29 標準 男性 25 高い 男性 29 高い 女性 40 高い とデータがあるとして C2の式は =VLOOKUP(B2,INDIRECT(A2),2,TRUE) と入れて下方向に式を複写。 このINDIRECT関数を使うところは、勉強してないと意味が分からないと思うし、考えても、思いつくのは少数者だろう。出会って、真似するしかない。 VLOOKUP関数でデータで参照する表部分を切り替える問題です https://kokodane.com/kan34.htm 複数の参照表を自由に切り替えて「表引き」をする技

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.1

京浜東北、上りで 1.5km が、どうして 秋葉原~神田 になるのか、理路整然と説明されたし

toufugasuki
質問者

補足

説明不足で申し訳ありません。 東京を起点に0.1ずつ印があるとして、 秋葉原には2.0、神田には1.3の印があります。 上り電車に乗って1.5の印が見えたのは、 上りの何駅から何駅の間ですか? と聞かれた時の回答がG4の秋葉原、G5の神田という事になります。 よろしくお願い申し上げます。

関連するQ&A

  • EXCEL 値に近い前後の文字列を表示

    仕事で至急作成しなくてはいけないのですが、 スキルがなく困っています。 よろしくお願いいたします。 添付のように、A1に路線名、A2に上下、A4~A7に駅名 B4~B7にkmが入力されています。 F1~F3に路線名、上下、kmを入力すると、 F3の1.5をB列から探してその前後の駅名を、 F4、F5に表示させたいのです。 【重要】添付画像ではF4に神田、F5に秋葉原となっていますが、 F4秋葉原、F5神田の間違いです。 紛らわしくて申し訳ありません。 vlookではうまく出来ず、 ネット検索でIndirect がいいのかと思ったのですが、 使ったことがなく良く分からず困っています。 どのようにしたら入力したkmの前後の駅名を表示できるのか、 ご教示をお願いいたします。

  • excelの文字列の操作について

    A列、C列、E列、G列・・・の1行目にはタイトルが入力されており、 B列、D列、F列、H列・・・には不特定の文字列が入力されており、それぞれ行数も不特定です。 A列、C列、E列、G列・・・の1行目のタイトルはA列にまとめ、B列、D列、F列、H列・・・の文字列はB列にまとめたいです。 下の例の場合だと、C列の1行目のタイトルをB列の下端の左下にあたる(A7)に移動させ、 D列の2行目から入力された文字列を右となりの(B7)に移動させたいです。これの繰り返しです。     A列     B列     C列     D列 1    あ       A       い       2             B                a   3            C                b 4              D               c 5             E                6              F                            ↓     A列     B列     C列     D列 1    あ       A              2             B                   3            C                 4              D                5             E                6              F      7      い      a 8             b 9             c よろしくお願いします。

  • Excelの関数 条件に合った文字列を表示する

    A     B         C        D コード  名称        コード     名称   1000   サトウ飴      1001   カライ飴 1000   サトウ飴 1002   ニガイ飴 1001   カライ飴 1002   ニガイ飴 という表があったとしてC列のコードのセルに任意のコードを入れたら、D列にB列の名称を表示するという関数は何かありますか? 例えばC列に1001と入力したらD列に自動的にカライ飴と表示をさせたいのです。 分かりにくいかもしれませんがよろしくお願い致します。

  • Excel(数値の非表示)

    日々の出費を管理する表を作っています。 A列は日付、B列C列D列は項目別の数値 E列はその日付の数値の合計(B1+C1+D1) F列はその日までの累計(A列ではE1=F1、B列以降はF1+E2) この表の翌日以降のE列、F列の数値を表示したくないのですがどうしたらよいでしょうか? E列に関しては、翌日以降はB列C列D列が未入力となり必ず0が入るので、オプションで「ゼロ値」のチェックをはずすことで対応しようと考えているのですが問題ないでしょうか? F列に関しては数値が0にはなりませんので関数を使うことになるかと思うのですが、それが分からず困っています。 初歩的な質問と思いますが宜しくお願いします。

  • Excelにて列の一番下にある数値を表示する関数

    質問させていただきます。 エクセルの関数で「○列に入力されている数値の中で常に一番下にある数値を表示する」関数などありますでしょうか? 例えば B列に数値を入力していき、一番下?最終行?にある数値を自動で表示させたいです。下の例では「80」をとあるセルに表示させたいです。  A  B  C  D  ・・・・・ 1  100 2   99 3  150 4   80 5 6 ・ ・ =MAXという関数は見つけることはできたのですが・・・ =MAXの関数では、最大値しか表示できないので・・・ 色々と調べてみたのですが、調べ方が悪いのか探し出せませんでした。 お手数ですがよろしくお願いします。

  • excelで特定の列だけ表示させたい

    添付画像のような表を作成し、 B列にチェックを入れたら、その項目の列だけが表示されるようにしたいのですが、 どうしたらいいでしょうか。 添付の図の場合だと、D列とJ列だけが表示されるようにしたい。 (A、B、C列は常に表示されたまま)、E、F、G、I、J、K列を消し、D、H列を表示させたい。

  • Excelで参照した文字列の表示形式の変更

    Excelの操作にうといので、ご存知の方に教えて頂きたいのですが、   A  B  C 1 1  7  =A1+B1 2 2  8  =A2+B2 3 3  9  =A3+B3 と各セルに入力をし、表示形式を00にして   A   B  C 1 01  07  08 2 02  08  10 3 03  09  12 と、表示させています。 D列に   D 1 =A1&"+"&B1&"="&C1 2 =A2&"+"&B2&"="&C2 3 =A3&"+"&B3&"="&C3 と入力たら表示が   D 1 1+7=8 2 2+8=10 3 3+9=12 となります。 これを、   D 1 01+07=08 2 02+08=10 3 03+09=12 と表示させたいのですが、やり方がわかりません。 どなたか、ご存知の方は教えてください。 よろしくお願いします。

  • エクセルで計算の結果がある数値の場合のみ文字列を表示させたいです・・・。

    エクセルで計算の結果がある数値の場合のみ文字列を表示させたいのですが、IF関数を使うのかなと思いますが関数がよく解かりません。。。 やりたいことはこんな感じです。 セルG1にはA1-B1、H1にはC1-D1、I1にはE1-F1と計算式が入っています。 計算の結果、▲1になるセルだけを文字列『売上』と表示させたいのですが・・・。 なお、計算の結果は、必ず『1』か『▲1』のどちらかにしかなりません。 つたない質問ですが解決したく困っています。よろしくお願いします。

  • エクセルの列の非表示

    列の非表示の仕方を教えてください。  A  B  C  D ・ ・ ・ 1 2 3 ・ ・ で、B列、D列の非表示をしたいのです。 列を選んで 書式→列→非表示のやり方ではなく、列が表示してある(ABCDEFG・・・)の上(グレーの所)に「+」と表示されているやり方をどこかで見たのです。「+」「-」をクリックすると表示⇔非表示と切り替わるのです。 行では「集計」でできると思うのですが、列の場合のやり方を教えてください。

  • (エクセル)数値だけ合計したい

    複数のセルに入力されている数値だけを抽出し、合計したいと思います。   A     B    C    D    E    F    G 1 合計金額 金額1  金額1理由 金額2  金額2理由 金額3  金額3理由 2      1000円   菓子  3 1500円  1000円   菓子   500円   飲料 4 1520円  1000円   菓子   500円   飲料   20円   消費税 以上のようにA列に合計金額を計算させる数式を考えています。 (ルール) ・B列とC列、D列とE列、F列とG列はセットです。例えば、B列には入力されているが、C列は空白ということはない ・B列とC列→D列とE列→F列とG列の順に入力されていく ・2行目、3行目のように、常に金額が3つとも入力されているとは限らない ・金額が入力されているB列、D列、F列には、「○○円」と「円」も一緒に入力されている (やりたいこと) A列に合計金額を反映させないのですが、以下のように規制したいです (1)2行目のように、金額が1つだけの場合(B列とC列しか入力されていない場合)は、合計金額は空白セルにする (2)3行目、4行目のように、金額が2つ以上の場合(D列とE列や、F列とG列にも入力されている場合)は、合計金額を反映させる (3)合計金額は「○○円」と「円」も一緒に反映させる (考えたこと) B列の金額とB列+D列+F列の合計を比較し、同じならA列は空白、違う場合はB列+D列+F列の合計をA列に反映させるようIF関数を使えばいいのではないか、と考えました。 そこで、まずB列+D列+F列の合計を出す関数を作ってみたのですが、うまくいきませんでした。 =SUM(SUBSTITUTE(B2,"円","")*1,SUBSTITUTE(D2,"円","")*1,SUBSTITUTE(F2,"円","")*1) とすると、金額が3つとも入力されていればいいですが、一つでも空白セルがあると、#VALUE!とエラーになってしまいます。 SUMPRODUCTを使用してできるかと思いましたが、同じ結果でした。 どうすれば、思っているようになるのでしょうか。 ご存知の方がいましたら教えてください。 よろしくお願いします。

専門家に質問してみよう