• ベストアンサー

Excel 2007 同じ値の検索

Excel 2007 同じ値の検索 B列(会社主キー)とC列(会社サブキー)、D列(会社サブキー)、E列(会社サブキー)を比較。 B列と同じキーがあった場合には、A列(check)に1が入り、同じキーがなければ2を入れるように したいです。 B列は一意のキーです。 C、D、E列で同じキーが入っている場合もございます。 どのように解決すればよろしいでしょうか。 マクロ、関数のいずれでもかまいません。 アドバイス頂けますでしょうか。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

主キーに対して1を立てたいのですか? A2に =IF(B2="","",1+(COUNTIF(C:E,B2)=0)) 以下コピー。 #Checkの結果は1と2と,データの無い""の3通り。

hyogara777
質問者

お礼

主キーに対して1を立てることを考えていました。ご提示頂きました関数で解決しました。ありがとうございました。早い回答に感謝します。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 一例です。 A2セルに =IF(B2="","",IF(COUNTIF(C2:E2,B2),1,2)) としてオートフィルで下へコピーではどうでしょうか? 以上、参考になれば良いのですが・・・m(__)m

hyogara777
質問者

お礼

ご回答ありがとうございます。参考にさせていただきます。早い回答助かりました。

  • TNK787
  • ベストアンサー率17% (25/141)
回答No.2

あ、ごめんん E列もあったのね 同じようにorで追加してください

hyogara777
質問者

お礼

ご回答ありがとうございます。参考にさせていただきます。とても早い回答助かりました。

  • TNK787
  • ベストアンサー率17% (25/141)
回答No.1

Sub test() Dim i As Long i = 2 Do Until Cells(i, 2).Value = "" If Cells(i, 2).Value = Cells(i, 3).Value _ Or cellls(i, 2).Value = Cells(i, 4).Value Then Cells(i, 1).Value = "Check" Else Cells(i, 1).Value = 2 End If i = i + 1 Loop End Sub

関連するQ&A

  • Excelマクロでセルの値を他のセルに表示する方法

    Excelマクロがよく分からので教えてく下さい。 Excelで次のように表を作成します(添付画像参照)。 ・A列・・・連番 ・B列、C列、D列・・・それぞれに任意の値 ・E列・・・G列の関数で得た値をE列に返す。 ・G列に関数(=B2&C2&D2) G2で得た値を、E2に返す方法として 以下のマクロで出来ることが調べて分かりました。 Sub 取得() Dim namae As String namae = Range("G2").Value Range("E2").Value = namae End Sub ですが、G列の値全てをE列全てに返す場合のマクロの作成方法がわかりません。 どなたか詳しい方がいましたら、ご教示願います。

  • EXCELで、ある値で検索後、最大値を求める方法について

    EXCELで、ある値での最大値を求める方法がありますでしょうか?数日考えておりましたが結論はでませんでした。 どなたかヒントだけでも結構ですのでご教授頂けないでしょうか? 下記の場合、   A  B  C  D  E  F  G 1       あ  い         2    1  2  2.1    9.6 3    2  3  5.4    5.6    4    3  4  8.2    5.4    5    4  5  1.9    8.2    6    5  1  7.8    4.5    7    6  1  9.6     .    8    7  2  5.6     .    9    8  5  4.5     .    10    9  3  4.8        .    .  .   .         .    .  .   .         .    .  .   .         3000以上 B列の数値をもとにC列の中で検索させ、いくつか該当するとき、その右側のD列の最大値を求めることができるかどうか。 たとえば、B列の1の場合、C列の中で1が2箇所あり、その右側であるD列の値は7.8と9.6となります。そのうちの最大値は9.6ですので、F列の同行に答えとなる値が入ります。そのようなF列の関数等は無いでしょうか? 当方でもいろいろ調べ、DMAX関数が使えそうですが、B列の値が縦(列)となってる場合はうまくいきませんでした。もしB列の値が、縦(列)ではなく横(行)である場合は、OFFSET関数などと併せてうまくいきますが、最大256列(EXCELの制限)までしか扱えません。 何か方法があればヒントだけでも結構ですのでよろしくお願いします。

  • EXCEL で検索、更新したい

    EXCEL でわからない箇所があり質問します。 前提条件 Sheet1 A列:名前 B列:年月 C列:値 データは、名前と年月で一意になるデータシートがあり マスターデータとして全データが登録されている Sheet2 A列:名前 B列:年月 C列:値 ある条件でとあるデータベースから抽出した名前と年月の一覧がある この段階で値のセルには何も入っていない やりたい事 (1)この状態でマクロを実行し、A列、B列を条件に該当する行から    C列を抽出しSheet2 にセット (2)Sheet2のC列の値を変更後、マクロの実行で    A列、B列の条件を元該当する行から、Sheet1の C列に値を更新 (3)もし、Sheet2のA列、B列の条件に該当しない行がある場合、    Sheet1に行追加しC列を格納 という事をしたいと考えています。 Sheet1 の全ての行をマクロでループさせて A列、B列をif分で比較し行を取得し、Sheet2 に張る場合、 遅くなるのであまりやりたくないと思っています Find 関数も考えたのですが、ヘルプを見る限り、条件が1つしか指定でき ないように思えるのですが、複数列の条件を指定できる Find 関数 あるいは、類似の関数とあかがあるのなら教えてください 最悪は、EXCEL ADO で、自分自身をSQLで抽出、Update、Insert を行う 事も考えていますが、 EXCELのセル内の式で、INDEX関数やDGET関数で簡単に抽出できるのに (ただ、値を変更するので式はかけないけど・・・) わざわざ、ADOでプログラムを組むのもどうなんだろうと疑問に思ってます。

  • Excelでキーを使って関数で列を行に変更したい

    Excelで下記の事を関数で行うことが出来るでしょうか?方法を知っている方がいましたらお教えください sheet1    A B   1 1 33  2 1 33  3 1 34  4 1 45  5 2 21  6 2 25  7 2 25  sheet2    A  B  C  D  E   1  1  33 33 34 45 2  2  21 25 25 Sheet1の状態のキーをA列とした場合に、 Sheet2でキーをA列に入力後 B1 C1 D1 E1 に 関数を使って列でまとまっているデーターを 行にする方法が分かる方、お教え願います。 (Sheet2の B1 C1 D1 E1に入れる関数の 組み方が分からないと言うことです。 また、マクロはわからないので><) よろしくお願い致します。

  • excelでデータ検索

    excelでのデータ検索をする関数について教えてください。 例えば下のような4列の表があるとします。   A B  C D  東京 1 社長 あ  東京 1 部長 い  大阪 1 課長 う  大阪 2 部長 え A~C列の値をキーにして、D列の値を見つけたいのですが (例えば(東京,1,部長)なら「い」という風に。) 何か使える関数はあるのでしょうか。 lookup関数とかだと、1列の値しか対象にできないので..。 よろしくお願いします。

  • ExcelでのVLOOKUP関数について

    キー1を1000倍したうえで完全一致のVLOOKUP関数を使うと#N/Aエラーが発生します。 表示上は同じように見えますが内部的に異なる値となっているのでしょうか? 試しにエラー行に対して、キーとターゲットとなる当該セルを「=」でつないで確認しても「TRUE」となります。 添付画像は、 検索先としてA列に基準キーを130.168~130.192(step 0.001)で各行へ入力し、B列はA列を1000倍、C列はB列をROUND関数で整数値に丸めたものをキーとしました。 D列にVLOOKUPで参照する値を入力し、E列以降で以下の異なるパターンで値を参照しています。 (1)【E・F列】 ・E列に整数値をキーとして130168~130192(step 1)で入力。 ・E列をキーとしてB~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,B:D,3,FALSE)』 (2)【G・H列】 ・G列にE列/100をキーとして計算。 ・G列をキーとしてA~D列のVLOOKUP関数としています。   『=VLOOKUP(G3,A:D,4,FALSE)』 (3)【I列】 ・E列をキーとしてC~D列のVLOOKUP関数としています。   『=VLOOKUP(E3,C:D,2,FALSE)』 シートを複製し、キーの入力範囲を0.001~0.025(E列は1~25)にした場合はエラーがでませんでした。 その他の確認としてはTEXT、JIS、ASCなどを組み合わせて文字列としたキー同士のVLOOKUPではエラーにならず値を参照できています。

  •  エクセル関数式により、ある値が二つの値の間にある条件の時に抜き出す方

     エクセル関数式により、ある値が二つの値の間にある条件の時に抜き出す方法。  初めまして。よろしくお願いします。  例) A B C D E F 1赤 2 5 1 2青 9 2 3 青 3黄 1 9 4 黄 4緑 3 4 2 5黒 8 4 9 6紺 2 5 4 紺 7橙 5 1 6 8 9  D列にある値がB列にある値とC列にある値の間に有る場合、A列に有る値をE列に抜き出す(例では2行目、3行目、6行目のDの値がBCの値の間に有るためにEのセルにAの値を表示される)関数式を教えていただきたく、よろしくお願いします。

  • Excel マクロでの検索

    大量のデータ(約40000件)をDB(約3000件)から検索し該当する値を返す作業をしています。 マクロを今日初めて組んだのですが、うまく行きません。 だれか教えてください。 例:※同Sheet内での作業です。 DB(列1・2)     データ(列3・4)※ランダムに並んでます。   1  2      3     4 1 a  A      c   Cを返したい(cを1列より検索し2列の値を返す) 2 b  B      e   Eを返したい(eを1列より検索し2列の値を返す) 3 c  C      d   Dを返したい(dを1列より検索し2列の値を返す) 4 d  D      d   Dを返したい(dを1列より検索し2列の値を返す) 5 e  E      h   Hを返したい(hを1列より検索し2列の値を返す) 6 f  F      @   @が1列に無い場合は空欄でよい ・  ・ ・      ・     ・ ・  ・ ・      ・     ・ 今日、私は4列のワードを変数とし、1列より検索する方法をとりました。(Loopで組みました) Find.で組むと、不要なワードまで検索してしまう状況です。 例:aaaaで検索→aaaaaaがhitしてしまう。 同一ワードで検索する方法も試したのですが、エラーが出てしまいます。 自分なりにFindNextなども試してみましたが、無限Loopになってしまいます。 Loopを使わなくてもいいので、方法を教えてください。 本来自力で調べるべきですが、急ぎの仕事な為、ご協力ねがいます。

  • 検索結果の値を返すマクロ

    以下のような表で列「A」にある値を「C1~I1」より検索し 一致するものがあれば、列名を「B列」に返すマクロを作りたいのですが、どのようにマクロを記述したら良いでしょうか? A  B  C  D   E   F   G   H   I       10 20 30 40 50 60 80 10 20 10 50 60 勉強してみたのですが、変数をどのように使っていいか判りません。 ご助言いただければと思います。

  • EXCELで入力された式の値を求めて自動計算

    A B C D E 1|データNO |数値1| 数値2| 数値3| 2| 1| 0.3 | 0.2 | 0.5 | 3| 2| 0.3 | 0.2 | 0.5 | 4| 3| 0.3 | 0.2 | 0.5 | -------------------------------------------- 10| 2/1| 数式1| 数式2 | 数式3 | 11| 3/2| 数式4| 数式5 | 数式6 | 12| 【求めたい値】 数式1には=C3/C2、数式2には=D3/D2、数式3には=E3/E2 数式4には=C4/C3、数式2には=D4/D3、数式3には=E4/E3 B列の2/1というのをそのまま式にしたいです。 2/1、3/2などは規則性はありません。その都度変わります。 C列の式ではC列の値を、D列の式ではD列の値を用います。 関数で=MATCH(LEFT(D34,SEARCH("/",D34,1)-1),D1:D23,0))と入れ、C3の値を求めようと思いましたが この時点でエラーになりました。=MATCH(2,D1:D23,0)だと大丈夫なのですが・・・。 関数でやるととても式が長くなりそうなので、VBAの方が良いかとも思っています。 どのようにコード、もしくは式を書けば希望の値が得られるでしょうか? VBAの場合は2/1などの数値を入れた時点で自動計算できれば嬉しいです。 よろしくお願いします。

専門家に質問してみよう