Excelで行挿入する方法
- Excelの行挿入を利用して、グループ別に行を挿入する方法を教えてください。
- データが入力されている列(A列からEI列)はそのままで、行挿入だけでグループを分けたいです。
- Excel 2010を使用しています。
- ベストアンサー
下のセルと違ったら行挿入する方法
BA列に以下・左のような文字と数字が入っています。 それを同じグループ別に行挿入を行う関数かマクロを教えていただけないでしょうか。 結果的に以下・右のようにしたいのです。A列からEI列までデータが入力されているので、そこは壊さず、行挿入で対応をお願いします。(EXCEL2010) 新芝1200 新芝1200 新芝1200 新芝1200 新芝1200 新芝1200 新ダ1800 新ダ1800 新ダ1800 新ダ1800 新ダ1800 新ダ1800 新ダ1800 新芝1200 新ダ1800 新芝1200 新芝1200 新芝1200 新芝1200 新芝1200 新芝1600 新芝1200 新芝1600 新芝1200 新芝1600 新芝1600 新芝1600 新芝1600 新芝1600 新芝1600
- 7skies
- お礼率77% (61/79)
- Excel(エクセル)
- 回答数6
- ありがとう数3
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 1行目はタイトル行でデータは2行目以降にあるとします。 VBAでの一例です。 オーソドックスに Sub 行挿入() Dim i As Long For i = Cells(Rows.Count, "BA").End(xlUp).Row To 3 Step -1 If Cells(i, "BA") <> Cells(i - 1, "BA") Then Rows(i).Insert End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m
その他の回答 (5)
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.4です。 関数を使って行を挿入した表を作る際には、データが入力されている表を元データとして使用する必要がありますので、データを入力した表自体に行を挿入する事は出来ませんから、元の表がある場所とは別の場所に、行を挿入した形で新たな表が表示される様にしなければなりません。 ですから今仮に、Sheet1のA列~E列に元データの表が存在していて、Sheet3のA列を作業列として使用して、Sheet2のA列~E列に行を挿入した表を表示するものとします。 まず、Sheet3のA1セルに次の関数を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(ROW()-ROW(Sheet1!$1:$1)<1,IF(ROW()-ROW(Sheet1!$1:$1)=0,1,""),LOOKUP(9E+99,$A$1:INDEX($A:$A,ROW()-1))+1+(INDEX(Sheet1!$A:$A,ROW())<>INDEX(Sheet1!$A:$A,MATCH(9E+99,$A$1:INDEX($A:$A,ROW()-1)))))) 次に、Sheet3のA1セルをコピーして、Sheet3のA2以下に貼り付けて下さい。 次に、Sheet2のA1セルに次の関数を入力して下さい。 =IF(COUNTIF(Sheet3!$A:$A,ROWS($1:1)),IF(INDEX(Sheet1!$A:$E,MATCH(ROW(Sheet1!$1:$1)+ROWS($1:1)-1,Sheet3!$A:$A),COLUMNS($A:A))="","",INDEX(Sheet1!$A:$E,MATCH(ROW(Sheet1!$1:$1)+ROWS($1:1)-1,Sheet3!$A:$A),COLUMNS($A:A))),"") 次に、Sheet2のA1セルをコピーして、Sheet2のB1~E1の範囲に貼り付けて下さい。 次に、Sheet2のA1~E1の範囲をコピーして、同じ列の2行目以下に貼り付けて下さい。 これで、Sheet2のA列~E列に、行を挿入した表が自動的に表示されます。
お礼
詳細な御回答に感謝です。 週末、じっくり勉強させていただきます。 本当にありがとうございます。
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.4です。 済みません、「.Value」は不要でした。(「.Value」を付けたままでも正常に動作しますが) Sub Macro() Dim i As Long Dim LR As Long Dim R As Long LR = Application.WorksheetFunction.Match("*?", Range("A:A"), -1) R = 1 For i = 2 To LR R = R + 1 If Range("A" & R) <> Range("A" & R - 1) Then Range("A" & R & ":E" & R).Insert Shift:=xlDown R = R + 1 End If Next i
- kagakusuki
- ベストアンサー率51% (2610/5101)
一例ですが、次の様なマクロになります。 Sub Macro() Dim i As Long Dim LR As Long Dim R As Long LR = Application.WorksheetFunction.Match("*?", Range("A:A"), -1) R = 1 For i = 2 To LR R = R + 1 If Range("A" & R).Value <> Range("A" & R - 1).Value Then Range("A" & R & ":E" & R).Insert Shift:=xlDown R = R + 1 End If Next i End Sub 尚、関数で行う方法を現在模索中です。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
No.2 です。連続ですみません。No.2 の (1) に「B1 セル」と書いてしまいましたが、正しくは「B2 セル」です。
お礼
御回答いただきありがとうございます。 凄い、このような方法があるのですね。 とても勉強になりました。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
(1) B1 セルに「=a1=a2」と記入して下方向にオートフィル、(2) B 列をコピーし B 列あるいは C 列に値複写、(3) C 列全体を選択して置換のダイアログ(Ctrl+H)により「false」→「」(未入力)と置換、(4) C3:C13 のセル範囲を選択してジャンプのダイアログ(F5)を表示し「セル選択 > 空白セル > O.K.」、(5)「セルの挿入」ダイアログ(Ctrl+Shift+ +)で「行全体」を指定し O.K.
関連するQ&A
- 現在のセルから
エクセルでマクロを使って、記録して、自分でいじってるんですが、汎用性を持たせるために、”現在のセルから”という条件で以下のようなマクロを組たいと思っているのですが、絶対位置で記録されてしまうため、うまくいきません。 教えて頂けると幸いです。 1、現在のセルから右に5列、下に5列をコピーして 下6列目に、コピーしたセルを挿入する 2、現在のセルから下に13行目まで1を挿入。同じ列の14行目+7行まで2を挿入。 その後も最後の行(その行以降は全て空白のセルになる行)まで13、7、13、7と13と7を行数を交互に挿入し,それぞれ3、4、5と数字を一つ増やしながら埋めていく方法。 1-13行=1 14-21=2 22-35=3 36-23=4 以下略
- ベストアンサー
- オフィス系ソフト
- EXCEL2003で行や列を挿入した時・・・
EXCEL2003で行や列を挿入した、書式も自動的に 上の行や左の行のものが適用されますよね。 その時、SUM関数などはどうでしたか? 列を挿入した時は、挿入後にコピーをしなくてはならないかと 思いますが、行を挿入した時は 上のSUM関数が既に入ってたことがあるように思うんですが、 入らないときもあるので、どうなのかなと思いまして・・・(^_^;) 行でも列でも挿入後に上や隣のセルの書式が適用されるように SUM関数も入ってたりはしないのでしたか? わかりにくい質問ですみません。。。
- 締切済み
- オフィス系ソフト
- 左文字が合致したらセルに入力
シートAのB列に数字を記入しておりその左セルにシートBの左文字と合致した文字をExcel関数を遣って入力できたのですが同じ左文字4、6番は入できず空白欄に埋め込みたいのですがどなたかExcel関数の解る方よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- 特定の文字の上に行を挿入したい。
特定の文字の上列に空白の1行を挿入したいのですが、どうしてもわかりません。 B列に1900~2350まで10刻みで(1900・1910・1920・・・) 数字が60000行、繰り返しで入っております。 1900と2230の上列に1行、空白の行を挿入したいのですが、 マクロで1発挿入できないでしょうか? 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- 指定した行数を挿入する マクロ
添付をごらんください。 H列に関数をいれたのですが、その数字はその下にその数値だけ行を挿入する、ということを示しました。その行数を挿入することによって、連番になるように調整、番号の最後を18になるように調整、したいわけです。 H列>0の数字があれば下にその行数だけ挿入する、というマクロを教えてください。
- ベストアンサー
- Excel(エクセル)
- Excelで任意の文字を含むセルの1つ下のセルを文字カウント
関数初心者です。 Excelで任意の文字を含むセルの1つ下のセルを文字カウントする、シンプルでスマートな方法はないでしょうか? 具体的には A列 1行目 @: インデックス1 2行目 この行の文字数をカウント 3行目 <空白行> 4行目 @: インデックス2 5行目 この行の文字数をカウント 上記のようなケースで「@:」を含むセルの1つ下の行(2,5行目の文字数をカウントしたいのです。 現状では、以下のような不細工な方法でやっています: A列の左隣に列を3つ挿入し(オリジナルのA列がD列になります)、C1に「=FIND("@:", D1)」とした上で関数を最終行までコピー→この例では1,3行目に「1」と表示されます 次にB2に「=IF(C1=1,"TRUE","")」と入力し、これを最終行までコピー→この例では2,5行目に「TRUE」と表示されます 最後にB列にオートフィルタをかけ、TRUEの行だけ表示したうえで、A1に「=LEN(A1)」と入力して、これを最終行までコピーしています→これで、2,5行目の文字数がカウントされます こんなヘタクソな方法ではなく、1つの関数で綺麗に同じ結果を得る方法はないでしょうか? もっと勉強すれば、自分でも出来るかもしれませんが、今すぐ必要なのでどうかご教示ください。
- ベストアンサー
- オフィス系ソフト
- セル移動マクロを教えて下さい。
エクセルで最終行の次の行(新規入力となる行)の左4つ目のセルに移動するマクロを作りたいのですが、出来るでしょうか。 例えば列Aに1から3000までのNOが入っているとします。 B列からD列までは他のデータに使用しているため新規入力データE列の行から右に入力しています。 NO125の行までデータ入力している場合、ボタンをクリックすれば、A列のNO126(新規入力行のA列)にセルが移動するマクロです。 よろしく、お願いいたします。
- ベストアンサー
- オフィス系ソフト
- EXCELで同じ数字が入ったセルを空白にする方法。VLOOKUP関数。IF関数。
お世話になります。 エクセルで 00101 00101 00102 00102 00104 00103 00103 00105 と二列の文字が並んでいます。 このうち左と右の数字が同じものを空白にする関数があれば式を踏まえて教えてください。 上の例で言いますと 00104 00105 以外を空白にする方法です。 一番左上のセルを一列目の一行目と考えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- マクロで行挿入がうまくいかない理由は?
XPでOFFICE2007です。マクロ未熟者です。 マクロで、行挿入だけであればうまくいきますが、行挿入した後でその行に文字を入力するマクロでは、その行ではなく1行前のセルに文字が入力されてしまいます。 変なことになるのは、マクロを作成する過程で、行挿入が上の書式をコピーすることと関連がありそうなのですが、何に注意すればうまくいくのでしょう。 とりあえず今のところは行挿入を使わずに上の行をコピーして挿入する方法でうまくいっています。しかし行挿入後の文字入力がうまくいかないのか、その理由と対処方法がわかれば教えてください
- ベストアンサー
- オフィス系ソフト
- VBA 右へ1セルずつ色塗りするには
再質問です。 VBAでの色塗りに苦戦しています。 例えば、B列とD列にランダムに下記(1)~(7)の文字列が配列しています。 COUNTIF関数によって それぞれの文字列の数をカウントします。 (1)みかん 3 (2)サイダー 2 (3)いちご 6 (4)キウイ 8 (5)なし 1 (6)ぶどう 4 (7)チョコ 3 文字列の数によって、1セルずつ右に色塗りをしたいのです。 出発点、色は下記の通り、H列からBA列で色塗り終了です。 入力によって色塗りはどんどん右にのびていくことになりますが BA列に到達してからは、それ以上入力しても反映させません。 (1)みかん →H列11行目、黄色 (2)サイダー →H列12行目、水色 (3)トマト →H列13行目、赤色 (4)キウイ →H列14行目、緑色 (5)なし →H列15行目、白色 (6)ぶどう →H列16行目、紫色 (7)チョコ →H列17行目、茶色 以上、よろしくお願いします。
- 締切済み
- オフィス系ソフト
お礼
早速の御回答ありがとうございます。 助かりました。