- ベストアンサー
エクセルで空白セルを抽出して連番
データが約1,000件あって、その中のある列の一部のセルに飛び飛びに空白セルが200件ほどあります。 これを抽出して、001などのように3桁の連番をふりたいと思います。 オートフィルターを使ってセル毎に入力しましたがらちがあきません。 まとめてできる方法がないでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その飛び飛びの空白が同じ列にあるなら、並べ替えをしたらよいのではないでしょうか。 いったん並べ替えをすると「元に戻す」くらいでしか元の状態に戻せませんが(つまり作業直後しかできない)、 作業用に1列挿入してそこに連番を振っておけば 最後に連番列で並べ替えなおせばいいので楽勝です。 (1) 連番列を作成 (2) 空白の混じっている列を「最優先されるキー」に、連番列を「2番目に優先されるキー」にして並べ替え (3) 空白がかたまるので、001からオートフィルなどを使って値を入力 (4) 連番列を「最優先されるキー」にして再度並べ替え (5) 連番列削除
その他の回答 (4)
- Nouble
- ベストアンサー率18% (330/1783)
データが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 という感じにその記入した最大値を加算するよう書き加えてください
お礼
関数を使わずに、先の方の説明で解決しました。 参考にさせていただきます。ありがとうございました。
- zap35
- ベストアンサー率44% (1383/3079)
「ある列」とは特定の一列ということでよいのでしょうか。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を押して、マクロ名を選択します。
お礼
ありがとうございます。 先の方の説明で解決できました。実際に操作するのは私ではないし、マクロには疎い方なので折角ですが、ポイントの対象から外させていただきました。申し訳ありません。
- fighting-okan
- ベストアンサー率15% (3/20)
こんなんでいかがでしょう? 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
お礼
ありがとうございます。 先の方の説明で解決できました。実際に操作するのは私ではないし、マクロには疎い方なので折角ですが、ポイントの対象から外させていただきました。申し訳ありません。
- mame9999
- ベストアンサー率44% (90/203)
列を1列追加します その列に一番最後まで連番を振ります 飛び飛びの列→連番を振った列の順で並び替えます (空白が入っている部分だけが集まります) 空白行に一気に連番を振る 連番を振った列のみで並び替える 連番の列を消す でいかがでしょうか
お礼
ダミーを入れての並べ替えは経験があるので難なく操作できました。 もう少し熟考すれば良かったと反省しています。 お手数をお掛けしました。ありがとうございました。
お礼
ダミーを入れての並べ替えは経験があるので難なく操作できました。 もう少し熟考すれば良かったと反省しています。 お手数をお掛けしました。ありがとうございました。