Excel VBA質問スレ Part6 at TECH
[2ch|▼Menu]
[前50を表示]
400:デフォルトの名無しさん
08/04/26 01:54:20
またアホが湧いた

401:デフォルトの名無しさん
08/04/26 14:29:11
入門用の書籍で
やさしくわかるExcel関数・マクロ 改訂版
を買おうと思うんだけどどう?

402:デフォルトの名無しさん
08/04/27 10:03:45
ポケモンキャラクター図鑑とかウルトラマン
怪獣図鑑みたいなものだと思って買う
コンビニで売ってるくらいのもので、実にコンビニエンス!
な本。ただし内容は覚えないほうがいいよ。

403:デフォルトの名無しさん
08/04/27 10:35:50
>>402
じゃあおすすめ教えて下せえ
皆さんはどうやって覚えたの?_実習あるのみ?

404:デフォルトの名無しさん
08/04/27 13:25:29
>>403
俺はインプレスのできる大事典で覚えた。

405:デフォルトの名無しさん
08/04/27 14:22:00
>>404
おまえは俺か

俺もそれで覚えた。カラフルで見やすくおすすめ。取り組みやすい。

406:デフォルトの名無しさん
08/04/27 15:24:05
>>402

ドラえもんのポケットの中の道具辞典だろ? マクロや関数は。
ドラえもんの道具辞典みたいなもんだよ。エクセル便利マクロ集ってのは。
(ちょっと使いすぎたり適用範囲間違えるとのび太みたいに災難に合う)
VBAがウルトラマンに出てくる怪獣みたいなもの。

407:デフォルトの名無しさん
08/04/27 17:32:05
最近のだと
しっかり学ぶ! Excel VBA 短期集中講座 [VBAマクロ基礎] 編
がいーよ。


408:デフォルトの名無しさん
08/04/28 11:34:36
VBAforEXCEL 2003 sp1に関してなのですが、F8で一行ずつ実行しているときに、
Application.ScreenupdatingをFALSEにすると、なぜか(?)一行ごとに
画面の更新が行われ、非常にもたつきます。

これは、2003のみの仕様なのでしょうか。
あるいはサービスパック適用で改善されたりしますか。

よろしくお願いいたします。

409:デフォルトの名無しさん
08/04/28 12:36:50
2003SP3 Application.Screenupdating = FalseでもF8で実行すると画面は更新されています
ただし、非常にもたつくという症状はありませんでした

いずれにしてもSP3は適用しておいた方がいいと思いますよ

410:408
08/04/28 12:46:17
>>409
ありがとうございます.
ただ、不思議なことにUpdating = TRUEの記述が入っていると、
はやく実行されるんですよ。ちょうど意味が逆転する感じで・・。

411:デフォルトの名無しさん
08/04/28 13:16:36
スマン、ちょっと教えて欲しいんだが、数字を小さい順に並び替えるのってどうやるんだ?RANKにすりゃいいのか?

412:デフォルトの名無しさん
08/04/28 13:30:05
print文で正規表現を用いた出力をしたいのですが、
どのようにしたら良いでしょうか。
例:print "(tab)Hello"
(tab)の箇所にタブを入れたいと思います。
もしくは、正規表現を用いずに出力する方法はあるのでしょうか。

413:デフォルトの名無しさん
08/04/28 13:35:33
>>412
vbTab

414:デフォルトの名無しさん
08/04/28 13:40:28
URLリンク(www.nicovideo.jp)

415:デフォルトの名無しさん
08/04/28 14:19:08
>>411
配列のソートが出来ないのは不便。
シートに数字を広げて、昇順かけるしかないでしょ

416:デフォルトの名無しさん
08/04/28 14:26:05
Sub 長さ4の配列データの並べ替え( A )

if(A(1)<A(2)AND(A(2)<A(3))AND(A(3)<A(4))then
return
end if
if( (A(2)<A(1))AND(A(1)<A(3))AND(A(3)<A(4))then

A(1)=A(2)
A(2)=A(1)

end if

あと14個似た構文が続く

End Sub


以前、会社のシートにこれがあった。
バグが出る度に書き直していった苦労の跡がにじんでた。
なんだかんだいって、結構偉大なコードだと思った。

417:412
08/04/28 14:26:47
>>413
ありがとうございます。
解決しました。

418:デフォルトの名無しさん
08/04/28 15:15:49
>>415 サンクス。早速やってみる。

419:デフォルトの名無しさん
08/04/28 19:25:51
>>416
笑えるなあ。


420:デフォルトの名無しさん
08/04/28 19:32:36
>>416
A(1)=A(2)
A(2)=A(1)

この時点で両方A(2)

421:デフォルトの名無しさん
08/04/28 21:39:55
俺はソートにはADO使っちゃうな

422:デフォルトの名無しさん
08/04/28 23:03:39
>>411
URLリンク(officetanaka.net)

423:デフォルトの名無しさん
08/04/29 02:16:06
>>411
配列のソートならググればサンプルがゴロゴロ転がってると思うが。
>>422
えれー遅いな。
つかえねー。

424:デフォルトの名無しさん
08/04/29 09:58:17
>>423
自前で作れば数倍早いが、こんだけ楽さしてもらってこのスピードなら十分使えるだろ

'Common Language Runtime Library を参照設定
Const NUM_MAX As Long = 65536
Dim DataList As mscorlib.ArrayList
Dim i As Long

Set DataList = New mscorlib.ArrayList

For i = 1 To NUM_MAX
DataList.Add Int(Rnd() * NUM_MAX)
Next i

Range("A1").Resize(NUM_MAX).Value = _
Application.Transpose(DataList.ToArray)

DataList.Sort
Range("B1").Resize(NUM_MAX).Value = _
Application.Transpose(DataList.ToArray)

DataList.Reverse
Range("C1").Resize(NUM_MAX).Value = _
Application.Transpose(DataList.ToArray)

Set DataList = Nothing


425:デフォルトの名無しさん
08/04/29 14:52:25
ソート関数ぐらい自前でちゃっちゃと用意できないあたりが
やっぱVBAスレって感じでいいね(ゲラプwww

426:デフォルトの名無しさん
08/04/29 15:04:17
大きく出たな

427:デフォルトの名無しさん
08/04/29 15:17:03
>>425
こんな口ばっかりのヤツに限っていまだにVB6あたり使ってそうw

428:デフォルトの名無しさん
08/04/29 15:25:14
VB6は軽くていいぞ
業務アプリのGUIはアレで十分なんだがな

429:デフォルトの名無しさん
08/04/29 16:28:29
エクセル使っていながらソートを自作するはめになったのは何故か。
自問するべきだ。どこで間違えた?


430:デフォルトの名無しさん
08/04/29 18:40:42
逆だ。配列の使いにくさはVBAが最強。
故に車輪の再発明ばっかやるハメになる

431:デフォルトの名無しさん
08/04/29 23:33:15
VBAでもStringBuilder使えるのね…

432:デフォルトの名無しさん
08/04/30 09:35:33
エクセルVBAスレの割りに、配列をシートにペーストして
昇順後→再格納の手法が忘れられてないかい

433:デフォルトの名無しさん
08/04/30 09:52:52
>>432
オートフィルターのこと?

434:デフォルトの名無しさん
08/04/30 10:06:36
>>433
orz

435:デフォルトの名無しさん
08/04/30 10:12:30
>>432
質問者はそれを求めてるように思える
そもそも配列でもなく、再格納の必要もなさそうな気がする


>>424
これは便利
勉強になりました

436:デフォルトの名無しさん
08/04/30 10:13:09
>>433
A
 ↓
Z

このボタンを押すマクロ記録を何度やったことか。
しかも、ラベル行がないと、滅茶苦茶になるし。

437:デフォルトの名無しさん
08/04/30 10:35:45
>>436
それは使い方が悪い。

438:デフォルトの名無しさん
08/04/30 11:06:26
>>424
参照設定したらDataList.とピリオド打てばインテリセンスが効きそうなもんだが、効かないね。
SortやReverseやToArrayの他にどういうメソッドやプロパティがあるかおせーて。
オブジェクトブラウザでも出てこねー。

439:デフォルトの名無しさん
08/04/30 11:21:39
必要な箇所だけCSVに転記(このマクロはVBAで自分で書いてすぐに捨てる)
外部プログラムでソートした別のCSV作って読み込む。これを元の場所に再格納
(このマクロもVBAで作ってすぐ捨てる)

外部プログラムは当然VB. VBS on WSHという手段もあるが、これは手軽だがそれほど
早くはない。
.NET FrameWork(MS無償提供)入れたWindowsならVBコンパイラ付いてるぞ。
インテリセンスとかそういう高機能なIDEじゃないとプログラム開発出来ないという
のであればVB 2008なりなんなりGetしてInstall)
CSV読み込んで配列に格納して、それをソートする処理はまぁちょっと勉強しなきゃ
辛いだろうな

兎に角Excelシートに見苦しい、一度しか使わないようなVBAコードは残さないこと
が精神衛生上好ましい。

440:デフォルトの名無しさん
08/04/30 11:39:39
>>439
シートから不要不急のVBAコードは削除することは同意
誤動作された場合の被害が大きい。
ただそういった使用済みのコードは完全に捨ててしまうのも
やはり問題。別の理由で、データ破損してしまい作り直さな
ければならない場合とか、大騒ぎになるな。
テキストファイルに落としてオブジェクトとして
埋め込んでおくのがいいと思う。

441:デフォルトの名無しさん
08/04/30 12:22:20
>>439
何番へのレスなの?

442:デフォルトの名無しさん
08/04/30 13:31:27
>>439
それコード書く意味あんの?

443:デフォルトの名無しさん
08/04/30 14:13:23
>>442
ちょっと複雑な比較順序でソートしなければならない場合とかだと
(ex 国語の点数が同じなら、数学と理科の重み4:3の平均で比較し、
それも同じなら、歴史と社会の重み2:3の平均で比較し )
やっぱりVBAコードに頼らざるを得ないよ。
手動操作で出来る場合も多いけど、ミスを疑われるから検証作業が要求されるので
結局、コードが残って再現もできるようにしといた場合のほうがずっと信頼される。
自分のだったら兎も角、共有シートとかだと、勝手にシートや列を行を増やしたり、
隠したりすることも出来ない場合が殆どだし、何かまとまった操作をする場合は
やっぱりVBAを使うよ。
でもVBAを使ってちょっと荒くデータ操作とかすると古いバージョンのExcelだと落ちるは、
シートが何故か肥大かするわで、嫌う場所も多いね。
だから外部ファイルにデータだけ抜き出して、処理してから書き戻すってことを
要請されることが多い。
シートのデータは、手作業だと抜き出しにくいように工夫されてるから、外部ファイルに
書き出す作業もVBAを使う。


444:デフォルトの名無しさん
08/04/30 14:14:19
>>441
俺もわからんかった・・

445:デフォルトの名無しさん
08/04/30 14:19:40
つまり、元々のシートの設計が悪いとVBAに頼った糞運用せざるを得なくなるってことですね。

446:デフォルトの名無しさん
08/04/30 14:27:04
そうExcelの設計が悪すぎなのかもな

447:デフォルトの名無しさん
08/04/30 14:40:00
csvの仕様も死ねる

448:デフォルトの名無しさん
08/04/30 17:27:18
>>443
> 結局、コードが残って再現もできるようにしといた場合のほうがずっと信頼される。
コードはすぐ捨てるんじゃなかったの? >>439とは別人?

449:デフォルトの名無しさん
08/04/30 17:33:10
>>438
URLリンク(msdn.microsoft.com)(VS.80).aspx

450:デフォルトの名無しさん
08/04/30 18:42:04
最新バージョンはどうかしらないけど(できるの?)
Excelは手動操作ログ記録とそのロールバックは保存できないからな。
使ったVBAをプリントアウトしてシートから削除して提出
したらVBAが作業ログと差分を兼ねることにもなる。
(自分と先方の作業前シートのバックアップ保持は当然)

451:デフォルトの名無しさん
08/04/30 18:57:56
一般ユーザレベルのノウハウは、ソフトウェア板ででもやってちょ

452:デフォルトの名無しさん
08/04/30 19:23:19
Excel&VBAくらい「一般人」向けの組み合わせはないと思うけどな

453:デフォルトの名無しさん
08/04/30 20:21:46
ぷ、ぷりんとあうとしてさくじょ・・・

454:デフォルトの名無しさん
08/04/30 20:39:40
>>443
その例題はVBAいらない。
VBAでやりたいなら止めはしないが。

455:デフォルトの名無しさん
08/04/30 21:09:38
>>454
それならばやり方教えて下さい。というかVBA無しの手作業でやりなさい。
報酬は一切ありませんが。

生徒ID/国語得点/数学得点/理科得点/歴史得点/社会得点
の表がシートA1からF9999まで埋まっています。
RANGE A1:F9999以外のセルは一切改変禁止です。
シートを複製したりすることも禁止です。
(後で削除したりクリアすることも禁止です。監視員が
後ろで貴方に不正操作がないか監視していると想定して下さい。)

この条件で、ソート
order by
(5*国語得点+4*数学得点)/9,
(4*数学得点+3*理科得点)/7,
(3*理科得点+2*歴史得点)/5,
(5*歴史得点+3*社会得点)/8,
(4*社会得点+5*国語得点)/9
ASC
でお願いします。

456:デフォルトの名無しさん
08/04/30 21:11:41
スルーよろ

457:438
08/04/30 21:12:31
>>449
トンクス

458:455
08/04/30 21:20:25
追加条件
デュアルモニターで、立ち上がってるプロセスやクリップボードまで
監視されており、セルを別のブックに貼付けてなんて姑息な技は
使えないということは言う迄もありません。Lotus-123,OpenOfficeを使うこと
等も無理でしょう。
さて、この状況でどうやってソートするのか期待してます。

459:デフォルトの名無しさん
08/04/30 21:21:00
>>455
君はなぜExcel使ってるの?


460:デフォルトの名無しさん
08/04/30 21:25:59
>>458
別のブックに貼り付けてソートしてから元のシートに貼りなおすのはありだなあ。
姑息とは思わない。
なんでそれをやらないことにこだわってるの?

461:デフォルトの名無しさん
08/04/30 21:30:45
シート追加して、元シートのA1でshift+*して、コピペして、適当な計算式追加してソートして元に戻して、シート削除。

462:デフォルトの名無しさん
08/04/30 21:31:47
s/shift+*/ctrl+*/

463:デフォルトの名無しさん
08/04/30 21:34:14
>>455
それ、他Bookか追加シートで処理するより、CSVに吐き出して外部ソートするコード書く方が大変だろw
いちいち>>439みたいなことしてんの?馬鹿じゃね?

464:デフォルトの名無しさん
08/04/30 21:35:20
>>455にとってExcelは不便な道具なんだね。
デュアルモニターで監視されててソート機能すら使ってはいけない。
かわいそう。

465:455
08/04/30 21:39:55
クリップボードにコピーしたらその内容を直ちに削除する常駐ソフト(サービス)が
立ち上がっているような職場です!
好きでやっているわきゃないでしょ

466:デフォルトの名無しさん
08/04/30 21:42:24
死ねよpgr

467:デフォルトの名無しさん
08/04/30 21:42:36
>>465
じゃあセルの内容を別シートにコピペするVBA作ったら?
素人が変なソート組むよりそのほうがよっぽどいいよ。

468:デフォルトの名無しさん
08/04/30 21:48:01
これからも後出しの条件がどんどん出るよ
お楽しみに!

469:デフォルトの名無しさん
08/04/30 21:49:05
これはひどい(この板で今日二回目)

470:455
08/04/30 21:50:00
ま、ガンバって下さい。期待してます。

471:デフォルトの名無しさん
08/04/30 21:50:09
>>455
order byとかASCとか生意気なやつだ。
イラっとする。

472:デフォルトの名無しさん
08/04/30 21:50:58
うぁぁぁぁぁ

473:デフォルトの名無しさん
08/04/30 21:52:08
ちょっと待て、「歴史」と「社会」でわかれてるが、「社会」ってなんだよ?w

474:455
08/04/30 21:56:00
ちんちん

475:デフォルトの名無しさん
08/04/30 21:56:35
でもVBAでCSV書き出すのは可って意味わかんない
馬鹿じゃないの

476:デフォルトの名無しさん
08/04/30 21:58:29
どっかの学校か塾の先生かなんか?
レベル低すぎーw

477:デフォルトの名無しさん
08/04/30 22:00:26
>>443が何がバカかというと,複雑な条件のソートには独自のアルゴリズムが
必要とか思ってるところ。

478:デフォルトの名無しさん
08/04/30 22:01:04
なんか可哀想だな


生徒が

479:デフォルトの名無しさん
08/04/30 22:12:43
何の先生だろ。
数学じゃないことを願う。

480:デフォルトの名無しさん
08/04/30 22:47:11
プログラミングだろ

んでなんでそこまで先生がむきになってるのか、更におまいらが叩いてるのかがわからんよ
おまいらの脳内モジュールにスルー判定のアルゴリズム追記しとけ

んで、ソートコード出来た?

481:デフォルトの名無しさん
08/04/30 23:10:16
必死すぎる先生のキャラがおもしろいからだよ。
VBA使ってることをなんとか正当化したいんだね。
VBAでソートを組むはめになるやつには何か大切なものが欠如している。


482:デフォルトの名無しさん
08/04/30 23:22:10
結局話の流れは、>>455のお題を手作業でやる方法を示せってことなの?

483:デフォルトの名無しさん
08/04/30 23:33:59
スレ違い

484:デフォルトの名無しさん
08/04/30 23:38:10
いや板違い

485:デフォルトの名無しさん
08/04/30 23:54:33
そんなに触っちゃダメなデータならソートして並べ替えちゃうのもダメなんじゃないかな。

486:デフォルトの名無しさん
08/05/01 00:15:11
>>424
ArrayListのToArrayでキャストするにはどうですればいいのでしょうか??

487:デフォルトの名無しさん
08/05/01 00:54:07
流れが意味不明だ

488:デフォルトの名無しさん
08/05/01 01:11:30
>455
ファイルをデュプってODBCのExcelドライバをADO経由して開いて、
あとはそのままクエリ書けばいいじゃん。

489:デフォルトの名無しさん
08/05/01 01:16:15
飽きた

490:455
08/05/01 01:16:53
>>488
大変よくできましたね。通信簿は5をあげましょう。
しかし内申書では「粗暴/凶悪。将来犯罪者になる可能性あり」を書いときます。

491:455 ◆CSZ6G0yP9Q
08/05/01 01:23:05
これが最後のレスです。
>>474は455ではありません。
以降の455のレスは別人になります。

492:デフォルトの名無しさん
08/05/01 01:29:53
455がんがれよ
じゃーの

493:デフォルトの名無しさん
08/05/01 01:35:17
一般人にも分かるようなExcelだけで完結する操作を期待していた俺には
488はちょっと期待外れだった。お題は確かに満たしているけど……。


494:デフォルトの名無しさん
08/05/01 01:42:51
>>490
頭おかしいのか?
VBAなし&クリップボード使用なしでどうやるかっつー話だろ?
あ、そーか、10段階の5か。

495:デフォルトの名無しさん
08/05/01 01:58:58
逃亡宣言した頭おかしい奴のお題とかどうでもいいよ

496:デフォルトの名無しさん
08/05/01 08:24:05
>>455のお題を翻訳すると「Excelを使わずに成績表を並べ替えなさい。」ということだろう。


497:デフォルトの名無しさん
08/05/01 09:12:01
秋葉原のソフマップに5万円落ちてますとか言い出しそうだ

498:デフォルトの名無しさん
08/05/01 15:24:15
ちょっと見ない間に随分賑わってたんだな

499:デフォルトの名無しさん
08/05/01 16:28:20
ソート問題は暑いな

500:デフォルトの名無しさん
08/05/01 17:10:35
500ゲト

501:デフォルトの名無しさん
08/05/01 17:47:17
なかなかに香ばしいな

最大値を抜き出して、最小値から1づつ増加、判定合致したものから格納じゃだめなの?
場合に依っては死ぬほど重いけど

502:デフォルトの名無しさん
08/05/01 17:51:34
>>501
なんだそりゃ。
お前自身が香ばしすぎるぞ。

503:デフォルトの名無しさん
08/05/01 17:53:35
バルブソートがいいな。

504:デフォルトの名無しさん
08/05/01 17:59:48
だから、シートに展開しろと何度言ったら・・・(,,゚Д゚)

505:デフォルトの名無しさん
08/05/01 18:02:21
香ばしいって言うと怒る人いるよね。
これからはクリスピーって言ったらどうかな。

506:デフォルトの名無しさん
08/05/01 18:04:29
>>505
クリスピーな奴へっけん

507:デフォルトの名無しさん
08/05/01 18:08:26
みなさん食いつきが良いですね

508:デフォルトの名無しさん
08/05/01 19:13:28
クイックソートが一番最適で、そんなこともわからないから
自前でちゃっちゃと用意することもできずに、こんな不毛なやり取りしてるあたりが
やっぱVBAスレって感じでいいね(プゲラオプスwwwwwww

509:デフォルトの名無しさん
08/05/01 19:13:59
クイックソートが最適・・・(笑

510:デフォルトの名無しさん
08/05/01 19:26:03
クイックソートを笑って逆に自分の無知ぶりを晒けだしてることにすら気づいてないあたりが
やっぱVBAスレって感じでいいね(ゴルバチョフwwwwwwwwww

511:デフォルトの名無しさん
08/05/01 19:27:14
C の qsort とか純粋なクイックソートでまず実装されてないだろwww

512:デフォルトの名無しさん
08/05/01 19:33:58
そもそもなんでエクセルでソート書いてんだよ。
それはさておき、ソートプログラムを売る人じゃないんならクイックソート
を実装できる程度でもじゅうぶんだと思う。
>>501のはさすがにひどい。


513:デフォルトの名無しさん
08/05/01 19:48:01
プゲラとか懐かすぃ

514:デフォルトの名無しさん
08/05/01 20:09:52
510 は逃げ帰ったようだな

515:デフォルトの名無しさん
08/05/01 20:12:31
クイックソートはスレ違い

516:デフォルトの名無しさん
08/05/01 20:40:17
すみません初心者ですがマクロの記録をやってるんですが、おもしろいですね

517:デフォルトの名無しさん
08/05/01 20:55:54
>>516
VBAの正しい楽しみ方だね。
ここの先輩たちのようなソート作るようなバカにはならないでね。

518:デフォルトの名無しさん
08/05/01 21:37:32
dim a as integer で、空白セルの値が代入されたとき
if a="" then では型不一致となるのをどう書いたらいいですか?



519:デフォルトの名無しさん
08/05/01 21:39:30
バルブソートが一番だよ。

520:デフォルトの名無しさん
08/05/01 21:48:16
Excelの並べ替えの機能を使ってあげろよ。

521:デフォルトの名無しさん
08/05/01 22:30:49
>>516
それがVBAの自慢できるところだと思う
初心者に優しい

522:デフォルトの名無しさん
08/05/01 22:42:36
>>518
dim a as variant


523:デフォルトの名無しさん
08/05/01 23:09:36
>>518
あとは格納の段階で型不一致を監視して弾く

くりすぴーな501ですがクイックソートってなんですかわかりません〉〈
直訳するとはやぶさの剣かなにかで

先生教えて〉〈

524:デフォルトの名無しさん
08/05/01 23:12:09
並び替えアルゴリズムの一名称
ネットにvisual basicのコードいっぱいあるよ

525:デフォルトの名無しさん
08/05/01 23:17:40
>>523
教養としてクイックソートくらいは知っておいたほうがいい。
勉強のためにVBAで組んでみるのもいいかもしれない。
でも仕事では使うなよ。VBAでソートなんてアホのやること。


526:デフォルトの名無しさん
08/05/01 23:21:44
>>525
VBAじゃなくても、自分でソートのコード書くことなんてほとんどないだろ

527:デフォルトの名無しさん
08/05/01 23:26:18
>>526
VBA使いはソートばかり書きたがるだろ?

528:デフォルトの名無しさん
08/05/01 23:28:47
まあソートプログラムなどネットで買い物するぐらい簡単なんだけど
おじいちゃんとかは発狂するかもねw

529:デフォルトの名無しさん
08/05/01 23:34:22
>>528
簡単なんだから作っても誰もほめてくれないぞ。


530:デフォルトの名無しさん
08/05/01 23:40:04
だからネットで落とせると言ってるだろおじいちゃんw

531:デフォルトの名無しさん
08/05/01 23:44:39
>>530
そうか?伝わらなかったな。
「ネットで買い物する行為と同じくらい簡単な事だ」と言ってるのかと思ったよ。


532:デフォルトの名無しさん
08/05/01 23:48:24
>>531
発狂するなよ
おじいちゃんには難しいかもしれんがw

533:デフォルトの名無しさん
08/05/01 23:50:12
>>532
そうか。そうか。
おすすめのソートはどれだね。

534:デフォルトの名無しさん
08/05/01 23:52:22
>>533
毎度馬鹿の一つ覚えの純粋クイックソートです。
要素数少なくても馬鹿の一つ覚えのようにクイックソートします。
要素数によって分岐するなんて発想はありません。

535:デフォルトの名無しさん
08/05/01 23:52:42
おすすめのソートってネットで特徴ひけるだろw
そんなんで勝ち誇りたいなんて能無しで誰にも相手にされない
頑固じじいといっしょだねww

536:デフォルトの名無しさん
08/05/01 23:54:40
プログラマーに劣等感抱いてるのがいるな

537:デフォルトの名無しさん
08/05/01 23:55:42
おや?ソートをダウンロードする話じゃなかったのか?

538:デフォルトの名無しさん
08/05/01 23:56:06
職場で嫌な事でもあったんだろ

539:デフォルトの名無しさん
08/05/01 23:58:20
>>527
????

540:デフォルトの名無しさん
08/05/01 23:59:38
ソートをダウンロード((≧m≦)ぷっ!
身近の目上の人が
「並び替えをダウンロードしろ」
とか言ったらもう馬鹿にされまくりで
誰も相手にしない

541:デフォルトの名無しさん
08/05/02 00:00:11
なんだ、このスレ

542:デフォルトの名無しさん
08/05/02 00:01:11
所詮VBAスレだしキチガイが湧いても仕方が無い

543:デフォルトの名無しさん
08/05/02 00:02:16
最近の若い子とは話が通じないな。
まあいい。どんなアルゴリズムでもいいんだ。アルゴリズムの話をしたいんじゃない。
エクセルでソート自作してなんの意味あるんだということを言いたい。

544:デフォルトの名無しさん
08/05/02 00:05:58
何を当たり前の事を自信たっぷりに言ってるんだ。
分かって遊ばれてるだけだというのに。

545:デフォルトの名無しさん
08/05/02 00:07:55
難しい連中だな。

546:デフォルトの名無しさん
08/05/02 00:10:54
>>544
当たり前と言うがこのスレ見てると本気で心配なやつがちらほら…

547:デフォルトの名無しさん
08/05/02 00:13:13
>>418  を見る限り、既に、本流は解決している件

548:デフォルトの名無しさん
08/05/02 00:17:52
>>547
その後>>443とか>>501が登場したからなあ。

549:デフォルトの名無しさん
08/05/02 02:42:25
会社とかで使うブックの場合やはり余り凝らないほうがいいと思う。
ちょっと格好わるくてもVBAでやったほうが無難かも。
情報セキュリティにうるさいDB屋の圧力があるからね。
あんまり凝ったことして得意になってると、Excelブックを一種の
アーカイブファイルとして扱い主要処理はDBでやれという動きが加速してくる。
殆どのブックは実際物置としての価値しかないんだが、一部有効に使われた
ブックには、核廃棄物のように再利用不能な割に流出すると有害なもの
が含まれてる場合がある。やっかいなことにちょっと凝ったスマートな使い方
をすると何でもないデータからそういうのが生まれることがある。
虫が湧くって感じ。
だから最近は>>443の例のように、凝った使い方を一切禁止するブックを
物置として扱うことが強制され、かつてはExcelで簡単に出来た処理もわざわざ
固く重く扱いにくいRDBの上でやれと強制される最近の傾向はそれが原因
してる。(単にDB屋の陰謀だという説もあるが)

550:デフォルトの名無しさん
08/05/02 02:46:40
ではちょっと凝った使い方をしたのを、「ムック」と呼ぶ事にしよう。

551:デフォルトの名無しさん
08/05/02 03:05:39
ExcelVBAでお手軽に出来ることをRDBに持っていくと、やたらと工数が掛かる。
外部に出すと、鼻クソみたいなデータ処理でも平気で3人月とか見積もり出てくるし。
それに、RDB使うなら業務の標準化から始めないと不毛になりがち。
ま、何ごともほどほどに。

552:デフォルトの名無しさん
08/05/02 07:00:35
>>549
凝らないほうがいいならなおさらVBAは使わないほうがいいじゃないか。
「セキュリティにうるさいからVBAが無難」←なぜ?
「流出すると有害なブックがある」←当たり前。

おまえ>>443だろ。

553:デフォルトの名無しさん
08/05/02 07:02:18
>>551
>それに、RDB使うなら業務の標準化から始めないと不毛になりがち。

ますますRDB使いたくなるぞ。
おまえ>>443だろ。

554:デフォルトの名無しさん:
08/05/02 08:29:42
RDBってなんですか?

555:デフォルトの名無しさん
08/05/02 09:03:58
レッドリボン軍

556:デフォルトの名無しさん
08/05/02 09:06:47
RDBの概要でつ
URLリンク(www5a.biglobe.ne.jp)

557:デフォルトの名無しさん
08/05/02 11:54:43
>>525
そっか
ありがとう


配列内容をソートするのがうんたらって質問が出たからじゃない?
〉なぜ

558:デフォルトの名無しさん
08/05/02 12:06:39
>>557
実は出てないらしい

559:デフォルトの名無しさん
08/05/02 13:29:32
でもぶっちゃけ、ちょっとVBA使えるようになるとちょっとしたモン作りたくなるよね?
そういう時に手を出しがちなのがソート関係じゃない?

ええ、その昔、俺も組みましたよ、クイックソート

懐かしい、結構みんな通る道なんじゃないの?(俺だけか)

560:デフォルトの名無しさん
08/05/02 13:49:54
アメリカじゃ馬鹿なことやって、みんなに迷惑かけるやつに限って成功したりするもんな。

561:デフォルトの名無しさん
08/05/02 14:23:15
そうそう、派手なフォーム作ったりな

562:デフォルトの名無しさん
08/05/02 15:11:05
なんかやりたい気持ちはわかるんよ。

派遣で就いた職場で社員から、手作業でデータを加工する仕事をまかされて、あまりの能率の悪さと面倒くささで
しかもミスると怒られるからVBA使って一発で加工するマクロ作ったらなぜか気味悪がられるようになった。

それからというもの、プリンタが止まったり、PCに何かエラーがあると全部俺が疑われるようになった。

563:デフォルトの名無しさん
08/05/02 15:31:07
>>549
Excelブックが物置?
やっぱり455の言う事は意味がわからんな

564:デフォルトの名無しさん
08/05/02 16:07:09
>>562
そんな会社止めちまえ

565:デフォルトの名無しさん
08/05/02 17:00:44
>>549
そんな会社止めちまえ

566:デフォルトの名無しさん
08/05/02 17:05:34
>>562
俺もその経験あるな・・・


567:デフォルトの名無しさん
08/05/02 17:06:34
>>564
いや、あまりにも周りが無知過ぎていつか自分にもチャンスがあるんじゃないかと思って辞めれない・・。
もう少しレベルの高いとこだと使い物にならない実力だし。

そんな態度だから苛められるんだろうなぁ。

568:デフォルトの名無しさん
08/05/02 17:38:23
ニュータイプを恐れる者たちの気持ちがわかっただろう

569:デフォルトの名無しさん
08/05/02 17:58:12
人をモルモットみたいに……

570:デフォルトの名無しさん
08/05/02 18:23:09
ついにねんがんのアイスソートをてにいれたぞ

571:デフォルトの名無しさん
08/05/02 18:26:31
どう考えても手作業の方が早いのに、
「マクロでやれ、VBAでやれ、そうしたらスグできるだろ?○○分後までに終わらせろ」
って、何も作業の中身を見ずに、マクロ・VBAを使えば
どんな作業でもスグに終わると信じ込んでいる上司に
困ったことはあったな。


572:デフォルトの名無しさん
08/05/02 18:27:05
職場によるだろ。同じ派遣でも。
>>562の職場は、多分シートのミス入力チェックする担当者の仕事が無くなって
立場無くなるから顰蹙を買っただけだと思う。
一般的にはシートに妙な参照や糞数式とか条件付き書式とか使ったトリッキーな
シート作るほうが顰蹙を買い易い。
VBAのコード(特に日本語だと喜ばれる)置いておく(組込んだままには
しないでテキストに落として、ブックに埋め込む)ほうが喜ばれる。

573:デフォルトの名無しさん
08/05/02 18:35:12
>>572
>VBAのコード(特に日本語だと喜ばれる)置いておく(組込んだままには
>しないでテキストに落として、ブックに埋め込む)ほうが喜ばれる。

なんとなくコードっぽい日本語。

574:デフォルトの名無しさん
08/05/02 18:47:06
>>573
毎回コードをエディタにコピーしてから実行するの?
なんかめんどくさそうなんだけど。
どんな処理するVBAなん?

575:デフォルトの名無しさん
08/05/02 19:19:13
アドインじゃだめなん??

576:デフォルトの名無しさん
08/05/02 19:21:56
mscorlib.SortedListって便利だな。

577:デフォルトの名無しさん
08/05/02 20:10:01
まぁ、パソコン販売の「ソーテック」の名前の由来が
「ソートテクニック」だからな。

578:大邊創一
08/05/02 20:17:17
・・・

579:デフォルトの名無しさん
08/05/02 22:12:33
またソートか

じゃあ反対に、考えうる限りギリギリ使えるレベルの、最悪のソートコードだれか考えれ

580:デフォルトの名無しさん
08/05/02 22:56:01
ソートの話をするやつはそーっとしとこ。

581:デフォルトの名無しさん
08/05/02 23:34:50
>579
ボゴソートでもVBAで実装する話?

582:デフォルトの名無しさん
08/05/03 00:52:00
ソートはもういいから次

583:デフォルトの名無しさん
08/05/03 01:44:48
ExcelやDBには本来ソートなんて概念はない。
以上基地外の発現でした。

584:デフォルトの名無しさん
08/05/03 02:16:42
>>580
その通り。卑猥な話だからね。

585:デフォルトの名無しさん
08/05/03 07:26:52
Excel2003しか持ってない(Accessを持ってない)俺が、
七万個の要素を昇順で並べ替えたい時にはどうすればいいですか?

586:デフォルトの名無しさん
08/05/03 07:46:31
Accessを買う

587:デフォルトの名無しさん
08/05/03 07:55:37
Excel2007を買う

588:デフォルトの名無しさん
08/05/03 07:58:51
手作業でやる

589:デフォルトの名無しさん
08/05/03 08:22:41
>>585
その七万個の要素はどんな状態にあるの?
csvなりのフォーマットに落ちているなら、sortすればいいだけだが。

590:デフォルトの名無しさん
08/05/03 08:29:03
>>589
kwsk

591:デフォルトの名無しさん
08/05/03 08:30:15
つ[man sort]

592:デフォルトの名無しさん
08/05/03 08:33:48
ちょっと疑問に思ってsort /?してみたら、固定幅ならsort.exeでも特定カラムをキーにソートできそうね。
unix系のsortにしても、テキストに落ちている必要はあるけど。

593:デフォルトの名無しさん
08/05/03 08:38:32
>>586>>587>>589
工エエェェ(´д`)ェェエエ工工

>>589
Sheet1とSheet2のA列〜F列×35000行と思って頂いて差し支えありません。

594:デフォルトの名無しさん
08/05/03 08:50:14
>>593
1シートずつ別々のcsvファイルに落として、二つのcsvファイルをまとめてsortでOK。
cygwin使うなり、Linuxをリモートで使うなりできるなら、出力を二つのcsvファイルに分けるところまでできる。
そうでないなら、それこそVBAで分割して読み込むって処かな。
いずれにしても、自分でソートを書く必要はないわけで。

どうしてもVBAでやるなら、各シートをそれぞれソートしてからマージソートかね。

595:デフォルトの名無しさん
08/05/03 09:31:01
テキストファイルの分割ごときでそんなご大層な

596:デフォルトの名無しさん
08/05/03 10:53:09
70000の配列に値を入れて、ネットでソートプログラムを
探して、並べ替えればいいのでは

597:デフォルトの名無しさん
08/05/03 12:07:29
>>594
サンクスコ
具体的にどういう手順でやればいいの?
聞いてばっかでゴメソ

>>596
ソートのコードがいるんだね

598:デフォルトの名無しさん
08/05/03 12:11:22
Excel総合相談所 67
スレリンク(bsoft板)

599:597
08/05/03 12:20:03
確かにスレ違いだね
助言してくれた皆さんありがとう
あとは自分で何とかしてみるよ

600:デフォルトの名無しさん
08/05/03 12:30:22
>>562
せっかくVBAで仕事が早く終わるようになったのなら
仕事してるふりしてネットでも見てなさい

601:デフォルトの名無しさん
08/05/03 13:07:55
ちょっと時間がかかっていいなら・・・
1. Sheet1, Sheet2をExcelの機能でソートする
2. Sheet1の10,000行目のソートキーを区切りにして、そこより上をSheet3に、下をSheet4にコピー
3. 2で使ったソートキーの場所を見つけ、そこより上をSheet3, 下をSheet4にコピーする
4. Sheet3, Sheet4をそれぞれExcelの機能でソートする

Sheet1を10,000行と25,000行にまず分割するので、Sheet2の内容がまるごとどちらかに追加
されてもSheetの行あふれは起こらないというのがミソ。

602:デフォルトの名無しさん
08/05/03 13:08:46
あ、3は「Sheet2の中で」というのが抜けてた。

603:デフォルトの名無しさん
08/05/03 14:03:50
ArrayList使え。

604:デフォルトの名無しさん
08/05/03 17:25:16
ご助言をいただきたいのですが、下記のようなマクロを作成しております。
1.幾つかボタンがあり、ボタンを押すとボタン名のシートが追加されます
 作成されたシートに任意の数字を入力しそのシート内でそれが合計されます
2.次に集計用のシートに1で集計した数を貼り付けます。
3.これを追加されたシート分繰り返す。
という処理をするマクロを作成中なのですが、
・追加されたシート分だけコピーするという条件(左から2番目のシートから処理をはじめ
シートの右から2番目まで繰り返すというのを考えています

・集計しコピーしたものを集計用シートの前回貼り付けたセルの横に貼りつけ
をどのうように組めばいいのか思いつきません…。

ボタンの数は全部で7つで最高増えるのが7シートなので、
最初から7つのシートを作成しその集計を集計用のシートに貼りつけするのは
できるのですが、そうすると使わないシートまで作成することとなるので出来ればそういう
ムダを省きたいと思い上記のような事を考えました。
なにか改善策やヒント等ございましたらご教示の程お願い致します。

605:デフォルトの名無しさん
08/05/03 17:36:12
Dim i as integer

For i = 2 to Worksheets.Count -1

  Worksheets(i) に対して処理

Next

こんな感じでどうでしょう

606:デフォルトの名無しさん
08/05/03 18:09:23
VBAとセル間リンクを駆使したExcellentなExcelの使い方をしたければ
LANカード抜いたPCでやったほうがいい。USBメモリで外部データとの
やりとりをする。
ネットやLANに繋がってる環境でVBAを使うとDLLアクセスとか
出来るんで、ネットにデータ流出してるとかしてないとかDB屋が騒ぎ
だす。今やネットやLANに繋がってるPCでExcelやAccessでVBA使う時
は管理者許可がデフォになってるね。
ソートで騒いでいるようだが、DBもExcelもソートは実は余り得意じゃない。
ソートしないで済むようにデータを入れていくのがキホン



607:デフォルトの名無しさん
08/05/03 18:38:12
自分の職場環境がデフォだと思うなよ

608:デフォルトの名無しさん
08/05/03 18:44:21
>>606
VBAかLANかと言われたらLANを選ぶ。
あとそれからエクセルとアクセスはソートが得意。これ豆知識な。

609:デフォルトの名無しさん
08/05/03 18:53:42
本当に豆な知識だ

610:デフォルトの名無しさん
08/05/03 19:23:11
>>606
たかが成績表の並べ替えに面倒なやつだな。


611:デフォルトの名無しさん
08/05/03 20:34:47
>>606
>ソートで騒いでいるようだが、DBもExcelもソートは実は余り得意じゃない。
>ソートしないで済むようにデータを入れていくのがキホン

ちよ、ちょっと。そんな馬鹿な。DBやExcelはツールであって得意じゃないのは使う側の能力がかなり影響するでしょ?
ソートしなくいで澄むようにデータ入力って・・・そんな馬鹿な・・・

612:デフォルトの名無しさん
08/05/03 20:44:20
>>611
>>606>>443だろう。
こいつは何かおかしい。病的だ。きっと優先順位の並べ替えが苦手なんだろうな。


613:デフォルトの名無しさん
08/05/03 21:17:13
>>606
ソートしなくて済むようにするにはデータをどうやっていれるんでつか?

614:デフォルトの名無しさん
08/05/03 21:23:33
入力前にあらかじめデータをソートしておけばいいだろ

615:デフォルトの名無しさん
08/05/03 21:33:35
>>614
手作業でか?

616:デフォルトの名無しさん
08/05/03 21:42:41
なんか香ばしいやつがいるなぁ

617:デフォルトの名無しさん
08/05/03 21:58:41
>>606
お願いがあります、









頼むからコテつけて下さい

618:デフォルトの名無しさん
08/05/03 22:11:36
ヒント:NGワード DB屋

619:デフォルトの名無しさん
08/05/03 22:16:25
なんか微妙に、最近のExcel総合相談所と、雰囲気が
似てるな。あっちは、707だが

620:デフォルトの名無しさん
08/05/03 22:41:14
Excel総合相談所で「ソートを自作するやつ」という笑い話を聞いたことがある。
あくまでもVBAでバカなことやろうとするやつへの戒めであって、本気でそんなことするやつはいないからこそ成立するギャグだった。

621:デフォルトの名無しさん
08/05/03 22:45:59
>>620
モンティパイソンだろそれは

622:デフォルトの名無しさん
08/05/03 23:14:31
>>604
本当にやりたいことはなんだろう。シートを出したり引っ込めたりすることなの?


623:デフォルトの名無しさん
08/05/03 23:31:36
優先順位が簡単にわかる世界って



お子ちゃまの世界のこと?

624:デフォルトの名無しさん
08/05/03 23:48:18
>>623
優先度が簡単にわかることとお子ちゃまとにどんな関係があるのやら。
やっぱり病気だな。

625:デフォルトの名無しさん
08/05/04 00:47:13
>>623
お子ちゃまの世界や極端な大人の世界では、優先順位は
簡単にわからないぞ。
2つのものを比較できるかどうかすら怪しいからね。
2つのものが比較出来るのが自明というそんじょそこらの
大人の世界は、もしかすると非常に幼稚な世界かもしれないぜ
その幼稚園の主役がExcelやAccessだったりするから悲
しいものがあるが。

626:デフォルトの名無しさん
08/05/04 10:12:24
愛こそが最優先

627:604
08/05/04 13:22:19
>605
ありがとうございます!
データを会社においているので、試すのは明日しようと思いますがそれで上手く
いけそうな気がします!
セルのコピーについてはかなり強引ですが、
集計した1セルごと行数分(57行あるのですが・・・)コピーして貼り付け
だと次のシートの集計をしたとき貼り付けも隣の行(セル)に上手く貼りついてくれたので
とりあえず結果オーライです。
まだまだ覚え始めなのですが、このスレを見ながら少しずつ色んな考えを持てるようにしたいと思います。
ありがとうございます。


628:デフォルトの名無しさん
08/05/04 13:26:44
複素数ですら大小比較できないってのに。
比較できるのが自明なものなんて限られてるわ。

629:デフォルトの名無しさん
08/05/04 14:54:28
>>628
ベクトルは大小比較できないと思ってる?

630:デフォルトの名無しさん
08/05/04 15:56:14
>>629
グローバルには標準化できないだけで、恣意的に決めればローカルには定義できるだろ?

大小関係の比較が難しいというのは、次のようなソート問題


大人n人子供m人のM個の家族がある。(当然家族ごとにn,mは異なる)
それぞれ別のM個のホテルに泊まるとする。
それらのホテルは、一般的に大人、子供の宿泊料金が別(常に半額というわけでもない)

シート1の各行にはホテル毎の料金表(大人・子供)
シート2の各行には家族の大人・子供人数があるとする。
シート1の1行に記載されてるホテルにシート2の1行の家族が泊まるとする。

シート2の行を並べ替えて、宿泊料金の総和が最も安くなるようにソートしろ

というような問題

これはエクセルだろうがDBだろうが難しい。ソートの専門家向けの問題。

「車輪の再発明」なんて、小馬鹿にした慣用表現は忘れろ

631:デフォルトの名無しさん
08/05/04 17:12:51
恣意の意味が分かってない件

632:デフォルトの名無しさん
08/05/04 17:18:45
普通それを「ソート」とは言わない件

633:デフォルトの名無しさん
08/05/04 17:19:36
反恣意的に決めてほしいものですな

634:デフォルトの名無しさん
08/05/04 17:36:34
>>630のソートって難しいの?
超簡単に見えるけど?

635:デフォルトの名無しさん
08/05/04 17:44:43
>>443>>455>>549>>606>>630

636:デフォルトの名無しさん
08/05/04 19:02:30
>>634
だよなあ。VBAなんぞまったく使わずに集計&ソート可能。
ソートの専門家向けの問題だって。おもしろすぎる。車輪の再発明の現場を目撃したよ。


637:デフォルトの名無しさん
08/05/04 19:26:54
>>630
ベクトルをグローバルに標準化はできないけど、恣意的に決めればローカルには定義できる。

つまり大小比較できるの?できないの?もっと詳しく説明してほしいな。

638:デフォルトの名無しさん
08/05/04 19:29:24
おまいらもう許してやれよ

639:デフォルトの名無しさん
08/05/04 19:33:43
車輪の再発明と聞いて、すっとんできますた。

640:デフォルトの名無しさん
08/05/04 20:46:50
負け惜しみも沸いてきたみたいんだな(ワクワク

641:デフォルトの名無しさん
08/05/04 21:01:56
ローカル = 丹沢周辺

642:デフォルトの名無しさん
08/05/04 22:12:30
>>628
複素数の並べ替えすらできないバカがVBAでどんなことやってんだよ。笑わせんな。


643:デフォルトの名無しさん
08/05/04 22:44:25
思いっきり馬鹿にされそうだが>>630をVBAなしでやる方法が分からない・・・
集計はともかく、順列組み合わせをシートに吐き出す部分だけはVBA使わないと苦しくないか?
試しに6家族でやってみたが720通り(6の階乗)の組み合わせをVBAで実際に書かせないと
俺の腕では最小値が見つけられない_| ̄|〇
9家族以上になったら1シートにおさまらないし
VBAばっかり使っててExcelの基本機能に無知なせいかもしれんが
誰か答えプリーズ!


644:デフォルトの名無しさん
08/05/04 22:55:32
総和がなんでソートで安くなるんだ

645:デフォルトの名無しさん
08/05/05 00:00:06
>>643
VBAばかり使っていると壁にぶつかるよ。一度離れて基礎的な勉強をしてほしいな。
組み合わせ最適化問題は難問で昔からいろいろ研究されています。ソルバー機能について調べてみて。

646:デフォルトの名無しさん
08/05/05 00:04:35
>>644
組み合わせ最適化問題は地獄の1丁目でつ.入門は慎重に.

647:デフォルトの名無しさん
08/05/05 00:19:05
( ´_ゝ`) ふーん・・・そうかい



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4266日前に更新/248 KB
担当:undef