- ベストアンサー
エクセルで連続している数字について
エクセルで質問です。 A列に連続して並んでいる数字の中に、 歯抜けになっている数字があります。 例) 1 2 3 5 9 10 11 13 ・ ・ ・ 抜けている数字の箇所に空白のセルを挿入したいのですが、 どうすれば良いのでしょうか? 初歩的な質問ですいません。 宜しくお願い致します。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
最大数が10000とする。かつ重複なし。 B1からB10000に連続番号1-10000を記入する。下記。 B1=1としB1を選択、編集>フィル>連続データ 範囲は「列」停止値「10000」。 C1=IF(COUNTIF(A:A,B1)=1,B1,"") フィルハンドルをダブルクリック。 C列が目的のもの。 ___A__B__C 1__1__1__1 2__2__2__2 3__4__3 4__7__4__4 5__8__5 6_10__6 7_____7__7 8_____8__8 9_____9 10___10_10
その他の回答 (8)
- FEX2053
- ベストアンサー率37% (7991/21371)
#3です。とりあえずマクロのバグをFix、と・・・。 9行目の「Selection.Formula = A」を「Selection.Formula = ""」に 修正して下さい。このままだと空白じゃなく、空いてる場所の数字が 入力されちゃいます。 で、#5さん#6さんともに面白い発想だと思います(特に#6さんの発想 は凄いと思います)。ただ、ご両人の式はともにA1セルからデータが 順に並んでいることを大前提に作られていますので、数列が別の場所 (特に別の行)にあるなら、結果は当然得られませんよ。 私のほうの問題は、多分コードを記入する「VBE上の場所」を間違えたか、 VBAのお作法どうりに作業されてないことが原因だと思います。 そのコードから出るわけがないエラーが出ていますので。 とりあえず、VBA初心者向けサイトのリンクを張っておきますが、 概念から理解しないと使いづらい機能ですから、片手間じゃ大変です。 http://www.tsucchy.com/Excel/index_e.html http://www.sanynet.ne.jp/~awa/excelvba/kouza.html ・・・#2で言ったように頑張って手動でやったほうが絶対早いですって。
お礼
再度ご回答頂きありがとうございます!! 9行目を変更してみましたが、見事に先ほどと同じ結果になってしまったので、 ご指摘の通り、私の作業方法が間違っているのだと思います。 今回の質問に関して、理解するにはVBAをはじめ、 もう少し勉強が必要だということがよく分かりました・・。 (時間もかなりかかってしまいました;) 大変丁寧に教えて頂いて、本当にありがとうございました。
- nobu555
- ベストアンサー率45% (158/345)
ANo.6です。 >ちなみに数式をB列に入力した段階でB列にはなにも表示されませんが >それは問題ないでしょうか。 問題あります。 表示されなければ、空白表示ですので、 コピーして貼り付けても空白になります。 先の回答の数式は、対称値が数値と比較してますので、 全角数字または文字列になっていると 空白表示になります。 B列に下記の数式を入力して =ASC(A1)*1 A列の数字と同じだけコピーする。 C列に下記の数式を入力して =IF(ISNA(MATCH(ROW(),B:B,0)),"",ROW()) 必要な分コピーして 作業列を「形式を選択して貼り付け」の「値」で A列に貼り付けする。 関数の詳しい説明は、ヘルプや下記サイトを参照してください。 http://www3.tokai.or.jp/excel/kansu/f_main.htm
お礼
再度丁寧なご回答を頂き、誠にありがとうございます。 上記の通りでやってみたところ、問題なくできました! 色々とお手数をおかけしてしまってすいません。。。 上記の数式の意味をまだ全部分かっていない状態で使わせて頂いたので、 教えて頂いたサイトなどでしっかり勉強したいと思います。 本当にありがとうございました。
- nobu555
- ベストアンサー率45% (158/345)
以下の方法は如何でしょう。 未使用の列の1行目から下記の数式を入力 =IF(ISNA(MATCH(ROW(),A:A,0)),"",ROW()) 必要な分コピーして 作業列を「形式を選択して貼り付け」の「値」で A列に貼り付けする。 作業列を削除すれば、 歯抜けの数字の箇所には空白セルになります。
お礼
ご回答ありがとうございます。 上記の数式をB列にずらっと入力、それをコピー→ 形式を選択して貼り付け→値を選択してA列に貼り付けたところ セルの値が全て消えてしまって真っ白になってしまったのですが・・ 何かやり方がまずいのでしょうか?? ちなみに数式をB列に入力した段階でB列にはなにも表示されませんが それは問題ないでしょうか。
- marbin
- ベストアンサー率27% (636/2290)
面倒な方法をば・・・。 別シートに連番を振り、 VLOOKUPで参照するとか。 シート1のA1~C100の表を参照する場合です。 別シートを作業に使います。 =IF(COUNTIF(Sheet1!A$1:A$100,A1)<>0,VLOOKUP(A1,Sheet1!A$1:C$100,2),"") =IF(COUNTIF(Sheet1!A$1:A$100,A1)<>0,VLOOKUP(A1,Sheet1!A$1:C$100,3),"")
お礼
ご回答頂き誠にありがとうございます!! 初心者の私には、上記の関数を使いこなすにはもうちょっと時間が必要のようです・・・(ToT) 今回の質問は、もう少し勉強をしなくては理解できないレベルだったんだな~と痛感しました。 本当にありがとうございました。
途中まではきちん数字が並んでいると思いますので 並んでない数字(修正したい数字)の一つ前のセルを置き、そのままドラックをしますと同じ数字がいくつも出てくるので、 その最後のセルにマークがでてくるので、それをクイックして、「連続データ」というところをクイックすると良いと思います、
お礼
ご回答ありがとうございます。 こちらの方法でやってみたところ、連続した数字は表示されますが、 空白セルを挿入する事ができませんでした;; やはりマクロ等を使わないと難しいようですね・・・。
- FEX2053
- ベストアンサー率37% (7991/21371)
ちょっとマクロを作ってみました。 「ツール」「マクロ」「VisualBasicEditor」で「標準モジュール」を 追加して、以下のコードを書いて実行すればいけるはずです。 Sub Macro1() A = Selection.Value Do Selection.Offset(1).Select B = Selection.Value A = A + 1 Do While A < B Selection.EntireRow.Insert Selection.Formula = A A = A + 1 Selection.Offset(1).Select Loop Loop Until B = 0 End Sub あくまで「参考」です。コード内容の100%保証は出来ませんけど。
お礼
ご回答頂きありがとうございます。 マクロまで作って頂きありがとうございました! 関数では無理なのですね・・。 初心者でそんなことも分かっておらず失礼致しました。 お察しの通り、マクロの事もよく分かっていないのですが、 上記の手順で行ってみたところ、 「アプリケーション定義またはオブジェクト定義のエラーです」と 出てしまいました。 やり方が何かまずかったのかもしれませんが・・・。
- FEX2053
- ベストアンサー率37% (7991/21371)
関数を使って出来ることは「セル内のデータを表示する」だけです。 お望みの作業は「セル内のデータを移動する」ことですから、関数じゃ 無理です。 頑張って手動でやるか、さもなければマクロを組むかですが、マクロ について全然ご存知じゃないなら、手動で1つずつ挿入したほうが 多分早く終わるんじゃないかと思いますよ。
- kokorone
- ベストアンサー率38% (417/1093)
歯抜けになっているセルを選択し、「挿入」メニュー「行」を選択 してください。 場合によっては、「挿入」メニュー「セル」「下方向にシフト」 でもよいかと、思います。
お礼
ご回答頂きありがとうございます!! 質問内容に不備がありました。すいません。 これらの数字は1~10000くらいまで並んでおり、 出来ればいっぺんに歯抜けの箇所に空白セルを挿入したいのです(^0^; 関数などで解決できるものでしょうか?
お礼
ご回答頂き、誠にありがとうございます。 こちらの方法でやってみたところ、空白のセル挿入を含め、 私がやりたかった事が一発でできてしまったので、 すごくびっくりしました!!この様な方法もあるのですね。。 大変感謝しております。 本当にありがとうございました!!!