• ベストアンサー

エクセルで空白セルを抽出して連番

データが約1,000件あって、その中のある列の一部のセルに飛び飛びに空白セルが200件ほどあります。 これを抽出して、001などのように3桁の連番をふりたいと思います。 オートフィルターを使ってセル毎に入力しましたがらちがあきません。 まとめてできる方法がないでしょうか。

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

  • ベストアンサー
  • shanglee
  • ベストアンサー率43% (58/134)
回答No.2

その飛び飛びの空白が同じ列にあるなら、並べ替えをしたらよいのではないでしょうか。 いったん並べ替えをすると「元に戻す」くらいでしか元の状態に戻せませんが(つまり作業直後しかできない)、 作業用に1列挿入してそこに連番を振っておけば 最後に連番列で並べ替えなおせばいいので楽勝です。 (1) 連番列を作成 (2) 空白の混じっている列を「最優先されるキー」に、連番列を「2番目に優先されるキー」にして並べ替え (3) 空白がかたまるので、001からオートフィルなどを使って値を入力 (4) 連番列を「最優先されるキー」にして再度並べ替え (5) 連番列削除

takkuni
質問者

お礼

ダミーを入れての並べ替えは経験があるので難なく操作できました。 もう少し熟考すれば良かったと反省しています。 お手数をお掛けしました。ありがとうございました。

その他の回答 (4)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.5

データが1シート上にある いまだ1CELLも連番が入っていない データ最上位行が3行目である 空白セルのある列はG列である とします 1列作業列をください 仮にこれをAA列とします まず第一段階として AA3に =IF(G3="",TEXT(COUNTIF($G$3:G3,""),"000"),G3) と入力し これをデータ最下位行までコピーしてください 第二段階として 今敷を入れたAAのセルをすべて範囲選択してコピーし 連番を入れたいG列に対し行ズレを起こさないように注意して値貼り付けしてください 第三段階として 不要となったAA列を削除してください これでお望みのままになったと思います 如何でしょうか? もし幾らかのセルは既に連番で埋まっているようなら 構文中のCOUNTIF($G$3:G3,"")の部分に COUNTIF($G$3:G3,"")+53 という感じにその記入した最大値を加算するよう書き加えてください

takkuni
質問者

お礼

関数を使わずに、先の方の説明で解決しました。 参考にさせていただきます。ありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

「ある列」とは特定の一列ということでよいのでしょうか。1列に限定してブランクセルに3桁の連番を振るのであれば、こんなマクロでしょうか。 Sub Macro() Const trgCOL As String = "E" '←ここに処理する列を記述する Dim LastR, wkNum As Long, c As Range  LastR = ActiveSheet.Cells(65536, trgCOL).End(xlUp).Row  For Each c In Range(Cells(1, trgCOL), Cells(LastR, trgCOL)) _      .SpecialCells(xlCellTypeBlanks)   wkNum = wkNum + 1   c.Value = wkNum   c.NumberFormatLocal = "000"  Next c End Sub マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はALT+F8を押して、マクロ名を選択します。

takkuni
質問者

お礼

ありがとうございます。 先の方の説明で解決できました。実際に操作するのは私ではないし、マクロには疎い方なので折角ですが、ポイントの対象から外させていただきました。申し訳ありません。

回答No.3

こんなんでいかがでしょう? Sub test() Dim i As Integer Dim count As Integer Dim count3 As String count = 0 For i = 0 To 20 If ActiveCell.Offset(i, 0) = "" Then count3 = count Do While Len(count3) <> 3 count3 = "0" & count3 Loop ActiveCell.Offset(i, 0).Value = count3 count = count + 1 End If Next End Sub

takkuni
質問者

お礼

ありがとうございます。 先の方の説明で解決できました。実際に操作するのは私ではないし、マクロには疎い方なので折角ですが、ポイントの対象から外させていただきました。申し訳ありません。

  • mame9999
  • ベストアンサー率44% (90/203)
回答No.1

列を1列追加します その列に一番最後まで連番を振ります 飛び飛びの列→連番を振った列の順で並び替えます (空白が入っている部分だけが集まります) 空白行に一気に連番を振る 連番を振った列のみで並び替える 連番の列を消す でいかがでしょうか

takkuni
質問者

お礼

ダミーを入れての並べ替えは経験があるので難なく操作できました。 もう少し熟考すれば良かったと反省しています。 お手数をお掛けしました。ありがとうございました。

関連するQ&A

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

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

  • Excelでフィルタをかけた状態でオートフィルタで連番を振りたい

    Excelでオートフィルタを設定し、抽出したデータがあります。(ですので表示範囲があります)その抽出したデータのある列に連番を振りたいのですが、非表示ににゅうりょくされてしまうためうまくできません。 またオートフィルタで抽出した範囲の可視セルをコピーすることはできても、再度貼り付けることもうまくできません。 何か方法はないでしょうか。

  • 空白セルへの連番入力

    添付図にて、B列には、空白を含め連番(101~)が並んでいます。 そして、B列の空白セルに、C列のような新たな連番(201~)を入れようとしています。 出来上がりはD列のようになります。 ここで、元のデータを消してはなりません。 また、新たな連番の初期値(201)は手入力するとします。 以前にもここで質問しましたが、そのときは私の日本語が悪く、希望の答えをもらうことが出来ませんでした。頭を冷やして再度質問させてもらいます。

  • エクセルで空白セルのみ抽出

    エクセルでフィルタをかけて、空白セルのみ抽出したいとき、 普通ならプルダウンで「空白セル」という項目があるかと思うんですが、下のように空欄状態のものもでてきてしまうときがあるのですが、 これはなぜなんでしょうか?? フィルタをかけてプルダウンで選ぶと↓のように表示されます。 りんごとバナナの間に空欄があってそこを選択すると空白セルが抽出されますが、(空白セル)と選んでも空白セルが抽出されます。 けれど、違う空白セルが抽出されます。なぜなのでしょう???  ジャム  りんご  バナナ (空白セル) (空白セル以外)

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

    エクセルで空白を含む列の中から 空白以外のセルを順に表示させたいのですが、可能でしょうか? 例えば、 社名   売上額 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 の様に集計表を作るのに、社名の列の空白の行を詰めて表示させたいのですが、 オートフィルタや並べ替えを使わずに関数で抽出したいと思っているのですが、可能でしょうか? 宜しくお願いします。

  • オートフィルタ後のデータから空白セルを数えたい

    はじめまして、 Excel2002(SP3)で、オートフィルタで抽出したデータから空白セルだけを数えたいのですが、subtotal(3)"countA"だと空白以外のセルしか数えられず、"Countblank"は抽出外のデータからも空白セルを拾ってきてしてしまうため、なかなかうまくいきません。 なにか良い方法はあるでしょうか?

  • オートフィルタ抽出データに連番をつけるマクロ

    オートフィルタで抽出したデータに連番をふりたいと思っています。このサイトで調べた結果、オートフィルタをかけてのオートフィルでの連番入力はできないと知りました。 現在しようとしているのは   A  B  C 1 クラス NO 氏名   2 1    ○△ 3 2    □× 4 1    ★♪ というデータがあり、項目にオートフィルタをかけている状態です。クラスを抽出した場合にそのクラスでの通し番号(連番)を付けたいのです。SUBTOTAL関数だと、連番が表示されるのはオートフィルタで抽出している間だけです。SUBTOTALでつけられた連番を、オートフィルタを解除しても残しておくにはどうしたらよいでしょうか。やはりコピー&ペーストしかないのでしょうか?似たような質問が多々ありますが、コピー&ペースト以外の方法をご存知の方、どうか教えて下さい。

  • エクセルで連番をマクロで

    こんにちは いつもお世話になっています。 Windows7、エクセル2010で教えてください。  B3から仮にB100まで文字列があるとします、空白セルはありません。 この状態でA3からA100まで1から始まる連番をマクロで実行したいのです。 実際はB列のデータの最終行は不定です。つまり、B列にデータがなくなるまで(空白セルになるまで)A列に連番をつけたいのです。現在はA3,A4に1,2と入力し、オートフィルで該当セルを選択し「予測」で連番をつけています。 マクロ記録ではB列にデータがなくなる判断ができなくて作れません。 この作業が頻繁にあるものですからマクロができれば助かります。 よろしくお願いいたします。

  • エクセルでオートフィルターで抽出した文字列に連番

    エクセルで、オートフィルターで抽出した文字列に連番をつけたく思っております。 通常、 apple1 apple2 apple3 ・ ・ と連番をふりたいときには、apple1とapple2を入力し、その2つのセルを選択状態にして、 セルの右下を下方にのばすかダブルクリックして連番を作成しています。 今回は apple pine apple apple apple green apple ・ ・ と言った具合に、既に入力された行が5000ほどあります。 このうち、「apple」だけが入力されたセルを「apple1」「apple2」・・・というように 変更したいと考えています。つまり、こんな感じが求める最終型です。 apple1 pine apple apple2 apple3 green apple ・ ・ 検索・置換だと、「pine apple」のappleや、「green apple」のappleも置き換わってしまうので、使えません。 フィルターでappleのみの行を表示させ、一番上に書いた時のようにapple1、apple2をて入力して セルの右下を引っ張ると、フィルターで見えなくなっているセルまでapple1、apple2、apple3と 連番になってしまいます。 なんとか、フィルターで抽出した「apple」だけのセルに対して連番を付加できないでしょうか?

  • 空白セルから連番をつける

    エクセル2000を使用しています。 1.B4に以下の式を入力し、C列に文字入力するとB列に連番がふるようにしています。     =IF(C4="","",ROW()-3) 2.B53までこの式をオートフィルし、50行の連番としています。     =IF(C4="","",ROW()-3)     =IF(C5="","",ROW()-3)     =IF(C6="","",ROW()-3)           ・           ・           ・     =IF(C53="","",ROW()-3) 3.B54は区切りのため空白となっています。 4.B55から再び連番を付けるため以下の式を入力しています。     =IF(B55="","",ROW()-54) ここからが質問ですが、4項の式をB4~B53からコピーペーストすると、     =IF(B55="","",ROW()-3) となるため、末尾の3を54に手入力により変更する必要が発生してしまいます。 コピーペースト後、式変更の必要ない関数は作れるでしょうか? 連続する場合はオートフィルを使いたいのでそこは崩さない方法です。 また、マクロは使わない方法でお願いします。

専門家に質問してみよう