人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAについて質問です。
下記のページにおいて、回答者1さんの回答でA列でなく、K列のデータを対象とする場合、具体的にどこをどう変えたらよいのでしょうか?
また、最下層にある「追加できるワークシートの数には、限界がありますので注意が必要です。」というコメントについて、限界の具体的な数字で教えてください。
http://q.hatena.ne.jp/1158585432

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:VBA エクセル コメント データ 回答者
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●60ポイント

シート数の限界については こちらを参考にしてみてください。

http://72.14.253.104/search?q=cache:wrcdn2NO7t0J:www.kotaete-net...

基本的にはメモリなども関係があるみたいです。

なので、具体的な数字は その環境でテストしてみるしかないですね。


↓K列に変更してみました。

多分、これでうまくいくのかな?


Sub Macro1()

' データシートを変数に保存

Dim DataSheet As Worksheet

Set DataSheet = ActiveSheet

' データの並び替え (今回はK列、B列の昇順でソート)

Columns("A:K").Sort Key1:=Range("K1"), Order1:=xlAscending, _

Key2:=Range("B1"), Order2:=xlAscending

' 変数の初期化

Dim rowNum, eachRowNum, sheetNum As Integer

rowNum = 1 ' 対象とするデータシートの行番号

eachRowNum = 1 ' コピー先の各シートの行番号

sheetNum = 2 ' コピー先のシートのインデックス

' コピー処理

' K列の値がブランク("")でない間、処理を実行

While Cells(rowNum, 11).Value <> ""

' K列のある行の値が次の行の値と等しい場合の処理

While Cells(rowNum, 11).Value = Cells(rowNum + 1, 11).Value

' コピー先となるシートが存在しない場合、シートを追加

If sheetNum > Worksheets.Count Then

Worksheets.Add after:=Worksheets(Worksheets.Count)

DataSheet.Activate ' データシートをアクティヴにする

End If

' コピー先のシートの行にデータシートの行の値を代入

Worksheets(sheetNum).Rows(eachRowNum).Value = Rows(rowNum).Value

rowNum = rowNum + 1 ' データシートの対象行を移動

eachRowNum = eachRowNum + 1 ' コピー先シートの対象行を移動

Wend

' K列のある行の値が次の行の値と等しくない場合の処理

' (K列の値が1つしかない場合などの処理)

' コピー先となるシートが存在しない場合、シートを追加

If sheetNum > Worksheets.Count Then

Worksheets.Add after:=Worksheets(Worksheets.Count)

DataSheet.Activate

End If

' コピー先のシートの行にデータシートの行の値を代入

Worksheets(sheetNum).Rows(eachRowNum).Value = Rows(rowNum).Value

eachRowNum = 1 ' データシートの対象行を初期化 (新しいシートでは1行目を対象行とする)

rowNum = rowNum + 1 ' コピー先シートの対象行を移動

sheetNum = sheetNum + 1 ' コピー先のシートのインデックスを増加

Wend

End Sub

◎質問者からの返答

いつもご回答ありがとうございます。

本当に助かっています。またよろしくお願いします。


2 ● arhbwastrh
●10ポイント

Cells(rowNum, 1)の1を全て11に置き換えればOKです。(アルファベットでKは11番目ですよね?)


シートについてですが、とりあえず1000枚以上追加してもなんら不具合はでないので、あまり気にする必要は無いかと思います。

下のサイトによると作成できるシートの上限枚数はPCのメモリなどによって変化しますとのことです。

http://www.relief.jp/itnote/archives/000033.php

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ