Excel 条件に一致したセルの隣のセルを返す

このQ&Aのポイント
  • Excel初心者のため、シート1とシート2のデータを条件に一致した場合、セルの隣の値を取得したいです。ご教示お願いします。
  • エクセル初心者ですが、シート1とシート2で一致したコードの隣の値を取得したいです。可能でしょうか?
  • シート1とシート2のデータのコードが一致した場合、セルの隣の値を取得したいです。アドバイスをお願いします。
回答を見る
  • ベストアンサー

Excel 条件に一致したセルの隣のセルを返す

エクセル初心者です。どうかご指導ください。 シート1の処理1・処理2・処理3に、シート2で一致したコードの隣の値を返したいのですが可能でしょうか? シート1                 シート2 コード 処理1 処理2 処理3   コード  処理名  1   AAA               1   AAA  2   BBB AAA           2   BBB  3   BBB               3   BBB  4   CCC AAA           2   AAA  5                      4   CCC                         4   AAA

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.4

No2の計算式 =IF(ISERR(INDEX(INDIRECT($A$2&$A3),RIGHT(B$2),2)),"",INDEX(INDIRECT($A$2&$A3),RIGHT(B$2),2)) は一つのシートに表現するためシート名表示の分だけ行が下がっているので、項目名が1行目にある場合は =IF(ISERR(INDEX(INDIRECT($A$1&$A2),RIGHT(B$1),2)),"",INDEX(INDIRECT($A$1&$A2),RIGHT(B$1),2)) となります。 あと、Sheet2のコードがソート出来ないのであれば配列計算になりますが =IF(ISERR(INDEX(処理名,SMALL(IF(コード=$A2,ROW(コード)-1,""),RIGHT(B$1)))),"",INDEX(処理名,SMALL(IF(コード=$A2,ROW(コード)-1,""),RIGHT(B$1)))) でも表示可能。 範囲名【コード】はSheet2のコード列、【処理名】は同じく処理名列 計算式は配列計算なのでShift+Ctrl+Enterで確定

mayday911
質問者

お礼

再度ご丁寧な回答いただきありがとうございます。 ソートが可能なので計算式を利用させていただきました。 勉強不足だと痛感しました。これを機に一から勉強しようと思います。

その他の回答 (3)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

図を添付し忘れたw

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

提示された条件で目的の動作を行うには関数式のみでの実現は不可能と思います。 仮にSheet2のコードが昇順、処理順でソートされているとしたら =IF(ISERR(INDEX(INDIRECT($A$2&$A3),RIGHT(B$2),2)),"",INDEX(INDIRECT($A$2&$A3),RIGHT(B$2),2)) こんな計算式で可能 添付された図の 赤枠で囲ったセル範囲は[コード2] 青枠で囲ったセル範囲は[コード3] とそれぞれ名前付けされています それ以外にSheet2の A2:B2セル範囲(1 | AAA)は[コード1] A4:B4セル範囲(3 | BBB)は[コード3] と名前付けられています Sheet2のコード、処理順がソートされていない場合には使えない手法ですが参考に

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

例えば シート2 作業列 コード 処理名     1   AAA     2   BBB     3   BBB ・・・と作業列を追加して A列に =B1+COUNTIF(B1:B$1,B1)/10 といれて下までコピィしておけば シート1 コード  0.1   0.2  0.3  1   AAA       2   BBB AAA   3   BBB と処理番号を小数点以下の番号入れて =VLOOKUP($A2+B$1,シート2!$A$1:$C$100,3,FALSE) 右へコピィ、下へコピィ といった具合で、VLOOKUP関数が使えるようになります。 必要であればエラー処理加えるとか、エラーを表示しないとか方法を考えてください。

mayday911
質問者

お礼

早速の回答ありがとうございます。 残念ながらシート2に作業列は追加できないのです。 説明不足ですみません。シート1も同じく追加はできず決められた処理1・2・3のセルのみで関数を使い値を表示しなければなりません。 VLOOKUP関数はとても便利な関数なんですね、初心者の私にはとても勉強になります。ご丁寧な説明ありがとうございます。

関連するQ&A

  • 別シートの値を検索して一致したものを合計する

    excelvba初心者です。 お手数おかけします。 難問なのかどうかもよく分からず。。困っています。 シート1       シート2   シート3 AAA 100     AAA 50      BBB 20 BBB 200   CCC 150   CCC 30 DDD 300   QQQ 250   DDD 10 EEE 400     WWW 350  RRR 40 上記の値を決められた順番に別シートに集計したい(その時に、値を1/10にしたい) シート4 AAA 150 BBB 220 CCC 180 DDD 310 EEE 400 FFF 0 GGG 0 www 350 findでAAAを検索し見つかった値を ifにて条件分岐させるものをつくったものの プロシャーシーが大きすぎと言われてできません。 どなたか教えていただけないでしょうか。

  • エクセル文字列検索後、隣のセルの数値を比較したい

    エクセル関数に関し質問させていただきます。 技術不足によりご説明不足がございましたらお教えいただければ幸いです。 VBAや簡単な関数で対応できればご教授下さい。 例) シート1 商品名 在庫数 結果 aaa 1 bbb 1 ccc 1 ddd 1 シート2 商品名 在庫数 aaa 50 ccc 0 シート1とシート2の商品名を比較し、 完全一致した商品名のみ在庫数を比較し、 その結果をシート1の結果欄へ反映したいと考えております。 シート1商品名aaa = シート2商品名 aaaであれば、 隣の在庫数を比較(比較対象がなければfalse) シート1aaa 在庫数 1 > シート2aaa 在庫数 50 シート1の在庫数がシート2の在庫数より多ければtrue(少なければfalse) ※シート1、シート2の商品名は統一性がない為、ソートしても行数は揃わない 上記のような結果を求めております。 可能な限り早くご回答いただけますと助かります。 どうぞよろしくお願いいたします。

  • エクセルで教えて下さい。

    同じような質問があったらごめんなさい。 エクセルでシート1にデータを入力してシート2に データを整理したいのです。 シート1には重複した行があります、これを シート2には重複した行を省いた表にしたいのですが どうしたら出来るのですか? 出来ればマクロは使いたくない(使い方がわからないです) のですが。 やりたい事 シート1 --------------- AAA|45 AAA|30 AAA|20 BBB|50 CCC|30 CCC|20 シート2 ---------------- AAA| BBB| CCC| ---------------- AAAとCCCの重複している 行を省いてシート2に入力されるように したいです。 宜しくお願いします。

  • Accessの文字列部分一致を合計する関数

    お世話になっております。 Access2003の関数で教えてください。 Acces2003のクエリで、 「同じフィールド内で文字列が部分一致した場合、新しいフィールドに 別のフィールドにある数値を合計する、部分一致しない場合は合計せず、 そのままの数値を表示する」 という関数を設定したいと思っております。 具体的に記載しますと、 在庫テーブルがあり、 商品コード 在庫  aaa      10 bbb      20 ccc      15 ddd      30 aaa-1    40 bbb-1    25 ddd-1    20 というデータが入力されております。 この在庫テーブルから新しいクエリで、新しく「在庫合計」フィールド を作成し、このフィールドに関数を用いて、 『「商品コード」フィールドの左3文字が一致した場合、「在庫」フィールドの 数値を合計する数値を表示させ、一致しない場合は合計せずそのままの 数値を表示する』 という形です。 クエリの実行結果としては 商品コード 在庫 在庫合計 aaa      10   50 bbb      20   50 ccc      15   15 ddd      30   50 bbb      5   50 aaa-1    40   50 bbb-1    25   50 ddd-1    20   50 という結果になり、商品コード「aaa」と「aaa-1」や「bbb」と「bbb-1」の「在庫合計」の値 は同じ値(「在庫」フィールドを合計した数値)が表示され、左3文字が一致したデータ がない「ccc」は15のまま、という結果です。 ※ただ、商品コードに重複がございます。(上記例でいうと商品コードが「bbb」です。) 当方VBAは使えないので、クエリで行いたいと思っております。 Accessで難しければExcelの関数でも構いません。 当方初心者ですので、不足な情報がございましたら加筆いたします。 どうぞよろしくお願いいたします。

  • エクセルで他シートの同名セルと比較して条件付き書式設定

    初心者で式はあっているような気がするのですがどうしても色がついてくれません。助けてください。 Book1のsheet1 1 aaa 2 bbb 3 ccc Book2のsheet1 A B 1 aaa ちなみにaaaとbbbはBook1のsheet1をVLOOK UPで読ませています 2 bbb 3 eee Book2のsheet1のaaaとbbbを条件付き書式設定で色をつけたいのですが うまくつきません。 式は=VLOOKUP(A1,INDIRECT("[Book1.xls]Sheet1!$A$1:$B$5"),2,FALSE) と入れました。助けてください。

  • 【エクセル】 関数を使って他のエクセルの値を読み込みたい

    エクセルで外部ファイルの値を読み込みたいのですが、その際に読み込み先(シート)を関数を使って切り替えたいので、アドバイスをいただけないでしょうか。 検索で調べてみたらVBAを使う回答が多いのですが、VBAを使える人が周りにいない(私もそうです)ので、後々のメンテナンスを考えると関数を使って切り替えたいのです。 【環境】 WINDOWS XP エクセル2000 C:\AAA (CドライブにAAAというフォルダ) フォルダAAAには、BBBとCCCというエクセルファイルがあります CCCには、シート名1、2、3という3つのシートがあります。 【目標】 ファイルBBBのセルの値を操作すれば、読み込み先が変更されてBBBで表示される値が切り替わる。 【だめだった例】 BBBのセルA1にシート名を入れます。「1~3の数値」 同じくセルB1にパスを表示させます「="'C:\AAA\[CCC.xls]1"&A1&"'"」 ・・・後ろのA1が変化することで読み込み先が変わるはず。 同じくセルC1にCCCから読み込んだ値を表示させます。 「=INDIRECT($B$1&"!"&ADDRESS(ROW(F7),COLUMN(F7)))」  ・・・B1で表示された読み込み先のセルF7の値を表示するはず。 結果は「#REF!」になります。 CCCを同時に起動させると上手く読み込むので、リンクの問題なのでしょうか? なお関数を使わないでパスを記述したセルでは、CCCを起動させなくても上手く読み込んでくれます。 よろしくお願いします。 

  • VBAで行範囲を抽出して隣のセルに貼り付ける

    Excel VBA初心者です。 A列にある以下のデータの「aaa」から「bbb」の範囲を検索して 切り取り、隣のセル(B列)に貼り付けるマクロを教えてください。 実際のデータは「aaa」から「bbb」の範囲のデータが500個くらい あるので、隣のセルに貼り付けていく作業をマクロで処理したいと 考えています。 ・マクロ処理前 列A aaa data0 data1 data2 bbb datax ------------ aaa data3 data4 data5 bbb datay ------------ aaa data6 data7 data8 bbb dataz ・マクロ処理後 (処理前のdatax、datay、datazは列Aに残ったままで構いません) 列A  列B   列C    列D 空白  aaa   aaa   aaa 空白  data0   data3   data6 空白  data1   data4  data7 空白  data2   data5  data8 空白  bbb   bbb  bbb

  • エクセル:セルの検索

    Sheet1のC~G列を検索し、 [AAA]が見つかれば「成功」、見つからなければ「失敗」と表示するコードを作りました。 (実際のコードでは、AAAが見つかったセルBBBの.Addressや.Valueを使いたいので「Set BBB」などという書き方をしています)   Dim AAA As String Dim BBB As Range Set BBB = Worksheets("Sheet1").Range("C:G").CurrentRegion.Find(What:=AAA, LookAt:=xlWhole) If BBB Is Nothing Then MsgBox "検索に失敗" Else MsgBox "検索に成功" End If このコードで、C~D列にAAAがある場合は見つかるのですが、 E~G列にAAAがある場合は見つからず「検索に失敗」とメッセージが出ます。 また、 別のシートでも全く同じコードを使っているのですが、こちらは正常に動作します。 上に挙げたコードと違うところは検索範囲がE~I列だというだけです。 上記コードでとあるシートにおいてのみE~G列にある値が検索に引っかからない理由として、 どのようなことが考えられるでしょうか。 保護はかかっていません。 値が微妙に違うということもありません。 大文字小文字、半角全角の指定はしておりませんが、 C列で検索に引っかかった値をそのままG列に移動しただけで見つからなくなります。 なお、AAAに入れているデータは、 Private Sub Worksheet_Change(ByVal Target As Range) End Sub のTarget.Addressで、「$A$20」のような形で入っています。 Sheet1のC~G列に用意している値も「$A$20」のような形で直接書き込んでいます。

  • 2つの配列を比較し、一致しないのを得たいのですが

    連想配列 $foo = array( "aaa" => "111", "bbb" => "222", "ccc" => "333" ); と 一般配列 $bar = array( 0 => "aaa", 1 => "bbb" ); がある場合に、$iを数字として、 $fooのkey部と$bar[$i]の値が一致したら(つまり、例えばaaa)、 $fooの中のその部分は除去するような事がやりたいのですがどのようにすればいいのでしょうか? 色々試してみましたが、自分には全く出来ませんでした。 除去ではなく、新しい配列に $hoge = array( "ccc" => "333" ) のような形で入れ込むのでもいいのですが、とくかく$hogeのような配列を手に入れたいと考えております。 アドバイス頂けないでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセル

    二つのシートのセルを比較して、あるセルの値が一致した場合に、片方のセルの値を 別のシートに設定するには、どうしたらいいでしょうか? [シート1] --|A---B---C---D---E --+---+---+---+---+--- 01|A1 ??? 02|A2 yyy 03|B1 ??? 04|C1 sss [シート2] --|A---B---C---D---E --+---+---+---+---+--- 01|A1 aaa 02|A3 bbb 03|B0 xxx 04|B1 ccc 05|C1 sss シート1 [Aのセル]とシート2の[Aのセル] を比較し、同じ値だった場合に、 シート2の [B] の値を シート1の[C]に設定するための関数はどのようにしたら良いでしょうか? 最終的に、シート1が --|A---B---C---D---E --+---+---+---+---+--- 01|A1 ??? aaa 02|A2 yyy 03|B1 ??? ccc 04|C1 sss sss となります。 Excelの関数あマクロは、どうしても分からなく質問させてもらいました。 申し訳ありませんが、ご教授宜しくお願い致します。

専門家に質問してみよう