• ベストアンサー

Excel VBA 空白セル以下のデータを繰り上げるには?

Excel2003で、従業員データを管理する表を作成してます。 B列~AC列まで、1行づつ個人のデータがあります。 例えば、4(任意)行目の人が退社した場合、4(任意)行目のデータのみデータクリア(B4~AC4)するVBAを組みましたが、自動的に5行目~のデータを繰り上げるのは可能でしょうか。 A列やAD列以降に管理番号などが入力されている(そのままにする)のと このシートを他のシートが参照しているので Rows.Delete で行ごと削除して繰り上げるわけにいかず悩んでます。   A   B   C   D・・ AC   AD  AF・・ 1 業者(1) 氏名 住所 TEL 入社年 部署 担当 2 001   阿部 東京 03- 2000  営業 A社 3 002   和田 千葉 04- 1990  営業 A社 4 003   佐藤 秋田 01- 1995  営業 B社 5 004   前田 富山 07- 1998  営業 B社 6 005   今井 新潟 02- 1985  財務 財務 7 006   青柳 東京 03- 1980  財務 財務 8 007   鈴木 千葉 01- 1990  工事 工事  ・  ・ 20 業者(2) 氏名 住所 TEL  入社年 部署 担当 21 001   内藤 東京 03- 2000  営業 A社  ・  ・  こういった表です。よい案がありましたら、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • moon00
  • ベストアンサー率44% (315/712)
回答No.2

データクリアのVBAがどんなものか分からないので、 参考程度に。 Sub kuriage() Dim RN As Integer Dim i As Integer Dim j As Integer Dim LR As Integer i = InputBox("削除する行番号を入力してください", "行番号指定") Debug.Print i Range(Cells(i, 2), Cells(i, 4)).Clear Application.ScreenUpdating = False '画面を更新しない LR = Range("b65536").End(xlUp).Row 'データ最終行を取得 For j = i To LR '削除した行からデータ最終行まで繰り返す Range(Cells(j, 2), Cells(j, 4)).Value = Range(Cells(j + 1, 2), Cells(j + 1, 4)).Value '1つ上の行にデータを移動 Next Application.ScreenUpdating = True '画面を更新する End Sub 範囲は適宜変更してください。 サンプルはB列からD列までのデータを繰り上げです。

starsip
質問者

お礼

ご回答有難う御座います。 ご回答を参考に組み直しましたら、希望どおりの動作が出来ました。 有難う御座いました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >A列やAD列以降に管理番号などが入力されている(そのままにする) 管理番号は、下の行の人へ繰り上げになるのですか? EntireRow で削除できないなら、範囲を選択して、削除(.Delete)すればよいと思います。

starsip
質問者

お礼

早速のご回答有難う御座います。 検討してみます。

関連するQ&A

  • エクセルVBAで不一致に空白セルを挿入

    エクセル2010です。 A、B列ともソートされています。 ごく少数ですが同一列内に重複するデータもあります。 そして A列に、1行目からA、B、C、E、F、F、H B列に、1行目からA、B、D、E、F、G、I (カンマは実際にはありません。) というような文字列データがある場合 別シートに A列に、1行目からA、B、C、空、E、F、F、空、H、空、 B列に、1行目からA、B、空、D、E、F、空、G、空、I、 (空は空白セルの意味です。) というように、お互いが一致しない場合は空白で飛ばし、一致するものは同じ行にするにはどのような方法がよろしいでしょうか? 例のように少ないデータなら目で見て手作業でできますが、実際は千件以上のデータです。 VBAでも関数でも結構です。よろしくお願いします。

  • Excel VBA で条件を満たしたセルの値を別のシートに貼り付けるには?

    VBA初心者です。700行くらいあるリストの中から所属別の名簿を作りたいのですが、マクロを使えば簡単に出来ますか? データは、 A列にNO.、B列に氏名、C列に所属 となっていて、C列の所属ごとにSheet2,Sheet3・・・にB列の氏名だけの名簿を作りたいのです。 例えば、C列が”総務課”の人の氏名(B列)をSheet2のCell("A2")から行方向に、C列が”会計課”の人の氏名はSheet3のCell("A2")から行方向に という感じです。 Do~Loop を使ってみたり、If~Then を使ってみたりするのですがうまく貼り付けられません。 データの最終行が変化するので範囲の指定もよく分かりません。 どなたか教えて下さい。

  • EXCEL セル内のデータを置き換えたい

    うまく説明できないのですが、 Sheet1のA列とB列に、1つのセルに複数のデータが以下のように入っています。(データの間に「,」があります。)     A列             B列 1行 6599A,6599B,6599C  6599A 2行 6599B,6599C      3行              6599A,6599C これは商品コードでして、Sheet2に明細があります。 A列    B列 りんご  6599A メロン   6599B みかん  6599B Sheet1のデータを、「りんご」「メロン」「みかん」に置き換えたいのです。 データの数が、たくさんあるので、コピー、ペーストでは対応できません。 よい方法をお教えください。よろしくお願いいたします。

  • VBA:空白の取得はできる?

    Excel2003で、従業員データを管理する表を作成してます。 1行づつ従業員人のデータがあります。(従業員名、住所、連絡TEL、取引先、取引先担当者、取引先TEL) A列 従業員名、B列 住所、C列 連絡TEL、D列 取引先、E列 取引先担当者、F列 取引先TEL、です。 例えば、4行目の従業員が辞めた時A列からC列を削除します。 D列以降は取引先なので削除しません。 但し、その従業員が辞めた為、取引先とも取引を止めざるを得ない場合はD列以降も削除するので (例えば)4行目は(A4:F4)は空白になります。 空白の場合、以下(例えば5行目以降)のデータを繰上げたいのですが、その為に空白を取得したいのですが? (「A4~F4は空白である 」を取得出来ますか?) 一つのセルが空白か否かは取得出来たのですが・・・・ 複数のセルが空白か否か取得出来るんでしょうか? エクセル関係のサイトは探してみたんですが、わからなくて・・ ご教授願えたら嬉しいです。

  • EXCEL VBA データの並べ替え

    EXCEL VBAを利用して、【Sheet1】を【Sheet2】へ並べ替えるようにしたいのですが、可能でしょうか? 【Sheet2】について、「No.」と「ファイル名」の並べ方は決まっています。 コードウィンドウ(VBAの文法)で「No.=ファイル名」を定義したい。 例えば、「1=EFGH」、「2= 」、「3=ABCD」、「90=IJKL」のように。 説明がわかりづらいかもしれませんが、ご不明がありましたらご連絡下さい。 よろしくお願いいたします。 ★イメージ★ 【Sheet1】※データ受信(元データ)       A   │ B │ C │ D  (列)    ┌─────┼───┼───┼───   1│ファイル名│会社名│部署名│件数    ├─────┼───┼───┼───   2│ABCD │A社 │S部 │12345   3│EFGH │B社 │T部 │23456   4│IJKL │C社 │U部 │34567   :│  :   │ : │ : │ :   91│MNOP │Z社 │Y部 │99999   (行)  【Sheet2】※並べ替えた後  ⇒  A│  B  │ C │ D │ H  (列)    ┌─┼─────┼───┼───┼───   1│No│ファイル名│会社名│部署名│件数    ├─┼─────┼───┼───┼───   2│1│EFGH │B社 │T部 │23456   3│2│     │   │   │   ←ブランク   4│3│ABCD │A社 │S部 │12345   :│:│  :   │ : │ : │ :   91│90│IJKL │C社 │U部 │34567   (行)      └───────┬────────┘             マクロ実行で表示される。

  • エクセルのデータ整理で。

    2日続きで教えてもらいに来ました^^;よろしくお願いします。 エクセルのデータの整理をしております。 Sheet1,Sheet2のデータをSheet3へ反映したいと考えております。 Sheet1には、以下のようなデータがあります。   A   B   C  D   住所 氏名 年齢 家族数 1 東京 鈴木 30 3 2 埼玉 田中 33 5 3 千葉 高橋 40 2 4 東京 伊東 31 4 Sheet2には、以下のようなデータがあります。   A   B   C  D   住所 氏名 年齢 家族数 1 埼玉 林  22 1 2 千葉 森  29 2 3 東京 岡  25 3 4 東京 南  27 1 これらのうち、Aに「東京」とあれば、Sheet3に1行目から順に抽出したい。以下のようにしたいのです。   A   B   C  D 1 東京 鈴木 30 3 2 東京 伊東 31 4 3 東京 岡  25 3 4 東京 南  27 1 アドバイスお願いします。

  • エクセルの空白セルの選択

    こんにちは いつもお世話になっています。  エクセルの空白セルの選択について教えてください。 A列、B列にデータがあります。それぞれの列で空白セルがありますが、同じ行で両列ともに空白のセルだけを選択する方法を教えてください。  単に「ジャンプ」から空白セルを選択すると片方にデータがある行のセルも選択してしまいます。片方にデータのある行は残し、両列ともに空白の行を削除したのです。  よろしくお願いします。

  • エクセル マクロ? 関数? データの抜き出しと

    エクセル2010を使っています。 画像のオレンジの部分の様なデータがあります。 A列とB列に重複したデータが複数有り、D列に重複なしの氏名(A列のデータの重複なし)を表記しました。 D列の上からの氏名のデータをA列から探して該当する氏名のB列のデータを、E列、F列、G列と右に表示したいと思います。 A列B列は現状で16000行ほど。 D列は重複は無く、900行ほどあります。 ですので出来るだけ負担の無い形で抜き出したいです。 詳しい方、よろしくお願い致します。

  • エクセル~空白のセルのある行を非表示に。

    エクセルで。 例えば、100行の表があって、1行目から順番にデータを入れていくんですが、 データが50行までで終わってしまった場合に、51行目からを、非表示にしたいのです。 Aドライブからのデータの読み込みは、マクロをつかっているので、できればそのあとに文章をくっつけて、1つのマクロで作業を完了したいのです。 具体的に言いますと・・・ A列には1~100までの数字が入力してあります。 B~E列には取り込んだデータ(数字)をVLOOK関数で文字に変換するようになってます。 それ以降は、固定した単位(m3)や、データの数字がそのまま入る・・・という感じです。 そして、101行目はそれぞれの列の合計を出すようにしてます。 つまり、データを読み込んだあと、例えば50行しかデータが無かったら(B50やC50などが空白だったら)、51行目から100行目までをいわゆる『表示しない』にしたいのです。 だいぶ考えましたが・・・・。 よろしくお願いします。

  • セル内容の検索と表示

     エクセル初心者です。宜しくお願いします。      D   E   F   G   H          AB  AC   AD 1 a10                          あ   a39   か 2 b21                          う   a10   こ 3 x25                          い   a25   く  上記のような表があります。データとしては1500行ほどあります。 D1のa10に対応する値が同じシート内(この場合AD2の こ にあたります) 必ずD列の内容がAC列にあり、なおかつ、AC列右にあります。 D1に対応するAD2をE1に表示させたいのですが、関数ではどうすればよろしいですか?    

専門家に質問してみよう