• ベストアンサー

指定文字列の番地or行数を取得(重複あり)

お世話になります。 以下のようなブックがあります。 ・Sheet1に大量のデータ (A1:M5000) ・Sheet2にSheet1のC列の文字列に関する重複なしのリスト(A1:A2000)(1行目は見出し) ここで、Sheet2の文字列の横のセル(B列)に、Sheet1の該当番地または行数を返したいと考えています。 ただ、重複があるため、重複があった場合は、C列、D列・・・・を使って、個別に返せれば、ありがたいのですが、 このような関数は作れますでしょうか? 方法は、Sheet2のリストの文字列の該当行数が、重複を含め分かれば、どんなやり方でもかまいません。 ご教授お願いいたします。

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

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

シート2のA2以下に「文字列」が記入してある前提で。 シート2のB2に =IF(A2="","",IFERROR(SUM(A2,MATCH($A2,OFFSET(Sheet1!$C$1:$C$5000,SUM(A2),0),0)),"")) と記入,右に下にコピーします。

kenthehg
質問者

お礼

ありがとうございます!! 見事に返すことができました。感謝いたします。 非常に悩みましたが、もっともシンプルな数式のご提案をくださったkeithinさんをベストアンサーとさせていただきます。回答者みなさんに感謝いたします。

その他の回答 (4)

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

>ただ、重複があるため、重複があった場合は、C列、D列・・・・を使って、個別に返せれば、ありがたいのですが、このような関数は作れますでしょうか? 行番号を求める数式は次のようになります。 B2=IF(AND(COUNTA($A2),COUNTIF(Sheet1!$C$2:$C$5001,$A2)>=COLUMNS($B2:B2)),LARGE(INDEX((Sheet1!$C$2:$C$5001=$A2)*ROW(Sheet1!$C$2:$C$5001),0),COUNTIF(Sheet1!$C$2:$C$5001,$A2)-COLUMNS($B2:B2)+1),"") B2セルを右と下へコピーすれば良いでしょう。 INDEX関数はSheet2のA列と同じ文字列がSheet1のC列にある行番号の配列値をLARGE関数へ返すための処理に使っています。 Excelのすべてのバージョンで使えると思います。

kenthehg
質問者

お礼

ありがとうございます!! 見事に返すことができました。感謝いたします。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 今仮にSheet2のA2以下にリストの文字列が入力されているものとします。  まず、Sheet2のB2セルに次の関数を入力して下さい。 =IF(A2="","",IF(COUNTIF(Sheet1!$C:$C,$A2)<COLUMNS($B:B),"",MATCH($A2,INDEX(Sheet1!$C:$C,SUM(A2)*(COLUMNS($B:B)>1)+1):Sheet1!$C$1048576,0)+SUM(A2)*(COLUMNS($B:B)>1)))  そして、Sheet2のB2セルをコピーし、そのセルを起点にして、右方向には「文字列の中で最も重複しているものが多い物の重複回数」として想定している回数を上回るのに十分な列数、下方向には「Sheet2のA列のリストをカバーするのに十分な行数」となり得るセル範囲に貼り付けて下さい。  以上です。

kenthehg
質問者

お礼

ありがとうございます!! 見事に返すことができました。感謝いたします。

  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.2

B列(一致する最初の1つ目)は =MATCH(A2,Sheet1!C1:C5000,0) の式で、行番号が求まります。 C列(一致する2つ目)は =IFERROR(MATCH(A2,OFFSET(Sheet1!C1:C5000,B2,0,5000-B2,1),0),"") D列(一致する3つ目)は =IF(ISNUMBER(C2),IFERROR(MATCH(A2,OFFSET(Sheet1!C1:C5000,C2,0,5000-C2,1),0),""),"") E列(一致する4つ目)は =IF(ISNUMBER(D2),IFERROR(MATCH(A2,OFFSET(Sheet1!C1:C5000,D2,0,5000-D2,1),0),""),"") で、行番号が求まります。 「該当番地」で求めずに「行番号」で求めているのは「次を探す時」に「見付かった次の行から探す必要があるから」です。 なお、検証してないので、間違っている(うまく動かない)かも知れません。

kenthehg
質問者

お礼

ありがとうございます!! 見事に返すことができました。感謝いたします。

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

》 Sheet2にSheet1のC列の文字列に関する重複なしのリスト… この「文字列に関する重複なしのリスト」は思わせぶりな表現だけど、「文字列の重複なしのリスト」あるいは「重複なしの文字列のリスト」とどう違いますか?

kenthehg
質問者

補足

C列の文字列を重複なしにしたリストです。 ですので、前者です。 ご指摘ありがとうございます。

関連するQ&A

  • 別のシートの文字列を他のシートに移すには?

    エクセル VBAで別のシートの文字列を他のシートにコピーするには どのようなコードを記入すればよろしいでしょうか? 同一ブック内に「Sheet1」と「リスト」のワークシートがある場合、 次の順序でリストのデータを他のシートに貼り付けるには どのようにコードを入力すればよろしいでしょうか? (1)2行目からのリストの使用行数を調べる。  ※リストの使用行数は変動するため、決まっていません。 (2)Sheet1は、32行しか入力できないため、(1)で求めたリストの行数から  ワークシートを必要数コピーする。 例 リストの行数が100の場合、Sheet1を3つコピーし、計4つにする。 (3)リストの図番(A列)、名称(C列)、金額(E列)をコピーし Sheet1のA,B,C列に「値」で貼り付ける。 (4)Sheet1のA,B,C列に32行貼り付け終わったら(2)でコピーした次のシートに続きのリストを貼る。 (5)リストの最後(文字が記入してある箇所)まで他のシートへのコピーが終わるまで  ワークシートを変えて続ける。 以上です。 よろしくお願い致します。 エクセルは2003、2007使用しております。

  • 文字列を2つに分ける

    10個近くある異なるブックのシートを、新しい1つのブックにまとめてしまおうと考えています。 手動で1つのブック内の複数シートを選択して、新しいブックにコピーしようとしましたが、1つのセルに入力されている文字列の中に、かなり長い(255字以上)ものが含まれており、コピーした際にデータが捨てられてしまいます。 長い文字列を、事前にマクロで探して、2つのセルに分ける (たとえば、A1に長い文章があるなら、A2にセルを挿入して、文字列を2つにわける) ことは可能でしょうか? 分けたあとにそれぞれが255字以下になっていることも確認したいと思っています

  • 【excel2003 vba】指定した文字列が入力されている「セル範囲」の表示方法?

    ◎Sheet1  A B C D E 1○○○-- 2○○○×× 3---×× 4×○--- ※「-」は空白 上記のようにセルに「○」「×」が入力されている「Sheet1」シートがあります。(例として○×の2種類を使っていますが、本当はもっとたくさんの種類の文字列があります。) vbaを使って、以下の一覧表を「List」シートに作成するコードを作成できませんでしょうか? ◎List  A     B 1○     ×  '文字列の種類 2A1:C2  D2:E3 '文字列の範囲  3B4     A4  '同上 【ToDo】 (1)1行目に文字列(○、×)を入力する (2)1行目に入力してある文字列が入力されているすべての「セル範囲」を2行目以降の各列に抽出する。 **1セル内に「○」「×」の両方が入力されているものもある。**  ⇒例えば、A1セルに「○×」と入力されていたら、「Rist」シートのA列B列の両方に「A1」が抽出されるようにしたい。 1セルごとのセル番地(○:A1,A2,B1,…)を一覧化することはできるのですが、同じ文字列をまとめた「範囲」の抽出ができないのです。 どなたかお力添えをお願いできませんでしょうか? 宜しくお願い致します。

  • 文字列検索の参照文字列の指定について

    Excelでセルに任意の文字列をペーストします。そのセルは別のブックにリンクしているのでペーストする度にリンク先のセルでは文字列が更新されます。リンク先のブックにはワークシートが10あっていづれかのシートのA列にその文字列がある事になっています。更新された文字列を検索する作業を繰り返すのでマクロで組み込もうと思ったのですがFIND関数にしても、VBでCell.Find(What:=....と書くにも参照する文字列を直接指定してやらないと動きません。参照する文字列が相対的に変化するので「特定のセルの中に入力された文字列」を参照してブック内を検索したいということなのですが、実現するにはどうしたらようでしょうか?

  • エクセルのセル内の重複文字列処理について

    よろしくお願いいたします。 セル内にスペースで区切られた文字列(単語)があり、文字列の数は不確定です。 その文字列の中で重複する文字列があり、それらを1つにまとめたいという要望です。 セルの行数は約6000ほどあります。 例 A1セル:リンゴ リンゴ みかん B1セル:リンゴ みかん A2セル:みかん バナナ みかん バナナ みかん B2セル:みかん バナナ ・・・ よろしくお願いいたします。 Windows7 HomePremium Office2010

  • 「リスト」欄の文字重複について

    31歳の男です。 Excelが詳しくないので教えてください。 Sheet1に「リスト」欄から選択する条件式があります。 セルE9→手入力(Sheet2のA列から選択) セルE10→「リスト」から選択(Sheet2のB列から選択) セルE11→「リスト」から選択(Sheet2のC列から選択) →以上が検索条件でそれぞれ選択すると 結果が出ます。 リストの中身は(Sheet2)にあり、今後増えていきます。 (sheet2の中身)←かなり省略しています。    A           B     C 1   STサーバ  障害対応  HDへ  2  STサーバ  問合せ   SDKへ 3  DBサーバ  問合せ   SDKへ 4  COMサーバ  情報採取  SHへ ・ ・ ・ 検索式がSheet1にある為、中身のリストを(Sheet1)にコピーします。 (コピー→形式を選択して貼り付け→リンク貼り付け) リンク付けしたので今後中身が増えても自動反映されます。 しかし、選択する「リスト」欄には文字が重複しないように1つにしたいのですが、 上記の場合だと、重複して出てしまいます。 (例STサーバ・問合せ・SDKへ) 消して重複しているものを1つにするやり方もありますが、 これからもSheet2の中身を増やしていく予定なので 毎度面倒です。 この場合、どうすればリスト欄の重複を1つに出来るでしょうか?

  • エクセル 行数指定し一つのセルに改行込で入れる

    日本語が下手でもうしわけないです。 エクセルのマクロにて、行数指定指定したセルを別セルに 改行を含めて入れたいのです。 具体的なやりたいこととしては、 A列に不定期間隔で不定形の文字列が入力されていて、(間は空白) その文字列から文字列の行数を読み、 B列の同じ行数分のセルをひとまとまりとし、 別シートのA1に改行込みで入れる。 次のまとまりはA2に次はA3に… といった動作をさせたいです。 例. 1.A1,A6,A9に文字列があるとする。間は空白 文字列間の行数を読む (1)A1-A5 (2)A6-A8 (3)A9-最終行 2.A列で取得した行数と同じ行数をB列で指定 (1)B1-B5 (2)B6-B8 (3)B9-最終行 3.B列で指定したセルをひとまとまりとして 別シートのA1から順に改行込みで入れる (1)シート2のA1 B1(改行) B2(改行) B3(改行) B4(改行) B5(改行) (2)シート2のA2 B6(改行) B7(改行) B8(改行) (3)シート2のA3 B9(改行) ・ ・ 最終行 ####### マクロでの実現を考えているのですが、 マクロ初心者でさっぱりわかりません。 どなたか、マクロでの記述例を教えて頂けないでしょうか。 また、関数で実現できるのであれば、そちらも教えて頂きたいです。 宜しくお願いします。

  • EXCELで、文字列の行数が変わる

    EXCELで、「折り返して全体を表示する」設定にしたセルに、ちょうどセル幅程度の文字列を入力した場合、画面では1行におさまって見えるのが、印刷すると2行にわたり、結果、1行分の高さのセルでは後ろの文字が見えなくなることがあります。 印刷プレビューにすると印刷したときの行数がわかるようですが、 (1) 印刷した時に必要となる文字列の行数にあわせて、セルの高さを変える方法はないでしょうか。 (2) そもそも、画面表示と印刷とで、文字列の行数が変わるのは何故でしょうか。(画面表示の文字列の長さと、プリンタ出力の文字列の長さが異なるように見えます。) (3) 文字列が1行でおさまるか、2行にわたるかは、プリンタにも依存するものでしょうか。 質問事項が多くなりましたが、お分かりの項目だけでも結構です。 どなたかお教えいただければありがたいです。 EXCELのVersionには関係ないと思いますが、参考までにEXCELは2003です。 よろしくお願いします。

  • Excel2007で、特定のセルに入っている文字列と同じ名前の(同じブ

    Excel2007で、特定のセルに入っている文字列と同じ名前の(同じブック内の)シートの特定のセルの内容を引くにはどうしたらよいのでしょうか。 状況を具体的に申し上げますと、 シートのA1のセルに「伝票」という文字列が入っているとします。A2のセルに、「伝票」という名前の同一ブック内のシートのC3のデータを自動転記したいのです。 どなたかおわかりでしたら、ご教示いただけませんでしょうか。どうぞよろしくお願いいたします。

  • エクセル。ブック内検索で重複文字列には色付け

    エクセル2010を使用しております。 タイトルのままなのですが、 ブック内での検索で重複した文字列には色を付けたいです。 現在、月ごとにシートを作成し顧客管理をしているのですが リピーターのお客様の場合は色をつけてわかりやすくしたいのですが 条件付き書式ではブック内の重複ができずに困っております。 (同じシート内でしたらできます) ◇理想 セルにお客様の名前等(会員Noなど)を入力したらブック内で検索して 重複がある場合はセルに色をつける 説明が下手で申し訳御座いません。 いろいろ検索して探してはみたのですが見つからなかったので質問させて頂きました。

専門家に質問してみよう