- ベストアンサー
Excelで周期的に列を削除する方法
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 元データに手を加えるのではなく、別Sheetに11列ごとコピー&ペーストではどうでしょうか? 仮にSheet1のデータをSheet2にコピー&ペーストする一例です。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim j As Long, cnt As Long, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") For j = 11 To wS1.Cells(1, Columns.Count).End(xlToLeft).Column Step 11 cnt = cnt + 1 wS1.Columns(j).Copy wS2.Cells(1, cnt) Next j End Sub 'この行まで ※ 通常、行方向にデータがあることが多いのですが、 質問では「列」となっていますので、列方向で操作しています。 ※ 1行目のデータ数で最終列を判断していますので、 1行目は項目等何らかのデータが入力されているという前提です。m(_ _)m
その他の回答 (3)
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
'見出しの文字列で判断できれば、、、 Option Explicit Sub Samplling() Const xSelect_Del = "Fast sampling" '削除したい列の見出し Const xHead = 1 '見出しの行 Dim xCol_Left As Long Dim xCol_Right As Long Dim kk As Long With ActiveSheet.UsedRange xCol_Left = .Column xCol_Right = .Columns(.Columns.Count).Column For kk = xCol_Right To xCol_Left Step -1 If (Cells(xHead, kk).Value = xSelect_Del) Then Columns(kk).Delete End If Next End With End Sub
お礼
質問サイトを使ったことがなく、回答があるとメールに通知が来ると思っておりまして、お礼が遅くなりました。すぐに回答頂いたのに、申し訳ございません。プログラミングのどこを改変すればよいのかが分からず、実行がかないませんでした。これから学んで行きたいと思います。ご教授ありがとうございました。
Sheet1 の 1列目から 10列削除して、11列目を残し、12列目から 10列削除して、22列目を残し・・・と周期的に Sheet2 に抽出する Sheet2!A1!: =INDEX(Sheet1!1:1,11*COLUMN()) Sheet1 の 1行目から 10行削除して、11行目を残し、12行目から 10行削除して、22行目を残し・・・と周期的に Sheet2 に抽出する Sheet2!A1: =INDEX(Sheet1!A:A,11*ROW())
お礼
質問サイトを使ったことがなく、回答があるとメールに通知が来ると思っておりまして、お礼が遅くなりました。すぐに回答頂いたのに、申し訳ございません。頂いた回答の中でもっともプログラミングがシンプルで、おそらく一番スマートな方法をご教授いただいたのだと思います。
- keithin
- ベストアンサー率66% (5278/7940)
手作業をそのままマクロに書き写すと、だいたいこんなカンジになります。 手順: ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1() range("A1").select start: if selection.range("A1")="" then exit sub selection.range("A:J").delete shift:=xlshifttoleft selection.range("B1").select goto start end sub ファイルメニューから終了してエクセルに戻る データシートを開いてマクロを実行する。 #実際にはもうちょっと簡単には、新しいマクロの記録で 11列目、22列目、33列目…をコントロールキーを押しながら飛び飛びに最大限列選択しておき、コピーしてシート2のA1に貼り付ける といったマクロを使うのでも、十分役に立ちます。
お礼
質問サイトを使ったことがなく、回答があるとメールに通知が来ると思っておりまして、お礼が遅くなりました。すぐに回答頂いたのに、申し訳ございません。丁寧なご説明、ありがとうございました。実際にプログラミングを動かしてみて、マクロの有用性を実感しました。勉強していきたいと思います。
関連するQ&A
- データがない列のみの削除
よろしくお願いいたします。 画像のように、列上段に その列のデータ数を出し、 その値が0だった場合、列ごと削除するマクロを組みたいのです。 よい方法があればご教授いただけないでしょうか?
- ベストアンサー
- Visual Basic
- エクセル データのある最終列~最終列から数えて4つ目までの列を削除する
エクセル データのある最終列~最終列から数えて4つ目までの列を削除するマクロ ネットで調べましたところActiveSheet.UsedRange.Columns.SelectでA~最終列までは選択できました。 これをタイトルの様に4列目までを選択し削除するにはどうすればよろしいのでしょうか? どなたかご教授の方よろしくお願い致します。 使用環境:Windows7x64 エクセル 2007
- ベストアンサー
- オフィス系ソフト
- Excel VBA 2つの条件を満たした行を削除
Excel2003を使用しています。 CSVファイルを元にデータを作りたく、まずは不要なデータを削除しています。 J列=0の行とJ列=0の行のA列の値と同じ値がA列に入力されている行を削除したく、J列=0のA列の値を一旦別シートに抽出し、その抽出したデータとA列のデータをループして、一致したら削除というコードを書きました。 もし可能であれば、一旦別シートに抽出せずに処理したいのですが、その場合、どのようにコードを書けばいいでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel マクロ オートフィルで抽出後 削除したい
始めまして。 マクロ初心者です。 オートフィルで抽出後に抽出したものだけを削除するマクロを作成してますが、うまくいきません。 A列に「○」が入っているものだけを抽出 ↑このマクロまではできていますが、 その後の削除が上手くいきません。 教えて下さい。
- ベストアンサー
- オフィス系ソフト
- Excelで1列のデータを5列に振り分けする
Excel2003でA列に1行にあるデータ(半角英数字)を 次のシートに、1行ずつコピーして、それを5列に振り分けするというマクロを作りたいです。 (ただし、コピーは2つずつの時もあります。) 元データ ●A列 B列 C列 1 2 3 4 5 ・ ・ 加工後 ●A列 B列 C列 D列 E列 1 1 2 2 3 3 4 4 5 5 上記のような感じです。ただデータは数字のみでなくて、英数字です。 Excelのマクロは全くの初心者で大変困っています。 どうぞよろしくお願いたします。
- ベストアンサー
- オフィス系ソフト
- エクセルで文字列の先頭の”・”を一括削除する方法を教えてください。
文字列の先頭の”・”を削除したいのですが、悩んでます。 具体的には以下のデータ(文字列) ・○△□ ●○・△○ ・□○・○× を ○△□ ●○・△○ □○・○× としたいのですが、教えていただけませんでしょうか? ちなみに、大量のデータがあります。
- ベストアンサー
- オフィス系ソフト
- EXCELのデータで空白列を削除したい
EXCELで列数・行数が毎回変化するデータがあり、この中に数箇所に分かれて空白列が存在します。 この空白列だけをマクロで削除する方法を教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルマクロでの行削除の方法について
エクセルマクロを使用しての行削除の方法についてお伺いします。 現在業務でエクセルに画像内の文字データを入力しています。 入力データは列ごとに半角全角のきまりがあり、 データが入力された行列以外はすべて削除しそれをCSVで保存という流れになっているのですが、 今のところ関数を入れて半角全角チェックをし、それが済んだあとに、 実際のデータ部分以外の箇所をすべて削除し保存しています。 調べたら半角全角はvbNarrowとvbWideという関数があると知り、 列については、特定位置から始まるのでマクロの記録で対応できています(列項目は予め数が決まっていますので)。 ただ、行については画像にどれだけデータがあるかで開始位置が変わってきます。 ***以下は試したマクロ記録です。*** Rows("9:9").Select→何も知らずに「"9:9"」の所で"開始位置の変数:開始位置の変数"としエラーで迷ってます。 Range(Selection, Selection.End(xlDown)).Select Selection.Delete Shift:=xlUp Columns("F:F").Select Range(Selection, Selection.End(xlToRight)).Select Selection.Delete Shift:=xlToLeft 不特定の行から最終行までを選択削除する方法をご存じの方がいましたらご教授お願いいたします。 上記のマクロ使用環境はExcel2003です。
- ベストアンサー
- その他(プログラミング・開発)
- Excelを使用していますが、二つの列の項目を一つにまとめる簡単な方法
Excelを使用していますが、二つの列の項目を一つにまとめる簡単な方法はありますか? 添付画像のような感じで、A列とB列の項目をC列にまとめたいです。実際のデータは1000件近くあります。重複している項目は1つのみ抽出し、マクロや関数で処理できればうれしいのですが。 宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- 必要な文字列以外すべて削除する方法
宜しくお願いします。 現在、文字データを抽出しようと思っているのですが、複数ファイルがありすべてのファイルが微妙にフォーマットが異なっています。 唯一、一致しているのが、○○○-○○○という形式の文字列でそれ以外の文字は異なっています。 そこでなんですが、この形式の文字列以外を削除する方法がありましたら教えて下さい。 ファイル形式は、Word・Excel・メモ帳・ワードパッドの中であれば、どれでも構いません。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
お礼
質問サイトを使ったことがなく、回答があるとメールに通知が来ると思っておりまして、お礼が遅くなりました。すぐに回答頂いたのに、申し訳ございません。おかげさまで処理がスムーズに出来るようになりました。ご説明が初心者の私には一番分かりやすかったのでベストアンサーにさせていただきました。ありがとうございました。