Excel総合相談所 130
■ このスレッドは過去ログ倉庫に格納されています
▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
▼━関連スレ━━━━━━━━━━━━
前スレ
Excel総合相談所 129
https://find.5ch.net/search?q=excel
Excel VBA 質問スレ Part51
https://find.5ch.net/search?q=excel+vba
【質問不可】Excel総合相談所スレの雑談・議論スレ4
https://find.5ch.net/search?q=excel+%E3%80%80%E7%9B%B8%E8%AB%87%E6%89%80 Excel2010のVBAについて質問です
手でコピーしたWebページを取り込むマクロは作っていたのですが
手のコピー自体を省略するために QueryTables.Add で取り込むと
スペースの全角・半角で不一致が起きています
おそらく区切り文字関連の連続なども不安です
CSV取り込みなどの設定が効いてるようなのですが、うまく制御できません
QueryTables.Addでそのまま取り込む設定を教えていただけないでしょうか エクセルで勤務シフトを作ろうとしています。
どんな関数を使えば良いかが分かりません。
運送業なのですが、シフトを組む際に、勤務時間帯と併せて配達するコースの割振りも必要です。
コースはAコース、Bコースと言う具合にあらかじめ名前がついて決められています。
このコースの割振り漏れ防止のために、割振り漏れのコースがあった場合、どこかのセルに漏れたコース名を表示したいです。
既に勤務時間帯とコースはそれぞれプルダウンリストから選択出来るようにしてあります。
イメージとしては、
田中さんの4月1日のシフトは、A1に勤務時間帯、A2にコース。4月2日ののシフトは、B 1に勤務時間帯、B2にコース。
佐藤さんの4月1日のシフトは、A3に勤務時間帯、A4にコース。4月2日のシフトは、B3に勤務時間帯、B4にコース。
鈴木さんの4月1日のシフトは、A5に勤務時間帯、A6にコース。4月2日のシフトは、B5に勤務時間帯、B6にコース。
と、言った具合で勤務時間帯とコースのワンセットで日々のシフトが一覧出来るようにしています。
どういった関数を使えば解決出来ますでしょうか? なんでエクセルやワードはこんなに高いんですか?
ただの文書ソフトで10年前と特に変化もない。
グラフィックの最新ゲームと比べて値段がおかしいです >>554
いってる意味がよくわからんw
もうちょっとくわしく短時間で理解できる文でないと
時間を凝らして内容を理解してくれる人はいるのかどうか
エクセルの表の入力制限でできるじゃないの >>556
コースが5こあって4個しか選択してないと1コースは配送しないからだめってことじゃないかな コースがABCの3つだとして、プルダウンでABCが選べて、
どこか(日別だろうから上か下)に、まだ未選択のものが表示されてる
ということかな
3つなら見れば判るけど、10個だともう判らない
理想を言えば、プルダウンで未選択のものだけが選べて、
プルダウンが空になれば全部選択完了、みたいなUIが良さそうだけど A=1, B=2, C=4みたいに2進数を割り振って、
sumを7から引く
0なら割り振り完了
みたいな基本アイディアはどうだろう >>552
やばい:
海賊版
やばくない:
倒産した会社の転売
確率は1/2だ >>554
プルダウンで表示ってことはどこかにコース一覧を作ってあるだろうから
それを再利用して、シフト表のコース列をCOUNTIFで検索するだけでいいんじゃないかなあ
出力されるのはコース名じゃなく対応人数だけど >>561
海賊版でも正規のキー入力して使える状態の場合は? >>563
そんなこともわからないのに使おうとするのはやめといたほうがいい
知識を得るか金払ったほうが良い >>547
D1=IFERROR(INDEX(OFFSET(A1,1,0,COUNTA(A:A)-ROW(),1),MATCH(B1,OFFSET(B1,1,0,COUNTA(A:A)-ROW(),1),0))-A1,"予定なし")
あとは、オートフィルで下までコピーしてね。
ちなみに、一行目に項目名が入るのかどうか書いてなかったのと
リストが何行目まであるのかわからなかったからこうなった。
あと、次の予定がない場合についてどうするか書かれてなかったから"予定なし"にしてる。
・・・確定していることがもう少しあったら、もっと短くできたかも。
とはいえ、もうちょっとスマートな方法ありそうだけど・・・
ごめんね、こんなもんしか考えつかなった。精進せねば。 会社で使うからそのバージョンに細かく合わせて対応する必要があるだけで、
個人で使うなら、わざわざ金払わずにOpenOfficeとかでいいのでは offceXPなら500円で売ってたな
ウィルスにかかるかもしれんけど 2003のサポートが終了したからみんな乗り換えてるけど、
それがなければ2003に留まりたい事業所は多かっただろうな
2010で必要十分なので、2013とか2016はまだ触ったことがない >>541
fileLenでファイルサイズを取得後の扱いがわからず困っています。IF関数にしても変数の指定方法がわかりません。 >>561
ID送ってもらってそれをウインドウズで入力するとDLしてつかえるみたいなのとか
よくあるやつだよ? >>570
何言ってるのかわからんがよくあるって理由で安全と思うなら買えば良いんじゃないかな 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
Excelで重複しない乱数(整数)を発生させたいのですが、
ググってもRANDとRANKを使えという情報しか出てきません。。。。
RANKで乱数を振ってRANKの順位を使うという方法です。
これって、RANDの数値が重複したら使えませんよね?
確率的にはかなり低いですが。。。
どうすれば解決できるのでしょうか? >>572
重複しない RANKを追加でググればいい >>572
RANK()とrow()を使う
乱数 順位 row 作業列 最終的な順位
0.2 2 1/1000 2.001 2
0.5 1 2/1000 1.002 1
0.2 2 3/1000 2.003 3
0.1 4 4/1000 4.004 4
こうすれば重複しない1-4の整数の乱数が生成できる >>571
IDパスもらって
360?でDLというやつはなかった? >>575
いやだから安全と思えば使えばいいじゃん
それだけの事だよ >>574
横レスだけど、その場合小さい数字が先に出やすくなるのでは?
ほぼ無視できる確率だし、後先は関係ないなら問題ないけど。 RAND関数にでたらめな数を要求する場合は引数に負数(マイナスの数)を指定するというのが常識
昔のBASICの時代は、RAND(-TIME)とかがよく使われた(TIME関数はシステム時刻で同じ値を2度返すことはない) >>577
指摘についてはそのとおり
問題ないから問題ない >>579
わりーなのび太、エクセルのRANDは乱数じゃないんだ 配列数式の参考書を買ったら、RANDBETWEENの配列数式で今回のみたいなやつの解決法がかいてあったな VBAのRND関数は疑似乱数
実用上問題ない程度の長い周期で同じ数字列がループしてる
初期化というのはループのどこから始めるかを指定するだけなので、ヘタに初期化すると同じ数字が出る可能性が高まる
MSDNにも「所定の初期シードの場合、同じ番号シーケンスが生成されます」と書いてある
https://msdn.microsoft.com/ja-jp/vba/language-reference-vba/articles/rnd-function
同じ数字が出て欲しくないなら、いちいちチェックして取り除くか、別の方法を使った関数を用意するかどちらか >>573様 >>574様
ご回答ありがとうございます。
早速使わせていただきます。 lookupで、列数を絶対値(5列目とか)で指定する人間は滅びて欲しい
後から挿入した途端に破綻するんだよ… column(A10)-column(A1)+1
みたいに書くのも不格好 よろしくお願いします
【1 OSの種類 .】 Windows7pro-64bit
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
VBAではなく、関数の組み合わせで実現したいことがあります。
ある列に、200行くらいにわたって、ゼロを含む数値か空白が入力されています。
この列の、「空白でもゼロでもない数値」のあるセルの、もっとも上の行番号と、
もっとも下の行番号を、それぞれ取得したいです。数値の大きさは関係なく、
とにかくゼロより大きい値の存在する最上位行と最下位行を知りたいです。
途中で作業用のセルを使ってもいいので、何か関数を組み合わせてできないでしょうか? >>590
https://i.imgur.com/EBxSQ8E.jpg
これでいいかな
IF セル<>0、の条件で0と空白両方判定されて、真ならROW()で行番号が作業列に表示
偽のときは指定しないと0が表示されちゃうからとりあえずFALSEにしたけど任意
これらの結果の範囲に対して、最上位行でMIN、最下位行でMAXの関数を使う >>591訂正
あ、>ゼロより大きい値、か
マイナスはありえないのか(訂正不要)、マイナスがある場合は無視すべきなのか(訂正必要)
それとも最上位最下位の対象にしていいのか(訂正不要)で、ちょっと修正いるな >>591
どうもありがとうございました!!!!
他の人はどういうか知らないけど、すくなくとも世界で私だけは、
あなたのことを大天才と認定します。
助かりました!!!! 【1 OSの種類 .】 Windows8
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
A列に開始時間、B列に終了時間、C列に人の名前(毎回7人がデータにある)、D列に「業務中」もしくは「空き時間」が入った表があります。
このパターンでデータが縦並びになっています。
このとき、7人全員が業務中になっている時間と7人全員が空き時間になっている時間をそれぞれ合計で出したいのですがどうすれば良いでしょうか?
6人が業務中で1人が空き時間の場合などは集計対象外です。
あくまでも7人全員で被った範囲の時間の合計を出したいです。 【1 OSの種類 】 Windows10
【2 Excelのバージョン 】 Excel 2016
【3 VBAが使えるか 】 いいえ
【4 VBAでの回答の可否 】 否
ビルドを前に戻したくて
officec2rclient.exe /update user updatetoversion=16.0.8730.2122
を実行しました。
すると、
>Suggestion [3,General]: コマンド officec2rclient.exe は見つかりませんでしたが、現在の場所に存在します。
エラーが出てきます。
どうしたら解消できますか? vlookupの列番号はどう書くのが一番スマートなんだろうな
表自体に番号を仕込んだ方が良さそうな気がする >>597
意味不明なエラーメッセージに悩みましたが、解決したので質問を取り下げますm(_ _)m オフィス365
上の列?を3つぐらい選択して表を挿入すると
先頭の列しか表にならない
また角をドラッグしてしたにのばしてオートフィルで123456・・・みたいなのもできない
オフィス365はもしかして機能が大幅に劣るダメそふとなんですか? >>598
index,matchへ切り替えるのがスマート >>600
機能が劣るのではなく元々そういう仕様
気に入らないのならExcel2016にしましょう 素直にテーブルにして構造化参照使えやジジイがテーブル毛嫌いしてクソブック量産し続けるの本当にクソ >>602
もともとにするいみあいがわからんわ
オフィスで使ってた人が移行しずらいし。 indexもmatchも使ったことないな
これは縦方向の話で、それはvlookupでも別に困ってなかった
横方向の列指定を、3じゃなくてA3とか使って書ければ済むだけの話で、
indexの為に範囲指定したから登場したけど、同様に「A3を含む列」みたいな
指定ができれば後はvlookupの方がシンプルなのに >>604
Excel2010でも
A1に1を入れて、右下角の黒ぽちでしたにコピーした
だけだと1,2,3とはなってくれないよ1,1,1ですよ。
ctrlキー押しながらコピーするか。
右下の選択肢選ぶか。
1,2と打ってから2セル選んでフィルするか。
ま、この辺でしょうね。 >>604
あ、ごめん
3つくらいえらんでと言うのを見逃した
>>606は無視して エクセルで2つのファイルひらいているのに1窓で表示されます
どうやったら2つのブラウザみたいにできますか?
ウインドウズ10でdesktopを5ぐらい作っていて1つで
エクセルを開くと
すべてのデスクトップでエクセルが見えてしまいます
1つだけのdesktopで見えるようにしたいんですが >>605
そのa3に入れた数値が役に立たなくなるだろって言ってんのよ 2つのウインドウで表示はなんとかできましたが
ウインドウズ10で田薄のデスクトップを作成すると
他のデスクトップに表示され続けてしまうのがわかりません。 VLOOKUP(値,A1:C3,COLUMNS(A1:C3),TRUE) なんか変
COLUMNS(A1:C3) の A1:C3 とは言葉で言うとどういう領域なのか、説明できない
A1もC3も両方書いちゃうなら、
COLUMN(A3) - COLUMN(A1) + 1
の方が直感的に判る 【1 OSの種類 .】 Windows10 64bit
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
ファイルサーバに置いたExcelのファイルを「ブックの共有」で複数人が同時に
アクセスして編集するんだけど、ときどき上書き保存できない場合がある。
編集した内容を確実に保存する方法ってあるんでしょうか? 共有を止めて、編集する人以外は読み取り専用にしておく方法もある
うっかり読み取り専用なのに編集してしまって、編集内容を失う悲劇も起きる >>611
COLUMNSにすると列の増減に対応できるって事?
a::cとかの方が良い気がする
>>615
他の人が保存してる時は保存できない
確実に保存する方法は多分、ない
ってかエクセルの共有はウンコすぎるので、共有使うならスプレッドシートの方がいいよ 1 OSの種類 .】 Windows 7
【2 Excelのバージョン 】 Excel 2007
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
(A9−A1)/8の解をB2〜9に表示がしたいです。
下記の条件で、B2〜9に入る数式を教えていただきたいです。
A1及びA9の数字は予め確定しています。
B1は空白です。
A2にはA1+B2を表示します。(以降A9まで同条件)
条件
(A9−A1)/8の解が、少数第二位以降
125と続く場合は、B2のみ少数第二位切上げ、B3以降は少数第二位切捨て
250と続く場合は、B3まで少数第二位切上げ、B4以降は少数第二位切捨て
375と続く場合は、B4まで少数第二位切上げ、B5以降は少数第二位切捨て
500と続く場合は、B5まで少数第二位切上げ、B6以降は少数第二位切捨て
625と続く場合は、B6まで少数第二位切上げ、B7以降は少数第二位切捨て
750と続く場合は、B7まで少数第二位切上げ、B8以降は少数第二位切捨て
875と続く場合は、B8まで少数第二位切上げ、B9以降は少数第二位切捨て
0と続く場合は、(A9−A1)/8の解をB1〜9にそのまま表示
つづく つづき
例
(A9−A1)/8の解が11.0375の場合
A B
1 100 -
2 111.1 11.1
3 122.2 11.1
4 133.3 11.1
5 144.3 11.0
6 155.3 11.0
7 166.3 11.0
8 177.3 11.0
9 188.3 11.0
よろしくおねがいします。 つづき
例
(A9−A1)/8の解が11.0375の場合
A B
1 100 -
2 111.1 11.1
3 122.2 11.1
4 133.3 11.1
5 144.3 11.0
6 155.3 11.0
7 166.3 11.0
8 177.3 11.0
9 188.3 11.0
よろしくおねがいします。 >>611
columns関数を使うならそりゃ大丈夫だけどね >>595
作業列使う上に、やたら長くなっちゃったけど。
あまりデバッグ時間とれてないから、何かおかしくなるパターンあったり
状況が違う場合はまた教えて。
1行目からデータが始まっていて(1行目に項目名がない状態)
E列を作業列とし、G1:H2 に結果をだしてる。
E1=IF(AND(COUNTIFS($A$1:$A1,$A1,$D$1:$D1,$D1)=1,COUNTIFS($A:$A,"<="&$A1,$B:$B,">"&$A1,$D:$D,$D1)=7),LARGE($A:$B,RANK($A1,$A:$B)-1)-$A1,0)
⇒以下オートフィルで下までコピー
G1=業務中
G2=SUMIF($D:$D,G1,$E:$E)
H1=空き時間
H2=SUMIF($D:$D,H1,$E:$E) >>618
作業列・・・というか一覧あったほうがやりやすかったから
D列(別にほかの列に変えてもいい)に条件の数字いれちゃったけどいい?
これまた長くてごめん。何かおかしかったら教えて。
D2=125
D3=250
D4=375
D5=500
D6=625
D7=750
D8=875
B2=IF(COUNTIF($D2:$D$8,MOD(INT(($A$9-$A$1)/8*10000),1000))<>0,ROUNDUP(($A$9-$A$1)/8,1),ROUNDDOWN(($A$9-$A$1)/8,1))
⇒以下B8までオートフィルで下までコピー
B9=ROUNDDOWN(($A$9-$A$1)/8,1) >>623
まずは、ありがとうございます。
例題は教えていただいた数式で求めていた結果が出ました。
次に模擬値で試してみたのですが、下記の場合に違う解が表示されます。
なぜこのようになるのか、お手数ですが教えていただけると助かります。
A9 38639.7
A1 38618.1
この場合B2〜9に表示したい結果は2.7なのですが、何故か2.6で表示されます。
A9 28639.7
A1 28618.1
この場合は、正しく2.7と表示されます。 >>616 617
さんくすこ。2chでこんなに親切なレスがついたのは初めてだ。(> <) >>624
あーでちゃったかー
それね、小数点の計算によるエクセル・・・というかプログラム的な問題なんだよね。
2進数での計算と10進数での表示による丸め問題。
問題が出たほうの数字をA1とA9に入れて、B9の数式を検証かけてもらうと、分かりやすく見えると思うけど、
A9-A1の、単純な少数計算の時点でおかしくなってるね。
解決方法としては・・・もし、A1とA9に入れる数字が、小数第一までしか入れないのなら
単純に10倍して整数計算させればどうにかなるかも。
第二まで入れる事もあるなら100倍ね。以下略。
(その後の処理も綺麗に直せよと他の回答者メンツから突っ込まれそうだけど、今ちょっとExcel触れなくてスマホから書き込んでるから許してw)
B2=IF(COUNTIF($D2:$D$8,MOD(INT(($A$9*10-$A$1*10)/80*10000),1000))<>0,ROUNDUP(($A$9*10-$A$1*10)/80,1),ROUNDDOWN(($A$9*10-$A$1*10)/80,1))
⇒以下B8までオートフィルで下までコピー
B9=ROUNDDOWN(($A$9*10-$A$1*10)/80,1) 100倍するんじゃなくて、この場合は8倍するのが正解
要は整数値で処理する いや100倍でいい
後は書式設定で小数っぽく見せれば良い >>628
プログラムは、ちゃんと勉強した訳じゃないから教えてほしいんだけど、
小数の結果が欲しい場合って、途中を全部整数で計算しても、
最後に10やら100やら1,000で割っちゃったら結局ダメ? >>630
それは目的による
途中を整数で処理するんなら、例えば結果を表示する時も数字はそのままで小数点を文字列処理した方がいい場合もある Excel2016でセルに0.1を10個入れて足したらちゃんと1.0000以下略になった
書式は数値で少数以下を15桁にした
昔とは内部処理が変わった?確かめ方が悪い? vbaだとこれだけでfalseになる
2013で確認
?(0.1 + 0.2 = 0.3)
False 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
前年比を知る表作成で質問があります。
https://prau-pc.jp/excel/growth-rate/#i-3
上記ページのC4の猫缶は
前年14,000から今年13,200に減り-6%でした。
この計算は理解できるのですが、
同じ表に、プラス成長とマイナス成長が混在する下記の様な状態の場合
http://www.kepco.co.jp/ir/financial/graph/images/graph_17.jpg
例えば
(A)14,000から13,200に減った値
(B)-14,000から-13,200に増えた値
が混在する場合、どのようにすれば良いのでしょうか?
(A)(B)共に-6%になってしまい困っております。 分母(基準値)は常に正にとる=>分母を絶対値にする
例えば
=(A1-A2)/abs(A2) -100が0になった場合、100%としていいんだろうか
100が0になった時に-100%なのは判るけど、それは最低が0という前提がある 2010と2016はずいぶんちがいますか?
2010はまだまだ安泰ですか? >>638
それは間隔尺度か比例尺度かを考えないといけない
上記の例は間隔尺度を前提。
比例尺度の場合は、温度で言えば分母に絶対0度(-273℃)のような
値の絶対値(abs(-273))が入る。
問題は分母が0の時だね。
この場合は"-"とかあるいはそのままエラー出しておく
しかないんじゃないかな。 -50 が 50になったら200%
-0.1が100になったら100000%
何かの役に立つ値が出ると思えない 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
1つのセルにtcp 80,81,90-101 udp 1000,1001とかあったとして(a1)
tcp 80 81 90 - 101 udp 1000 1001とそれぞれ別個のセル(a2〜a9)に入れる方法あったら教えて下さい
a1の 加工若干ならありです [データ]-[区切り位置]でスペースとカンマとマイナスを区切り文字にすれば行けそうだけどマイナスは消えるかなあ >>643
2段階にして、90-101だけもう一度"-"をデリミタにしてやるといいような。 >>639
見た目(雰囲気)がちょっと違う。平べったい感じ。
一番わかりやすい違いは、複数のブックを開いて”整列”で並べたときに「それぞれのブックにリボンが表示される」ので
「縦に並べて表示」は、縦長ディスプレイ必須ってとこでしょうか。[Ctrl]+[F1]でリボンを非表示にすればいいだけですが。
自分としては、2010の方が使いやすい。でもサポート終了まであと2年半ぐらいしかありません。 >>639
複数のエクセルファイル開いたとき複数のウィンドウで開けるから便利 >>647
ウィルスに感染する可能性が高まる
お金を出すか、ケチって個人情報ばらまくか、お好きに 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 まあまあ
【4 VBAでの回答の可否】 可
数年ぶりにエクセルとVBAをいじっている者です。
フォームのボタンクリックで、他のファイルから情報とってきたり集計したりと忙しく働く
システム(ってほどでもない)を作ったんだけど、ちょっとした時間が待てずにやたら
その辺をクリックしたりガチャガチャキーボード押すバカのせいで動作が不安定になる。
これを何とかしたいです。
たしか、マクロ実行時に、「この件の実行が終了するまではユーザーの操作受付停止」
「っていうか、ユーザー無視して、PC資源をこのマクロ実行に集中させる」
というVBAの常套句があった記憶があるんだけど、わかる人いますか? >>650
イベント禁止のこと?
Application.EnableEvents = False
ユーザーの誤操作をすべて無視するように作るのは、それなりに面倒だった記憶が ■ このスレッドは過去ログ倉庫に格納されています