1 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 12:25:04 ] 過去スレ 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/ 06 pc11.2ch.net/test/read.cgi/tech/1205231499/ 07 pc11.2ch.net/test/read.cgi/tech/1212587819/ 08 pc11.2ch.net/test/read.cgi/tech/1219673793/ 09 pc11.2ch.net/test/read.cgi/tech/1228372971/ 10 pc12.2ch.net/test/read.cgi/tech/1235332603/ 11 pc12.2ch.net/test/read.cgi/tech/1241885130/ 12 pc12.2ch.net/test/read.cgi/tech/1247566074/
186 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 08:24:30 ] ム板だよな?ここ・・・
187 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 08:52:50 ] そっか今みどりの日だから祝日扱いなんだな
188 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 21:28:17 ] 質問をさせて下さい。スペックは Windows2000 Excel2000 です。 シート1に 名前 日付 数 名前 日付 数 ・・・ A氏 10/1 12 E氏 10/3 10 B氏 10/1 11 F氏 10/2 10 C氏 10/2 10 G氏 10/4 11 D氏 10/3 10 のような感じでデータが横に長く入力されているのですが、 これをシート2に一括のデータとしてまとめたいです。 名前には重複はありません。日付のみ重複しています。 申し訳ありませんが、よろしくお願いします。
189 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 21:30:51 ] >>188 に補足です シート2は 名前 日付 数 A氏 10/1 12 B氏 10/1 11 C氏 10/2 10 D氏 10/3 10 E氏 10/3 10 F氏 10/2 10 G氏 10/4 11 ・ ・ ・ の形にしたいです。
190 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 21:41:35 ] >>188-189 配列に入れたら簡単だよ。 それくらい人に頼らず自分で作れないとダメでしょ。
191 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 21:52:53 ] 配列にいれんでも 名前には重複がないんだったら そのままシート2へコピーすればいいだけてしょ 1)A氏〜D氏までのセルをコピー 2)その下にE氏〜G氏までのセルをコピー てな感じで ループ処理していけば
192 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 22:07:04 ] >>188 もうちょっと具体的に。 シート1は縦4列?
193 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 22:11:29 ] つか 丸投げな匂いがするのは気のせい?
194 名前:188 mailto:sage [2009/10/09(金) 22:28:11 ] 名前と日付と数でひとつのブロックになっていて、それが横に数十連なっています。 今までは手作業でコピーと貼り付けをしていたのですが 数が膨大になってきたので手作業ではまかなえなくなってしまいました。 とりあえず自分でマクロを組んでみたのですが、ブロックごとの数がまちまちで シート2の一括データに空白が出来て穴あきデータになっていしまいます・・・
195 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 22:41:20 ] >>155 希望に沿うか分からないですけど、作ってみました。 ttp://excelerthanexcel.blog103.fc2.com/blog-entry-1.html 3つのプロシージャをどう作るかを下の2択で迷い、後者にしました。 ・ 祝日の性質別(固定日、第n月曜日、秋分春分) ・ 機能別(日付確定、曜日確定、1行出力) よかったら参考にしてください。
196 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 22:57:49 ] >>194 デキタヨー Sub a() Set S1 = Sheets("シート1") Set S2 = Sheets("シート2") With S1 R_max = .UsedRange.Rows.Count C_max = .UsedRange.Columns.Count R_dest = 2 For c = 1 To C_max Step 3 For r = 2 To R_max If .Cells(r, c) <> "" Then S2.Cells(R_dest, 1) = .Cells(r, c) S2.Cells(R_dest, 2) = .Cells(r, c + 1) S2.Cells(R_dest, 3) = .Cells(r, c + 2) R_dest = R_dest + 1 End If Next Next End With End Sub
197 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:08:29 ] またコイツか・・・ 何でわざわざSetするの?
198 名前:デフォルトの名無しさん [2009/10/09(金) 23:11:46 ] >>195 本当にありがとうございます。助かります。 イミディエイトウインドウが表示されないです… 「春分秋分」については、月日は「春分日」「秋分日」、 曜日は「未定」 と表示すればよいのですが、その場合はどうすればよいか 教えていただきたいです。
199 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:14:50 ] 変数の宣言しないと分かりにくいかもねぇ。
200 名前:デフォルトの名無しさん [2009/10/09(金) 23:28:12 ] 198です。 イミディエイトウィンドウは表示されました。すみません。
201 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:29:33 ] >>197 あとから修正する可能性のある部分を先頭にまとめてるだけだよ
202 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:38:16 ] >>198 >学校で授業でやっていて、「テストまでには出来るようにしておけ」 じゃなかった? あんまり人まかせだと テストで 赤点てな事になるよ!
203 名前:195 mailto:sage [2009/10/10(土) 00:03:23 ] >>198 自己解決したとはいえ、イミディエイトウィンドウぐらいは質問せずに自分で開きましょう。 ブログ内のコードをぐだぐだに編集して、結果だけは希望通りに出るようにしました。 質を下げたもので良ければ利用してください。 プログラム板にしては非常にぬるま湯的な対応をしてしまったことを すごく後悔しています。でもまぁ、自分自身の勉強にはなったか。
204 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 00:17:17 ] >>196 ちゃんと内容は見ていないがSet □ = Nothing をする癖をつけた方がいいと思うよ。
205 名前:デフォルトの名無しさん [2009/10/10(土) 00:51:40 ] >>203 ありがとうございました。
206 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 01:10:37 ] >>204 ローカル変数って、たとえオブジェクト型でもモジュールの出口で自動的に開放されるんじゃないの?
207 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 03:57:40 ] 礼儀だよ。
208 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 04:17:30 ] モジュールが無事終了するとは限らないだろ
209 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 05:39:19 ] >>204 いらないよ。 >>207 何の礼儀だよ? >>208 だから?
210 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 06:03:58 ] ↑こいつ最高にアホw
211 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 07:23:40 ] ↓こいつ最高に天才www
212 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 10:05:40 ] ∩――、 /(゚)丶_ 丶 / (● (゚)|つ | (入_ノ ミ | (_/ ノ \___ノ゙ー-、 /\ _ \ (⌒O /\ (_ノ \ノ / 、 )0
213 名前:188 mailto:sage [2009/10/10(土) 10:16:15 ] >>196 テストしてみたところ問題なく動きました。 本当にありがとうございます。
214 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 10:51:27 ] >>210 羮に懲りて膾を吹く。 アプリ終了前にfreeしまくるがごとし。
215 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 12:23:40 ] >>197 >>196 を擁護すればSetした方が速いんだよ。 まぁCellsは遅いから、速くしたければ配列だろうけどね。 それからわざわざシート参照の変数をSet 変数 = Nothingとする必要はねーよ。 そんなこと気にするやつは、他にもっと気にすべきことが抜けてる場合がほとんどだ。
216 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 12:55:55 ] >>196 の >S2.Cells(R_dest, 1) = .Cells(r, c) >S2.Cells(R_dest, 2) = .Cells(r, c + 1) >S2.Cells(R_dest, 3) = .Cells(r, c + 2) この部分は S2.Cells(R_dest, 1).Resize(,3).Value= .Cells(r, c).Resize(,3).Value と1行で書けそうだな。
217 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 13:10:30 ] オブジェクトがデカいと メモリが少ないようなマシンで set=nothingしないとその後辛くないかな 何もないなら必要ないだろうけど。 試して言っている訳ではないです。
218 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 16:16:35 ] プログラマはsetした後nothingしないなんていわない
219 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 19:06:03 ] >>217 Worksheet型のオブジェクト変数はシートを作ってるわけじゃない。 ワークシートへの参照への参照だ。 メモリは32ビットCPUで4バイトだ。 マクロが終了すりゃちゃんと参照カウンタは0になる。 Set ** = Nothingを書くのを否定はしないが、書くのがあたりまえって意見は否定する。
220 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 20:02:13 ] 書くことを習慣づけろ
221 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:15:43 ] いらないものを書くやつは馬鹿じゃね?
222 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:18:02 ] これを習慣づけろっ!て言うことが 礼儀と呼ばれるんだろね 質問なんですが 他に礼儀ってどんなものが有りますか?
223 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:19:16 ] >>221 如何に記述量を増やすかがプロなんだよ。 最小限で簡潔になんてアマチュアのやること。
224 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:22:39 ] プロってすごいんだね。
225 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:26:09 ] うるさい、黙ってNothing書け!
226 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:27:51 ] なにこの流れww
227 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:36:46 ] つまり、理由も根拠もないんだが、自分のやりたいことを他人に強制したいときの エクスキューズが「礼儀」ってことだ。
228 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:45:54 ] >>215 普通はSetした方が速いが>>196 は未宣言のVariant型だから速くはならんね。 Nothing云々より変数宣言が大事だな。
229 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:57:25 ] つまりプログラムにおいて礼儀とはK&Rであると
230 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:57:50 ] で、それ百万回実行して何ms違うの?
231 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:59:54 ] >>217 関数抜けたら解放されるんじゃ?
232 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:02:12 ] >230 普通なら宣言しないほうが早い でも場合によってはエラーが引き起こされたりメモリが足りなくなったりする エラー処理するかどうかなんて人それぞれだし、押し付けるようなもんじゃないんじゃないん
233 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:16:56 ] Excel2007 シート上にボタンを2つ貼りつけています。 動作はブックのコピー先をどこにするかだけの違いだけです。 そこでボタンは2つで同じマクロを呼び出し、どのボタンから呼ばれたか によって動作を変えたいのですが、そういう事出来ますか? フォーム上のボタンであれば、 Private Sub btn_A_Click() CopyExec A End Sub Private Sub btn_B_Click() CopyExec B End Sub みたいにそれぞれパラメータを与えて切り替えというのが出来ると思うのですが
234 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:33:54 ] これから速度厨と礼儀厨の熾烈な戦いが始まります。
235 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:39:35 ] >>233 貼りつけているのは、CommandButtonなの? Private Sub CommandButton1_Click() End Sub Private Sub CommandButton2_Click() End Sub てのが出来るどこれとは違うのかな?
236 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:49:17 ] 10usくらいの差なんてどうでもいいよ
237 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:50:35 ] おまえらもういいよムリしなくて 速度とかIndexとかVlookupとかピボットとかNothingとか全部ネタのクセに わかってるからさ!
238 名前:235 mailto:sage [2009/10/10(土) 22:53:23 ] 同じマクロを呼び出したいのね ただ >フォーム上のボタンであれば、 以下の文面では フォーム上でも同じマクロを呼び出してないけど それはいいの?
239 名前:233 mailto:sage [2009/10/10(土) 22:55:20 ] >>235 そうです。CommandButtonです。 それはフォームについてVBEで書く時ではないですか? シート上に貼りつけて、対象マクロを選択する時ってマクロの登録(N)から マクロを選択するけど同じのを選択した時に、どのように区別がつけられるのか? と思いまして質問しています。どうなんでしょうか。
240 名前:デフォルトの名無しさん [2009/10/10(土) 22:56:50 ] >>238 あれは CopyExec というマクロに対して、パラメータとして AまたはBを与えるという意味で 書きました。判りにくくてすいません。
241 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:01:50 ] >>239 Excel2007じゃないんでなんとも言えないけれど 対象ボタンを右くりっくして "コードの表示"をすると シートオブジェクトのコード画面に Private Sub CommandButton1_Click() End Sub とかできない?
242 名前:239 mailto:sage [2009/10/10(土) 23:08:48 ] >>241 ボタンを右クリックして出てくるメニューの一覧が 切り取り コピー 貼りつけ ------ テキストの編集 ------ グループ化 順序 ------ マクロの登録 コントロールの書式設定 でコードの標示というのはここからは出来ないみたいですが
243 名前:241 mailto:sage [2009/10/10(土) 23:12:16 ] >>242 自分のExcel古いせいかメニューが違うようで お力になれませんでした! すみません
244 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:41:15 ] >>242 VBE開いてボタン貼り付けたシートのコードの表示すればいい
245 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:49:31 ] デザインモードになってないだけじゃないの。 デザインモードにしてボタンをダブルクリックでVBEの画面になる。
246 名前:デフォルトの名無しさん [2009/10/11(日) 00:36:01 ] エクセル2007で質問です。 アドインタブのユーザー 設定のツールバーのところにボタン1、ボタン2を作って、 ボタン1を押したら、ボタン1のEnabledをFalse、2をTrue ボタン2を押したら1はTrue、2はFalseに設定したはずですが、 ボタン1を押したあと、ボタン2が押せる状態になっていません。タブを切り替えるとなぜかうまくいくんですが。 2007はこういう仕様なんでしょうか
247 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:43:51 ] またーり行こうぜ
248 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:54:36 ] タブってリボンのことか?
249 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 00:59:03 ] >>239 同じマクロを呼び出した場合、呼び出し元の区別はつかんだろうな パラメータが指定できるなら そこで区別つけるしかない あと フォーム上でもシート上でも クリックイベントのプロシージャは利用できる
250 名前:239 mailto:sage [2009/10/11(日) 06:55:15 ] >>249 >呼び出し元の区別はつかんだろうな 今回は同じマクロを使う事は諦めます。ありがとうございました。
251 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 07:38:14 ] それActiveXコントロールのボタンじゃなくて、フォームのボタンだよね。 application.callerでボタンのテキストが取得できるから、それで判断。
252 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 08:04:41 ] >>251 MsgBox "呼出し元 " & Application.Caller でシート上のボタンでも呼出し元を判別する事が出来ました。ありがとう!
253 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 10:45:19 ] あー、まだ見てたんだ。よかったよかった。 フォームのボタンに限らず、イベントの発火元は大抵わかるようになってるんだよ。 まぁ、中にはわからにものや、任意のマクロ(イベントハンドラ)を登録できないのもあるけどね。
254 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 11:46:13 ] Private Sub CommandButton1_Click() MacroA pram:=1 End Sub Private Sub CommandButton2_Click() MacroA pram:=2 End Sub こういうのは駄目?
255 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 12:08:38 ] いや、それでいいし、実を言えばフォームのボタンの処理もそうしたほうがいいんだ。 プログラマ的な説明だと、イベントハンドラ内に直接処理を実装すると、凝集度が低くなるから。
256 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 17:21:22 ] >>凝集 臨床検査学以外で初めて聞いたよ。 まさか一般社会で聞く単語とは思ってもいなかった。
257 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 18:01:09 ] ちょっと教えてもらっていいですか? Cellsの使い方について このスレでも時々みかけるんですが a = Sheets("Sheet1").Cells(1,1).Value と a = Sheets("Sheet1").Cells(1,1) は結果的に両方共 A1セルの内容を変数aに代入している事になっているのだけど 前者と後者の違いってあるのですか? 本来は、前者であるべきとは思いますが 後者を使った時の弊害ってなにかあります?
258 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 18:22:07 ] >>257 人によってはデフォルトプロパティを中途半端に省略したソースを汚いと感じることもある。 自分一人で使うだけなら好きにすればいい。 あとは、タイピング量が数回増えるのも人によっては弊害と考えるかもしれない。
259 名前:257 mailto:sage [2009/10/11(日) 18:37:12 ] >>258 結局の所どちらでも結果は一緒なんだから どちらを使ってもいいんですね ソースが綺麗か汚いかはその人の主観なんだから あまり気にしません とは言え 自分自身のソースみて汚いと感じる事があるんで 精進しなくては ありがとうございます
260 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 20:48:33 ] 凝集度と結合度
261 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:13:40 ] >>259 また荒れる原因になるかもしれないんだけど、 やっぱりデフォルトプロパティは省略すべきじゃないと思うよ。 range型に代入する時なんか、可読性云々じゃなくて、 後から見て訳が分からなくなる・・・時がある。
262 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:36:28 ] 個人的には最初は省略しないで書いた方がいいと思う。 で、覚えたら好きに書けばいいと思う。 覚えていれば省略しても、普通にも書けるが、覚えてないと普通には書けないと思うよ。
263 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 23:59:39 ] 者によっては、特にオブジェクトに大量にアクセスする場合など処理が冗長になることがある 原則的に省略しないほうがいいと俺も思うけど、場面場面で使い分けるべきではある
264 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:00:30 ] C#に移行したいとかVBAが.NETベースになった時の事も考えて、 デフォルトプロパティは省略しない方がいいんじゃないだろうかと言ってみる それならとばかりにWithステートメントを多用すると、 C#で「面倒臭ぇと」ボヤく事になる罠
265 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:09:21 ] それもこれも言語の貧弱さが原因なんだよな
266 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:13:01 ] 単純ミス防止でoption explicit とか書くだろ それと同じで曖昧な表現は極力明確にするほうが良いと思う どこまでが曖昧な表現かは人によるw
267 名前:257 mailto:sage [2009/10/12(月) 01:14:57 ] >>261-266 みなさんありがとうこざいます やはり省略しない方がよさそうですね 確かに単純なプログラムでは問題なくても 複雑なプログラムになるほど後で見て訳分からなくなりそうですもんね でも Itemプロパティぐらいは省略してもいいかなと思ってます(^^
268 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 06:01:17 ] セルの値が数値ならValueじゃなくValue2が普通だから、必然的にプロパティは書くことが多いな。 Itemまで書くとくどいよな。 Worksheets.Item("Sheet1")とかCells.Item(1,1)とかする奴はあまりいないな。
269 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 22:20:08 ] /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
270 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 16:41:04 ] A1A2・・・に単語が並んでいて B1B2・・・にグーグルかヤフーのその単語の検索件数を書き入れていくというような Webクエリは作れないものでしょうか?
271 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 18:09:44 ] >>270 そのままでは件数がクエリで取り出せないので、VBAと組み合わせる必要がある
272 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 18:18:16 ] VBA使ってどうすればよいのでしょうか? ぜひ御教授お願いします。数万の単語の検索に途方にくれています>__<
273 名前:デフォルトの名無しさん [2009/10/13(火) 19:14:30 ] kwsk
274 名前:デフォルトの名無しさん [2009/10/13(火) 19:26:29 ] ヒントだけでも教えてください。 1つのセルに1つの文字列が入っています。 各行はその文字列の集合とします。 その文字が何文字あるのかと、 各行の文字の全組み合わせ(各行の全部分集合)が全体の中で何個あるのか、 その結果を出力したいのですがどうしたらいいでしょうか? 例えば、 A,B,C,D A,B A,B,C A このように各セルに文字が入っていたとすると、 全体の中でAは4個、Bは3個、Cは2個、Dは1個あります。 また、組み合わせの個数は全体の中でそれぞれ、 (A,B)は3個、(A,C)は2個、(A,D)は1個 (B,C)は2個、(B,D)は1個 (C,D)は1個 (A,B,C)は2個、(A,B,D)は1個、(A,C,D)は1個 (B,C,D)は1個 (A,B,C,D)は1個となります。 これは具体的な例ですが、実際は何行何列でも何文字でも対応できるように一般化したいです。 意外と難しくてどうしたらいいかわかりませんでした。 こうすればできるだろうという方針だけでもどなたかご教授お願いします。
275 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 21:11:13 ] A,B,C,D なのに A,C がマッチするのかよ。 Instrで文字列内を検索すりゃ良いんでない? てか、どんだけの文字数があるのかさっぱりわからん。 無数にある文字種類から検索するとなったら酷い事になりそうだ。 使われてる文字の一覧を作って、それを検索して行くのが良いかもな。 文字種類は無限です。って言うなら、俺は降りる。
276 名前:デフォルトの名無しさん [2009/10/13(火) 21:53:11 ] >>275 わかりにくい説明で本当すいません。 「A,B,C,D」は1つの文字列ではありません。1つのセルに1つの文字が入っています。 コンマの区切りでセルを表したつもりでした。 「A,B,C,D」の、AはRange("A1")、BはRange("B1")、CはRange("C1")、DはRange("D1") とに入っています。 実際はAとかBでなく、りんごとかバナナみたいな1つの単語が1つのセルに入ることになりますが。 (A,C)は(りんご、バナナ)という組み合わせだと考えていただけたらわかりやすいかと思います。 使われる単語は無限ではありません。 それでも仰るとおり数が増えれば酷いことにはなりますが、 そこはまた別問題で解決する算段はあります。 (りんご、バナナ)という組み合わせが全体に何個あるか?という話なんです。 わかりにくい説明ですいませんが。 VBAで、ある集合の部分集合を全て列挙するやり方だけでもどなたか ご教示してくださいませんか? 一応自分でも調べてみましたがわかりませんでした。
277 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:05:47 ] >>274 ヒント モリケン
278 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:12:31 ] >276 275氏も書いてるがInStrでOK。 にしても説明ヘタだな、君は。
279 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 22:29:15 ] 人に判り易く自分のやりたい事を説明するっつーのも訓練が必要っすよ。 w 他人には(特に掲示板なんかでは)質問者のレベル・環境、そして何をどうしたいのかなんて判らないのだから。 (ここはExcel VBAスレだから或る程度は限定されてるけど)
280 名前:デフォルトの名無しさん [2009/10/13(火) 22:33:33 ] >>275-279 すいませんがんばってみます。 サンプルでもうpすればわかりやすかったかも・
281 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 23:35:10 ] 1列に必ず同じ文字が入るなら簡単だろ。 この場合は4文字だから、組み合わせは 4C4=1 4C3=4 4C2=6 の11種類しかない。 組み合わせの形がわかるから、その組み合わせを順に行毎にループすりゃいい。
282 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 10:28:23 ] 270です。 VBAはかなりいろいろできるようになったのですが、ネットにつなぐスクリプトは 挑んだことがありません。またどうやってヤフーやゴーグルのデータを取り込んで 加工するかがわかりません。 一単語ごとに検索して検索数をコピペする作業は300ぐらいこなすとぐったりです。 どうすれば自動化したいのです・・・
283 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:04:49 ] まずは日本語でどうぞ。 >1 ★5
284 名前:283 mailto:sage [2009/10/14(水) 11:06:50 ] >2 ★5 だった;;
285 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:09:03 ] データ→Webクエリ(で対象のアドレスを入れて)でシートに取り込むのをマクロで記録すればOK ただし、こっからが問題ありでヤフーやらぐーぐる(だろ?w)が仕様変更でレイアウトなどを変更したら、それに合わせて 修正必須になる
286 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 11:13:47 ] >>282 とりあえずヒントだけ。(環境依存な部分があるので、このままじゃ動かない) Sub 件数取得() kw = "ぬるぽ ガッ" Set ObjHttp = CreateObject("Microsoft.XMLHTTP") ObjHttp.Open "GET", "www.google.co.jp/search?hl=ja&q= " & kw, False ObjHttp.Send src = StrConv(ObjHttp.responseBody, vbUnicode) Set ObjHttp = Nothing src = Mid(src, InStr(InStr(src, "id=resultStats") + 24, src, "<b>") + 3) src = Left(src, InStr(src, "</b>") - 1) Debug.Print "「"; kw; "」のヒット件数="; src End Sub