- ベストアンサー
excelでかけた数字の項を追加する方法について
度々質問失礼します。 excelのデータで例えば 1 1 2 0 3 1 4 1 6 1 7 1 8 1 10 1 11 1 13 0 14 1 のような縦のデータがあり、このデータを 1 1 2 0 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 0 14 1 のように抜けている数字の所の分に新しいセルを挿入させて数字の入力も自動で行いたい(横のセルは抜けている数字の所は1にしたいです。)のですが、何かよい方法はないでしょうか? お手数ですが、どなたかわかる方回答よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ご利用のエクセルのバージョンが不明ですが,Excel2007以降を使っているなら 手順: A列に番号,B列に1かゼロを並べておき, A列の番号の下にもう一度1から順に番号を1,2,3…とオートフィルドラッグで記入 A列を選んでデータタブの「重複の削除」を行うと,下に付けた1,2,3…から抜けてた番号だけが残るので,右にまとめて1を記入 最後にA列の昇順で全体を並べ替えれば完成です。 #Excel2003以前でも「フィルタオプションの設定」の機能で大体似たような事が出来ますが,手数が多いので割愛。 手を動かすのはイヤで,関数でヤリタイときは。 シート2のA1に =ROW()を記入 シート2のB1に =IF(COUNTIF(Sheet1!A:A,A1),VLOOKUP(A1,Sheet1!A:B,2),1) を記入,下向けにコピーして完成。 必要に応じてA,B列をコピー,その場で型式を選んで貼り付けの値にマークしてOKし,値化する。
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
>何かよい方法はないでしょうか? ⇒VBAが簡単です。 (1)対象データのシートタブ上で右クリック→コードの表示→以下のコード貼り付け→F5キー押下 (2)サンプルコード A・B列にデータ、空白行はない事としています。 Sub sample() For i = 2 To Cells(Rows.Count, 1).End(xlUp) If (Cells(i, 1) - Cells(i - 1, 1)) <> 1 Then Rows(i).Insert Cells(i, 1) = Cells(i - 1, 1) + 1 Cells(i, 2) = 1 End If Next End Sub
- muunoy
- ベストアンサー率38% (70/183)
データ数にもよりますが、VLOOKUP関数かCOUNTIF関数を使用すれば、作表の助けになると思います。 ご質問の下部の表、「抜けのない数字の列」を作成してしまい、その表をもとに、上部の表のに数字が存在するか関数で検索した結果を表示する表になります。 VLOOKUP関数ならば、上部の表に完全一致する数字があれば、’1’をなければ‘0’を表示するように設定します。 COUNTIF関数ならば、上部の表に存在する数字の個数を表示できますから、数字が重複する対応できます。 「数字の所の分に新しいセルを挿入させて数字の入力も自動で行いたい」という処理手順が必要ならば、VBAマクロで簡単に行えます。 ただし、「セルを挿入」という操作は、比較的負荷が大きいので、あまりお勧めしません。 マクロで、別なシートに数字を順番に読み書きしながら、抜けがあるかを判断し(ある:1 ない:0)、抜けがあれば抜けた数字を書き加えてから次の数字を処理する…というのが実際の流れとしては良いと思います。 詳細情報は、ソフトのバージョン等がわからないと回答が難しいです。 ご参考まで。
お礼
回答ありがとうございます。 おかげさまで自動で短時間で作業を行うことができました!