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
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を使うことも検討してます
よろしくお願いします
0314名無しさん@そうだ選挙にいこう
垢版 |
2019/08/20(火) 09:40:50.53
>>312
たしかにwすまんです
早朝過ぎてPC開けてなかった
ハイパーリンクを開くところまではわかっていてその後のhtml取得ループをこれから作ろうと思っている
あとで途中までコード書く
0316名無しさん@そうだ選挙にいこう
垢版 |
2019/08/20(火) 10:28:47.06
>>315
どもです
ググったらその方法もあったのでそれも合わせて検討中です
Pythonでやるか?考えてるのでvbaでやることになって詰まったら具体的に書きます
0318名無しさん@そうだ選挙にいこう
垢版 |
2019/08/20(火) 14:32:47.48
>>317
あまりわたしを怒らせないほうがいいぞ
このハゲ!

とりあえずhtmlのbody要素のinnerHTMLを取得するのは分かったが
chromeで開かずにする方法やリンクが存在しないときなどのエラー処置に悩む。
0320310
垢版 |
2019/08/20(火) 17:34:44.28
>>319
このハゲー!違うだろ!
この書き方には問題がたくさんある。

(1) 変数定義で型はちゃんと明示しろ→"As VbMsgBoxStyle"を足した
(2) 4という意味不明のマジックナンバーは混乱のため不可→"vbYesNo)"にした
(3) GoTo文はスパゲティプログラムの温床。→"Do Loop文"にした。

もう一度言う。
こ の ハ ゲ ー !
https://youtu.be/7lxqO9oV9dY

--------------------------------------------
Sub Hage()
Dim Hage As VbMsgBoxStyle
Do
Hage = MsgBox("このハゲー!", vbYesNo)
Loop While Hage = vbNo
End Sub
0321名無しさん@そうだ選挙にいこう
垢版 |
2019/08/20(火) 18:13:04.40
この場合はWhileではなくUntilを使わないとマーの意図が読み取りづらくなる
あと変数にいちいち代入するのは無駄

Sub Tumaran()
  Do
  Loop Until MsgBox("つまらん", vbYesNo) = vbYes
End Sub
0325名無しさん@そうだ選挙にいこう
垢版 |
2019/08/21(水) 01:18:30.28
>>324
VBAでもPythonでもいいけど
Chromeで表示させる意図が分からない
いちいち目検でチェックさせて閉じさせて、閉じたイベントハンドラ取得して、ロジック組みたいって事?
0326名無しさん@そうだ選挙にいこう
垢版 |
2019/08/21(水) 11:46:44.01
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

画像のD列に合計を求めたいのですが、どのような式にすれば画像のような合計値が出せますか?
sumifとワイルドカードでは無理ですよね…
http://imgur.com/Rw10cuX.png
0332名無しさん@そうだ選挙にいこう
垢版 |
2019/08/21(水) 22:06:36.19
ずっとフリーソフトを使っていて最近になってエクセル2016を使い始めたんだが
画面右端のセルが少ししか見えてない状態で、そのセルをワンクリックしてもセルが左に自動的にズレてセル全体が見えるようにはならない仕様なのかな?
ダブルクリックすれば思うような動きはしてくれるけど、設定等とかで変更できるのなら知りたい
0338名無しさん@そうだ選挙にいこう
垢版 |
2019/08/21(水) 23:16:23.65
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010,2013
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 否

データを入力してEnterを押すと任意の場所にアクティブセルを移動させる方法はありますか?
A1にデータを入力してEnterを押すとデフォルト設定ではアクティブセルはA2に移動しますが、
A1にデータを入力してEnterを押すとD1に、D1にデータを入力してEnterを押すとB3に・・・といった感じです
0340名無しさん@そうだ選挙にいこう
垢版 |
2019/08/21(水) 23:23:39.76
>>338
無いが、
データを入力するところはA1,A2,A3にしておき、
データを出力するところは
A2=A1
D1=A2
B3=A3
のようにすることは可能
というか俺がやってる

>>339
これネタやぞ
0342名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 00:48:57.42
>>334
マウス禁止ならクイックアクセスなんたらショートカットもどきではなくて各コマンドをショートカットでカスタマイズできる仕様にして欲しいわ
某フリーソフトなら仕様でカスタマイズ可能なんだけどな
0344名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 07:25:02.89
IT系以外では、それなりに大きな会社であっても絶対マウス使うマンが概ね主流だよな
クイックアクセスツールバーにクイック印刷以外のデフォルトボタンなど邪魔でしょうがない(自宅PCでは外して他のを登録してます)けど、郷に入れば何とやらか
まあ、自分だけショートカット使って出来る限り差を付けるのがベターだな
0345名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 09:11:46.36
事務作業の能率をチェックして個人の評価を決めてる会社なんてあるの?
処理した伝票の枚数とかいちいち調べてたら逆に怖いわ
■ このスレッドは過去ログ倉庫に格納されています

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