空白セルを詰める方法と関数の使用

このQ&Aのポイント
  • エクセルで空白セルを詰める方法について知りたいです。特に関数を使用して、空白セルを詰めたB表を表示する方法について教えてください。
  • データの入力規則で作られたプルダウンに空欄ができてしまう問題に対して、関数のみを使用して空白セルを詰めたB表を表示する方法を教えてください。
  • エクセルのA表には空白セルがあり、関数を使用して空白セルを詰めたB表を表示したいです。どのような方法があるでしょうか?
回答を見る
  • ベストアンサー

エクセル 空白セルを詰めたい

A表のようなデータを別シートに”データの入力規則”でプルダウンを作ると、プルダウンに空欄ができてしまいます。 空白セルにはCOUNTIF等関数が入力されています。 空白でなく記号や文字を入れることは可能です。 空白セルだけ抜いて上に詰めたB表を、関数のみで表示することはできますか? 空白セルがある状態でもプルダウンで詰める方法があればそちらの方がよいです。 A表 __|______ 1 | 日本 2 | アメリカ 3 | 4 | イギリス 5 | 6 | フランス 7 | イタリア ↓A表の隣に表示させたい B表 __|______ 1 | 日本 2 | アメリカ 4 | イギリス 5 | フランス 6 | イタリア

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

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

A列にそういうのがあるとすると B1: =INDEX(A:A,SMALL(IF($A$1:$A$10<>"",ROW($A$1:$A$10),999),ROW(A1)))&"" と記入してコントロールキーとシフトキーを押しながらEnterし,下向けにつるつるっとコピーして入れておきます。

semoetc
質問者

お礼

出来ました。思った以上に短い式で驚きました。 ありがとうございました。

その他の回答 (4)

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

 ドロップダウンリストに空欄無しで表示出来れば、B表がある場所がA表の隣でなくても構わないと考えて宜しいのでしょうか?  今仮に、A表がSheet1のA1~A7の範囲に存在していて、Sheet2のA1以下にB列を自動的に表示させるものとします。  以下に、B表の全自動作成を、関数のみで行う方法と、作業列と関数を使って行う方法を、1例ずつ挙げさせて頂きます。  【作業列と関数を使う方法】  まず、適当なシート(例えばSheet2)のB1セルに次の数式を入力して下さい。 =IF(Sheet1!$A1="","",ROW(Sheet1!$A1))  次に、Sheet2のA1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT($B$1:$B$7),"",INDEX(Sheet1!$A:$A,SMALL($B:$B,ROWS($1:1))))  次に、Sheet2のA1~B1の範囲をコピーして、Sheet2のA2~B7の範囲に貼り付けて下さい。  そして、「データの入力規則」ダイアログボックスの[設定]タグ内の「入力値の種類」欄を[リスト]とした上で、「元の値」欄には次の数式を入力して下さい。 =INDIRECT("Sheet2!A1:A"&ROW(INDIRECT("Sheet2!A1"))-1+ROWS(INDIRECT("Sheet2!C1:C7"))-COUNTBLANK(INDIRECT("Sheet2!C1:C7")))  因みに、「元の値」欄に入力する数式を =INDIRECT("Sheet2!A1:A") とした場合には、B表の6~7行目の空欄もドロップダウンリストに表示されてしまいます。  【関数のみで行う方法】  まず、Sheet2のA1セルに次の数式を入力して下さい。 =IF(ROWS($A$1:$C1)>ROWS(Sheet1!$A$1:$A$7)-COUNTBLANK(Sheet1!$A$1:$A$7),"",INDEX(Sheet1!$A:$A,SUMPRODUCT(ROW(Sheet1!$A$1:$A$7)*(Sheet1!$A$1:$A$7<>"")*(ROW(Sheet1!$A$1:$A$7)-ROW(Sheet1!$A$1)+1-COUNTBLANK(OFFSET(Sheet1!$A$1,,,ROW(Sheet1!$A$1:$A$7)-ROW(Sheet1!$A$1)+1))=ROWS($A$1:$C1)))))  次に、Sheet2のA1セルをコピーして、Sheet2のA2~A7の範囲に貼り付けて下さい。  そして、作業列と関数を使う方法と同様に、入力規則を設定して下さい。

semoetc
質問者

お礼

出来ました。 【作業列と関数を使う方法】いいですね。 回答ありがとうございました。

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

一例です。 C1に以下の配列数式を入力、入力完了時にshift+ctrl+enterキーを同時押下、D1へコピー後、C1:D1を選択して下方向に必要分コピー =IF(COUNTIF($B:$B,"<>")>=ROW(A1),INDEX(A:A,SMALL(IF($B$1:$B$100<>"",ROW($B$1:$B$100),999),ROW(A1))),"")

semoetc
質問者

お礼

回答ありがとうございました。

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

計算に負担を掛けないで簡単で分かり易い方法を提唱しています。 例えばA表ではA2セルから下方に番号が、B2セルから下方に国名が入力されているとします。 C2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2="","",MAX(C$1:C1)+1) そこでお求めの表ですがE列とF列を使って2行目から下方に表示させるとしたら、E2セルには次の式を入力してF2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>MAX($C:$C),"",INDEX($A:$B,MATCH(ROW(A1),$C:$C,0),COLUMN(A1)))

semoetc
質問者

お礼

回答ありがとうございました。

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.1

オートフィルタで「空白以外のセル」のみを表示するようにするのはいけませんか? 見かけ上は空白セルの行が表示されなくなるので、希望されたとおりの表示になります。 ご参考まで。

semoetc
質問者

お礼

操作をする方がパソコンに慣れていない方なので、できれば自動でできるようにしたいのです。 ありがとうございました。

関連するQ&A

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

  • エクセル 空白セルを0にして……

    エクセルで表を作成しています ごく簡単な表なのですが 作成しているうちに 疑問が でてきたので 質問させていただきます 光熱費の表を作成しているのですが  B3に当日の水道のメータ数字 C3に前日の水道メータの数字表示 D3にその差 B4にまたその当日のメーター表示 C4に前日のメーター表示 D4にはまたその差が入力さ れるように設定 また、入力 当日のデータを入力したら 自動的に 翌日のセルの前日データのセルに 同じ数値が入るようにしています(例えばB3に入力したら翌日のC4セルに同じ数値が入る ) といったように 設定しました ここまでで 大体の表が完成したのですが ちょっと困ったことが おきてきました 当日の数値を入力すると 翌日のCセルに入力するようにしたのですが(B3に 入力すると 同じ数値がC4入力されるように設定) その際 一つおききしたいことができました 当日の数値を入力すると 翌日のB列が空白になり その行のEセルに数値が入って しまうのです。わたしとしては 基本的な設定を変えずに、ここを0に設定したいのですが その方法が分かりません  これとは 別に平行して 家計費の表を別で作成していた時 他の方からのアドバイスで 以前、空白の欄を0をする 関数を教えていただきました 其の時は 他の関数と 重なっている関数でした(加算減算を同時にする計算) この時の =IF(count(B3)=,"", , といったような関数を参考に色々試してみたのですが 中々うまくできません どうしたら この状況を解決できるでしょうか? 何方か お知恵をお貸しください 説明が分かりづかくて 申し訳ありません 宜しくおねがいいたします OSはVISTA ヴァージョンは2007です 重ねてもうしあげますが 説明が分かりづらくて申し訳ありません

  • Excelの空白セルを正しく認識しない

    数字と空白の入り交じった表Aと表Bのデータを加算して、新たに表Cを作ろうとしています。 普通に表Cのセルに、「表Aのセル」+「表Bのセル」を書き込めば良さそうなのですが、 一見すると空白に見える一部のセルを参照した式で#Valueのエラーが表示されてしまいます。 最初は、何か文字(空白記号など)が入っているのかと思い、調べたのですが、やはり、なにも入力されていないようです。 しかし、エラーとなっている式が参照しているセルでDeleteを押すと、エラーが解除されることは確認できています。 膨大なデータにランダムに数字が入っているので、 一個一個のセルをDeleteしていくのは非常に時間がかかるので、何かよい解決策をご存じの方がいらっしゃったら、知恵を貸してください。 ※ ちなみに、参照先になっている表は私が作った物ではなく、また0から作り直すことはできません…。

  • エクセル 関数で空白を入れたセルと空白セルは違う?

    エクセル2010を使っている者です。 「データ」というシートのAL5というセルに IF(ISERROR(INDEX(AL1:AL500,$A$5)),"",INDEX(AL1:AL500,$A$5)) と関数を入れており、その結果、空白が戻り値となり、見た目上、AL5は空白となっています。 しかし、別のシートのあるセル(A1とします)に =IF('データ'!AL5="","",DATE(YEAR('データ '!AL5)-1,MONTH('データ '!AL5),DAY('データ '!AL5))) と関数を入力すると、AL5は空白として扱われていないようで、そのセル(A1)は空白にならずに「H1810.12.31」と表示されてしまいます。 AL5に空白が返されているのなら、それを空白として扱ってもらうようにするにはどうすれば良いですか?

  • エクセルで空白セル”” と未入力セルの違い

    関数で セルA1 に=if(B1=0,"","入力済") としました。 セルの選択を素早くするためにショートカットキー「Ctrl+↓」を 利用しています。 通常の未入力空白セルは上記のショートカットで飛ばされて選択 されません。 これに対して上記関数で ""  として入力されたものを コピーして値だけを貼り付けたとしても 上記ショートカットキーで飛ばされず選択されてしまいます。 見た目は 全く同じ 空白セルです。(関数も値貼り付けをしているので消えています。) 未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。 また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。もちろんDeleteKeyを使って未入力の空白セルに 戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。 おわかりの方お教えください。

  • EXCELで、参考対象のセルが空白の場合、の空白表示(複数対象)

    表1(1日単位の入金額)     A    B    C    D    ・ ・ 5  「 10」 「 10」 「 10」 「 20」   6  「 10」 「 20」 「 20」 「空白」   7  「空白」 「空白」 「空白」  「空白」   表2     A    B    C    D    合計 ・ ・ 5  「100」 「150」 「130」 「200」  「580」(A+B+C+D) 6  「110」 「 170」 「 150」 「200」  「630」 7  「空白」 「空白」 「空白」 「空白」  「 X 」 この表2で、ABCDの全てのセルが空白(7)の場合、「 X 」のセルが空白になるようにしたいのです。 勿論数値が入力されれば、ちゃんと計算出来るようにします。 ちなみに表2のABCDの各セルは、表1で入力された数値の積算金額(6段目の場合、表1の6+表2の5の合計)です。 一個だけならIF関数で、処理できたのですが、複数のセルの場合はどのようにするかが質問です。 よろしくお願いします。 なお、質問文が解らない部分があれば、補足いたします。    

  • エクセル。複数行あるセルの分割はできますか?

    こんにちは。 教えてください! たとえば、B1のセルに次のように3行でデータが入力されていたとします。 B1「日本   アメリカ   イギリス」 これをそれぞれ分割して次のようにできる関数はありますか? B1「日本」 B2「アメリカ」 B3「イギリス」 それが簡単にできると仕事がスムーズになるので助かります。 もし次のことも解決できる方法があれば教えてもらえませんか? A1「8月30日」 B1「日本、アメリカ、イギリス(3行で入ってます) C1「出発」 というようなデータがあって、B1をそれぞれの国で分割して、A1とC1のデータをアメリカが入っている行、イギリスが入っている行に自動的にコピーされる。 これは関数ではなくて、マクロになるのかな?とも思うのですが、「分割が行われた行までコピー」というやり方がさっぱりわからないでいます。(その前に分割する方法が分からないんですけど・・・) ちなみに、データがずらーっと並んでいるリストの一部にあるB1のようなデータを整理したいというのが、目的になります。 どうぞ宜しくお願い致します。

  • 空白セルを計算しないようにしたい

    エクセルで例えばB20のセルに「=COUNTIF(A1:A20,(A20))」と式を入力しました。 A20に入力した言葉が、A列に何回出てきたか、その数をB20に表示する式ですが、 A20が空白の場合もカウントしてしまいます。 A20が空白の場合はカウントしない(または表示しない・見えない)ようにするには どういう式を組み込めばよろしいのでしょうか。

  • Excel 空白セルのコピペについて

    http://imgur.com/5e8TsP1 上記図のように、シート1のB列に各文字を入力しています。 そして、A列にはもしB列に文字が入力されていたらID代わりの数値を表示する、という式を入力してあります。 次に、シート1のA列、B列をコピーして、シート2に数値としてペーストをします。 すると、A列は空白のはずが、xldown操作をすると元のセルで式が入力されていたものまで選んでしまい、真の空白セルとして認識してくれません。 そこで、このような例の場合、どうコピーペースト、または選択をすれば偽物の空白 セルを生み出さないように出来るでしょうか? 実際に使用するデータは項目名が多く存在し、マクロですべてのセルを選択→新規ブックを作成してそこにペースト、という処理を行っています。 この時に偽物の空白セルが出ると、データベースに読みこむ際に不都合が生じますので、何とか改善を図りたいです。 VBA、関数、Excel上のテクニックのいずれでも構いませんので、どうかご教授下さい。 よろしくお願いいたします。

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

専門家に質問してみよう