• ベストアンサー

エクセル空白以外の文字を抽出

よくある質問なのですが過去の質問をみてもどうも解決できません。 A列の10行から20行まで『名称』として数種類の文字があるとします。その間には空白もあります。 これを100行からある集計表には空白なしで表示したいのです。 A10  あ A11  い A12   A13  う A14   A15  え A16 A17 A18   A19 A20  お ・ ・ ・ A100  あ A101  い A102  う A103  え A104  お という感じなのですがどうすればできますか。 マクロはできなので関数でお願いします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1とすべきところをA!のようにしてしまいました。下記が正解です。 =IF(ROW(A1)>MAX(B$9:B$99),"",INDEX(A$10:A$99,MATCH(ROW(A1),B$10:B$99,0)))

mihamantyu
質問者

お礼

ありがとうございます

その他の回答 (7)

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

【方法その1】  まず、適当な列(例えばC列)の1行目のセルに次の数式を入力して下さい。 =IF(INDEX($A:$A,ROW())="","",ROW())  次に、C1セルをコピーして、C2~C99の範囲に貼り付けて下さい。  次に、A100セルに次の数式を入力して下さい。 =IF(ROWS($100:100)>COUNT($C:$C),"",INDEX($A:$A,SMALL($C:$C,ROWS($100:100))))  次に、A100セルをコピーして、A2~A99の範囲に貼り付けて下さい。 【方法その2】  まず、A100セルに次の数式を入力して下さい。 =IF(ROWS($100:100)>COUNTIF($A$1:$A$99,"*?")+COUNT($A$1:$A$99),"",INDEX($A:$A,SUMPRODUCT((COUNTIF(OFFSET($A$1,,,ROW($A$1:$A$99)-ROW($A$1)+1),"*?")+COUNT(OFFSET($A$1,,,ROW($A$1:$A$99)-ROW($A$1)+1))<ROWS($100:100))*1)+1))  次に、A100セルをコピーして、A2~A99の範囲に貼り付けて下さい。 ※その1、その2は両方とも、通常のワークシート関数ですから、[Shift]+[Ctrl]+[Enter]キー操作は不要です。

mihamantyu
質問者

お礼

ありがとうございます

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

関数では複雑な配列数式にする必要がありますが、以下のような検索とコピー貼り付けを組み合わせると簡単に空白セルをつめて表示することができます。 対象範囲(A10:A20)を選択して、Ctrl+Fで検索ダイアログを出して、検索する文字列に「*」と入力して「すべて検索」し、Ctrl+Aですべて該当セルを選択して、検索ダイアログを閉じてから、Ctrl+Cでコピーし、貼り付け先のセル(A100)でCtrl+Vで貼り付けてください。

mihamantyu
質問者

お礼

ありがとうございます

  • acha51
  • ベストアンサー率41% (436/1042)
回答No.6

実践的なマクロも関数もなしの超力ワザです 質問の意図からははずれるかも、 空白のB12を選択し右クリック → 削除 → 上方向にシフト → Ok 空白のB13(繰り上がっている)を選択し  右クリック → 削除 → 上方向にシフト → Ok 複数セルの選択も同様にする

mihamantyu
質問者

お礼

ありがとうございます

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

一番シンプルな式: A100に =INDEX(A:A,SMALL(IF($A$10:$A$20="",999,ROW($A$10:$A$20)),ROW(A1)))&"" と式を記入してコントロールキーとシフトキーを押しながらEnterで入力し,下向けにコピーして入れておきます。

mihamantyu
質問者

お礼

ありがとうございます

noname#204879
noname#204879
回答No.4

マクロも関数も「できない」初心者向けの方法です。 添付図参照 1.範囲 A10:A20 を[コピー]して、セル A100 に[貼り付け]    その結果が Fig-1 です。 2.そのまんまの状態で、[編集]→[ジャンプ]→[セル選択]を実行 3.“空白セル”に目玉を入れて[OK]をクリック    その結果が Fig-2 です。 4.[編集]→[削除]を実行 5.“上方向にシフト”に目玉を入れて[OK]をクリック    その結果が Fig-3 です。

mihamantyu
質問者

お礼

おりがとうございます

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

配列数式の方法はデータが多くなると計算が重くなることです。分かり易く負担のかからない方法は作業列を作って対応することです。 例えばB10エルに次の式を入力して下方にオートフィルドラッグします。 =IF(A10="","",MAX(B$9:B9)+1) 答えの表は例えばA100セルに次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>MAX(B$9:B$99),"",INDEX(A$10:A$99,MATCH(ROW(A!),B$10:B$99,0)))

mihamantyu
質問者

お礼

ありがとうございます

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

>マクロはできなので関数  ⇒A100に=IF(COUNTA($A$10:$A$20)>=ROW(A1),INDEX($A$1:$A$20,SMALL(IF($A$10:$A$20<>"",ROW($A$10:$A$20),999),ROW(A1))),"")を入力、下方向に必要分コピー   入力完了時にShift+Ctrl+Enterキーを同時押下(配列数式の指定)

mihamantyu
質問者

お礼

ありがとうございます

関連するQ&A

  • 空白ではないセルを抽出したい

    エクセルで空白を含む列の中から 空白以外のセルを順に表示させたいのですが、可能でしょうか? 例えば、 社名   売上額 A社   1,000      2,000      3,000      4,000 B社    5,000      6,000      7,000 C社    8,000      9,000      10,000      11,000      12,000 の表を 社名  売上 計 A社   10,000 B社   18,000 C社   50,000 の様に集計表を作るのに、社名の列の空白の行を詰めて表示させたいのですが、 オートフィルタや並べ替えを使わずに関数で抽出したいと思っているのですが、可能でしょうか? 宜しくお願いします。

  • エクセルのマクロ(指定列の空白にひとつ上の文字を入力し続ける)

    エクセルのマクロを教えてください。 指定列の空白にひとつ上の文字を入力し続けるマクロです。 A列指定 A2からスタートし、1000行くらいあるデータ 空白があった場合ひとつ上の文字を入力 空白は、2行連続・3行連続となることもあるが大抵は1行空白 この場合、空白セルの上で一番近いデータをコピーする A列のデータは、文字・数字・日付と様々 1000行ある場合もあるが、それ以下の場合もあるので、10行空白が続いたらマクロが自動的に終了 エクセル2003使用 よろしくお願いいたします。

  • エクセル 空白以外のセルを関数などで抽出したい

    以下のように、1列上に、入力されてるセルと空白セルが存在します。   A 1|あああ 2| 3| 4|いうえ これを、以下のように抽出したいのですが、方法を教えて下さい。 オートフィルタなどではなく、集計終了後、以下のように抽出された値を そのまま別シートにコピーしたいと考えています。     A 100|あああ 101|いうえ ●ちなみに、2行目や3行目に、集計終了までに値が入る可能性があります。 よろしくお願いします。

  • SUMIFSの検索条件で文字後ろの空白を無視

    =SUM(SUMIFS(A2:A800,B2:B8000,"東京",C2:C8000,{"*-200","*-200-*"},D2:D8000{"AB1","AC1","AD1"})) 以上の関数のC列のOR条件"*-200"によって、XXXXXX-200の行も集計したいのですが、200の後ろに空白があり、集計できませんでした。 (空白を手作業で削除したら集計できました。) データ表中には複数このような空白を含んだものがありますので、上記集計関数式で、空白を無視するような方法をご教授願います。

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

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

  • エクセル セル内の文字列を空白から空白まで抽出したい。

    一つのセルに入っている文字列を複数のセルに分割したいのですが良い方法が見つかりません。 具体的には 「商品名 単価 数量 金額」が一つのセルに入っているのですが、これをそれぞれ「商品名」「単価」「数量」「金額」というように別のセルに分けたいのです。 条件は次です。 ・文字列の区切りは空白(スペース)。 ・商品名や金額などそれぞれの文字列の長さは決まっていません。 ・商品名には名称の中に空白が使われている場合があります、その数も決まっていません。 以上です。いろいろ関数を使ってやってみたのですが、どうもうまくいきません。 どなたか良い方法がありますでしょうか、よろしくお願いいたします。

  • エクセル初心者です。

    エクセル初心者です。 質問の意味合いが不十分でしたら すみません。  A 1 あ 2 あ 3 い 4 う 5 う 6 え  と A列内にあった場合に  A 1 あ 2 あ 3 4 い 5 6 う 5 う 7 8 え  のように、行の文字が変わった場合に 空白行を挿入したいのですが、簡単な方法はありますでしょうか? マクロは良くわからないので、関数などで解決できたらと思っています。 不十分な説明とは思いますので、ご参考までに画像を添付させていただいています。 何卒、よろしくお願いいたします。

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

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

  • エクセル~空白のセルのある行を非表示に。

    エクセルで。 例えば、100行の表があって、1行目から順番にデータを入れていくんですが、 データが50行までで終わってしまった場合に、51行目からを、非表示にしたいのです。 Aドライブからのデータの読み込みは、マクロをつかっているので、できればそのあとに文章をくっつけて、1つのマクロで作業を完了したいのです。 具体的に言いますと・・・ A列には1~100までの数字が入力してあります。 B~E列には取り込んだデータ(数字)をVLOOK関数で文字に変換するようになってます。 それ以降は、固定した単位(m3)や、データの数字がそのまま入る・・・という感じです。 そして、101行目はそれぞれの列の合計を出すようにしてます。 つまり、データを読み込んだあと、例えば50行しかデータが無かったら(B50やC50などが空白だったら)、51行目から100行目までをいわゆる『表示しない』にしたいのです。 だいぶ考えましたが・・・・。 よろしくお願いします。

  • Excel VBA 選択範囲の空白に文字を入れる

    VBA初心者です。よろしくおねがいします。毎月の集計で困っています。 例えば添付の写真のように 1)A列に地域、B列に地域詳細、C列に社員番号があります 2)A列には下段に地域総計(A18)、B列には地域詳細小計(B10,B17),そしてC10,17,18は空白になっています。 3) これは名古屋地区だけを抜き出したコピーですが実際は500行位あり他県の詳細も同様の形で集計が出ています。 4)ここで私が解決したいのはC行の空白(添付ではC10,17,18)にTotalという文字を抜き出して入れるVBAを教えていただきたいです。最終的にはA,B行はレポートのフォーマット上不要で削除になります。 宜しくお願いします。

専門家に質問してみよう