新規無料会員登録で1000名様に電子コミック1000円分が当たる!!

こんにちは。
あるエクセルの表があります。1500行くらいあるのですが、10行毎に1行づつ新しい行を挿入したいのですが、
一気に簡単に実行する方法はありませんか?
初心者なのでとても苦労しています…
地道にやるしかありませんか?
どなたか教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (8件)

A列にデータがあるとして、作業列B列のB1に10、B2に20といれ、フィルハンドルを出し、下へ最終行まで引っ張ります。


10、20,30、・・・と番号が振られます。
最終行の次にA列空白、B列に11、
その下にB列に21と入れて、+ハンドルを出し最終行の番号を凝れるまで引っ張ります。
11、21,31,41、・・・と10づつ増えます。
B列で並べ替えしてください。
10の後に11(=A列空白)、20の後に21(=A列空白)・・が収まります。
これで10行おきに、空白行が入ります。
B列を削除してください。
    • good
    • 7

既に、実現可能な回答が出ているようですが、他にも方法があるという事で、回答させていただきます。



先ずは、マクロの方法を以下に示します。

'--------マクロコード--------始まり
Sub Macro1()
  Dim i1 As Integer
  For i1 = 1501 To 11 Step -10
    Rows(i1 & ":" & i1).Insert Shift:=xlDown
  Next i1
End Sub
'--------マクロコード--------終わり

上の例では、各10行毎に行全体を挿入していますが、一部の列のみ挿入するなら、

    Rows(i1 & ":" & i1).Select

    Range("C" & i1).Insert Shift:=xlDown 'これは、C列のみ挿入
に変えてください。


マクロを使わずにやれる方法を以下に示します。
10行毎に空白を入れるには、1.各行に行番号を振り、2.それと10行毎の中途半端な行番号(9.1,19.1,29.1等)を作り、3.それを組み合せてソートする、という方法でできます。

なお、前提条件として、B列,C列が空いている物とします。

1.
B1セルに「=ROW()」を入れる。
B1の式をB2~B1500セルにコピーペーストする。
2.
C1セルに「=ROW()*10+0.1」を入れる。
C1の式をC2~C150セルにコピーペーストする。
3.
B列,C列を選択して、コピーする。
「編集」メニューの「値を選択して貼り付け」で「値」を選択して「OK」をクリックする。
C1~C150セルを選択して、コピーする。
B1501セルにペーストする。
シート全体を選択する。(「Ctrl」+「A」)
「並び替え」を行なう。この時「最優先されるキー」を「列B」にする。
この後、B列,C列は不要なので、削除する。
B列,C列を削除する。
    • good
    • 0

#3 です。



#3 だと、総行数が 10 で割り切れないと変なところ
に空行を挿入してしまいますね、、

スルーして下さい。すみません。
    • good
    • 1

こんにちは。



Sortメソッドがひじょうに速いので、挿入させる場合も、以下のようにしたらよいかと思います。一応、補助列は、IV列(一番最後の列)を使っています。しかし、これは、手作業でも簡単に出来ます。補助列を使って、フィルダウンか、数式で、1~1500までを作り、その最後の行の次から、 "=ROW(A1)*10" を入れて、並べ替えをすればよいです。

Sub InsertBlankRow()
Dim LastRow As Long
Const TMP_COL As String = "IV" '補助列
LastRow = Range("A65536").End(xlUp).Row
Application.ScreenUpdating = False

With Range(TMP_COL & "1").Resize(LastRow)
  .FormulaLocal = "=Row()"
  .Value = .Value
  .Offset(LastRow).Resize(Int(LastRow / 10)).FormulaLocal = _
    "=ROW(A1)*10"
  .Offset(LastRow).Resize(Int(LastRow / 10)).Value = _
    .Offset(LastRow).Resize(Int(LastRow / 10)).Value
End With

Range("A1:" & TMP_COL & LastRow + Int(LastRow / 10)).Sort _
    Key1:=Range("IV1"), _
    Order1:=xlAscending, _
    Header:=xlNo, _
    OrderCustom:=1
Range(TMP_COL & "1").EntireColumn.ClearContents

Application.ScreenUpdating = True
End Sub
    • good
    • 0

関数でやる方法です。



A列を10行おきに1行あけるには、

=IF(MOD(ROW(),11)=0,"",OFFSET(OFFSET($A$1,INT(ROW()/11)*10,),ROW()-1-INT(ROW()/11)*11,))

をコピー先の先頭行に入れてください。そしてそれを、縦方向に適当なところまでコピーしてください。

B列を10行おきに1行あけるには、上記の「$A$1」を「$B$2」と置き換えてください。

いかがでしょうか。
    • good
    • 0

こんにちは。

KenKen_SP です。

このような処理の場合、最終行から上に向かってループさせます。
開始行から下に向けてやると Insert で行数が増えて、最後まで
処理できないからです。

Sub Sample()

  Dim i As Long
  Dim r As Long
  
  With ActiveSheet.UsedRange
    r = .Rows(.Rows.Count).Row
  End With
  Application.ScreenUpdating = False
  For i = r + 1 To 10 Step -10
    ActiveSheet.Rows(i).Insert Shift:=xlDown
  Next i

End Sub
    • good
    • 0

マクロを使うと簡単なのですが、マクロの使い方を初心者に説明するのがなかなか難しいです^^;


とりあえずマクロで1500行分、10行毎に行挿入するプログラムを以下に書きました。

Sub Macro1()
For Idx = 10 To 1500 Step 10
Rows(Idx & ":" & Idx).Insert Shift:=xlDown
Next Idx
End Sub

これを実行するには、以下の手順でマクロを作成して実行します。
1.メニューより、ツール→マクロ→新しいマクロの記録
2.メニューより、ツール→マクロ→記録の中止
3.メニューより、ツール→マクロ→Visual Basic Editor
4.左ペインにある「標準モジュール」をダブルクリック
5.「Module1」をダブルクリック
6.「Sub Macro1()」と「End Sub」の間に上記のプログラムを書きます
7.エクセルに戻り、メニューより、ツール→マクロ→マクロ
8.Macro1を選択し、実行を押します。
    • good
    • 0

以下の方法は如何でしょうか。


 A1:A1500にデータが入っているとし,B列を作業列とします。

1.B2:B10に任意文字を入力
2.B2:B11を選択してフィルハンドルをダブルクリック
→B2:B1500が選択された状態
3.Ctrl+G (メニュー[編集]-[ジャンプ])
4.[セル選択]ボタンをクリック
5.[空白セル]にチェック→OK
6.選択された空白セル上で右クリック
7.[行全体]にチェック→OK
8.B列を削除
    • good
    • 2

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、2行おきに1行追加する方法

エクセルで、2行おきに1行追加する方法

行が2000行位あるデータについて、
1行毎では時間がかかるので、
他の方法(マクロでも作業列等)を教えて下さい。



行1 A
行2 B
行3 C
行4 D
行5 E
行6 F
行7 G
行8 H
   
上記2000行のデータを下記のように行追加をしたいのです。

行1 A
行2 B
行追加
行3 C
行4 D
行追加
行5 E
行6 F
行追加
行7 G
行8 H

よろしくお願い致します。

Aベストアンサー

たとえば2行おきの場合。

添付図:
隣列に,B1に数字の1,B2に数字の2を置いてB1:B2をオートフィルドラッグして連番を記入させます。
その下に,2行おきならまず2を記入,そして4を記入してオートフィルドラッグして2,4,6,8の数字を作ります。
AB列をB列昇順で並べ替えると出来上がりです。


n行置きの場合も同様に,B列下に継ぎ足す数字をnおきの数字に作って操作すれば出来ますね。
また,下に継ぎ足す数字の開始番号を調整すれば,どこから空を挿入するか微調整するのも容易です。

QExcelで一行おきに2行の空白行を挿入したい

400行ほどデータの入ったエクセルシートがあります。
行番号 A列
 1  山田
 2  鈴木
 :   :
 400 田中
このシートで、一行おきに2行の空白行を追加したいのですが、
 1  山田
 2
 3
 4  鈴木
 5  
 6
 :  :

マウスで2行選択して右クリックメニューで挿入..を400行分やるのが大変なので
一気にやる方法を教えてください。

Aベストアンサー

こんにちは、マクロですが
Sub Test()
  Dim i As Long
  For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
    Rows(i).Resize(2).Insert
  Next
End Sub

Q【エクセル】2行に一行のように、規則的に行を新規挿入したい

お世話になります。

ぎっちり作ってしまったエクセルの表に対して、
2行に1行、空白行を挿入したいと思います。

この場合の作業について、考えてみたものの、
なかなかうまくできません。

お手数ですが、お知恵を拝借させていただければ、
幸いです。よろしくお願い致します

Aベストアンサー

たとえば、100行分のデータがあるとします。

1.まず、A列の前に一列挿入します。
2.A1セルに1、A2セルに3と入力します。
3.A1セルとA2セルを範囲指定し、右下をドラッグして
  下にフィルしていきます。
4.1・3・5・7・9・11・・・・199とデータの行数分
  フィルします。
5.データの終了行の次の行のセル(この場合199の下)に2、
  その下のセルに4を入力します。
6.3番と5番同様の操作で、2・4・6・8・・200まで
  作ります。
7.[ctrl]+[home]を押して、A1セルに移動します
8.shiftを押しながら、[ctrl]と[End]を同時に押します
  すべてのデータが選択されます。
9.メニューバーからデータ(D)-並び替え(S)を選びます。
10.データ範囲の先頭行を「データ(W)」にし、
  最優先されるキーを「A列」に指定して、
  [ok]を押します。

Qエクセルで数行おきにデータを抽出

エクセルシートで、あるデータ膨大にを出しますよね。
それで、たとえば、三行ごと、四行ごととかであるデータを右の行もしくは左行に抜き出す操作をするにはどうしたらいいですか?
今は、フィルタと可視フィルタを駆使してやっているのですが、一発でバンと出すような方法があると思って・・・数式とかでありそうだなって思って。
教えてください。、

Aベストアンサー

=OFFSET(抽出したい列の一番初めのセルの絶対参照,(ROW(A1)-1)*行間隔,0)
又は
=INDEX(抽出したいセルの範囲の絶対参照,(ROW(A1)-1)*行間隔+1,1)

Qエクセルで1列に500行並んだデータを5列毎に改行

エクセル2000で、A1~A500までデータが縦並びに入力されています。

これを5列毎に改行して、横並びのデータに加工したいのですが、何か方法ありますか?

図解すると、、


A1
A2
A3
A4
A5
A6
A7


A500

のデータを

A1 A2 A3 A4 A5
A6 A7 A8 A9 A10
・・・・・・
A496 A497 A498 A499 A500



したいのです。

何かよい方法ありましたらお教え願います。

Aベストアンサー

'直接シートをいじるのでコピーをしてから試してみてください。
Sub Macro1()
COUNTER = 0
For INP = 1 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
COUNTER = COUNTER + 1
Range("A" & INP & ":A" & INP + 4).Copy
Range("B" & COUNTER).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
Next INP
Range("A1").EntireColumn.Delete
End Sub

Qエクセル コピーしたデータを1行おきに貼り付け

エクセル2003を使っております。
コピーしたデータを1行おきに貼り付けたいのですがやり方がわかりません。あと、1つのセルに対して2行ごとに結合したいのですがどのようにすればいいのか。教えてください。よろしくお願いします。

Aベストアンサー

>1行おきに空白があるデータがありまして、それにコピーしたデータ
を貼り付けたいのです。
あいまいにならないように、実例を質問に挙げること。
例えば
コピー先 -は空白行を示す(1)は行番号
A列
(1)12
(2)ー
(3)15
(4)ー
(5)8
(6)ー
(7)5
ーー
(A)上記のーのセルに
(B)1回の操作で
貼り付けたいのだな。
ーー
ここへコピー元はどういうデータですか。
D2:D8に(-は空白セル)
a

b

c

d
なら
D2:D8をコピー
A2を選択
編集ー形式を選択して貼り付け
空白を無視する、にチェック
で貼り付け。
ーーー
結果
12
a
15
b
8
c
5
d
こんなことか?。質問の書き方をむしろ勉強してほしい。

QExcel VBAでn行毎に行の選択

Excel VBAでn行毎に行の選択

こんにちわ。
初めて質問をさせて頂きます。
今回ExcelのVBAを使ってあるシートを作成することになったのですが
その過程で分からず、詰まっております。
色々調べてみたもののVBAの知識が浅いせいか
該当する様なものは見つかりませんでした。
実行したいのはタイトルの通りです。
例として10行毎に1行ずつ選択したい場合は下記の通りです。

A列
10行目←選択


20行目←選択


30行目←選択


40行目←選択

実際にやりたいことは行を選択後に入力規則を入れたいだけなのですが
5000行近くあるので、一つ一つコードを書く場合

Range("A10,A20,A30,A40・・・").EntireRow.Select

結構な量になります・・・。
VBAなら他にもっと効率いいことができるのでは、と
自分なりに探してはいますが、どうしても見つからないので
皆様のお知恵をお借りしたいです。

よろしくお願いします。

Aベストアンサー

色々なやり方があるでしょうが一例です。

Sub Macro1()
Dim i As Long
Dim r As Range
Set r = Cells(10, 1)
For i = 20 To 5000 Step 10
Set r = Union(r, Cells(i, 1))
Next i
r.EntireRow.Select
End Sub

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング