Excel総合相談所 136
■ このスレッドは過去ログ倉庫に格納されています
【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 >>245 あー単にソースコード見てたのか たしかに114行目にストアリストはある ただ100件しか表示されないんだよな… てことでスレチだし終わりにするわ 皆様ありがとう。どこがわからないか整理するわ。 ぶっちゃけてどうわからないかもよくわからない。。。 上から順に読んでいって何行目で詰まったかじゃないんか 何なら分かるか(if文なら分かるとかArrayは分かるとかfor文は分かるとか)が分かれば教えようもあるけど全て分からないなら1行ごとの意味を調べた方が良いと思う ロジックが分からないなら>>259 の通り For のコードが二個あるじゃないですか? それは分解して考えた方がいいですよね?すいません、的外れな質問で。。。 >>266 なるほど、内側からですね。少しねばって見てみます。 てか、コード読めないならいきなりバラバラに考えずまず1行ずつ追っていって何が行われてるか見ないと意味がわからないんじゃないのか >>265 >>259 の表を例にとると縦軸のforと横軸のfor 縦軸はArrayに格納されてるあ、い、う、え、お を順番に回す 横軸はArrayに格納されてる2〜4番目を回す ただ、チーム1が「あ」の時は2〜4番目を回すけど、「い」の時も2〜4番目を回すと いvsい が出来てしまうので チーム1が「い」の時は3〜4番目を回したい なので開始の番目を3にする為にチーム2+1をしてる forだって順に追っていけば自然と内側から理解していくことになるはずだ みなさんありがとうございます。明日にまたレス頂いた文章を参考に考えます。今日はちょっと自分の中で答えが出そうにないです。それにしてもVBAは奥が深いです。プログラミングを全くしたことない人間はキツイのかなって思いますね。。。 for each と普通のforを混在させているのは学習用の教材のため? 学習用にしてはあまりよい例とは思えない。 実用的にはfor eachを使わずに普通のforで統一したほうが構造が理解しやすい Each in使う時はシート回したい時くらいしか使わないわ SplitとかArrayみたいな配列を返す関数を使った時は、配列の範囲をいちいちLBoundとUBoundで調べるのが面倒だからEachで回すけどなあ 慣れるとすごく便利だよ split関数って普通のexcel365にはないんだよね? vbaかスプレッドシートのみか このスレの中でスクールなどに通わないで、書籍、ネットのみでVBAを使いこなせるようになった方々の勉強法、またどれくらいの期間勉強しているかなど教えてもらえると嬉しいです。私は上記の本を4冊読んだだけの完全なるど素人です。 >>282 始めたのは中学の時、最初は友達と一緒にベーマガとか読みながら勉強して、学校の先生や先輩にも色々教えて貰った 高校に入ってからはプログラムを作るバイトを紹介してもらって、仕事しながら覚えた感じ チーム って単語ずっと見てたら変な言葉に思えてきた 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 >>282 必要になるたび随時調べて使ってたら覚えた VBAに限らず本読んだだけで技術を身に付けるなんて一般人には無理だぞ 4冊読むだけより1冊実際に動かして何か作りながら読む方が圧倒的に身に付く 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 と入力したいです。 数式でなおかつオートフィルが条件。 数式で可能ですがって言うからVBAがいいのかと思ったらやっぱり数式がいいのか? >>291 なんだ、せっかく作ったのに >>291 教えてる奴に対して「ガイジ」ってマジモンだな 返信をしていただいた方ありがとうございました。 今日も今からは答えが出そうにないです。 明日以降に考えたいと思います。 ありがとうございました。 >>296 >>256 のコードは間違っている。そんなもん考える必要はない 正解は>>286 >>296 間違っているわけではなかったわ。 ただ、慣れてない人が書いた無駄の多いコードなので読みにくくて当然 慣れない内からこんなものを参考にするもんじゃない >>299 答えといいますか、コードを読み解くことです。 今日は暑気払いで体調を崩したのでまた明日以降に考えたいと思います。 コードを読み解くって具体的にどういうことを言っているんだろうな やってることがよくわからんなぁ… >>286 は間違ってる 「あvsい」と「いvsあ」はどちらか片方だけにしたいんだよ >>298 だけど、ごめん俺が間違えてた >>256 で良い vbaはpushとか無いから超めんどい書き方にするしかない この場合は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 実用じゃなくてForの説明のための例文だからじゃね? >>306 配列の範囲を決め打ちするなら、こう書けば変数が一つ減らせる For i1 = 0 To 3 For i2 = i1 + 1 To 4 そのうちほのぴが石田ばりにシャウトしてくれることを夢見てるよ 【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を使うことも検討してます よろしくお願いします >>310 とりあえず スクレイピング vba とかで検索してみては? まるなげすぎてさすがに面倒 >>312 たしかにwすまんです 早朝過ぎてPC開けてなかった ハイパーリンクを開くところまではわかっていてその後のhtml取得ループをこれから作ろうと思っている あとで途中までコード書く >>310 いちいちブラウザを開かなくても、URLからページのソースを直接ダウンロードできるよ >>315 どもです ググったらその方法もあったのでそれも合わせて検討中です Pythonでやるか?考えてるのでvbaでやることになって詰まったら具体的に書きます >ハイパーリンクを開くところまではわかっていて… ウケる とっとと死ね丸ハゲ野郎 あ、丸投げ野郎 >>317 あまりわたしを怒らせないほうがいいぞ このハゲ! とりあえずhtmlのbody要素のinnerHTMLを取得するのは分かったが chromeで開かずにする方法やリンクが存在しないときなどのエラー処置に悩む。 おらよ Sub HAGE() Dim Hage Hage: Hage = MsgBox("私はハゲです", 4) If Hage = vbNo Then GoTo Hage End Sub 感謝しろよハゲ >>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 この場合はWhileではなくUntilを使わないとマーの意図が読み取りづらくなる あと変数にいちいち代入するのは無駄 Sub Tumaran() Do Loop Until MsgBox("つまらん", vbYesNo) = vbYes End Sub >>319 ,320 キャンセルされた時の判定がないからダメ >>324 VBAでもPythonでもいいけど Chromeで表示させる意図が分からない いちいち目検でチェックさせて閉じさせて、閉じたイベントハンドラ取得して、ロジック組みたいって事? 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 画像のD列に合計を求めたいのですが、どのような式にすれば画像のような合計値が出せますか? sumifとワイルドカードでは無理ですよね… http://imgur.com/Rw10cuX.png >>326 作業列の追加はしない式ありましたらお願いします >>326 計算のルールがまったくわからん 何と何をどう足してるんだ >>326 E列を名前列として上からaaa、bbb、ccc、ccc、cccと入ってるとする =SUMIF($B$3:$B$7,"*"&D3&"*",$C$3:$C$7) 間違えた =SUMIF($B$3:$B$7,"*"&E3&"*",$C$3:$C$7) ずっとフリーソフトを使っていて最近になってエクセル2016を使い始めたんだが 画面右端のセルが少ししか見えてない状態で、そのセルをワンクリックしてもセルが左に自動的にズレてセル全体が見えるようにはならない仕様なのかな? ダブルクリックすれば思うような動きはしてくれるけど、設定等とかで変更できるのなら知りたい マウスはひっくり返して、F1キーは外す。これ、外資系コンサルの常識だよ。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010,2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 データを入力してEnterを押すと任意の場所にアクティブセルを移動させる方法はありますか? A1にデータを入力してEnterを押すとデフォルト設定ではアクティブセルはA2に移動しますが、 A1にデータを入力してEnterを押すとD1に、D1にデータを入力してEnterを押すとB3に・・・といった感じです >>335 外資系コンサルはExcelなんて使いません >>338 無いが、 データを入力するところはA1,A2,A3にしておき、 データを出力するところは A2=A1 D1=A2 B3=A3 のようにすることは可能 というか俺がやってる >>339 これネタやぞ >>338 Ctrlキーを押しながらD1 B3 A1の順にクリック データ入力Enterの繰り返しでその順番に移動する >>334 マウス禁止ならクイックアクセスなんたらショートカットもどきではなくて各コマンドをショートカットでカスタマイズできる仕様にして欲しいわ 某フリーソフトなら仕様でカスタマイズ可能なんだけどな >>338 VBAを使いこなせ。 対象のSheetモジュールに Private Sub Worksheet_Change(ByVal Target As Range) で書けばなんとでもなる。 IT系以外では、それなりに大きな会社であっても絶対マウス使うマンが概ね主流だよな クイックアクセスツールバーにクイック印刷以外のデフォルトボタンなど邪魔でしょうがない(自宅PCでは外して他のを登録してます)けど、郷に入れば何とやらか まあ、自分だけショートカット使って出来る限り差を付けるのがベターだな 事務作業の能率をチェックして個人の評価を決めてる会社なんてあるの? 処理した伝票の枚数とかいちいち調べてたら逆に怖いわ Excel使う雑用なんかどんだけ能率を上げてもダラダラやっても給料は変わらん >>347 レアケース そんなルールの厳しい会社に務めてるやつは5chなんか見ない ローカルルールを知らない他人の回答はまったく役に立たないから同僚に聞くしかない むしろ重くなるから関数使うなという所もあるしな そういう時は白紙ブックにマクロを入れて裏から操作すればいいけど マクロで操作出来るのは何もマクロ入りのブックだけではないし >>345 入力代行業とかだと普通にあるだろ てかそう言うのを把握しておかないと作業時間の見積もりもできないし 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2010,2013 【3 VBAが使えるか .】 中級 【4 VBAでの回答の可否】 可 シートに表があります。 名前、ふりがな、注文品、個数という表です。 何百行もある表です。 あるフォームを開いた時そこのコンボボックスの選択肢に シートのふりがなを用いたいのですが、表には同じ人が何回も登場するし できればあいうえお順で.cmbboxにAddItemしたいです。 重複を避けあいうえお順にするのに何かいい方法ないでしょうか? >>351 さすがにそこまで単純な作業は歩合制かノルマ制が普通では >>352 どこか空いてるセルにふりがなの列をコピーして、重複の削除(RemoveDuplicate)と並び替え(sort)をすれば少ない手間で目的のデータが得られる 【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度くらいのペースで微妙に変えられるので 旧書式の入力内容を新書式に手作業でカタカタ頑張って打ち込む」みたいなことが多いので マクロ(?)やプログラムで自動処理みたいなのができるなら頑張って作りたいです。 >>356 VBAならセルのコピーは1行で書けるけど、書式が変わってしまったら自動で対応するのはかなり難しいと思う (例) Workbooks("エクセルファイル2").Sheets("ワークシート名").Range("A1") = Workbooks("エクセルファイル1").Sheets("ワークシート名").Range("A1") >>357 書式が変わるのは頻繁ではない(多くて半年に1度程度)なので、 軽微な書式の変更は手作業のメンテナンスで対応していこうかと思っています。 (「A1をA1にコピー」を、「A1をA2にコピー」にする程度の書き換えを 十数ヶ所、程度の作業で大丈夫だと思いますので。) Workbooks( ) Sheets() Range() = を教えていただいたおかげで、方向性がわかって 検索もできるようになったので、ここからはコツコツと覚えていこうと思います。 ありがとうございました。 >>354 君が知らないだけで、世の中こういう単純作業って山ほどある 納期が厳しいものは作業員の能力を把握してないと即納期遅延になるので、ノルマとか歩合制では不安定過ぎる ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる