• 締切済み

Excel 同じ内容の文字列セルをまとめる

お世話になります。 文字列の入った複数セルの中から 同じ内容のものがある場合 これらを配列数式データ上でまとめたいと思ってます MATCH構文を使って MATCH($A:$A,$A:$A,0)として 自らと同じものが何処に最も早く現れたかの配列数式データを作り これをソートして その後の主処理のデータにしたのですが MATCH構文かたくじ式なのでしょうか 物凄く遅いのです。 で本題なのですか MATCH構文を使わず 軽いCPU負荷で 配列数式上にある複数文字列データの同じものをまとめたいとき どうすればいいでしょうか? ご教示お願いします。

  • Nouble
  • お礼率91% (1698/1856)

みんなの回答

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

>MATCH($A:$A,$A:$A,0)として そんな無駄な計算をさせているから遅いんです。 データが記入されているセル範囲を計算させて計算してやれば実用的なスピードで終わります。 #回答しても閉じ逃げるので×を付けました。以後は回答はしませんので悪しからず。

Nouble
質問者

お礼

気分を害して済みません あちらは降順ソート こちらはまとめる と、別内容の認識だったのですが 結果として不快な思いをさせたこと、 謝罪します。 所で、 COUNTIF 試しました MATCHと同じ効果が得られるのですね。 =OFFSET(SMALL(INDEX(COUNTIF(A:A,¨<¨&A:A),,),ROW($A1)),0,1,1) としてみました。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

関数を使わない。 元のデータをExcelのメニューからソート(並べ替え)してから処理をする。 (ソートをマクロ化しておくと便利かも)

Nouble
質問者

お礼

その後の関数式のデータとする 基礎の式ですので マクロもメニュー内の機能も使えないのです。 最終的には含まれる項目の目録作成を目指します。 一応機能実現してはいるのですが 作業列不要だと実用的な速度が得られず 困ってる次第です。 何はともあれ 済みません、ご容赦ください。 お心を傾けて頂きありがとうございます。

関連するQ&A

  • 文字列変換

    添付図をご覧ください。 範囲 A1:B6 に英語の人名が入力されています、。 セル A7 に式 =SUBSTITUTE(A1," ","") を入力して、此れを右および下方にオートフィルしたものを範囲 A7:B12 に示しています。 此処で質問ですが、最初に下表に示すスペースなしの文字列データがあった場合、此れを上表に示すデータに変換する数式を教えてください。 マクロ音痴の私のために、どうか数式でお願いします。 数式が短くなるなら、配列数式でも構いませんが、補助列(行)等を使用しないことを希望いたします。

  • Excel INDEX関数の使い方

    添付図はA列B列にデータが入っており E1:E5のようなリスト(部署一覧)を用意しておき C列に部署名をとりだそうというものです C2に =INDEX(部署一覧,MATCH(1,FIND(部署一覧,B2),0)) という数式を入力してCtrl+Shift+Enterで配列数式にすれば部署名を取り出せるとありました 1.その通りにやってなるほど部署名はとりだせたのですが MATCH関数の引数に”1”とあるのがその意味が分かりません どなたか解説をお願いできないでしょうか 2.また部署名の前に別の文字列 例えば”関東支社”のような文字列がある場合 部署名だけを取り出すことはできないものでしょうか よろしくお願いします

  • 文字列の検索

    ある文字列の中から、たとえば@1234のように @の後に数字が4桁連続している文字列を探す構文を matchを使って記述したいのですが、 matchの引数をどのように指定すればいいのかわかりません。 [0-9]やd\と{4}をいろいろ組み合わせてはみたんですが、 どうしてもうまくいきません。 matchでなくても他に良い方法があればおしえてください。

  • 全角・半角混在の文字列から半角文字のみ取り出す

    エクセル勉強中です。問題集で理解できないところがあります。 数式がどういう意味をもつのか教えて頂けるとありがたいです。 よろしくお願いします。 画像添付の問題になります。 A列に製品名が入っています。(製品番号:半角文字)(製品名:全角文字) B列に半角文字の製品番号だけを取り出しなさいというものです。 半角文字の開始位置がバラバラになっているところが問題のポイントになっています。 回答ですが B2: =MID(A2,MATCH(1,INDEX(LENB(MID(A2,COLUMN(2:2),1))*1,0),),LEN(A2)*2-LENB(A2)) こちらで半角文字のみ取り出せるようです。回答には数式のみで何故この関数を使うのか? 使うことでどういった結果を導くなどの解説が一切ありません。(ちなみに出版会社の便利技的な問題集です) MID関数で製品名A2から開始位置を指定して、全角半角をLEN関数LENB関数で半角文字数を 算出して文字列を抽出するという事は理解できます。 ただ、この開始位置の指定の所が理解できません。 数式を分割してみましたが =MID(A2,COLUMN(2:2),1)の所はどの行も製品名の1文字目ですよね・・・ その値にLENB関数で文字数? 数式の検証で見てみると配列のような結果が次々と現れて・・・ MATCH関数もありますしINDEX関数が何か関係しているような気はしているのですが、 INDEX関数と言えば配列に行番号・列番号と例えば表の該当するセルの位置抽出の 知識しかありません。一つのセルでINDEX関数? すいません。独学で勉強していてこの程度の知識ですが、この数式の考え方教えてくださる方よろしくお願いします。

  • エクセル 複数列選択して一列にソートできますか?

    エクセル 複数列選択して一列にソートできますか? sheet1 A1~G10 のセルに文字列(名前)がランダムに入力されているとします。空白もあります。このデータは他ファイルからコピーしたものとします。これをsheet2のA列にソートすることはできますか?

  • preg_matchのキャプチャ用サブパターンにマッチした文字列について

    お世話になります preg_matchのキャプチャ用サブパターンにマッチした文字列について 意図した動作が、試行錯誤しても全く得られませんので 分かる方にお教えいただきたく存じます 条件1 [*DATA: *]で囲まれたデータ(以下DATA)を取得 条件2 DATAにはoXoまたはoYoが順不同で、それぞれ1回または0回出現する $test = '[*DATA: A oYo B oXo C *]'; $reg = '/\[\*DATA:(.*?)(oXo|oYo)(.*?)(oXo|oYo)?(.*?)\*\]/u'; preg_match($reg,$test,$match); $matchの結果 $match[0] => [*DATA: A xYx B xXx C *] $match[1] => A $match[2] => oYo $match[3] => $match[4] => $match[5] => B oXo C 期待した結果 $match[0] => [*DATA: A oYo B oXo C *] $match[1] => A $match[2] => oYo $match[3] => B $match[4] => oXo $match[5] => C 1回または0回を表す「(oXo|oYo)?」が「0回」という条件が先に評価されてしまっているようなのですが「1回」を先にするすべはあるのでしょうか? 「(oXo|oYo)?」を「(oXo|oYo)」にすると期待した結果になりますが、条件2の「oXoが0回」「oYoが1回」出現した場合マッチしなくなります。 識者の方、お忙しい中恐縮ですがご教授いただけたらうれしいです。

    • ベストアンサー
    • PHP
  • エクセルで文字列の個数を数える

    ある範囲のエクセルデータから決まった文字列の個数をカウントする関数の使い方が判れば教えてください。 例えば、A1からH200までのデータより、”リンゴ”という文字列が何個あるかカウントしたいのですが。 COUNTIF(A1:H200,"*リンゴ*")とすると”リンゴ”という文字列が含まれるセルの個数は出たのですが、”リンゴ”という文字列が複数含まれるセルもあるので、”リンゴ”という文字列の個数とは 一致しないようなのです。 どなたか、よろしくお願いします。

  • 《エクセル》 2列のセル条件をカウントするには

    いつもお世話になります。 下記の件、過去の質問より配列数式で可能かと思い、挑戦してみたのですが、どうしても出来なかったので、お手数ですがどなたか教えていただけますでしょうか。 列A 列B A  あ B  あ A  い A  う A  あ 列Aのセルに、"A"が入力されていて、その横の列Bのセルに"あ"が入力されているセルの数を調べたいのですが 上記の例だと、2コという答えが導き出せる数式の書き方を教えていただけますでしょうか。

  • 複数列の中の文字列の検索、個数抽出

    どなたかお力をお貸しください。。 エクセル2003を使用しています。    A列 B  C  D 1  あ  う     あ 2  い  お  か  か 3  う        う 4  え     き  く 5  お  い  う  け Dの文字列のなかでA~C列の中に重複している文字が何個あるかを出したいです。 この場合D列は「あ、か、う、く、け」なので、A~C列にある「あ、か、う」が重複しているので、3個と出したいです。 もしくは重複していない「く、け」で2個と出したいです。 MATCH関数を使うと出来そうなのですが、MATCH関数だと配列の概念がなさそうなので、どうしたものかと。 条件として、 ・一つのセルで関数を使用して出す。 ・マクロ、計算用のセルはできたら使用しない。 ・空白セルもあり、文字列の完全一致のみ個数としてカウント。 ・列の数はだんだん増えてくるので、列数は増えても大丈夫なやり方の方がいいです。 COUNTIFで重複個数を出すと、「う」が複数回出てくるので、重複の個数が増えてしまい困っています。 もしかしたら不可能かもしれませんが、どなたかお知恵をお貸しください。 よろしくお願いいたします。

  • 複数のセルの文字列を;(セミコロン)を介してひとつのセルに文字列として結合するには?

    エクセルで以下のような事は出来るのでしょうか? 複数のセルの文字列を;(セミコロン)を介してひとつのセルに文字列として結合するには? 例) A  B  C     D    あ  い  う  →  あ;い;う ひょっとしたら同じような質問が無いかと思い、色々と探してみたのですが、見つけることが出来ませんでした。 大量のデータを入力する必要があり、大変困っています。 ご存知の方がおられましたら、ご教授頂けるとありがたいです。 宜しくお願いいたします。

専門家に質問してみよう