X



Excel総合相談所 136

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@そうだ選挙にいこう
垢版 |
2019/07/27(土) 17:47:29.09
【1 OSの種類         .】 Windows**
【2 Excelのバージョン   】 Excel**
【3 VBAが使えるか    .】 はい・いいえ
【4 VBAでの回答の可否】 可・否

▼━関連スレ━━━━━━━━━━━━

前スレ
Excel総合相談所
https://find.5ch.net/search?q=excel

Excel VBA 質問スレ
https://find.5ch.net/search?q=excel+vba

【質問不可】Excel総合相談所スレの雑談・議論スレ
https://find.5ch.net/search?q=excel+%E3%80%80%E7%9B%B8%E8%AB%87%E6%89%80
0213名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 09:25:18.50
>>210
置換じゃダメで関数じゃないとダメだから聞いておるのだ
0214名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 09:26:55.75
>>212
そうなのだ
これでいいのだ
バカボンのパパなのだ
0216名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 09:56:20.23
>>215はカバの逆立ちなのだ
0221名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 12:43:53.47
本は悪手だと思う
サイトに書かれてるのですら最新のIEでは動作しなかったりする
最近勉強し始めた人は複数のサイト調べて自分なりにカスタマイズ出来るようでないとIE操作系は難しいと思うよ
0223名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 13:15:44.30
>>212
ありがとうございます。天才ですね!
0224名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 13:18:46.66
IEのバージョンも参照設定も書かれてないことが多いね
参照設定次第でコード変わるから同じ事やっててもサイトによって書いてるコードが違う
0225名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 14:59:47.13
コードは長くなるけどバージョンが違っても参照設定しなくても動くように書く方法もあるんで、あとは書く人の能力とか方針次第なんだよなあ
0229名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 22:36:58.94
>変数の重複はカウントされますか?
ちょっと良く分からないですが、同じ名前の変数が混ざるかどうかって話しなら
スコープ、ローカル変数、グローバル変数で検索してみて下さい
0230名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 22:44:54.61
>>229
例えば
sub hoge()
call 1
call 2
end sub

で、call1.2の中に同じ変数宣言がある場合、その変数宣言は1で一旦解放されますか?
それとも解放されない=変数重複のエラーが出ますか?
0231名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 23:02:06.56
>>230
宣言を解放するの意味が分からない
変数にnothing入れて解放しても宣言が重複するとエラーになる

無理に分からない単語を使わない方が良い
ってか、試したほうが早いと思うけどエラーにはならない
ちなみにstaticだと変数の中身は継続するけど関係ないかな

Sub foo()
For i = 1 To 10
Call a
Call b
Next
End Sub

Static Sub a()
Dim ax
Dim bx
ax = ax + 1
Debug.Print ax
End Sub

Sub b()
Dim ax
Dim bx
bx = bx + 1
Debug.Print bx
End Sub
0232名無しさん@そうだ選挙にいこう
垢版 |
2019/08/16(金) 23:37:55.98
>>230
プロシージャ内で宣言した変数はプロシージャ内だけのものなので被ってても関係ない
変数がstaticな場合初期化はされないが名前被りとは無関係
0234名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 12:19:14.95
>>145
遅レスでたいへんスマン
見てるのはchrome?
sourceの中見てみたけど114行目に該当するところにアドレス全店仕込まれてるのが分からず
もう少し詳しくどこを見るか教えてくれるとありがたい
0235名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 14:13:53.91
>>234
たぶん>>145は早合点してると思われる
114行目のjsonに含まれるURLはショップのリストではない

こういう動的なサイトからデータを抜き出すには、パケットを解析してWeb APIを調べるぐらいしかないと思う
勝手なWeb API呼び出しが禁止されててデータの取り出しが絶対的に不可能なケースってのは、今のところあんまりないと思う
このあたりの話になるとExcelは関係なくなってくるし、VBAを使わないと難しいことも多いんで、あきらめるか方針を変えて貰うしかない
0236名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 15:10:28.72
>>235
だよね、いくら見てもないはずだw
たしかにもうexcelの範疇じゃないな
かといってvbaでないと、というものでもないから範囲広げて考えてみるわ
サンキューでした
0237名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 19:47:37.38
>>227
そういやあれ何だろな。
Cells(1, Rows.Count).End(xlUp).Rowって、最終行特定のテンプレみたいになってるけど、
フィルタ掛かってると使えないし、UsedRenge〜を使う応用編だと検索設定変わっちゃうし、
何かまともな方法無いんかな。
しょうがないから、俺、ADOのレコード件数で判定してるわ。
0239名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 21:34:22.90
VBA初心者でこれから勉強を頑張りたいと思っているものですが、初心者で取っつきやすい書籍を数冊教えて欲しいです。今はExcelVBAのツボとコツがゼッタイわかる本の超入門とプログラミング実践編の2冊を読んで実際にVBEに入力してみた感じです。よろしくお願いします。
0240239
垢版 |
2019/08/17(土) 21:38:35.45
あとExcelVBAふりがなプログラミングとたった1秒で仕事が片付くExcel自動化の教科書の2冊も読みました。これから先の勉強法なども教えていただけると嬉しいです。
0241名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 21:41:58.82
>>240
それだけ読めば十分初心者じゃなくなってると思う
VBAの機能を何もかも全部覚えるのは不可能だから、あとはVBAでやりたい仕事ができたら、目的に応じてネット検索すればいい
0242239
垢版 |
2019/08/17(土) 21:52:08.85
>>241
ありがとうございます。

4冊を読んで『たった1秒。。。』は少し難しかったですが、後の3冊は特にわからないような箇所はなかったです。けど自分がイメージしているマクロをすぐに書けと言われても間違いなく書けません。

これからは書きたいマクロをExcel上でどの様な動きをするか箇条書きにして、それをネット、マクロの辞書などを頼りにして書いていくというやり方でいいでしょうか?
0246名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 00:01:35.15
>>242
イメージするのはブックやシートの最終形だ。途中は変な事していなければベタ書きで良い
コードなんてずっと書いてればこなれてくる。vba質問スレかこのスレの過去ログ読んで、実戦形式で取り組んで見ると良い
0247239
垢版 |
2019/08/18(日) 00:16:29.72
質問に答えてくれた方々ありがとうございます。
地道にExcel上での動きを書き出して、それを一つ一つコードで書いてドッキングするという作業に徹したいと思います。確かに本を読むだけじゃなくて実際にコードを書かないと力はつきそうにないですね。先は長そうですが。。。
ありがとうございました!
0248名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 01:20:37.93
【1 OSの種類         .】 Windows7、10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

A1に数値を入力してB1に任意のコメントを表示させる方法を教えてください
A1に入力した値が25〜75ならB1にOK
A1に入力した値が26〜30、76〜80ならB1に注意
A1に入力した値が30未満、80より大きいならB1にNG
と表示させたいです
0249名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 01:30:00.41
>>248
B1=IF(AND(A1>=25,A1<=75),"ok","")
&IF(AND(A1>=26,A1<=30),"注意","")
&IF(AND(A1>=80),"NG","")
&IF(AND(A1<=30),"NG","")

27だとok注意ngとなったけどまぁええか
優先順位が良く分からん
0251248
垢版 |
2019/08/18(日) 02:07:14.04
間違えました

規格 50±30
ACT 50±25
になります

A1に数値を入力してB1に任意のコメントを表示させる方法を教えてください
A1に入力した値が25以上〜75以下ならB1にOK
A1に入力した値が25未満〜20以上、75より大きい〜80以下ならB1に注意
A1に入力した値が20未満、80より大きいならB1にNG
と表示させたいです
0252名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 02:14:20.01
>>251
規格とかactの行は読み飛ばすとして

B1=IF(AND(A1>=25,A1<=75),"ok","")
&IF(AND(A1>=20,A1<25),"注意","")
&IF(AND(A1>75,A1<=80),"注意","")
&IF(AND(A1>80),"NG","")
&IF(AND(A1<20),"NG","")
0253名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 04:52:19.00
2016ならIFSを使えたのにね
0255248
垢版 |
2019/08/18(日) 11:35:15.85
>>252
ありがとうございます
IF関数の重ねがけ?がいまいち分らなかったので助かりました

>>253
2016以降だとIFS関数というのも使えるんですね
Win7のサポート切れに伴うPCの入れ替え時にVDI化するらしいですが、
その際にエクセルも2016以降になるかと思います
もっと勉強して自分で出来るようにしていきたいです
0256名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 13:02:03.75
【1 OSの種類         .】 Window10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

以下のコードは"あ","い","う","え","お" の5チームの総当たりのリーグ戦を示したものです。書籍からですのでところどころは変えてあります。(変数名など)
このコードを解読しようとしているのですが、どうしてもわかりません。お分かりになる方教えてください。よろしくお願い致します。

Sub リーグ戦 ()

Dim チーム,チーム1.チーム2.i

チーム=Array("あ","い","う","え","お")

チーム2=1

For Each チーム1 In チーム

For i =チーム2 To 4

Debug.Print チーム1 & "vs" & チーム(i)

Next

チーム2 = チーム2 + 1

Next

End Sub
0258名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 14:31:20.93
>>256
入力ミスがあったから直した
Sub リーグ戦()
  Dim チーム, チーム1, チーム2, i
  チーム = Array("あ", "い", "う", "え", "お")
  チーム2 = 1
  For Each チーム1 In チーム
    For i = チーム2 To 4
      Debug.Print チーム1 & "vs" & チーム(i)
    Next
    チーム2 = チーム2 + 1
  Next
End Sub
0260名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 17:36:21.27
>>245
あー単にソースコード見てたのか
たしかに114行目にストアリストはある
ただ100件しか表示されないんだよな…
てことでスレチだし終わりにするわ
0261256
垢版 |
2019/08/18(日) 21:23:53.22
皆様ありがとう。どこがわからないか整理するわ。
ぶっちゃけてどうわからないかもよくわからない。。。
0263名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 23:10:42.76
何なら分かるか(if文なら分かるとかArrayは分かるとかfor文は分かるとか)が分かれば教えようもあるけど全て分からないなら1行ごとの意味を調べた方が良いと思う
ロジックが分からないなら>>259の通り
0265256
垢版 |
2019/08/18(日) 23:34:44.80
For のコードが二個あるじゃないですか?

それは分解して考えた方がいいですよね?すいません、的外れな質問で。。。
0267256
垢版 |
2019/08/18(日) 23:41:42.39
>>266
なるほど、内側からですね。少しねばって見てみます。
0268名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 23:42:47.64
てか、コード読めないならいきなりバラバラに考えずまず1行ずつ追っていって何が行われてるか見ないと意味がわからないんじゃないのか
0269名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 23:44:00.44
>>265
>>259の表を例にとると縦軸のforと横軸のfor
縦軸はArrayに格納されてるあ、い、う、え、お を順番に回す
横軸はArrayに格納されてる2〜4番目を回す
ただ、チーム1が「あ」の時は2〜4番目を回すけど、「い」の時も2〜4番目を回すと いvsい が出来てしまうので
チーム1が「い」の時は3〜4番目を回したい
なので開始の番目を3にする為にチーム2+1をしてる
0271256
垢版 |
2019/08/18(日) 23:50:14.64
みなさんありがとうございます。明日にまたレス頂いた文章を参考に考えます。今日はちょっと自分の中で答えが出そうにないです。それにしてもVBAは奥が深いです。プログラミングを全くしたことない人間はキツイのかなって思いますね。。。
0272名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 23:51:07.60
for each と普通のforを混在させているのは学習用の教材のため?
学習用にしてはあまりよい例とは思えない。
実用的にはfor eachを使わずに普通のforで統一したほうが構造が理解しやすい
0276名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 00:15:54.85
>>275
なぜかと聞いておる
0278名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 00:50:20.80
>>277
このハゲ
0280名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 02:23:24.40
SplitとかArrayみたいな配列を返す関数を使った時は、配列の範囲をいちいちLBoundとUBoundで調べるのが面倒だからEachで回すけどなあ
慣れるとすごく便利だよ
0282256
垢版 |
2019/08/19(月) 07:25:34.70
このスレの中でスクールなどに通わないで、書籍、ネットのみでVBAを使いこなせるようになった方々の勉強法、またどれくらいの期間勉強しているかなど教えてもらえると嬉しいです。私は上記の本を4冊読んだだけの完全なるど素人です。
0284名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 10:50:03.26
>>282
始めたのは中学の時、最初は友達と一緒にベーマガとか読みながら勉強して、学校の先生や先輩にも色々教えて貰った
高校に入ってからはプログラムを作るバイトを紹介してもらって、仕事しながら覚えた感じ
0286名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 18:41:29.16
for i〜は定数や順序が必要な場合かな
特に特定の条件で行削除などはstep-1が必要になるのでforeachで処理しないほうが良い。見辛い

>>256の場合は両方foeachでいいぞ
Sub リーグ戦()
Dim チーム, チーム1, チーム2, i
チーム = Array("あ", "い", "う", "え", "お")
For Each チーム1 In チーム
For Each チーム2 In チーム
If チーム1 <> チーム2 Then Debug.Print チーム1 & "vs" & チーム2
Next
Next
End Sub
0287名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 19:29:17.93
>>282
必要になるたび随時調べて使ってたら覚えた
VBAに限らず本読んだだけで技術を身に付けるなんて一般人には無理だぞ
4冊読むだけより1冊実際に動かして何か作りながら読む方が圧倒的に身に付く
0288名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 21:15:20.08
https://i.imgur.com/FgTjXv5.jpg

数式で可能ですが項目1(A列)のように入力したいです。
項目2(b列)にはすでに値が入力されています。

100
1
2
スペース
101
1
2
3
スペース

これを隣の列に
100-100
100-1
100-2

101-101
101-1
101-2
101-3
と入力したいです。
数式でなおかつオートフィルが条件。
0296256
垢版 |
2019/08/19(月) 22:18:43.04
返信をしていただいた方ありがとうございました。
今日も今からは答えが出そうにないです。
明日以降に考えたいと思います。
ありがとうございました。
0298名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 22:22:22.60
>>296
間違っているわけではなかったわ。
ただ、慣れてない人が書いた無駄の多いコードなので読みにくくて当然
慣れない内からこんなものを参考にするもんじゃない
0300256
垢版 |
2019/08/19(月) 22:26:43.70
>>299
答えといいますか、コードを読み解くことです。

今日は暑気払いで体調を崩したのでまた明日以降に考えたいと思います。
0306名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 23:15:38.24
この場合はFor Eachなんか使わない方が分かりやすいって
という僕が通りますよ

Sub リーグ戦2()
Dim チーム, i1, i2, i2初期値
チーム = Array("あ", "い", "う", "え", "お")
i2初期値 = 1
For i1 = 0 To 4
For i2 = i2初期値 To 4
Debug.Print チーム(i1) & "vs" & チーム(i2)
Next
i2初期値 = i2初期値 + 1
Next
End Sub
0309名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 23:38:44.61
そのうちほのぴが石田ばりにシャウトしてくれることを夢見てるよ
0310名無しさん@そうだ選挙にいこう
垢版 |
2019/08/20(火) 04:35:28.10
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel365
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

やりたいことはハイパーリンクからchromeを開いてhtml取得して保存してchromeは閉じるというループ処理

【詳細】
excelシートA列にあるハイパーリンクをchromeで開く
開いたWebサイト上で右クリックのソースコードを表示させ、htmlを取得しテキストまたはexcelシートに貼り付け保存
chromeを閉じる
(htmlの保存はできれば開いている同じexcelファイルにシートを増やしていきたい)
もし該当しないurlの場合は次のハイパーリンクを開くエラー回避処理も入れたい
この動作をA列にあるハイパーリンク全部に対してループ処理したい

chromeだと厄介であればIEを使うことも検討してます
よろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況