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
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
事務作業の能率をチェックして個人の評価を決めてる会社なんてあるの?
処理した伝票の枚数とかいちいち調べてたら逆に怖いわ
0348名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 09:36:20.19
>>347
レアケース

そんなルールの厳しい会社に務めてるやつは5chなんか見ない
ローカルルールを知らない他人の回答はまったく役に立たないから同僚に聞くしかない
0349名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 10:39:18.30
むしろ重くなるから関数使うなという所もあるしな
そういう時は白紙ブックにマクロを入れて裏から操作すればいいけど
マクロで操作出来るのは何もマクロ入りのブックだけではないし
0352名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 14:31:53.29
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010,2013
【3 VBAが使えるか    .】 中級
【4 VBAでの回答の可否】 可

シートに表があります。
名前、ふりがな、注文品、個数という表です。
何百行もある表です。

あるフォームを開いた時そこのコンボボックスの選択肢に
シートのふりがなを用いたいのですが、表には同じ人が何回も登場するし
できればあいうえお順で.cmbboxにAddItemしたいです。
重複を避けあいうえお順にするのに何かいい方法ないでしょうか?
0355名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 15:43:07.27
>>352
どこか空いてるセルにふりがなの列をコピーして、重複の削除(RemoveDuplicate)と並び替え(sort)をすれば少ない手間で目的のデータが得られる
0356名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 15:45:04.32
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可(必要なら覚えます)

(機能の例としてのファイルなので、見なくても大丈夫です)
http://www.beec.or.jp/format/for_report.html
一般財団法人 日本建築設備・昇降機センターのサイトに繋がります。
このページの
「東京都 建築設備定期検査報告書+報告概要書 Excel2010【リンク版】2019.4.26」
のファイルの中にあるマクロ(?)のように、

「エクセルファイル1」の「ワークシート名」の「セル(仮にA1)」の内容を、
「エクセルファイル2」の「ワークシート名」の「セル(仮にA1)」に移す、

という作業を各入力セル(500セルくらいあります)に行う
マクロ(?)ってどのように作ればよいのでしょうか?

このサイトの書式に限らず、
「公式が配ってる書式が1年に1度くらいのペースで微妙に変えられるので
旧書式の入力内容を新書式に手作業でカタカタ頑張って打ち込む」みたいなことが多いので
マクロ(?)やプログラムで自動処理みたいなのができるなら頑張って作りたいです。
0357名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 16:01:51.70
>>356
VBAならセルのコピーは1行で書けるけど、書式が変わってしまったら自動で対応するのはかなり難しいと思う

(例)
Workbooks("エクセルファイル2").Sheets("ワークシート名").Range("A1") = Workbooks("エクセルファイル1").Sheets("ワークシート名").Range("A1")
0358名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 16:22:03.81
>>357
書式が変わるのは頻繁ではない(多くて半年に1度程度)なので、
軽微な書式の変更は手作業のメンテナンスで対応していこうかと思っています。
(「A1をA1にコピー」を、「A1をA2にコピー」にする程度の書き換えを
十数ヶ所、程度の作業で大丈夫だと思いますので。)

Workbooks( )
Sheets()
Range()
=
を教えていただいたおかげで、方向性がわかって
検索もできるようになったので、ここからはコツコツと覚えていこうと思います。
ありがとうございました。
0359名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 19:16:16.27
>>354
君が知らないだけで、世の中こういう単純作業って山ほどある
納期が厳しいものは作業員の能力を把握してないと即納期遅延になるので、ノルマとか歩合制では不安定過ぎる
■ このスレッドは過去ログ倉庫に格納されています

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