No. | 質問・回答 | おれい |
|
[82604] シートを分割したい |
|
|
OS: Windows 2000
ソフトウェア名/バージョン:Excel2000
お世話になります。
a 1
b 3
c 5
d 2
e 4
f 8
g 9
・
・
・
という1つのシートがあるのですが、
右の合計が5を超えた時点で違うシートにしたいのです。
sheet1
a 1
b 3
sheet2
c 5
sheet3
d 2
e 4
sheet4
f 8
sheet5
g 9
・
・
・
こういうことってマクロや、プログラムでできるますでしょうか?
できるのであれば、教えてください。
P.S. csvファイルに出力して
awkでやってみようかと思いましたが、挫折しちゃいました...
ようすけ 2006年7月3日15:17
|
|
|
|
[82605] |
すいません、sheet1が5を超えていませんでした。
sheet1
a 1
b 3
c 5
sheet2
d 2
e 4
sheet3
f 8
sheet4
g 9
・
・
・
とさせたいです。
よろしくお願いします。
あ、さらにできるますとか書いちゃってますね...
ジタバタしちゃって申し訳ないです。
ようすけ 2006年7月3日15:22
|
|
|
|
[82606] |
VBAを使えば、そう難しくないコードで出来ますけど。
このデータがSheet1のA列に1行目から入っていて、必ず0より大きい、
Sheet2からの必要なシートは全部出来ている・・・と仮定して。
Sub TEST()
A = Selection.Value
B = 2
Do Until Selection.Value = 0
R1 = Selection.Address
Do
Selection.Offset(1).Select
A = A + Selection.Value
Loop Until A > 5
R2 = Selection.Address
R3 = R1 & ":" & R2
Range(R3).Copy
Sheets("Sheet" & CStr(B)).Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Selection.Offset(1).Select
A = Selection.Value
B = B + 1
Loop
End Sub
こんな感じのコードで出来ると思います。キモはSelection.addressで
加算開始と終了のセル位置を取得しておくことです。
起動時、Sheet1のA1を選択していれば、これで行けると思いますが、
検証はちゃんとやっていないので、上手く行かないかも知れません。
mory (512) 2006年7月3日16:13
|
|
|
|
[82609] |
moryさま
ご回答ありがとうございます。
> Sheet2からの必要なシートは全部出来ている・・・と仮定して。
ココなんですが、できていません。
A列が10000件を超えている状況でして、大体96sheetかなって
いう数値は出ているのですが、
これをコピペでなく分割する方法がないかなと模索している次第です。
ようすけ 2006年7月3日16:31
|
|
|
|
[82616] |
私は思うのだが、スレ主はなぜプログラミング関連のメーリングリストに
登録しないのかな、と。 掲示板で単発な質問するよりも、いろんな情報が
入手できたりすると思うのだが。
MLの場所によっては「学校の宿題をMLで聞くな!自力で解け」と辛辣な回答を
よこす所もあるようですが。
Question (未登録) 2006年7月3日18:07
|
|
|
|
[82666] |
Sheets("Sheet" & CStr(B)).Select
のかわりに、Activewindow.sheets.add だったかな、とにかく
シートの挿入をやればいいだけです。
そこらへんの改造は簡単に出来るような、VBAのコードを書いた
つもりだったのですが・・・。
mory (512) 2006年7月4日23:33
|
|
|
|
( 参照数:1543 日平均:0.2 ) |
|
〜 回答の受付を終了しました 〜 |