• ベストアンサー

EXCELの 編集 検索キーを使わず 検索したい

EXCELの 編集 検索キーを使わず シート上で検索文字を指定して 検索された 全ての セルを表示したい。  第1表 CODEー名前表 CODEを探す A列 B列 C列 D列 1行 CODE 名前 CODE 2行 1001 あいうえお 1001 3行 1002 ああいうえ 1002 4行 1003 おあいうえ 1003 5行 1004 えおいうえ 1004 6行 1005 うえおあい 1005 7行 1006 うえああい 1006 第1表 CODEー名前表 から”あ”の含まれる全ての 名前 CODEを 第2表みたいに 作りたいのです 第2表 CODEを探す A列 B列 C列 D列 1行 検索する 名前 *あ* 2行 3行 検索された 名前 検索された CODE 4行 あいうえお 1001 5行 ああいうえ 1002 6行 おあいうえ 1003 7行 うえおあい 1005 8行 うえああい 1006 マクロを使わない方法で お願いします。 1:検索された 文字の足し算 2:文字の足し算をするごとに 1行増やす 3:改列 4:SUMPRODUCTで 文字の足し算は出来ますか?

  • newnew
  • お礼率47% (103/216)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >1:検索された 文字の足し算 意味が分からないです。C言語でもなければ、文字の加算はできないと思います。 >3:改列 改行は分かるけれども、改列って、そもそもなんですか? 検索された 名前 検索された CODE というだけなら、 B1 が、検索する文字(ワイルドカードの全角は不可 *->*) A4: =IF(B4="","",VLOOKUP(B4,Sheet1!$A$1:$C$20,2)) B4: =IF(ROW(A1)>COUNTIF(Sheet1!$B$2:$B$20,$B$1),"",INDEX(Sheet1!$A$1:$B$20,SMALL(INDEX(--SUBSTITUTE(COUNTIF(INDIRECT("Sheet1!B"&ROW($A$2:$A$20)),$B$1)*ROW($A$2:$A$20),"0",10^5),,),ROW(A1)),1)) 後は、下にドラッグコピーすればよいと思います。 この種類のものは、多くは、フィルタオプションの処理が最適です。 しかし、入れるたびに変化させるためには、イベント・ドリブン型マクロが必要です。

newnew
質問者

お礼

>1:検索された 文字の足し算 意味が分からないです。C言語でもなければ、文字の加算はできないと思います。 第2表 で 名前 *あ* で検索をかけ 「 あいうえお 1001」を求めたいので第1表のB列 C列が文字の加算されたら 便利と思います。  >3:改列 改行は分かるけれども、改列って、そもそもなんですか? 「 あいうえお 1001」が 「 あいうえお」と「 1001」で別の列に出てきたら 便利です。

newnew
質問者

補足

第1表の 飛び飛びの行のCODEを探したいのです 第1表 CODEー名前表 CODEを探す A列 B列 C列 1行 CODE 名前 CODE 2行 1001 あいうえお 1001 13行 1002 ああいうえ 1002 104行 1003 おあいうえ 1003 1005行 1004 えおいうえ 1004 2006行 1005 うえおあい 1005 3007行 1006 うえああい 1006 第2表 CODEを探す A列 B列 C列 1行 検索する 名前 *あ* 2行 3行 検索された 名前 検索された CODE 4行 あいうえお 1001 5行 ああいうえ 1002 6行 おあいうえ 1003 7行 うえおあい 1005 8行 うえああい 1006

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。#1 です。 >第1表の 飛び飛びの行のCODEを探したいのです それは、範囲を広げればよいだけです。 >3007行 1006 うえああい 1006 ただ、かなりワークシートが重くなることは覚悟してください。 >「 あいうえお 1001」を求めたいので第1表のB列 C列が文字の加算されたら 便利と思います。  それ自体は、VLOOKUP の範囲で、列数を3にすれば、その隣のセルのものも出てきます。 C列: =IF(B4="","",VLOOKUP(B4,Sheet1!$A$1:$C$20,3)) <範囲は適当に換えてください。> 補足のようすからすると、まだ、試していないようにも思われますが、ともかく、ご自身で考えながら試してみてください。 ただ、あまり複雑な要望をして、現実にできたとしても配列関数のメモリの限界がありますので、手が付けられなくなる可能性があります。Excel 2002以上は、配列のデータ演算数の限界はなくなったものの、やはり、5~6,000程度が限界のようです。それ以上は、データベース関数やマクロなどに頼らないと思ったようには行きません。

newnew
質問者

お礼

難しくて分かりません。済みません。

noname#204879
noname#204879
回答No.2

Sheet1             Sheet2   A    B    C         A        B 1 CODE 名前    TEMP   1 検索する名前  あ 2 1001 あいうえお   2   2 3 1002 ああいうえ   3   3 検索された名前 検索されたCODE 4 1003 おあいうえ   4   4 あいうえお   1001 5 1004 えおいうえ      5 ああいうえ   1002 6 1005 うえおあい   6   6 おあいうえ   1003 7 1006 うえああい   7   7 うえおあい   1005 8               8 うえああい   1006                 9 Sheet1!C2: =IF(ISERROR(FIND(Sheet2!B$1,B2)),"",ROW())     此れを下方にズズーッと複写 Sheet2!A4: =INDEX(Sheet1!$A:$B,SMALL(Sheet1!$C:$C,ROW(A1)),3-COLUMN(A1))     このセルに次の条件付き書式を設定       数式が   → =ISERROR(A4)       フォント色 → 白     このセルを右隣のセル(B4)に複写 範囲 Sheet!A4:B4 を下方にズズーッと複写

newnew
質問者

お礼

難しくて分かりません。済みません。

関連するQ&A

  • エクセル SUMPRODUCT関数でOR検索

    添付画像のような表があります。 '=SUMPRODUCT((B:B="男")*(C:C="新潟")*(D:D="B")*ROW(A:A)) で、B列が男、C列が新潟、B列がB のデータがある行番号を返してくれます。 B列がBではなく、B列がAまたはABのデータがある番号を検索する場合はどうかなと思い、 '=SUMPRODUCT((B:B="男")*(C:C="新潟")*OR((D:D="A"),(D:D="AB"))*ROW(A:A)) としてみたら、該当データがないにもかかわらずB列がBの行番号が帰りました。SUMPRODUCTで検索する場合、ORを使う場合はどのように書けばよいのでしょうか? ’=SUM(SUMPRODUCT((B:B="男")*(C:C="新潟")*(D:D="A")*ROW(A:A)),SUMPRODUCT((B:B="男")*(C:C="新潟")*(D:D="AB")*ROW(A:A))) のようにそれぞれを求めて合算するしかないのでしょうか?

  • 空白行を省いた 表をつくりたい

    第1表 A列 B列 1行 CODE 名前 100行 1001 あいうえお 333行 1002 ああいうえ 441行 1003 おあいうえ 512行 1004 えおいうえ 625行 1005 うえおあい 725行 1006 うえああい 第2表 第1表の空白行を省いた表 1行 CODE 名前 2行   1001 あいうえお 3行 1002 ああいうえ 4行 1003 おあいうえ 5行 1004 えおいうえ 6行 1005 うえおあい 7行 1006 うえああい 第1表は空白が多くて 見ずらいので A2 からB725を 検索して 空白行を省いた表を作りたい。

  • エクセルマクロでデータの検索と転記方法

    エクセル2000です。 sheetAの 10行~165行に表Aがあります。 途中に、空白行や小計行もかなりあります。 C列のコード(文字列、数値両方あります)をキーにして、SheetBの4行目から91行目までの表B(A列にコードがあります)のB列の数値を、sheetAの10行~170行のD列に転記したいのです。sheetAの表の小計行のC列は空白です。SheetBの表Bのコードは、sheetAの表Aのコードの一部しかありません。ですから、sheetAの表AのコードがSheetBの表Bになかったらそこは何も転記しません。 わかりづらい説明かと思いますが、マクロの記述をお教えいただければ幸いです。

  • エクセル縦横検索

    エクセルの縦横検索で関数がわからず何日も悩んでいます。。 <Sheet1> は商品コード・ランクごとの単価表です。   A列    B列     C列   D列    E列  F列 1  商品コード 商品名  Sランク Aランク BランクCランク  2  00010001 AA-1111 10.00 11.00  13.00 14.00 3  00100022 AB-222  11.00 12.00  15.00 16.00 4  00200033 BDB-123 20.00 21.00  22.00 23.00 5  00300033 CA-111  9.00 10.00   11.00 12.00 …  ・・・ 10  01000033 OP-100   30.00 31.00  32.00 33.00 11  02000123 TD-358  10.00 11.00  12.00 13.00   以下5000行ほど続きます。 <Sheet2>は得意先ごとのランク表です。 商品群は商品コードの頭2桁目と3桁目(00、01等)でランクが決まっている為、1行目に2桁の数字を入れています。   A列        B列             C列   D列   E列 … 1                            00   01    02    10  20  2  得意先コード 得意先名/商品群  AA  AB   BDB   OP TD  3  11111    あああ            S    A     C    B  C 4  11222    いいい            A   C     B    S  A 5  12333    ううう              C    S      S    A   B 6  12444    えええ            A   A      B    C   C 7  12555    おおお            B   B     C    S  B …  ・・・   横に50列ほど続きます。 <Sheet3>は入力画面です。    A列       B列      C列   D列 1   得意先コード 商品コード   ランク  単価 2   11222     01000033    得意先コードと商品コードを打ち込むとC2にランク(例だとS)が出るようにしたいのですが、 VLOOKUP($A$2,Sheet2!,A1:Z100,MATCH(C2,Sheet1!A1:A5000,C1:F1)) とすると、アルファベットは出るのですが、ランク表どおりに出ません。01と10が同じ数字として認識されてしまいますし、2桁目と3桁目を認識する関数がわからないので、ここで止まっています。 ランクが出たら、隣の単価を求める関数もついでに教えていただけたらさいわいです。 よろしくお願い致します!

  • Excelの式の誤りを教えてください。

    Excel2003を使用しています。 A4からL204までデータがあります。(ところどころに空白の行があります) C 列は文字列で、"B"の文字が表示されている行であれば、同じ行の I列とJ列の数値を足し算して、その計にL列の数値を掛け算して、その4行目から204行目までの"B"行の I列とJ列を足し算して、その計にL列の数値を掛け算した合計を、"B"の文字が表示されている行のI列とJ列を足し算した合計の数値で割り算した数値をL1のセルに表示する数 式を教えてください。 下の式は自分で考えたのですが、だめです。 L1=SUMPRODUCT((C4:C204="B")*1,(I4:I204+J4:J204)*L4:L204)/SUMIF(C4:C204,"B",I4:I204)+SUMIF(C4:C204,"B",J4:J204) 宜しくお願いいたします。

  • Excel 結合&検索を文字で

    【質問1】     A列   B列 1行 A0001   1 2行 A0002   1 3行 A0003   2 4行 A0005   1 上記のようにA2を求めるのにA1とB1を足します。 A3を求めるのにA2とB2を足します。 ここで質問なのですがSUM関数や足し算の計算式を入力しても【#VALUE!】とでてしまいます。 文字と数字が結合している足し算はどのような数式を入れればよいのでしょうか。 【質問2】 尚、上記の表で足すにあたって「A1+B1」という表現ではなく「対象セルの1行前、2列右」といった文字で出来ないでしょうか? *以上わかりやすく説明していただけると嬉しいです。  宜しくお願いします。

  • Excelのセルの結合

    いつもお世話になっています。 エクセルのA列の文字列とB列の文字列を合体させる方法はありますか? 1000行くらいあるので コピーしていたら大変なのです。 例) A1のセルの文字列 あい B1のセルの文字列 うえお C1に あい うえおと表示させる。←これがやりたい できれば Aの文字とBの文字の間に半角スペースを入れたいのですが・・・。 よろしくお願いします。 

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • EXCELで複数条件(文字列)に合致した合計値を求めたい

    他の質問を見たのですがぜんぜん判らない初心者のため、質問させていただきます。 下記のように、Aの列にいくつか文字列の種類があり、Cの列にもいくつか文字列の種類があります。(B,D,E列は空白とします) A  B  C D E 1あ   オ 2か   メ 3さ   チ 4た   パ 5な   グ 6・   ・ 7・   ・ 8・   ・ ・・   ・ ・・   ・ 100・  ・ このような表で、 あるA列の文字列が「あ」であるC列の文字列が「グ」であるとき、その組み合わせを1として計算し、この組み合わせが1~100の行でいくつあるのかを出したいです。 A列とC列の文字列は同一行にあります。 この場合、どの関数を使えばよろしいのでしょうか。 sumproductとか、検索すると出てきたのですが今いち使い方が判りません。 どなたかご教授下さい。 よろしくお願いします。

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

専門家に質問してみよう