• 締切済み

空白セルで区切られた文字列の種類を求める関数

以下の条件を満たす excel関数がありましたら 教えてください。    A       B 1 りんご 2 みかん 3 りんご 4 なし 5 なし      3 ← 結果 6 7 なし 8 りんご 9 りんご     2 ← 結果 10 上記のようにA1からA10のセルに 文字列と空白が入っているとき、 空白で区切られたグループ内で、 文字列の種類が一体何種類になるのかを、 数えたいと思います。 ちなみに、関数はB列に入力したいのですが、 空白の一つ上のセルにだけ結果がでるように 表示させたいです。 説明不足でしたら申し訳ありません。 よろしくお願いいたします。

みんなの回答

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

 回答No.1です。  表のレイアウトが回答No.1と同様なものであるとして、B2セルに入力する関数を次の様なものにしますと、作業列を用いる事無く、結果を表示する事が出来ます。 =IF(AND(INDEX($A:$A,ROW())<>"",INDEX($A:$A,ROW()+1)=""),SUMPRODUCT(ISNUMBER(ROW(INDEX($A$1:$A2,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+2,2)):INDEX($A:$A,ROW())))*(COUNTIF(OFFSET($A$1,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+1,1),,ROW(INDEX($A$1:$A2,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+2,2)):INDEX($A:$A,ROW()))-IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1),0)-ROW($A$1)),INDEX($A$1:$A2,IF(COUNT(B$1:B1),MATCH(9E+307,B$1:B1)+2,2)):INDEX($A:$A,ROW()))=1)),"")

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

>上記のようにA1からA10のセルに文字列と空白が入っているとき との事ですが、私が考えた方法では、1行目からデータが入力されていた場合、計算処理が面倒になりますので、今仮に、     A       B 1  文字列   カウント数 2  りんご 3  みかん 4  りんご 5  なし 6  なし        3 ← 結果 7 8  なし 9  りんご 10 りんご       2 ← 結果 11 の様に、1列目は項目名が入力されていて、実際のデータはA2以下に入力されているものとします。  又、上記の元データが入力されているシートのシート名がSheet1であるものとし、Sheet2のA列~B列を作業列として使用するものとします。  まず、Sheet2のA2セルに次の関数を入力して下さい。 =IF(ROW()=ROW(Sheet1!$A$1)+1,ROW(),IF(AND(INDEX(Sheet1!$A:$A,ROW())<>"",INDEX(Sheet1!$A:$A,ROW()-1)=""),ROW(),""))  次に、Sheet2のB2セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(COUNT($A$1:$A2),IF(COUNTIF(INDEX(Sheet1!$A:$A,LOOKUP(9E+99,$A$1:$A2)):INDEX(Sheet1!$A:$A,ROW()),INDEX(Sheet1!$A:$A,ROW()))=1,1,""),""))  次に、Sheet2のA2~B2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  次に、Sheet1のB2セルに次の関数を入力して下さい。 =IF(AND(INDEX($A:$A,ROW())<>"",INDEX($A:$A,ROW()+1)=""),SUM(INDEX(Sheet2!$B:$B,LOOKUP(9E+99,Sheet2!$A$1:INDEX(Sheet2!$A:$A,ROW()))):INDEX(Sheet2!$B:$B,ROW())),"")  次に、Sheet1のB2セルをコピーして、Sheet1のB3以下に貼り付けて下さい。  以上です。

関連するQ&A

  • セル内の文字列に複雑な処理をしたい

    セルの中の複数の異なる文字列を以下のように処理したいのですが、Excelの標準の文字列操作の関数で試行錯誤してみたのですが、どうもうまくできませんでしたので、ご存知の方がいらっしゃいましたらご教授ください。VBAで処理しないとできないかもしれませんがよろしくお願いします。 あるリストのC列に備考欄が設けてあり、次のようなデータが入っています。 4/30 みかんを買った(強制改行して) 5/1 りんごを売った 5/2 ぶどうを食べた 5/5 すいかを買った このセルを調べて、 (1) セル内に"みかん"と"りんご"という文字列があったら、これを取り出して、右隣のセルに表示           (結果)⇒ みかん りんご (2) セル内に"みかん"と"りんご"という文字列があったら、これを"A","B"に置き換えて、右隣のセルに表示          (結果)⇒ A B (3) セル内の数値データと"を食べた"、"を買った"、"を売った"を取り除いて、右隣のセルに表示          (結果) ⇒ みかん りんご ぶどう すいか   (4) セル内に"か"を含む文字列があったら個数に関係なく"A"に置換して右隣のセルに表示             (結果) ⇒ A   すべて取り出したい文字列(上の例ではみかん、りんご)や置換したい文字列(A、B)以外の文字列は全てクリアして表示しないようにします。少し複雑ですが、やり方をご存知の方がいらっしゃいましたら、お教えください。

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

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

  • 一番初めに文字列が入っている列の文字列を知りたい

    次の条件で、よりA列に近い文字列を引っ張り出すにはどのような関数を使えば良いのでしょうか? 1)行の中にそれぞれ"文字列"が入っている 2)文字列が入っているセル数は行によって異なる   【A】 【B】 【C】 【D】 【E】 【1】りんご 【2】   ばなな 【3】   みかん りんご 【4】ばなな           みかん この回答を【F】列に示す場合、 【F1】はりんご、【F2】はばな、【F3】はみかん、【F4】はばなな、になって欲しいのです。 上手く質問できないのですが、とても困っています。宜しくお願いします。

  • 行内で空白、重複を除いた結果を別セルに表示したい

    A~D列に言葉が入っているのを、F列以降に空白、重複を除いて、結果を表示したいのですが、やり方がわかりません。(別シートではなく、同じシート内で処理したいです。) A~D列に入る言葉は200個程の種類があります。 行は4万行くらいのデーターがあるので行列を入れ替えた表には出来ません。 ジャンプで空白セル選択→まとめて削除をすると、データー数が多いので、パソコンが固まってしまいました。 なので、行ごとに処理をしたいのです。 よろしくお願いします。  A     B   C    D        F     G    H    I みかん ぶどう りんご みかん → みかん りんご ぶどう みかん (空白) (空白) みかん → みかん (空白) ぶどう りんご みかん → ぶどう  りんご みかん みかん ぶどう りんご すいか → みかん ぶどう りんご すいか

  • Excelでの文字列とりだしについて

    Excel(version2013)について質問です。 ある文字列を検索範囲内で検索し、みつかった場合、 その文字列を返すようにしたいです、どのような関数を使えば宜しいでしょうか。 例えば下記A列に検索したいリスト(りんご、ばなな、ぶどう)があり、 検索したい範囲がD1~E5とします。 その場合、B列に関数を使った式を入れ、 りんご、ばなな、空文字、りんご、ぶどうと並ぶようにしたいです。 どのような関数を使えば宜しいでしょうか。       A         B      C      D        E 1  りんご   (式)        りんご  みかん 2  ばなな  (式)        ばなな すいか 3  ぶどう   (式)        すいか みかん 4              (式)        りんご  すいか      5              (式)        ぶどう  みかん                                      

  • エクセル関数で最後に入力したセル(値)を取得したい

    いつもお世話になります。エクセル2000を使用しています。 A列にデータを入力しています。B1のセルにA列の最終入力値を表示させたいのですが、B1に何か関数を入れることでできますでしょうか? 例1 A りんご みかん なし 例2 A りんご みかん なし バナナ 上記の例1では「なし」、例2では「バナナ」をB2に表示させたいのです。 よろしくお願いします。

  • 関数を使って、

    ※例 シート1    A     B 1  0001   りんご   2  0002   なし 3  0003   みかん ↓ シート2    A     B 1       みかん 2       りんご 3       なし エクセルの別々のシートにて、上記のような表があります。 シート1を元にして、シート2のAに同じ文字列(0003 みかん りんご0001 なし 0002)を表示させたいのですが、関数を使う場合、どうしたら良いでしょうか? ご教授の程、宜しくお願い致します。

  • エクセル 文字が表示されたセルを抽出したい

    エクセルの関数を教えて下さい。    A     B     C     D   1 りんご              りんご 2       プリン        プリン 3             紅茶   紅茶 4 バナナ              バナナ 5      6             緑茶   緑茶 上記のような表があります。(A~は列、1~は行番号です) A1~C6までは、IF関数で、条件にあった場合に“りんご”などを表示、そうでない場合には空白と なるような式が入っています。 そして、D列のように、それぞれの行に表示されている文字を抽出、何も表示されていない場合は空白としたいのです。 D列にはどういった式を入れればよいかを教えて下さい。 ※各行に表示されるのは1つのセルのみで、例えばA1のセルとC1のセルに文字が表示される ことはありません。A1に文字が表示されている場合は、必ずB1・C1のセルは空白です。 宜しくお願い致します。

  • 文字列の置換

    AファイルのA1セルからBファイルのC1セルにデータを反映させたとします。 その際に以下のように文字列を複数置換させたいのです。 A1セル   C1セル りんご → みかん みかん → ぶどう なし  → 空欄 空欄  → 空欄 上記のようにセルのデータを複数置換することはできるのでしょうか? 又、置換できるならどの関数を使えばよいのでしょうか?

  • セル内の文字列操作について

    Excelでセル内の文字列を操作したいのですが、Excelの標準の関数では出来そうにないので、どなたかお力をお貸しください。 1つのセル内に、文字列や数値が複数入っています。 (例) Excel 12 りんご Word 11 このセルを調べて、数値のデータが複数入っている場合、最大値のみを表示させ、残りの数値データは削除したいのです。 (結果) Excel 12 りんご Word この処理の対象はセル内の数値データであって文字列には作用させず、結果的には文字列はそのまま表示させたいのです。 Excelの文字列に関する関数を調べてみたのですが、該当するものがなく、VBAを使用しなくてはならないのかもしれません。処理するデータが大量なため、VBAマクロなどで処理できれば大変ありがたいのですが、どなたかご存知の方がいらっしゃいましたら、ご教授くださいませ。どうぞよろしくお願いいたします。

専門家に質問してみよう