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 meiryoUI >= MS P(UI) >>> 游UI
現行デフォルトの游ゴシックは、文字がかすれたり上下余白がおかしくなるからダメ メイリオから続く狂った行間は何を押し付けようとしてるんだろう MSPゴシックは解像度低くても読める事が優先のフォントだから高解像度だと煩すぎて駄目だな
逆に游ゴシックは高解像度特化だから低解像度だと読めん
メイリオはガキ臭くて仕事で使う気になれん
結局は游ゴシックにしてるわ 游ゴシックは、昔からの帳票類がどれもこれもレイアウト総崩れで論外 そおゆう四角四面でガチガチなガラパゴスビジネスリテラシーにうんざりしてんじゃね
「こうでなければならない」だの「これしかない」みたいなのをぶっ壊したいんだ
たかだか数十年の「当たり前」ってのはこれからの数十年もおんなじ
なんてのを否定しちまえばいいんだ 個人的な感想ですけど >>775
今はデフォルトが遊ゴシックだよ
>>780
keはメイリオ改みたいなもの
パッチで改造するものだから普及はしてないので
自分で使うくらいにしかならない
>>784
結局それなんだよね
新しい環境でやろうにもレイアウトが全部崩れるってのが
まぁ全言語共通行間?みたいに変更したいようだけど 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 否
=TODAY()を使用するとなぜか昨日の日付になってしまいます。
やろうとしていることはカレンダーを作成し当日のみ条件書式でハイライトすることです。
途中何度か関数を入れ直すと過去の日付をハイライトしたり変な挙動をしつつ最終的には昨日で止まっています。
ちなみに計算は自動にしてます。
真新しいファイルで作成しました。
どなたか御存知でしたら教えてください。 >>787
数式うp
そもそもワークシートに並んでるカレンダーの数字はどうやって入力した? >>792
now関数はどうなりますか?
あと、vbaで、date関数は? >>790
日付はctlr+で入力しオーフィルハンドルで下にひっぱっただけの極々単純な入力方法です
条件書式は=($A3=TODAY())
=$A3=TODAY()
両方試して変わりなかったので上を入れてあります >>793
nowは明日試します
vbaでdate関数、
そのカレンダーの日付をdateにしてみるという意味でしょうか?
vbaでやる意味を教えていただけると有り難いです ワークシート関数の戻り値と、vba関数(now、time、date)の戻り値が同じか試してみる。
通常は同じだろうけど、違えばそれが原因を探る手がかりになるでしょ。 >>796
解説有難うございます
試したらまた報告します >>795
更新は当然してますよね?
F9押すか、再計算するか。 >>798
>>787で最初に書いた通り自動計算です。
しかも手動で再計算も何度もしました。 時計がずれてるかロケールが変わっている
now()は多分9:00ずれていると思う >>800
>>791,>>792ご覧ください。
=nowも普段使ってますがずれていません。 まずシンプルにどこかのセルに
=todat()
だけ入れてみてください。
それでもおかしいですか? 失礼、today()です。
それがきちんと表示されるなら、「条件付き書式」の設定がおかしいか、「条件付き書式」の不具合があると考えられます。 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい・
【4 VBAでの回答の可否】 可
リネームして保存前にファイルサイズが400kb以上なら「ファイルサイズ超過」とメッセージボックスを出して、リネームをキャンセルする方法があればご教授願います。リネーム前にFilelenを使うとリネーム前のファイルサイズしか出ません。 >>805
保存する前にファイルサイズを測定するのは不可能 リネーム後にファイルサイズ400kb以上でファイル名先頭に「サイズオーバー」
を追加は可能でしょうか?
リネーム後のファイル名を取得できないので、先に進めません。
1.yyyymmdd_hhmm(”D3")で保存。
2.1で保存したときにファイルサイズをチェック。
3.ファイルサイズをチェックして400kb以上なら、ファイル名先頭に「サイズオーバー」
を追加。
ご指導いただきますよう、お願いします。
https://u3.getuploader.com/taka1024/download/99 >>805
素直に行ったほうがいいかもな
別名で保存
自分自身のファイルサイズを計測
サイズオーバーならメッセージ出して閉じるとか
というかどういう状況?フロッピーでも使ってるの? 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
あるセルの値が、常に、
空白/ひらがな文字列/全角カタカナ文字列/半角カタカナ文字列
のいずれかです。また、文字列にはスペースが混じっています。
これを、どんな場合でも、スペースなしの半角カタカナ(空白は空白のまま)に変更したいです。
どのようにVBAコードを書けばいいのか教えてください。
よろしくお願いします。 >>809
replace() で空白を削除
strconv()で変換
https://www.tipsfound.com/vba/05strconv
今日は眠いから寝る
明日出来てなかったらまた会おう >>809
ワークシート関数でできるのでは?
まず、phonetic関数で全角カタカナに変換、substitute関数でスペース削除、asc関数で半角に。 ありがとうございます。
ひとつではなく、複数の変換作業を通じて実現するんですね。
勉強になりました。 >>812
どちらの場合もネスト(入れ子)して一気にやるより、段階踏んでやる方が簡単だしあとで修正しやすいです。
ワークシート関数でやるなら、
A列に元の文字列、B列にphonetic(A1)、C列にsubstitute(B1,略)、D列にasc(略)
VBAでやるなら変数myStringなどにして、
myString=replace(cells(i,1), 略)
myString=strconv(myString, 16 + 8)
cells(i,2)=myString
なお、どちらの場合もスペースが半角と全角の両方あるなら、削除を2回する必要がある。 >>813
vbNarrow + vbKatakana を即値で書くのは感心しない そうですね、たしかに足し算みたいだし分かりにくいですね。 >>808
修理依頼票として使うのですが、メールフォルダが200MBしかないので、
PDFを添付されると、メールフォルダがいっぱいになってしまうのです。 >>817
googleフォームでも使ったら?
あれなら実質無限に耐えられるだろう >>786
あ、そうなんだ
excel2010だから知らないやmspゴシックとmsp明朝で困らないからいいけど >>816
昨日「nowは明日試します」って書いてたから
今職場じゃないの? ▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セルにシート名を表示するシンプルな方法はないですか?
セルにシート名を表示させようと思ったんですが
ググるとCELL関数を使うものしか出て来なくて
そしてその方法がRIGHT関数とかLEN関数とかを組み合わせたりしてて
なんというか冗長に見えてしまうんです
もっとシンプルにシート名を取り出せないものでしょうか! >>821
諦めろ
そんな都合のよい方法があったら
冗長な方法が検索の上位に来るはずがないではないか 検索で見つかるのは確かに冗長で、もう少しましなのはある >>787です
結果ご報告です
=A7から下に向かってカレンダーを引っぱってました
条件書式は=$A7=TODAY()
しかしなぜか昨日の日付がハイライトされるのが困ってることでしたが、今日ファイルを開けてみると
条件書式が=$A8=TODAY()
になってました
結果的には条件書式が即時反映してなかったことが原因のようです
フォーマットを整えるなかでグループ化を沢山したり行挿入などをましたが、途中メモリ不足で一度強制終了しました
そういったなかで条件書式の表記は=A7~と見えるのに実際は=A8~で条件を取っていたという結果と思います
条件書式を=$A7=TODAY()にして解決
グループ化を沢山してExcelの挙動がおかしくなったのも初めてでした クソオペして何もしてないって言い張るウンコだったのか >>821
超単純なのでできた気がするんだけど、、いま手元にファイルないからわかんないや
そこだけvba使ったかな…
わかったら書くわ そんなに単純にはならんよ
なるほどねーという工夫はあるけど
そういう例題
今月は何日まであるか、最もエレガントに示せ >>829
>>830
こいつらは何に対して言ってんだ
アンカーくらいつけろ 例題2
別のシートのセルに対してリンクを張るエレガントな方法 CELL が嫌なら -CELL 付けてググればいい 一発目で出るだろ VBA使うけど
にしてもその書き方・使い方まで指導してる 簡単明瞭しかも早い
質問文書いてる間に結果が出てるぐらい簡単
サイトの主がアクセス数稼ぐために質問したんじゃねーのか?と、疑うぐらいどストライク CELL関数で2番目のパラメータA1は省略できる
作業セルにCELL関数だけ置いとけば数式の文字数は減らせるけどアルゴリズムがシンプルになるわけじゃない
A1=CELL("filename")
A2=RIGHT(A1,LEN(A1)-FIND("]",A1)) 省略したらでRフォルトはA1だろ
と思ったら血がてた
>この引数を省略した場合、最後に変更されたセルについて、
>"検査の種類" 引数に指定した情報が返されます。
>対象範囲がセル範囲の場合、その範囲の左上隅のセルに関する情報だけが返されます。
特に
>最後に変更されたセルについて、
に関しては、普通に別ブックも対象となるので絶対に省略しない方がいい
エライことになるぞ 省略したらデフォルトはA1だろ
と思ったら違ってた 試したら本当に別ブックのフルパスとシート名が出たわ
自分が普段使わん機能は注意せんとあかんな
しかし、これってなんのための機能なんだろう? 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
シートに3000行くらいのデータがあって、A列が日付、B列が名前、C列が得点です。
VBAで、以下のことを一気にやりたいのですが、どう書けばいいのか教えてください。
・B列で名前が空白の行を削除
・B列で名字と名前の間にスペースがある人がいるので、そのスペースを削除
表のいちばん下から、上に向かってループしながら、
削除とreplaceをやっていくしかないんでしょうか? >>842
だいたい思ってるとおりで大丈夫だよ
3000行なら工夫してもしなくても1秒で終わるから、マクロの記録してちょっと修正すればいい
1.画面の書き換えを止める
2.データ範囲を調べて下からループ
3.名前が空白なら行削除、そうでなければスペース置換
4.ループ終了したら画面書き換え再開 >>842
どうしてもループせずに一気にやりたいならワークシート関数を使うといいかも
B列だけ範囲指定してスペースを何も無しに置換も1行で書けるし、オートフィルターを使えば空白セルをまとめて削除できる 3000行くらいなら一発で削除できるんじゃないの
columns("B").specialcells(xlcelltypeblanks).entirerow.delete
スペースの削除はマクロ使わんでも置換機能でいけるんじゃない
マクロでやるならreplace
columns("B").replace " ","" >>840
びびるよな
元々はデバッグ用か何かだと思う。変な機能を詰めた関数ってとこじゃないかな
>>847
こういうレス見るとんっほおおおおおおってなる」 つまり、半角SP削除、全角SP削除、空白セル削除
の3行で済むってことか >>842
スペースの種類は半角、全角、それ以上とかバリエーション多いの? WEBからコピペとかすると文字コード0xA0のスペースがたまに混じっててぐぬぬとなることがある
あとはTABに注意しとけばだいたいなんとかなるんでは replaceメソッドは引数のMatchByteをtrueにして実行すれば全半角区別せずに置換できるよ
たぶん空白も行けるはず cell関数とかはマクロシートの頃の名残じゃないかな ブックAのセルからブックBのセルに関数をコピーペーストすると
ブックAのブック名まで一緒にペーストされてしまうのですが
ブック名はなしで関数のみペーストする方法はないでしょうか 計算式部分だけコピーしたらええんちゃう?
ドラッグとかしてな >>855
一度に大量にコピペするならShift+Ctrl+@で数式表示にしてメモ帳経由でコピペ
あるいはブック名を置換で消す >>855
方法は2つ
1つめは元のファイル名とシート名までを置換して削除する方法
!や'までちゃんと置換しないと失敗する
2つめはリンクの編集
データ→リンクの編集から変更する
けどバージョンによって違うだろうから自分の使用のExcelバージョンでググってくれ
excelxxxx 外部参照 関数 変更
こんくらいはわざわざ2ちゃん来なくてもググれるさー >>855
方法は2つ
1つめは元のファイル名とシート名までを置換して削除する方法
!や'までちゃんと置換しないと失敗する
2つめはリンクの編集
データ→リンクの編集から変更する
けどバージョンによって違うだろうから自分の使用のExcelバージョンでググってくれ
excelxxxx 外部参照 関数 変更
こんくらいはわざわざ2ちゃん来なくてもググれるさー >>855
シートごとコピーとかじゃなくてセル1つコピペなら、メモ帳経由がいいかもな
数式バーからまんまコピペすりゃいい 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
A1からA5000くらいまで人名が入力されてるシートで、
人名の重複がある行はぜんぶ削除したいです。
複数応募は全無効なので、重複のうち1行だけを残すのではなく、
重複があった人名はぜんぶ削除したいのです。
VBAでなんとかできないでしょうか? >>861
vbaじゃなきゃだめなの?
ワークシート関数、countifとif(countifのカラム2列ですぐできる >>861
B列をcountif、値化、降順で並び替え、2以上を削除
vbaならfornextで下から見ていって、2以上の列を削除 >>861
ピボットテーブルなら一発でデータの個数が出せるから2以上を削除 質問
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
4月10日 朝
4月15日 昼
4月20日 朝
5月10日 昼
5月15日 夕
5月25日 朝
6月05日 朝
……
となっているデータから、5月分だけの一覧表を作るようにするにはどういう関数組めば良いんでしょう?
VLOOKUPでも最初の一つしか表示されないので困っています。
あと、可能であれば、元データの隣の列にある朝、昼、夕のデータを参照して、
抽出した表に、朝なら赤、昼なら黄、夕なら紫といったふうに、条件付き書式で表が色分け出来るようにしたいのですが…
うまく説明できているか解りませんが、宜しくお願いします。 >>867
データは昇順に並んでますか?
VBAなら簡単だけど、関数でもできそうな気はする。 >>867
俺ならシート毎コピーして、フィルタで「5月」選ぶかな >>868
データは昇順で並んでいます
>>869
できれば関数で解決したいです >>871
元の表に作業列いれてもいいならできそう。
countifsかsumproductと、vlookup組み合わせでできないかな。 >>867
http://fast-uploader.com/file/7078669358886/
>抽出した表に、朝なら赤、昼なら黄、夕なら紫といったふうに、条件付き書式で表が色分け
これは自分でやってくれ
F:Gに設定すりゃ終わりだ >>873
ありがとうございます。頂いたデータを参考にチャレンジしてみます。 =VLOOKUP(C3, $P$2:$Q$47, 2, FALSE)
という数式があります
C3と同じ数字の右二つ隣を表示
これにC3が空白なら空白
を加えるにはどうしたらいいですか? 見てないから違ってるかもしれないけど、
=if(c3=“”,””,vlookup 以下略
ということ? >>877
=if(c3=“”,””,vlookup(C2, $P$2:$Q$47, 2, FALSE))
だと、入力した数式は正しくありません、と言われるのです >>878
ごめん、スマホで打ったのでダブルクォーテーションがおかしかった。
パソコンのキーボードからだと、Shihtキー押しながら上段数字の2を押したら入力されるのが正しいダブルクォーテーションです。 >>879
=if(c2="","",vlookup(C2, $P$2:$Q$47, 2, FALSE))
これでできました、ありがとうございます ■ このスレッドは過去ログ倉庫に格納されています