Excel総合相談所 136 at BSOFT
[2ch|▼Menu]
[前50を表示]
300:名無しさん@そうだ選挙にいこう
19/08/19 22:22:35.28 .net
一体何を考えて何の答えを出そうとしているのか…?

301:256
19/08/19 22:26:43.70 .net
>>300
答えといいますか、コードを読み解くことです。
今日は暑気払いで体調を崩したのでまた明日以降に考えたいと思います。

302:名無しさん@そうだ選挙にいこう
19/08/19 22:32:24.36 .net
これネタじゃねーか?

303:名無しさん@そうだ選挙にいこう
19/08/19 22:32:29.04 .net
コードを読み解くって具体的にどういうことを言っているんだろうな
やってることがよくわからんなぁ…

304:名無しさん@そうだ選挙にいこう
19/08/19 22:42:50.81 .net
>>287は間違ってる
「あvsい」と「いvsあ」はどちらか片方だけにしたいんだよ

305:名無しさん@そうだ選挙にいこう
19/08/19 22:51:24.33 .net
>>299だけど、ごめん俺が間違えてた
>>257で良い
vbaはpushとか無いから超めんどい書き方にするしかない

306:名無しさん@そうだ選挙にいこう
19/08/19 23:08:05.08 .net
言い訳すな

307:名無しさん@そうだ選挙にいこう
19/08/19 23:15:38.24 .net
この場合は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

308:名無しさん@そうだ選挙にいこう
19/08/19 23:18:23.93 .net
実用じゃなくてForの説明のための例文だからじゃね?

309:名無しさん@そうだ選挙にいこう
19/08/19 23:28:24.08 .net
>>307
配列の範囲を決め打ちするなら、こう書けば変数が一つ減らせる
For i1 = 0 To 3
For i2 = i1 + 1 To 4

310:名無しさん@そうだ選挙にいこう
19/08/19 23:38:44.61 .net
そのうちほのぴが石田ばりにシャウトしてくれることを夢見てるよ

311:名無しさん@そうだ選挙にいこう
19/08/20 04:35:28.10 .net
【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を使うことも検討してます
よろしくお願いします

312:名無しさん@そうだ選挙にいこう
19/08/20 05:45:10.88 .net
データ取得の内職か?

313:名無しさん@そうだ選挙にいこう
19/08/20 06:16:46.92 .net
>>311
とりあえず
スクレイピング vba
とかで検索してみては?
まるなげすぎてさすがに面倒

314:名無しさん@そうだ選挙にいこう
19/08/20 09:12:46.40 .net
エクセルでクローラー作るん?

315:名無しさん@そうだ選挙にいこう
19/08/20 09:40:50.53 .net
>>313
たしかにwすまんです
早朝過ぎてPC開けてなかった
ハイパーリンクを開くところまではわかっていてその後のhtml取得ループをこれから作ろうと思っている
あとで途中までコード書く

316:名無しさん@そうだ選挙にいこう
19/08/20 09:43:45.89 .net
>>311
いちいちブラウザを開かなくても、URLからページのソースを直接ダウンロードできるよ

317:名無しさん@そうだ選挙にいこう
19/08/20 10:28:47.06 .net
>>316
どもです
ググったらその方法もあったのでそれも合わせて検討中です
Pythonでやるか?考えてるのでvbaでやることになって詰まったら具体的に書きます

318:名無しさん@そうだ選挙にいこう
19/08/20 14:18:47.56 .net
>ハイパーリンクを開くところまではわかっていて…
ウケる
とっとと死ね丸ハゲ野郎
あ、丸投げ野郎

319:名無しさん@そうだ選挙にいこう
19/08/20 14:32:47.48 .net
>>318
あまりわたしを怒らせないほうがいいぞ
このハゲ!
とりあえずhtmlのbody要素のinnerHTMLを取得するのは分かったが
chromeで開かずにする方法やリンクが存在しないときなどのエラー処置に悩む。

320:名無しさん@そうだ選挙にいこう
19/08/20 16:13:11.03 .net
おらよ
Sub HAGE()
Dim Hage
Hage:
Hage = MsgBox("私はハゲです", 4)
If Hage = vbNo Then GoTo Hage
End Sub
感謝しろよハゲ

321:310
19/08/20 17:34:44.28 .net
>>320
このハゲー!違うだろ!
この書き方には問題がたくさんある。
(1) 変数定義で型はちゃんと明示しろ→"As VbMsgBoxStyle"を足した
(2) 4という意味不明のマジックナンバーは混乱のため不可→"vbYesNo)"にした
(3) GoTo文はスパゲティプログラムの温床。→"Do Loop文"にした。
もう一度言う。
こ の ハ ゲ ー !
URLリンク(youtu.be)
--------------------------------------------
Sub Hage()
Dim Hage As VbMsgBoxStyle
Do
Hage = MsgBox("このハゲー!", vbYesNo)
Loop While Hage = vbNo
End Sub

322:名無しさん@そうだ選挙にいこう
19/08/20 18:13:04.40 .net
この場合はWhileではなくUntilを使わないとマーの意図が読み取りづらくなる
あと変数にいちいち代入するのは無駄
Sub Tumaran()
  Do
  Loop Until MsgBox("つまらん", vbYesNo) = vbYes
End Sub

323:名無しさん@そうだ選挙にいこう
19/08/20 18:14:00.18 .net
>>320,321
キャンセルされた時の判定がないからダメ

324:名無しさん@そうだ選挙にいこう
19/08/20 19:32:07.94 .net
ハゲはキャンセルで回避出来るのか

325:名無しさん@そうだ選挙にいこう
19/08/20 19:53:09.43 .net
>>317
pythonでやることにしたっす

326:名無しさん@そうだ選挙にいこう
19/08/21 01:18:30.28 .net
>>325
VBAでもPythonでもいいけど
Chromeで表示させる意図が分からない
いちいち目検でチェックさせて閉じさせて、閉じたイベントハンドラ取得して、ロジック組みたいって事?

327:名無しさん@そうだ選挙にいこう
19/08/21 11:46:44.01 .net
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
画像のD列に合計を求めたいのですが、どのような式にすれば画像のような合計値が出せますか?
sumifとワイルドカードでは無理ですよね…
URLリンク(imgur.com)

328:名無しさん@そうだ選挙にいこう
19/08/21 11:49:30.49 .net
>>327
作業列の追加はしない式ありましたらお願いします

329:名無しさん@そうだ選挙にいこう
19/08/21 12:21:46.82 .net
>>327
計算のルールがまったくわからん
何と何をどう足してるんだ

330:名無しさん@そうだ選挙にいこう
19/08/21 15:02:27.70 .net
>>329
すみません忘れてください

331:名無しさん@そうだ選挙にいこう
19/08/21 20:17:43.81 .net
>>327
E列を名前列として上からaaa、bbb、ccc、ccc、cccと入ってるとする
=SUMIF($B$3:$B$7,"*"&D3&"*",$C$3:$C$7)

332:名無しさん@そうだ選挙にいこう
19/08/21 20:19:42.31 .net
間違えた
=SUMIF($B$3:$B$7,"*"&E3&"*",$C$3:$C$7)

333:名無しさん@そうだ選挙にいこう
19/08/21 22:06:36.19 .net
ずっとフリーソフトを使っていて最近になってエクセル2016を使い始めたんだが
画面右端のセルが少ししか見えてない状態で、そのセルをワンクリックしてもセルが左に自動的にズレてセル全体が見えるようにはならない仕様なのかな?
ダブルクリックすれば思うような動きはしてくれるけど、設定等とかで変更できるのなら知りたい

334:名無しさん@そうだ選挙にいこう
19/08/21 22:19:11.13 .net
>333
残念、ないんだなこれが

335:名無しさん@そうだ選挙にいこう
19/08/21 22:45:23.37 .net
>>333
エクセルでマウス使うな

336:名無しさん@そうだ選挙にいこう
19/08/21 22:56:12.30 .net
マウスはひっくり返して、F1キーは外す。これ、外資系コンサルの常識だよ。

337:名無しさん@そうだ選挙にいこう
19/08/21 23:13:48.29 .net
F1キーはマジで要らんよな

338:名無しさん@そうだ選挙にいこう
19/08/21 23:16:15.33 .net
日経ビジネスアソシエを真に受けた結果・・・。

339:名無しさん@そうだ選挙にいこう
19/08/21 23:16:23.65 .net
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010,2013
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 否
データを入力してEnterを押すと任意の場所にアクティブセルを移動させる方法はありますか?
A1にデータを入力してEnterを押すとデフォルト設定ではアクティブセルはA2に移動しますが、
A1にデータを入力してEnterを押すとD1に、D1にデータを入力してEnterを押すとB3に・・・といった感じです

340:名無しさん@そうだ選挙にいこう
19/08/21 23:19:10.20 .net
>>336
外資系コンサルはExcelなんて使いません

341:名無しさん@そうだ選挙にいこう
19/08/21 23:23:39.76 .net
>>339
無いが、
データを入力するところはA1,A2,A3にしておき、
データを出力するところは
A2=A1
D1=A2
B3=A3
のようにすることは可能
というか俺がやってる
>>340
これネタやぞ

342:名無しさん@そうだ選挙にいこう
19/08/21 23:42:00.78 .net
>>339
Ctrlキーを押しながらD1 B3 A1の順にクリック
データ入力Enterの繰り返しでその順番に移動する

343:名無しさん@そうだ選挙にいこう
19/08/22 00:48:57.42 .net
>>335
マウス禁止ならクイックアクセスなんたらショートカットもどきではなくて各コマンドをショートカットでカスタマイズできる仕様にして欲しいわ
某フリーソフトなら仕様でカスタマイズ可能なんだけどな

344:名無しさん@そうだ選挙にいこう
19/08/22 03:03:02.83 .net
>>339
VBAを使いこなせ。
対象のSheetモジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
で書けばなんとでもなる。

345:名無しさん@そうだ選挙にいこう
19/08/22 07:25:02.89 .net
IT系以外では、それなりに大きな会社であっても絶対マウス使うマンが概ね主流だよな
クイックアクセスツールバーにクイック印刷以外のデフォルトボタンなど邪魔でしょうがない(自宅PCでは外して他のを登録してます)けど、郷に入れば何とやらか
まあ、自分だけショートカット使って出来る限り差を付けるのがベターだな

346:名無しさん@そうだ選挙にいこう
19/08/22 09:11:46.36 .net
事務作業の能率をチェックして個人の評価を決めてる会社なんてあるの?
処理した伝票の枚数とかいちいち調べてたら逆に怖いわ

347:名無しさん@そうだ選挙にいこう
19/08/22 09:13:27.73 .net
Excel使う雑用なんかどんだけ能率を上げてもダラダラやっても給料は変わらん

348:名無しさん@そうだ選挙にいこう
19/08/22 09:19:06.97 .net
>>347
使いようによってはだいぶ違うと思うんですけど?
URLリンク(toyokeizai.net)

349:名無しさん@そうだ選挙にいこう
19/08/22 09:36:20.19 .net
>>348
レアケース
そんなルールの厳しい会社に務めてるやつは5chなんか見ない
ローカルルールを知らない他人の回答はまったく役に立たないから同僚に聞くしかない

350:名無しさん@そうだ選挙にいこう
19/08/22 10:39:18.30 .net
むしろ重くなるから関数使うなという所もあるしな
そういう時は白紙ブックにマクロを入れて裏から操作すればいいけど
マクロで操作出来るのは何もマクロ入りのブックだけではないし

351:名無しさん@そうだ選挙にいこう
19/08/22 10:46:24.04 .net
>>347
少なくともこんなのから脱却せんと、生産性向上も楽することも望めない。
URLリンク(images.app.goo.gl)

352:名無しさん@そうだ選挙にいこう
19/08/22 12:40:04.15 .net
>>346
入力代行業とかだと普通にあるだろ
てかそう言うのを把握しておかないと作業時間の見積もりもできないし

353:名無しさん@そうだ選挙にいこう
19/08/22 14:31:53.29 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010,2013
【3 VBAが使えるか    .】 中級
【4 VBAでの回答の可否】 可
シートに表があります。
名前、ふりがな、注文品、個数という表です。
何百行もある表です。
あるフォームを開いた時そこのコンボボックスの選択肢に
シートのふりがなを用いたいのですが、表には同じ人が何回も登場するし
できればあいうえお順で.cmbboxにAddItemしたいです。
重複を避けあいうえお順にするのに何かいい方法ないでしょうか?

354:名無しさん@そうだ選挙にいこう
19/08/22 14:54:32.12 .net
URLリンク(www.ningenkankeitukare.com)

355:名無しさん@そうだ選挙にいこう
19/08/22 15:31:55.27 .net
>>352
さすがにそこまで単純な作業は歩合制かノルマ制が普通では

356:名無しさん@そうだ選挙にいこう
19/08/22 15:43:07.27 .net
>>353
どこか空いてるセルにふりがなの列をコピーして、重複の削除(RemoveDuplicate)と並び替え(sort)をすれば少ない手間で目的のデータが得られる

357:名無しさん@そうだ選挙にいこう
19/08/22 15:45:04.32 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可(必要なら覚えます)
(機能の例としてのファイルなので、見なくても大丈夫です)
URLリンク(www.beec.or.jp)
一般財団法人 日本建築設備・昇降機センターのサイトに繋がります。
このページの
「東京都 建築設備定期検査報告書+報告概要書 Excel2010【リンク版】2019.4.26」
のファイルの中にあるマクロ(?)のように、
「エクセルファイル1」の「ワークシート名」の「セル(仮にA1)」の内容を、
「エクセルファイル2」の「ワークシート名」の「セル(仮にA1)」に移す、
という作業を各入力セル(500セルくらいあります)に行う
マクロ(?)ってどのように作ればよいのでしょうか?
このサイトの書式に限らず、
「公式が配ってる書式が1年に1度くらいのペースで微妙に変えられるので
旧書式の入力内容を新書式に手作業でカタカタ頑張って打ち込む」みたいなことが多いので
マクロ(?)やプログラムで自動処理みたいなのができるなら頑張って作りたいです。

358:名無しさん@そうだ選挙にいこう
19/08/22 16:01:51.70 .net
>>357
VBAならセルのコピーは1行で書けるけど、書式が変わってしまったら自動で対応するのはかなり難しいと思う
(例)
Workbooks("エクセルファイル2").Sheets("ワークシート名").Range("A1") = Workbooks("エクセルファイル1").Sheets("ワークシート名").Range("A1")

359:名無しさん@そうだ選挙にいこう
19/08/22 16:22:03.81 .net
>>358
書式が変わるのは頻繁ではない(多くて半年に1度程度)なので、
軽微な書式の変更は手作業のメンテナンスで対応していこうかと思っています。
(「A1をA1にコピー」を、「A1をA2にコピー」にする程度の書き換えを
十数ヶ所、程度の作業で大丈夫だと思いますので。)
Workbooks( )
Sheets()
Range()
=
を教えていただいたおかげで、方向性がわかって
検索もできるようになったので、ここからはコツコツと覚えていこうと思います。
ありがとうございました。

360:名無しさん@そうだ選挙にいこう
19/08/22 19:16:16.27 .net
>>355
君が知らないだけで、世の中こういう単純作業って山ほどある
納期が厳しいものは作業員の能力を把握してないと即納期遅延になるので、ノルマとか歩合制では不安定過ぎる

361:名無しさん@そうだ選挙にいこう
19/08/22 21:16:23.37 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
1つのファイルでシート1にデータソース、シート2、3にピボットを組んでます
ピボットのデータ範囲は同一のテーブルを使用しているのですが、片方は全て集計されているのに、もう片方はデータ1行分が集計されません
単純なピボットなので、組み方は間違っていないと思います
見当がつく方いらっしゃいますか

362:名無しさん@そうだ選挙にいこう
19/08/22 21:27:47.65 .net
>>361
この手のミスを探すときはまず、間違っていないという思い込みを捨て、めんどくさがらず確認する

363:名無しさん@そうだ選挙にいこう
19/08/22 21:38:45.48 .net
>>361
色んな原因あるから見ないことにはなんとも
ちなみに総合計も不足してる?

364:360
19/08/22 22:00:19.97 .net
>>362
明日全てチェックするようにします
>>363
総合計が不足していたので気付きました
セキュリティが厳しい会社なので、ファイルの持ち出しは出来ないですね

365:名無しさん@そうだ選挙にいこう
19/08/22 22:07:10.23 .net
>>364
>セキュリティが厳しい会社なので、ファイルの持ち出しは出来ないですね
いやw普通でしょ

366:名無しさん@そうだ選挙にいこう
19/08/23 00:12:16.95 .net
>>361みたいな悩みって、見る人が見たら数秒で原因がわかり、数分で修正できてしまうものだと思う。
こういうのを遠隔操作でチャッチャと解決してくれるサービス、誰かはじめてください。

367:名無しさん@そうだ選挙にいこう
19/08/23 01:18:37.43 .net
同じにしてるつもりが、データソースが1つずれてるんじゃないの?

368:名無しさん@そうだ選挙にいこう
19/08/23 19:40:56.68 .net
こういう些細なミスしてるやつってろくに確認しないで合ってると言い張るんだ
そして確認は他人に丸投げ

369:名無しさん@そうだ選挙にいこう
19/08/23 20:08:40.67 .net
疲れ切ってる時は許してあげて

370:名無しさん@そうだ選挙にいこう
19/08/23 20:17:53.55 .net
疲れてない時にやればいいじゃん自己中だなぁ

371:名無しさん@そうだ選挙にいこう
19/08/24 03:23:33.85 .net
VBA習いにパソコン教室いくわ。もう限界や。独学じゃわからへんわ。

372:名無しさん@そうだ選挙にいこう
19/08/24 13:37:01.59 .net
>>371
教えてくれるとことかある?
VBAマスター?取りたいんだよね
エクセルエキスパートとアクセスは取った

373:名無しさん@そうだ選挙にいこう
19/08/24 14:06:02.27 .net
無職の期間に職安の訓練校通ってExcel Access VBAのセットコース取ったけどVBAは触りだけって感じで業務に役に立つレベルには程遠かった

374:名無しさん@そうだ選挙にいこう
19/08/24 14:42:15.24 .net
>>372
いっぱいあるよ。パソコン教室はマジで吟味して決めた方がいいよ。周りの人たちがWordとかPhotoshopとかやってると質問とかしづらい。要は少人数の教室を探して行くのが1番いいよ。

375:名無しさん@そうだ選挙にいこう
19/08/24 15:35:51.28 .net
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

カーソルの位置を自動で適切な位置にしたいです
横列1の縦列のCまで入力したら自動で
横列2の縦列Aにカーソル移動
横列2の縦列Cまで入力したら自動で
横列3の縦列1にカーソル移動
って感じにしたいです

376:名無しさん@そうだ選挙にいこう
19/08/24 16:06:41.91 .net
>>375
たとえばマウスでA1からC3までドラッグして選択しとけば、その中だけで順番に動くようになる

377:名無しさん@そうだ選挙にいこう
19/08/24 18:31:55.71 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
B列からZ列くらいまで、10行の表があります。
B3の値が「出席」なら、B4のセルの背景色が青になるというように、
BからZ列までぜんぶ、「○3の値が出席なら○4の背景色を青」と
設定したいのですが、どのようにすればいいのでしょうか?
条件付き書式って、自分自身のセルのことしか無理っぽいです。
ひとつ上のセルを条件にするってことと、できればBからZまで一括設定がしたいのですが
何か方法あるでしょうか?

378:名無しさん@そうだ選挙にいこう
19/08/24 19:03:05.94 .net
>>375
毎回範囲を選択した状態にするのも面倒なら
入力したい範囲のセルの書式設定の保護タブで、ロックのチェックを外し
校閲タブのシートの保護で、ロックされたセル範囲の選択のチェックを外すと
ロックされていないセル範囲=入力したい範囲しかカーソルが動くことはなくなる。

379:名無しさん@そうだ選挙にいこう
19/08/24 19:20:09.13 .net
>>377
1 B2:Z11のセル範囲を選択する
2 リボン→ホーム→条件付き書式→新しいルール→数式を使用して〜
3 数式を入れる枠に =B1="出席" を入力
4 [書式]ボタンをクリック
5 塗りつぶしのタブをクリック→塗りつぶす色を指定→[OK]をクリック
6 [OK]をクリック
B2:Z11を選択している状態で、数式にB1と指定したところがミソです。

380:名無しさん@そうだ選挙にいこう
19/08/24 19:21:54.75 .net
>>377
B4セルの条件付き書式の条件の数式に
=B3=”出席”
でええんとちゃう?
なんでそのセルの値しか参照できないと思い込むのか分からん

381:名無しさん@そうだ選挙にいこう
19/08/24 19:51:33.75 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
条件で別領域に取り出すSMALL関数について質問があります。
B店舗夜間 25000
A店舗夜間 30000
Z店舗夜間 35000
Y店舗昼間 50000
Z店舗昼間 75000
A店舗昼間 100000
B店舗昼間 200000
上記のような売上表があって、
別セルに"A店舗夜間"を除外して、以下の式を別領域で計算していました。
={SMALL(IF(A$1:A$100<>"A店舗夜間",B$1:B$100),ROW(A1))}
条件に"B店舗夜間"も除外対象に追加したいのですが、うまくいかないのでご教示いただければ幸いです。

382:名無しさん@そうだ選挙にいこう
19/08/24 21:00:07.09 .net
>>381
なんでフィルタオプション使わないの?

383:名無しさん@そうだ選挙にいこう
19/08/24 22:01:10.22 .net
>>382
ご教示ありがとうございます。
確かにフィルターオプションでできました。
ただ、元の式から条件が追加になるだけだったので、式の軽微な修正でできるかと思ってました。

384:名無しさん@そうだ選挙にいこう
19/08/24 23:25:04.36 .net
【1 OSの種類         .】 Windows8.1
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
初心者ですが、ここにながれつきました・・・
エクセルの式で、どのように作ればよいか分からず
悩んでいます。
セルA1が「1」ならB2を反映、A1が「2」ならC5を反映
としたいのですが、この場合どのような式になるのでしょうか。
ifsは2013では無理とやっと分かり、vlookupではとなりのセルしか
反映できない?みたいで、行き詰まっています・・・
すみませんが、どなたかご教授願います!

385:名無しさん@そうだ選挙にいこう
19/08/24 23:36:52.52 .net
>>384
=IF(A1=1,B2,IF(A1=2,C5,""))
これでいいのでは?最後の方の""は、セルA1の値が1でも2でもない場合の値となります。

386:名無しさん@そうだ選挙にいこう
19/08/24 23:38:35.61 .net
>>384
=SWITCH(A1,1,B2,2,C5,C1)
A1が1ならB2の値、A1が2ならC5の値、それ以外ならC1の値を表示する

387:名無しさん@そうだ選挙にいこう
19/08/25 00:21:52.02 .net
>>384
=CHOOSE(A1,B1,C5)
2013ならこれ

388:名無しさん@そうだ選挙にいこう
19/08/25 04:18:57.18 .net
>>387
B1どこからでてきたw
初心者さんだと簡単なミスでも混乱するぞきっとw

389:名無しさん@そうだ選挙にいこう
19/08/25 08:29:45.03 .net
ご回答ありがとうございます!!
今晩、パソコンで試してみます!
色々とありがとうございます。

390:名無しさん@そうだ選挙にいこう
19/08/25 14:25:41.74 .net
【1 OSの種類         .】 Windows 10
【2 Excelのバージョン   】 Excel 2010
【3 VBAが使えるか    .】 初心者
【4 VBAでの回答の可否】 希望します
i = Int(100 * Rnd + 1)
変数 i に 1から100までのランダムな数値入れて
その内、NGとなる数字を30個、A1:A30に入力します。
そして i に A1:A30 の値を参照させて判定させたいのですが
複数のセルを参照することができません。
If i = Range("A1:A30") としても、参照されるのがA1だけになってしまいます。
If i = Range("A1,A2,A3…")としても、一緒でA1だけになります。
参照するセルが複数の場合、どのように指定すれば良いのでしょうか?
また、マクロではあまり、セルに入力されている値を参照するものでも
ないのでしょうか?分かりにくい説明ですみません、よろしくお願いします。

391:名無しさん@そうだ選挙にいこう
19/08/25 15:21:40.18 .net
>>390
forで回すとか、WorksheetFunctionでやるとか
On Error Resume Next
hage = WorksheetFunction.Match(i, Range("A1:A30"), 0)
On Error GoTo 0
If hage > 0 Then
MsgBox "OK"
Else
MsgBox "NG"
End If

392:名無しさん@そうだ選挙にいこう
19/08/25 15:21:47.34 .net
findか何かを使えばいいんだろうけど構文を調べるのが面倒だから
ForEachで作ってしまう僕が通るだけで後はまかせますよ

393:名無しさん@そうだ選挙にいこう
19/08/25 16:15:44.65 .net
>>390
if range("A1:A30").find(i) is nothing then debug.print "NG"

394:名無しさん@そうだ選挙にいこう
19/08/25 16:18:35.87 .net
間違えたわ
if range("A1:A30").find(i) is nothing then debug.print "OK"

395:名無しさん@そうだ選挙にいこう
19/08/25 16:20:29.34 .net
findは文字列・数値で見つからないのが微妙に怖い

396:名無しさん@そうだ選挙にいこう
19/08/25 16:22:56.71 .net
見つからないことが困るか困らないかは仕様と目的による

397:名無しさん@そうだ選挙にいこう
19/08/25 16:29:47.28 .net
findって対象の値が二つ以上あったらどういう挙動なんだっけ?

398:名無しさん@そうだ選挙にいこう
19/08/25 16:32:15.80 .net
はじめのrangeオブジェクト

399:名無しさん@そうだ選挙にいこう
19/08/26 12:52:25.65 .net
>>397
最初に見つけたところで検索終了
ただどこまで検索したのかの位置は内部的に記録してあって
それ以降のを検索するには
FindNextメソッド使って終わりまでループさせる
正直面倒な仕様だと思われ

400:名無しさん@そうだ選挙にいこう
19/08/26 14:50:29.32 .net
vbaでIEを動かす際、テキストボックスへのfocusが、成功するときと成功しない(で次の処理に移行しエラーが出る)ときがあります
安定させるのに何か方法はないでしょうか?

401:名無しさん@そうだ選挙にいこう
19/08/26 16:01:18.48 .net
エクセラーってちょっと響きかっこよいですよね
ワード…

402:名無しさん@そうだ選挙にいこう
19/08/26 19:23:48.02 .net
【1 OSの種類         .】 Windows8.1
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
10シートのうち,「作業用」,「転記用」という名前が入っているシートがいくつかあります。
通常は非表示にしてあり,現在は,担当者が再表示する場合は「校閲」→「ブックの保護」→「パスワード入力」と行っています。
これを,例えば「シートの再表示」というマクロを実行すると,
1.「校閲」→「ブックの保護」→「パスワード入力」 まで自動で進む。
2.パスワードを入力する。
3.「作業用」,「転記用」という名前が入っているシートのみが再表示される。
また,逆に,
例えば「シートの非表示」というマクロを実行すると,
1.「校閲」→「ブックの保護」→「パスワード入力」 まで自動で進む。
2.パスワードを入力する。
3.「作業用」,「転記用」という名前が入っているシートのみが非表示される。
といいう動作にしたいです。
どのように記述したらよいか教えてください。

403:名無しさん@そうだ選挙にいこう
19/08/26 19:25:10.15 .net
>>401
エクセラだとインスタントコーヒーになってしまうので、エクセリストが推奨されています

404:名無しさん@そうだ選挙にいこう
19/08/26 19:31:38.32 .net
>>401
ワードナー

405:名無しさん@そうだ選挙にいこう
19/08/26 19:35:45.82 .net
>>402です。追記です。
パスワードなしの場合は,以下のように記述しています。

Sub 転記用シート一括非表示()
Dim s As Worksheet
For Each s In Worksheets
If InStr(s.Name, "転記用") > 0 Then
s.Visible = False
End If
Next s
End Sub

Sub 転記用シート一括再表示()
Dim s As Worksheet
For Each s In Worksheets
If InStr(s.Name, "転記用") > 0 Then
s.Visible = True
End If
Next s
End Sub

406:389
19/08/26 22:49:48.87 .net
アドバイスありがとうございました。
とても勉強させて頂きました。
私もいつかは回答者さん側になれるよう精進したいと思います。

407:名無しさん@そうだ選挙にいこう
19/08/26 23:01:40.34 .net
A1をリスト入力に設定し、リスト候補をセル範囲指定に
している場合で、セル範囲(縦一列に入力)の下部セル
にリスト候補を追加入力しただけで、リスト候補として
追加される方法はありますか?

408:名無しさん@そうだ選挙にいこう
19/08/26 23:14:33.58 .net
オートコンプリートじゃだめなんかい。

409:名無しさん@そうだ選挙にいこう
19/08/26 23:24:10.67 .net
>>407
C列に候補を入れているとした場合にデータの入力規則でリスト、
元の値のとこを↓にすれば出来る
=OFFSET(C1,0,0,COUNTA(C:C),1)

410:名無しさん@そうだ選挙にいこう
19/08/26 23:24:21.52 .net
入力セルがA列、リスト候補の列が別のとこに設けている
ようにしています。
新しいリスト候補ができると、都度入力規則を設定し直
しているのを省略したいです。

411:名無しさん@そうだ選挙にいこう
19/08/26 23:24:43.12 .net
>>407
リストの範囲を縦一列にしたらそうならんか?

412:名無しさん@そうだ選挙にいこう
19/08/26 23:39:29.30 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
Excelは計算量が多いと途中で計算をやめると聞きましたが、本当ですか??

413:名無しさん@そうだ選挙にいこう
19/08/26 23:45:15.60 .net
舐めてんのかお前

414:名無しさん@そうだ選挙にいこう
19/08/26 23:45:50.16 .net
>>412
ステータスバーに処理のパーセンテージが表示されてる時にEsc押すとキャンセルできる
って話?

415:名無しさん@そうだ選挙にいこう
19/08/27 00:02:40.93 .net
本当
試しにA:Aに=1+1とか入れてみると良い
>414
キャンセルしなくても終わる事はあるよ

416:名無しさん@そうだ選挙にいこう
19/08/27 07:39:02.23 .net
vba で複数シートを一括印刷する際、A1セルに「××」という文字列があるシートは除外して印刷するような設定ないでしょうか?

417:名無しさん@そうだ選挙にいこう
19/08/27 09:52:54.68 .net
>>407
追加入力?
ちょっと後半の意味わかんない
画像つけてよ

418:名無しさん@そうだ選挙にいこう
19/08/27 14:30:25.77 .net
>>416
Ifで除外じゃダメなん?

419:名無しさん@そうだ選挙にいこう
19/08/27 18:31:12.72 .net
【1 OSの種類         .】 Windows8.1
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
>>384  です。色々と試してうまくいきました!ありがとうございました!
2つ目の試練が出てきました・・・・
A1が1の時、  A3〜M3の範囲で「1であるセル」の下を選ぶ (例えばC3が1なら、C4)
という指定は可能なんでしょうか。

420:名無しさん@そうだ選挙にいこう
19/08/27 18:35:09.06 .net
418の続きです。
カレンダーの日付で、●日の時のメニューを、別シート(配送表)に反映させたいんです。
カレンダー様式は曜日が固定されていて、月によって●日という位置が変わるんです・・・
月 火 水 木・・・
1 2  3  4      もあれば
月 火 水 木・・・
31 1 2  3      などもあり、
日付と一致するセルの下のメニューを引っ張りたいんですが、式で可能なんでしょうか。
何度もすみませんが、どなたかご教授願います。

421:名無しさん@そうだ選挙にいこう
19/08/27 18:58:25.22 .net
↓だと半分ぐらいが削除されるのですが、なぜか削除されない行もあります。
セルにはスペースも何も入っていないで。
原因と解決方法を教えてください。

Sub Macro2()
'シート名「***」のC列に空欄のセルがあれば、その行を行ごと削除して詰める
Sheets("***").Select
For r = Cells(Rows.Count, "C").End(xlUp).Row To 2 Step -1
If Cells(r, "C").Value = "" Then
Rows(r & ":" & r).Delete
End If
Next r
End Sub

422:名無しさん@そうだ選挙にいこう
19/08/27 19:51:26.12 .net
>>421
For r = Cells(Rows.Count, "C").End(xlUp).Row To 2 Step -1
If Cells(r, "C").Value = "" Then
debug.print r&"行目の中身:"&Cells(r, "C").Value
Rows(r & ":" & r).Delete
End If
Next r
って感じでコンソールに出力すると良いよ
他にもF8のステップインって機能がある
一行一行見ていけば、変な行がわかる

423:384
19/08/27 20:40:32.82 .net
>>384,419
これでどうでしょう。
=IF(A1=1,OFFSET(A3,1,MATCH(1,A3:M3,0)-1),"")
=IF(A1=1,  ,"") の部分は説明不要ですね。
OFFSET(A3,1,MATCH(1,A3:M3,0)-1)の解説
OFFSET(A3,1,□)   で、A3セルを基準に1行下、□列右のセルを指定したことになります。
□はどうやってもとめるか・・MATCH関数の出番です。
MATCH(1,A3:M3,0) で、A3:M3セル範囲(1行×13列)の中から値が1のセルが何番目に
あるかを求める関数です。例えば、D3セルが1だったらMATCH関数の値は4になります。
このままではA3セルを基準に1行下4列右のセル=E1セルを指定してしまうことになるので
MATCH( )-1 としています。
ただし、A3:M3に一致する値がない場合はエラー #N/A となります。
なお、>>420を見てみた限り、この方法がいいのかどうかはわかりません。表の全体がもう少し
詳しくわかればいいのですが・・・。
かといって、実際のファイルをアップすることはしないように。
週間カレンダー形式の表は私もいくつか作ったことがあります。

424:名無しさん@そうだ選挙にいこう
19/08/28 08:20:13.79 .net
>>420
俺だったら、日付とその日のメニューを
左右2列に並べたシートを作り
それを元にカレンダー作るけどね
休業日のシートも作って
それもカレンダーに反映させればいいし
万年カレンダーでググればヒントになるの見つかるよ

425:名無しさん@そうだ選挙にいこう
19/08/28 09:09:15.81 .net
>423  ありがとうございます!自分の知らない関数でした!
確かに、これだといけますね!
範囲を複数にまたがる時ってどうしたらいいんでしょうか?
カレンダーなので、行が変わるんです。「A3:M3」だけでなく、
「A10:M10」も みたいなイメージです。
>424
横に書くデータ入力シートを作って、それを反映させるって意味ですね?
入力する素人おばちゃんが、縦と横、目を回さずに間違いなく入力できたら
いいんですが・・・一度話してみます!
色々とありがとうございます。

426:名無しさん@そうだ選挙にいこう
19/08/28 12:15:10.15 .net
>>425
横じゃなくて縦並び
手帳と同じ
日付,メニュー
2019/8/28,オムライス
2019/8/29,ハンバーグ定食
って感じ

427:名無しさん@そうだ選挙にいこう
19/08/28 12:50:53.91 .net
カレンダー作る時
日付を“1”で入れるか“2019/9/1”で入れて
書式にd入れるのは見かけ同じで意味が違う
後者の方が応用させやすい

428:名無しさん@そうだ選挙にいこう
19/08/28 13:19:50.23 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 少し
【4 VBAでの回答の可否】 不可
あるシートのA5に、=IF(A50>0,"支払済","未") という関数が入っており、それがZ列まであります。
それぞれ、50行目に金額が入っていれば 支払済、なければ 未 と表示されるようになっています。
このA5からZ5に、「値が 支払済 なら背景色変更」という条件付き書式を設定しようとしているのですが、
うまくいきません。
なぜか「値が 未 なら背景色変更」というのはできます。
「支払済」という文字が間違っているとは思えません。「済」という文字のコードに問題が?とか思って
関数も「すみ」に変えてもダメです。「未」だけ判定できる条件付き書式なんてありえるのかと
わけがわかりません。
何かアドバイスください。お願いします。

429:名無しさん@そうだ選挙にいこう
19/08/28 13:22:51.10 .net
>>428
それって、色を変える書式の条件を A50>0 にすればいいだけのような

430:名無しさん@そうだ選挙にいこう
19/08/28 13:27:08.82 .net
>>428
支払済を試しに半角英数字に変えてみては?

431:名無しさん@そうだ選挙にいこう
19/08/28 16:05:11.12 .net
>>428
絶対参照にしてたというオチはないだろうか

432:名無しさん@そうだ選挙にいこう
19/08/28 16:12:41.07 .net
>>428
条件式に間違いは無いのでは?
ただ、それに対応する書式がきちんとしていないとか?
>>429
普通はそうだよね。
強いて言えば、A50に"金額"という名前を付ける方が後で修正のときに迷わない。

433:名無しさん@そうだ選挙にいこう
19/08/28 16:20:46.01 .net
細かいこというけど、A50が空白かどうかの判定は
A50>0,"支払済",“未”
じゃなくて
ISBLANK(A50),"未","支払済"

434:名無しさん@そうだ選挙にいこう
19/08/28 16:28:54.80 .net
>>428
結局、支払済と未でそれぞれの背景を何色にしたいねん?
それを書かないとなんともなあ。

435:384,422
19/08/28 17:47:23.57 .net
>>425   簡単に作ってみました。
>>424さんが書いてるような、入力のためのシートと週間カレンダー形式のシートで構成しています。
両方のシートを画面イメージでアップしました。
URLリンク(i.imgur.com)
曜日固定のカレンダーに日付を設定するのは第1週の最後の曜日の日付を求める計算式が要です。
B1セルとC1セルに入れた年と月とI4セルの計算式で求めています。
I4セルの計算式の説明は割愛します。C4:I4、C7:I7、・・・のセルは計算式で日付を出しています。
セルの書式で日付のうちの日部分だけ表示するようにしています。I4セルだけ年月日を出してます。
入力シートから日付をキーとして引用する計算式は、図の下の方のF5のセルの
=IFERROR(VLOOKUP(F4,入力!$A$2:$C$50,2,FALSE)&"","")  です。
$A$2:$C$50という、49行×3列のセル範囲の先頭列が日付の検索範囲で、2 は該当したら
2列目(B列)のセルを返すようにしています。
項目2の欄であるF6セルの計算式は
=IFERROR(VLOOKUP(F4,入力!$A$2:$C$50,3,FALSE)&"","")  です。違いはわかりますか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1717日前に更新/209 KB
担当:undef