![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります。
[概要]
社員1より右のセルに値がある場合は下段にセルを挿入させ
必要なところに値を移動させたいのですがわかる方お願いします。
文言だけではわかりにくいと思い下記に図を挿入します。
[マクロ実行前]
|部署|社員名1|社員番号1|社員名2|社員番号2|社員名3|社員番号3|
--------------------------------------------------------------
|総務|太郎1 |2 |
|営業|太郎2 |3 |太郎3 |4 |
|積算|太郎4 |5 |太郎5 |6 |太郎6 |7 |
[マクロ実行後]
|部署|社員名1|社員番号1|社員名2|社員番号2|社員名3|社員番号3|
--------------------------------------------------------------
|総務|太郎1 |2 |
|営業|太郎2 |3 |
| |太郎3 |4 |
|積算|太郎4 |5 |
| |太郎5 |6 |
| |太郎6 |7 |
又、社員名10ぐらいまで作成予定です。
No.1ベストアンサー
- 回答日時:
これはマクロを丸投げしているのですか?
修正がある場合はご自身でお願いしますね。
Sub Macro1()
Dim idxR, idxC, ptr As Integer
Dim ws As Worksheet
Set ws = ActiveSheet
Worksheets.Add after:=ws
ptr = 2
With ws
.Rows(1).Copy Destination:=Range("A1")
For idxR = 2 To .Range("A65536").End(xlUp).Row
Cells(ptr, "A").Value = .Cells(idxR, "A").Value
For idxC = 2 To 255 Step 2
If .Cells(idxR, idxC) = "" Then
Exit For
Else
.Cells(idxR, idxC).Resize(1, 2).Copy Destination:=Cells(ptr, "B")
ptr = ptr + 1
End If
Next idxC
Next idxR
End With
End Sub
マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択して実行します。
この回答への補足
お返事ありがとうございます
修正等行おうとしたのですがなかなか思うように行きません
実行時エラー1004がでます
ある程度の説明があれば幸いです。
結果丸投げ見たくなって申し訳ありません。
よろしくお願い申し上げます
良い回答ありがとうございます
教えて頂いた実行は確認済みでスムーズに動作が確認され安心致しました。
丸投げ等、結果申し訳ありません。
又、書式等大幅に誤差が生じ苦戦しています、もう少しのお力を頂ければ幸いです。
No.2
- 回答日時:
(A)下記のようなことを考えたのか、考えてないのか、質問文に書いてないが、ここまでは、VBAを知らなくてもできることです。
そしてこれこそVBAの初心者が力を入れないといけない点だと思います。VBの文法を知っても、手足が出ないのは、この点の訓練が少ないからです。
(B)もうひとつ、Xシート(今あるシート)行を挿入するのでなく、別シート(シートYとする)に実現後のシートを作る方式を勧めます。挿入・削除は、その後の対象が動いてしまうことがあって、注意が必要で、かつ複雑になります。これは経験を積んで学ぶことです。
ーーー
処理ロジックの1例
1XシートA列のデータ最終行を知る
2.Xシート第1行から最終行までのデータで繰り返す。(3-4)繰り返しのループの中の入れ子にするということ。
3A・B列にデータあるか?あれば、YのA,B列にXの対象列を代入する。
Yシートの書き込み(代入)行(のポインタ)を下へづらすため+1する。
C,D;E、F列、・・など無ければ、Xシートの次行に処理をしに行く。
4.2列右に処理対象をずらして3.を行う。無くなるまで3を繰り返しする。
(できればYシートのA列は、いつもXシートのA列をセットする。
表示文字色を白にするなど見えなくするのがお勧め)
ーー、
完成後の並び順位ついて、質問に述べてないが、ソートして並べ替える。
述べてないのは関心の無い証拠。仕事では大切な点です。
並べ変える順序を決める部コードを別途振らないといけないかも知れない。
ーー
考えている対象行や列を動かすには、Cells(i、j)のiやjを+1するとか、セルのOffset()プロパティを指定を変えるやり方を使う。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 先ほど、回答者様によって教えていただいたのですがどうしたらいいか分かりません。 ユーザーフォーム上に 2 2023/02/21 22:25
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- 倫理・人権 統一教会と議員の関連問題 7 2022/09/12 09:00
- 日本株 【自分の会社の大株主が自分の場合に】大株主を自分ではなく、株だけを管理する会社を別に作 1 2023/01/16 23:58
- 政治 水道橋博士と松井一郎の争い、皆さんどう思いますか? ・ツイッターでのリツイート行為を訴えた松井。 ・ 4 2022/11/02 17:56
- 心理学 太郎君を助けてあげてください。(長文です) 3 2022/11/20 15:56
- その他(芸能人・有名人) 岡本太郎氏 手塚治虫氏 吉本晴彦氏 このお三方は、男社会として一番出世されて 凄い人物の方だと思いま 3 2022/07/31 00:03
- 政治 れいわ新選組の山本太郎の懲罰動議ですが、どれが最も適していると思われますか? 14 2023/06/09 13:54
- 政治 日本のマイカードはあまりに遅すぎです 7 2023/04/02 18:36
- 歴史学 今年は、司馬遼太郎、生誕百年という話をニュースで見ましたが、おすすめの司馬遼太郎作品を教えて下さい。 9 2023/01/12 08:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのブック分割マクロを...
-
VBAで繰り返しコピーしながら下...
-
文字の色も参照 VLOOKUP
-
エクセルの複数シートにあるデ...
-
VBA 複数の列を高速で削除する...
-
エクセルの列の限界は255列以上...
-
エクセルマクロ オートフィルタ...
-
エクセルの表を自動的に、項目...
-
SUMPRODUCTにて別シートのデー...
-
VBA セル・値の操作方法
-
エクセルVBA 行追加時に自...
-
エクセルの保護で、列の表示や...
-
Excelに自動で行の増減をしたい...
-
Excelで条件別にシートを振り分...
-
スプレッドシートでindexとIMPO...
-
EXCELで、データ一致を確認する...
-
エクセル 月のデータを週ごとに...
-
オートフィルタ使用時にCOUNTIF...
-
【エクセル】1列のデータを交...
-
データを別シートに抽出してリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
Excel の複数シートの列幅を同...
-
Excel複数シートにあるデータを...
-
エクセルの列の限界は255列以上...
-
【条件付き書式】countifsで複...
-
エクセル マクロ 標準モジュー...
-
Excelでの並べ替えを全シートま...
-
SUMPRODUCTにて別シートのデー...
-
エクセルで、チェックボックス...
-
VLOOKアップ関数の結果の...
-
スプレッドシートでindexとIMPO...
-
Excel VBA ピボットテーブルに...
-
エクセルで横並びの複数データ...
-
Excelに自動で行の増減をしたい...
-
【VBA】ピボットテーブルを既存...
-
【VBA】複数のシートの指定した...
-
オートフィルタ使用時にCOUNTIF...
おすすめ情報