X


Excel総合相談所 140

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

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

前スレ
Excel総合相談所
https://find.5ch.net/search?q=excel+%E7%9B%B8%E8%AB%87%E6%89%80

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
2020/07/24(金) 22:04:45.25
>>78
そこはケースバイケース
例えば頻度にしても毎日使うならみやすさ犠牲にしてsumproduct()にしても良い
重くても月1なら我慢しても良い
個人的には見出しがある方が使い勝手が良い
重くてもミスが減るならPCを買い替えてもらうという選択肢もあるし、
多少ミスってもいいような資料ならPCは買い換えられないなど
更に言うならクラウドにするという選択肢もアリか

どちらが良いというものではないね
2020/07/24(金) 22:11:37.46
=SUMPRODUCT((○○=☓☓)*(□□=△△),●●)
みたいなのはSUMIF INDEX MATCHの方がいいよね
2020/07/24(金) 22:15:21.78
>>80
そうそう、多少重さは犠牲にしても見やすさを重視する方が良いと思う
SUMPRODUCTをよほど極めてるならSUMPRODUCT一本でもいいと思うけど、俺には無理だ
2020/07/24(金) 22:25:38.30
>>80
どうやんのそれ?
2020/07/24(金) 23:13:27.07
http://imgur.com/1QQj1LZ.png
http://imgur.com/5ZzdK8f.png
2020/07/24(金) 23:44:05.11
sumifs(offset(MATCH、
のほうが追いかけられて好き
2020/07/24(金) 23:58:39.02
>>84
高さがいつもわけ分からなくなる
2020/07/25(土) 00:06:59.14
>>85
表の最後に /END っていうセルをいれておいてMATCHでサイズを計る
2020/07/25(土) 00:55:45.28
>>86
こういう事?
offsetってイマイチわからないわ
行数と幅は省略でもよさそうだけど
http://imgur.com/5SH4A7n.png
2020/07/25(土) 01:03:21.30
高さもSUMIFの範囲で指定してあるから省略でもよくね?
2020/07/25(土) 01:03:24.14
>>87
そんな感じ
条件の範囲もoffsetにしとけば
表のサイズが変動しても対応してくれる
2020/07/25(土) 01:10:19.20
SUMPRODUCTじゃダメなん?
=SUMPRODUCT(($B$3:$B$12=$B15)*INDEX($C$3:$G$12,,MATCH(C$14,$C$2:$G$2,0)))
2020/07/25(土) 01:11:36.32
>>90
重いんだもん
2020/07/25(土) 01:20:10.16
B:B、2:2
みたいな指定で、表のサイズが変わっても使えるようにしたい
2020/07/25(土) 01:46:18.01
>>92
そうそう
そうしたくて色々やってるけど酔っ払ってて頭こんがらがってきた
出来てんのか出来てないのかわからん
SUMIFの合計範囲のOFFSETのMATCHのOFFSETのMATCHとか頭おかしくなるわ
http://imgur.com/2RO6kwE.png
94名無しさん@そうだ選挙にいこう
垢版 |
2020/07/25(土) 02:06:15.94
何で表のサイズに縛られないテーブルの構造化参照を使わないの?
2020/07/25(土) 02:17:01.79
>>83の2枚目をテーブル化でいいじゃん
2020/07/25(土) 09:41:05.12
色々書いてもらって悪いが、酔っ払いはとりあえず消えてくれw
この質問に回答できる人よろしく

>>82
>>80
>どうやんのそれ?
2020/07/25(土) 10:08:47.85
>>96
書いてあるが
2020/07/25(土) 12:15:40.42
合ってるかどうかはしらんけど>>93が大体それだろう
ただこんなややこしい式は真似しないほうがいいと思う
2020/07/25(土) 13:11:31.78
ユーザーフォームを呼び出すシート(Sheet1)のコンボボックスに
同ブック上別シート(Sheet2)のA1:A30項目をプルダウン表示させたいのですが
その際、重複項目と空欄を省いた状態で表示させるコードを教えて頂ける方いませんでしょうか

初心者には見当もつかず よろしくお願い致します
2020/07/25(土) 13:47:09.11
いいけど、何をやりたいのか、その説明ではわからないので、書き直してもらえますか?
2020/07/25(土) 14:12:07.72
>>96
一応>>83で書いたんだけど
>>93は自分で書いてて「誰がこんなん使うねん」って思ったわ
2020/07/25(土) 14:55:36.89
>>43
>>49
正解は全組合せ4096の内216が該当でいいですか?
vbaだったらforの6回ネストで簡単なのですがmodで全組合せを羅列するのは難しくないですか?
mod関数での全組合せ表現の方法を教えて頂けたらありがたいです。
2020/07/25(土) 15:03:49.80
>>102
216組は>>48の例で示して頂いた合計11の場合の数です。
2020/07/25(土) 15:05:17.71
99 詳細ですが
Sheet1に必要項目をユーザーフォームで入力していきたいんですが
その際Sheet2のマスターデータのA列から選択してコンボボックスのリストに表示させたいのです。
Sheet2には重複項目や空欄項目がありリストに列を表示させると同じ項目や空欄が表示されてしまうので
なくしたいのです。 よろしくお願いいたします
2020/07/25(土) 15:40:01.51
表示形式のBとNとnって何ですか
=TEXT(NOW(),REPT(CHAR (SEQUENCE(127-32,,32)),SEQUENCE(,6)))
BBやbは仏歴のbみたいです
2020/07/25(土) 19:50:47.92
>>104
どこかにコピペして、重複削除してからリストの範囲を再設定。
もしくはAdvancedFilterで引数UniqueをTrueで抜き出して、範囲を再設定。
107102
垢版 |
2020/07/25(土) 20:03:06.49
>>43
解決しました。
INTも必要でした。

=INT(MOD(+ROW()/(4^n)-(1/4)^n,4))+1

n = 0 → 5>>43
2020/07/25(土) 20:52:40.37
99 Sheet2の内容は常に変わるので、コピーとかしたくありません
よろしくお願い申し上げます。
2020/07/25(土) 20:58:53.92
>>108
=UNIQUE(FILTER(Sheet2!A:A,Sheet2!A:A<>""))
2020/07/25(土) 21:01:20.22
>>105
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings
nはたしか「分」ではなかったかな
2020/07/25(土) 23:04:01.96
取得と変換使いこなしたいけどなんかいい解説サイトとかないかなオフィス田中は観てるけど違う角度の解説とかも参考にして学びたい
2020/07/25(土) 23:34:43.97
>>110
ありがとうございます。頂いた回答からこれらのページに辿りつきました
n、nn
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/format-function-visual-basic-for-applications
B1、B2
https://docs.microsoft.com/ja-jp/dotnet/api/documentformat.openxml.spreadsheet.numberingformats?view=openxml-2.8.1
https://answers.microsoft.com/en-us/msoffice/forum/all/hijri-date-conversion-to-gregorian-date-in-excel/81328470-a89d-4b91-a1d7-312c61c417e1
2020/07/25(土) 23:37:16.81
>>111
正直、シリアル値がわかっていればもう得に勉強する必要もない
元になる値を変換しているだけ
2020/07/26(日) 08:29:49.45
知識はあるけど問題解決に結びつけられない人ってどこにでもいるよね
2020/07/26(日) 15:32:46.70
質問があります。

A1に数字を入力すると、
複数のセルを使って関数を駆使し、
結果として一つの数字がB1に出力されるような場合、

A1を0〜100の範囲で1ずつ増やしながら、
A1をx軸、B1をy軸としたグラフを作ることはできませんでしょうか。
A1とB1を表にするのは大変なので、表にせずにグラフ化したいのです。
2020/07/26(日) 16:09:51.53
>>115
グラフの種類を「散布図」にすれば希望の結果が得られると思う
2020/07/26(日) 16:33:18.30
>>116
ありがとうございます。
しかし、質問の意図が伝わっていないかもしれません。

やりたいことは、例えば、
A1→100
A2→=A1*100
A3→=A1/100
A4→=A2+30
B1→=A2+A3+A4
とあった場合、
A1を0〜100まで一つずつ増やした場合の
A1をx軸、B1をy軸としたグラフを書きたいのです。

A1、A2、A3、A4、B1を0〜100個作って、
X、Y
0、30
1、230.01
2、430.02
3、630.03
...
と表を作ればグラフを作ることはできますが、面倒なので、
表を作らずに、A1に0〜100を代入した場合のグラフを作りたいのです。
2020/07/26(日) 17:57:44.26
>>117
残念ながらそういう機能は無い

ただ、グラフではなく2次方程式を解きたいだけならゴールシークって機能があるからそれを使えば良い
2020/07/26(日) 18:19:50.72
>>115
1件1行に計算式をまとめられませんか?
A列は0から100までの数字を設定する列、
B列は1個目の計算式(A2の計算式)を、
C列は2個目の計算式(A3の計算式)を、
D列は3個目の計算式(A4の計算式)を、
E列は4個目の計算式(B1の計算式)を設定したらあとは簡単。
2020/07/26(日) 19:58:23.94
それを書くのがとても面倒な気がします、、、
121名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 20:48:46.74
>>117
面倒ですか?
ならばVBAをつかって順にA1に値を挿入する方法を使えばあなたのやりたいことが実現できますよ
もっと複雑で面倒ですけどねwww
2020/07/26(日) 20:50:50.67
ひとつ式を書けばコピペとかオートフィルでドラッグできるからそんなに面倒ではないと思う
2020/07/26(日) 21:22:55.75
みなさんありがとうございました。
助かりました。
いったんグラフは諦めます。

>>118
ゴールシーク!
実はグラフとは別に、その方法も探していたのです!
非常に助かりました!!
2020/07/26(日) 21:31:45.85
>>118 さんのゴールシークを調べていたら、
What-If分析のデータテーブルを使えばグラフ作れました!
みなさんありがとうございました!!
簡単すぎる!Excel最高!
2020/07/26(日) 23:09:16.43
!!!
2020/07/26(日) 23:10:07.64
Control + ;

を入力したところ

通常であれば、 2020/07/26 と入力されるはずが、

7/26/2020 と入力される様になってしまいました。

どうすれば直りますか?
2020/07/26(日) 23:27:04.87
書式の変更
2020/07/26(日) 23:31:39.30
>>127
それがどのExcelブックで行っても


7/26/2020


になってしまうのです。
129名無し募集中。。。
垢版 |
2020/07/26(日) 23:34:35.47
>>128
言語設定が日本になってる?
130名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 23:35:46.10
新しく入社した会社の社内文章がほぼエクセル

エクセルで表入りの文書作る時って
学生時代から方眼紙コマ割り風に調整してから
枠指定して作成していたのだけど
今日、会社の先輩に注意されてしまった…

枠ごとに幅調整して作った方が良いのかね?
方眼紙に当て嵌めた方が、あとから行列追加も簡単だし
幅調整考えなくていいからと思ってたんだけど
2020/07/26(日) 23:38:58.29
>>129
Excelのバグだった様です。再起動したらなおりました。
2020/07/26(日) 23:57:32.82
エクセルで表入りの「文書」?
どうでもいいんじゃね?
「データ」なら困るけど。
2020/07/26(日) 23:59:21.71
>>130
社会人だが、俺は方眼紙派。
計算しない文書なら方眼紙のほうが便利だよね。

「Excel方眼紙」は悪か、否定派と肯定派が激論
https://xtech.nikkei.com/it/atcl/column/14/346926/100101144/
134名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 00:01:47.20
>>132
あんまりうまい言い方が判らなかったが
別に計算とか一切ない、エクセルじゃなくてもいいような
社内文章もエクセル形式管理なのよ

別ソフトで吸い上げや読み取りする訳でも無いから良いジャン
とか思ってたから注意されたのが意外だったのよね
2020/07/27(月) 00:11:16.19
否定派と肯定派が激論って、肯定派いたんかい!
136名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 00:18:29.15
Excelのシートごとにレイヤー機能があったら社内文章がもっと楽に作れるのにな
137名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 00:39:17.82
ナビタイムで検索した店舗をエクセルで一覧にできますか?

https://www.navitime.co.jp/freeword/?keyword=%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E3%83%90%E3%83%AA%E3%83%A5&;type=spot&from=freeword.spotlist
2020/07/27(月) 01:03:50.83
なぜ日本にはExcel職人はたくさんいるのにWord職人はいないのか
2020/07/27(月) 01:16:00.55
Wordて始末書、顛末書、改善報告書の提出求められた時しか使わねえからな
140名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 01:22:44.53
>>138
ショートカットがExcelと統一性に欠けるから覚えられない
故にExcelの方が楽
2020/07/27(月) 07:57:41.03
>>138
改行はshift+enterで段落変更がエンターったことを知ってる人すら1/10人もいないんじゃないか?

>>130
エクセル方眼紙は他のエクセルから数値を貼り付け出来ないから物凄い嫌われてる
些細なレイアウトのために使い勝手犠牲にする自己満足

最終的な用途が枠に手書きで書き込むんじゃなければセルの結合はやらないほうがいい

文字を中央に配置したいなら範囲を指定したあと書式設定で範囲内で中央っての使え
2020/07/27(月) 08:38:08.89
いや、余計なお世話ですw
印刷するのに便利なのでこうしてるだけですから。他のエクセルからコピペできない?そんな問題あったらそもそも運用してませんから。
2020/07/27(月) 09:59:45.89
>>137
できないことはないけど一発じゃ無理
けっこう手間がかかって面倒だしスキルも必要
手作業で入力しなおすよりは間違いなくできるけど、ハードル高いよ
2020/07/27(月) 10:17:43.97
いえ1発でできますよこの程度なら
2020/07/27(月) 10:33:37.37
>>138
基本的に文書はワードを使う派だけど、スタイル設定してる段落の書式変更したらスタイルが解除されるのは何とかしてほしい
組版はワードに任せろって言うのは理解できるし俺個人なら許容するけどこの段落は次のページに持って行けと言う上司の存在がある限り面倒で仕方ない
2020/07/27(月) 11:17:54.07
>>144
どうやるんですか?教えて下さい
1ページに20軒ずつで、88ページ目まであります
店名、住所、電話番号、分類の部分だけを一覧表にしたいんですが
2020/07/27(月) 11:20:16.26
俺は一太郎で作ってWord形式で保存してる
2020/07/27(月) 11:51:49.94
そんな分量ならコピペしろよ、、、

>>146
>>144
>どうやるんですか?教えて下さい
>1ページに20軒ずつで、88ページ目まであります
>店名、住所、電話番号、分類の部分だけを一覧表にしたいんですが
2020/07/27(月) 12:04:51.83
>>142
単一セルのデータを結合セルに貼り付けるとエラー出ることも知らんとか…

同意してほしかっただけとか女の相談なら先に言えよ

先輩含めて普通の反応は>>135
2020/07/27(月) 12:09:33.65
>>148
ほかに方法がなければコピペ88回も考えますが、一発でできるそうなので楽な方法を知りたいのです
2020/07/27(月) 12:18:04.76
コピペ5回で済むだろ
2020/07/27(月) 12:42:54.92
>>143
スクレイピングっていうやつですか??
2020/07/27(月) 12:44:17.42
スクレイピングならコピペいらんだろ
ほれ
https://share.icloud.com/photos/083fZYY4ROugaTjDPQzxQw4yQ
2020/07/27(月) 13:01:19.67
>>153
エラー
2020/07/27(月) 15:27:47.17
まだですか?
本当に困っているので早く教えてもらいたいです!
2020/07/27(月) 17:35:50.47
>>151
その方法を教えて下さいませんか?
2020/07/27(月) 20:20:00.82
>>137ですが、
まだ解決していないので引き続き、解決法を求めております
関係のない書き込みは無視しています
2020/07/27(月) 22:28:07.78
>>155
あんた誰?
2020/07/27(月) 22:37:23.27
>>130
正直完全な文書なら方眼紙の方が便利だけどね
方眼紙にしないとマスが増えると全部微調整しなおしって事になる
変更が無いものに方眼紙はカッコワルイけど、個人的にはどっちでもいいんじゃね?と思う

>>135
どっちでもいい派
早く作れる方で作れば良い
ただデータが多い場合は方眼紙は止めて欲しい

>>137>>157
サイトをa14にテキスト貼り付け。あとはrowとindirectの組み合わせでぴこぴこやれば行ける
https://dotup.org/uploda/dotup.org2211931.xlsx
2020/07/27(月) 22:38:34.80
88回コピペするのですか?
2020/07/27(月) 22:54:42.92
>>160
実はスクレイピングはサイトによって大幅にコードが変わる
実際取得したいのはナビタイムじゃなくて他のサイトだろう

具体的にはソースの位置はもちろん、連続アクセスにひっかかったり広告位置が変わったりロード待ったりで本当にサイト次第
あと最難関は恐らくajaxで、これが絡むとソースから取得出来ないので俺はやらん
正直、手動の方がコード書くより楽

どうしてもスクレイピングしたいなら、以下のページがまとまってるから一度勉強して地力を付けた方が良い
https://tonari-it.com/ie-setting-navigate/
2020/07/27(月) 22:56:42.58
派遣の仕事でよくVBA開発の求人あるけどそれに就くには相当なスキルいるものですか?趣味程度で簡単なシステム作れる程度じゃ無理?
2020/07/27(月) 23:18:36.86
>>162
体験で一回だけ行ったわ
質問に応えると、とりあえずset辺り使えるならまぁまぁ行けると思う。

以下、感じたこと
・零細企業に居候みたいな形で常駐
・クソみたいなクッソ古いコードをシコシコ保守
・大規模開発には全く向いてない言語ということを改めて気付かされる。予想以上にキツイ
・とにかく貧弱すぎるIDEが苦行
・その会社のvbaコード以外の知識は全くつかない。潰しは効かない
・どう考えてもシステムごと変えたほうがいいと思ってても死んでも言ってはいけない
・生産性はマイナス。存在価値はない
・在宅は一切ない
・上記の通りウンコすぎるので人がいない。供給がなさすぎるので給料はそこそこ良い

俺には無理だった
2020/07/27(月) 23:24:40.35
>>163
詳しくありがとうございます。

趣味にしといた方がいいみたいですね!
2020/07/27(月) 23:25:40.37
>>164
だねぇ
エクセルの補佐としてはめちゃくそ便利なんだけどね、vba
これを主体にすると、死
2020/07/28(火) 00:31:56.23
>・その会社のvbaコード以外の知識は全くつかない。

ホントそうなるよな。
Win32APIが使えるから、その気になれば大抵のことは出来ちゃうので、
他の言語じゃないと出来ませんって言えないし。
2020/07/28(火) 08:11:34.50
そもそも派遣じゃん
ダメだろこの時点で
2020/07/28(火) 08:31:12.19
正社員も派遣も同じ。
今残っているのは客先常駐で保守案件のみ
2020/07/28(火) 09:11:22.00
んなわけねーだろw
派遣ってなんかいつも焦ってるよな


>>168
>正社員も派遣も同じ。
>今残っているのは客先常駐で保守案件のみ
2020/07/28(火) 09:45:24.27
>>161
それでいいのでナビタイムでやる方法を教えてください。
2020/07/28(火) 10:00:09.31
>>170
一発でできるんだけど
君がこっちに完全に丸投げレベルのスキルみたいだから
コピペ5回コースで妥協しておきな。

汎用性があることなら対応するんだけど
特定URLだけでしか動かないやつを
ゼロからこちらに投げられても
舐めんなとしか言いようがないというか。
2020/07/28(火) 13:56:57.87
本当は知らないのに教えないフリをするクズw
2020/07/28(火) 14:56:20.01
>>137
https://www.aeonretail.jp/maxvalu/
できたよ!
2020/07/28(火) 15:40:09.74
>>173
全然足りないじゃん
ナビタイムのリストよく見てみ
2020/07/28(火) 19:57:29.71
>>169
本当。一時本気でvbaで仕事を探したことがあるけど、正社員で客先常駐(実質派遣会社の正社員)か、派遣で客先常駐かしかない
仕事内容は一緒って意味だし、vbaだとキャリアなんて積めない
一番ひどかったのは、ローカルにあるC2DのPCをサーバーにしてAccess2003と2016が同時に快適に動くようにしてくれって要望
正社員と派遣、どっちが上じゃない、両方クソだった。俺は両方で体験入社したけど会社によるとしか言えない
これはカンだけど、タイミングさえ合えばまったり零細でのびのび帳票を自動出力するだけの仕事があると思う

>>170
ごめん、無理だった
酒のんで気分いいしやったるべ〜って試してたら3ページなのに速攻でアク禁食らった
まぁスクレイピングってこういう事なんですわって事が分かってくれればそれでいいと思う。ちなみにこのコードは修正中なので動かない
Sub foo()
For i = 1 To 3
sample ( "https://www.navitime.co.jp/freeword/?keyword=%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E3%83%90%E3%83%AA%E3%83%A5&;p=" & i & "&type=spot&mode=", i )
Next
End Sub
Sub sample(url, ページ)
Set objIE = CreateObject("InternetExplorer.Application")
'IE(InternetExplorer)を表示する
objIE.Visible = True
Set objIE2 = objIE.Application
objIE2.navigate url
Do While objIE2.Busy = True Or objIE2.readyState <> 4
DoEvents
Loop
行で分割したソース = Split(objIE2.document.body.innerHTML, vbCrLf) '改行で縦一列に並べて分割っとかなんとか
For Each k In 行で分割したソース
Cells(, ページ) = k
Next
End Sub
2020/07/28(火) 19:58:20.66
スクレイピングしたいならdoloopが必要になる
以下を参照にしてね
https://so-zou.jp/software/tech/programming/vba/sample/web.htm
2020/07/28(火) 20:24:06.76
動くコードももらえますか?
2020/07/28(火) 21:32:04.60
>>177
残念ながらもう俺は試す事ができない
俺は誰にでも公平に全力で回答するけど、俺が回答できないなら他に頼るか自分でがんばるしかない
俺は横柄な回答者にも公平に回答するけど、他に回答が付くかは分からない
最初に>>161で言った通り、サイトによってコードは大幅に変わるのでvbaでのスクレイピングは地力をつけるしかないよ
とりあえずナビタイムのスクレイピングはコードをもらっても意味がない、最初から目的のサイトでのスクレイピングを聞いたほうが良い
■ このスレッドは過去ログ倉庫に格納されています