Excel総合相談所 133
■ このスレッドは過去ログ倉庫に格納されています
▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
▼━関連スレ━━━━━━━━━━━━
前スレ
Excel総合相談所 132
https://mevius.5ch.net/test/read.cgi/bsoft/1530415352/
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/
【質問不可】Excel総合相談所スレの雑談・議論スレ4
https://mevius.5ch.net/test/read.cgi/bsoft/1489108851/ すいません
【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2013
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可 ですが できれば簡単な方法で
A列:日付
B列:データ
があるのですが
現在以下のようになっています。
2010/01/08
これを以下のように変えたいのですが
2010/1/8
一度に変える方法あるますでしょうか?
なおA列のセルを一つだけダブルクリックすると
2010/1/8
のように希望通りになります。 よくExcelを上手く使いこなせば時短とかになるっていうけどそうなるのですか? >>753
まあ使う人の技量によってだ
エクセルのスキル以外に当り前だが仕事出来るやつ
仕事できないのにExcelが得意なヤツは最悪 >>751
使ったことはないんだが、「検索・置き換え」でオプションを選ぶと
一括した書式の置き換えが出来るようになっている。
でも、使ったことないんで、どうやって使うのか?
それはネットで見てみて >>751
A列全体を選択して書式を日付(yyyy/m/d)にする
それで変わらなければ/を/に置換 >よくExcelを上手く使いこなせば時短とかになるっていうけどそうなるのですか?
いわないよ >>741
>>739
ありがとうございます助かりました 条件付き書式で数式で、適用先の隣セルの値で条件つけたんだけど、そのまま適用先を複数にした場合、追加した適用先の隣セルで条件つく? >>762
条件式の中の$の付け方に注意して、やってみ? >>764
複数の範囲を適用先に設定してるが、1つの範囲だけうまくいかない 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
Visible=Falseで不可視になっているシートに対するVBAでの操作のうち、
何が可能で何が不可能なのかということなのですが、
シート.Select → 不可
シート.Range("A1") = "書き換えたい値" → 可能
シート.PrintOut → 不可能
↑この理解でよいでしょうか?
選択(アクティブ化)はできないけど、不可視のシートだろうと、その内容を読み書き
することはできる。
でも印刷はできない、と。 >>766
質問の意味が判らない
VBA使うなら不可視だろうが保護だろうが関係ないんじゃないの?
一時的に解除すれば何でもできる 条件付き書式だと罫線で太線を選べないのは
マイクロソフトの陰謀?? >>768
陰謀じゃなくてただの仕様
条件付き書式、何でか微妙に足りないよね。統一してくれればいいのに >>769
仕様は見直されるのに、改善されないのは陰謀じゃないの? >>770
>陰謀とは、人に知られないように練る計画のこと。
>ほぼ同じ意味で「謀略」や「謀議」の語も用いられる。
とりあえず単語を間違えている よろしくお願いします。
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 入門者に毛がはえたくらい
【4 VBAでの回答の可否】 可
VBAで、Aというシートの値を読んだり書き込んだりするときに、
Sheets("A").Range("Z1")などと書くのと、
ThisWorkbook.Worksheets("A").Range("Z1")と書くのと、違いはあるのでしょうか?
本日、先輩から、後者にしないと
「実行途中でユーザーが別のブックをアクティブにしたときとかいろいろ不具合が発生するんだよ」
と言われました。
いまいち納得できないのですが。 >>772
状況によるのでは?
例えばそのコードが、イベントプロシージャなのか、ボタンに割り当てられてるのかとか。
後者じゃないと不具合が起きる状況がちょっと想定できないけど。 ボタンに割り当てられてようと、関係なくね?
むしろ、ワークシート以外に、グラフだのなんだので別の「sheet」があるかどうかの問題かと。 >>768-770
斜め罫線もだめだよね
俺もできるような仕様にしないのはなにかの陰謀?って思っちゃう >>772
a) ThisWorkbookを付けるかどうか
の話と
b) SheetsにするかWorksheetsにするか
の話があってa)はその先輩が言う通り基本Bookから指定すべき
理由もその先輩が言う通り
b)は>>774が言うようにSheetsにはグラフシートとかダイアログシートとかもあるから普通のシートを使うならWorksheetsを使う方がいい
まあWorksheets("A")みたいに指定する場合は問題にならないしそもそもグラフシートとか使ってないならあまり気にしなくてもいいかも
すべてのシートに対する処理をする際に
ForEach S in ThisWorkbook.Worksheets
とかする時は気にした方がいいかも
総じてその先輩の言う事は正しいと思うよ
あとこの手の話題はこっちの方がいい
Excel VBA 質問スレ Part58
https://mevius.5ch.net/test/read.cgi/tech/1542577644/ Sheets(1).Range("A1").Value = "hello"
と
Workbooks.Add
Sheets(1).Range("A1").Value = "hello"
と
Workbooks.Add
ThisWorkbook.Sheets(1).Range("A1").Value = "hello"
とかで結果を比べてみればわかるんじゃないの 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) めんどくさいって理由でbook指定を抜いて後で大惨事になるぐらいなら最初からちゃんと書いておいた方が良い >>776
ありがとうございました。
やはり、Thisworkbook.は付けるべきなんですね。
実行中に別のブックがアクティブになり、そのブックがたまたま同じ名前のシートを持っていたらまずい
ということでしょうか。
あるいは、アクティブになったブックにその名前のシートが見当たらないとき「そんなシートないじゃん」と
いうエラーになるとか。
そういうイメージですかね。 >>779
そう言うこと
一時的に入力待ちとかになってる間に利用者がブックを切替えたりするとこともあるし、組んでるプログラムの規模が大きくなると他のブックを参照したり新しいブックを作成したりするようになるかもしれない
そう言う時の為にブックから指定すべき
ブックから指定してないとエラーにしちゃうと言うオプションが欲しいくらい 一回データを整形してポイ捨てするような使い捨てマクロなら、省略してもいいけどね Excel 2016でブックの表示を「ページレイアウト」にしたとき、
リアルタイムのプレビュー表示機能を有効にしていてもフォントのプレビューが効かないんだけど、どうしたらいい? 親オブジェクトを省略するかどうかは、コードによると思うけど。
他のブックを扱う可能性がないコードなら、省略するべき。いちいちブック名から書くと長くなる上に読みにくくなる。
withステートメント使うにしても、ネストが深くなったりするし。 オレなんて
Cells(1, 1).Value = 1 って必ず書くな
Cells(1, 1) = 1 とは書かない >>787
俺も.valueは付ける
まあこっちは状況に依って挙動が変わるわけじゃないから他人が付けてなくてもあまり気にしないけど 【1 OSの種類 .】 Windows10
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
Excel2010において 散布図の中に複数のデータがありグラフフィルタの用に表示したいデータをチェックボックスで選択出来るようにしたいのですが、グラフフィルタの機能はexcel2016からしかできないのでしょうか
公式のサポートを見るとexcel2016からしかこの機能がないようで困っています
どうかお力を貸してください >>789
いや、困ってると言われても…
買い替えるしかないんじゃないの? 2016相当の機能をどうにかして実装できないかって事じゃないか
vba無理なら100%無理だな
買い換えるしか無いと思う >>789
2016を買うまで無償ツール(Rなど)で代替しておいたらいかがでしょう? Excelの関数、VBAを習得するための書籍ですオススメはなんですか? >>789です
Vbaを使わずにとなるとやはり無理なんですね
Vbの勉強をします
ありがとうございました >>794
金出してセミナーでガッと全体抑えた方が早い 人によって合う合わないがあるからな
セミナーがみんなに効果ないなら参加者いなくなって廃れている >>798
社内で教えるのが億劫なんで、外に任せるという
ながれなんじゃないかな。
自社の実データにあたって覚えた方が圧倒的に早く
覚えられるんだけどね。
セミナーだと、一生使わないものまで出てくる。 >>799
社内では見落としてることもね
逆に言えば いちいちあげんなヴォケ
どれだけセミナー好きなのお前
死ね あげるの嫌がる人がいるね。
5ちゃん粘着世代の人なのかな なんで聞きするんか
理由ありそうなんで
聞いてみたいわ >>806
撒き餌ですか?
軽く釣られておきます。 ageとかsageとかほんとに20年前の2chかって感じだなw ▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
https://dotup.org/uploda/dotup.org1754111.zip.html
このブックのシート1から縦軸が左右にある2軸グラフを作成したいのですが、
横軸は受付日(同じ日が何件あるか)、もう一つは累積を表したいのですが、
手持ちの本はVBAばかりで作成できませんでした。誰かわかる方、お願いします。
https://support.microsoft.com/ja-jp/help/954219
こんな感じですが。 申し訳ありません。テンプレ未入力でした。
▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい・
【4 VBAでの回答の可否】 可・
https://dotup.org/uploda/dotup.org1754111.zip.html
このブックのシート1から縦軸が左右にある2軸グラフを作成したいのですが、
横軸は受付日(同じ日が何件あるか)、もう一つは累積を表したいのですが、
手持ちの本はVBAばかりで作成できませんでした。誰かわかる方、お願いします。
https://support.microsoft.com/ja-jp/help/954219
こんな感じですが。 >>809-810
全体的に分からんが、
「累積」が何の累積か分からん 累積は適当ではありませんでした。同じ日が何件あるか。過去から指定の日まで何件あるかということです。日時が一定ではないのが辛いところですが。 >>813
手作業で一度元の表+グラフを作ってみるといいかもね
恐らくこのまm作っても齟齬が発生する ▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows7Pro
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
20190123のような文字列を
TEXTで日付に置き換えIFで過去か未来か判定させようとしても
過去は正しく判定されるのになぜか未来が正しく判定されません
例えば下記のように入力したとしますと
A1=20190123
A2=TEXT(A1,"0000!/00!/00")
A3=2019/1/20
A4=2019/1/30
A5=IF(A2>A3,"○","×") → ○
A6=IF(A2<A4,"○","×") → ×
A6がA2(2019/1/23)はA4(2019/1/30)より小さいので○になるはずですがなぜか×になります
正しく判定させる方法あるでしょうか? >>816
A2=DATEVALUE(TEXT(A1,"0000!/00!/00"))
TEXT(A1,"0000!/00!/00") では、日付値にならずに
日付を表す文字列に変換しているだけ。 >>816
過去未来じゃない
A2=TEXT(A1,"0000!/00!/00")
が文字列になっている事が原因
文字列と日付データを比較してしまっているので、結果が想定外の状態になっている
以下のどちらかで対処可能
・text()を使わずに日付にする
A2=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))
※以下の形でも良い
A2=TEXT(A1,"0000!/00!/00")*1
・比較する時に日付データにする
A5=IF(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))<A3,"○","×") >>817-818
即レスありがとうございました
今回は簡単な>>817さんの方法で解決できました ▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows7Pro
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
最終的にはシステムから出力される売上明細を基に請求書を作成するフォーマットを作りたいです
問題は顧客ごとに請求期間が異なります
例えばある顧客は1日〜月末、ある顧客は前月21日〜今月20日までのように
毎回顧客ごとに異なる請求期間を手入力するのはめんどうですし間違えると思うので
顧客ごとの請求期間のリストのシートを例えば顧客名、開始日、終了日のように作成して
見積書のフォーマットのシートに顧客名、請求年、請求月を手入力、
例えば年は2019年、月は1月と手入力したら請求期間のリストを顧客名でVLOOKUP参照し
開始日を2018年12月21日、終了日を2019年1月20日と計算したいです
DATE関数で試してみたのですが30日までと31日までの月、それに2月があり正しく計算されません
何か他に良いアイデア有りませんでしょうか? >>820
こんな感じで作ってみれば良いんじゃないかなぁ
https://dotup.org/uploda/dotup.org1754582.xlsx.html
使い方は、
「顧客情報」シートに締め日を入れておく
「請求_月合計」シートがリスト
「請求書」シートは印刷用。B1に「請求_月合計」シートのNOを入れれば反映される 【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2016
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
職場のリースpc入れ替えにつきWindows転送ツールにてファイルのお引越しを済ませました
Windows7pro32ビット版→W同64ビット版です
旧PCでExcel2010にて作ってたファイルを新PCの2016で開くと行の高さや列の幅が微妙に変わってます(大きくなってたり小さくなってたり)
以前のモニタ1280×1024→今回1920×1080に変わったのも影響しているのかな…
プリンタは同じものを使用して同じ設定、Excelの初期フォントもMSPゴシックに変更してみて、Excelの印刷→ページ設定の印刷品質も確認しましたが新旧ともに600dpiで同じ
元のサイズと合わせることは可能なのでしょうか? >>823
とりあえず経験上は、不可能です
環境が変わるとあっという間に崩れます。理由は不明です
エクセルは印刷に異常に弱いので、
前と完全に同じものは作れないと思ってどこかで妥協した方が良いでしょう
>行の高さや列の幅
行・列ラベル右クリックで数値を指定して変更できます モニタサイズは関係ないはずですが、
エクセルの場合は影響している可能性がゼロじゃないような気もします。 >>824
ありがとう
大量にある職場で使用中のフォームを一つ一つ直してて気が狂いそうになって藁にもすがる思いで書き込みました
そして高さと幅を完全に合わせると1ページに収まらないという謎現象で頭抱えてるんです
2016で色々変わり過ぎたのが原因なんだろうか… >>821-822
月末を翌月1日-1で求めるのが思いつきませんでした
またEDATE関数で○ヶ月前、後の日付を出せるのも知りませんでした
>>822のアップしていただいた
B5=DATE(LEFT(B4,4),RIGHT(B4,2)+IF(B3="末",1,0),IF(B3="末",0,B3))
B6=EDATE(B5,-1)+1
が知りたかったことでした
ありがとうございました >>826
>2016で色々変わり過ぎたのが原因なんだろうか…
原因は分からない。
もう何十年もこの問題は起きているしMSが直す気もないので、考えるだけ無駄
さっさと手作業で直した方が良い
後、今後の事を考えるなら1ページギリギリで作らない方が良い
どうせまた数年後に同じ事が怒る 表があって、行見出しと列見出しをキーに検索してヒットしたら丸を入れるってどうやったらいいんだっけ? >>829
まるで見たことがあるような言い方だけど、見たことあるの?
そんな気色悪い仕様、俺は見たこと無いけど >>822
開始日を求める
=EDATE(B5,-1)+1ですが
B5の締日の月が11月のように30日までの月や2月の場合、
開始日が11月1日や2月1日にならないのは
どうすればよろしいでしょうか >>832
ごめん見落としてた
B6=IF(B3="末",DATE(YEAR(B5),MONTH(B5),1),EDATE(B5,-1)+1)
>>829
質問内容が良く分からん
結果のイメージ図がほしい >>833
すいません
xyzvw
a ◯
b
c
d ◯
一覧
a x
a f
b g
d v >>834
https://i.imgur.com/udpwRBV.png
B2=IF(ISERROR(MATCH($A2&"_"&B$1,$I:$I,0)),"","○")
B2〜E5にオートフィル
I1=G1&"_"&H1
下にオートフィル >>835
理解できたありがとう
欲を言えば、作業列はないほうが嬉しい、見栄え的に >>836
難易度が跳ね上がるから俺はやらない
他の誰かに期待すると良い A1に
BIの末日がくるようにするには
(B1は◯月という意味です)
どうすればいいですか?
例えば
B1 1
の場合
A1 31
B1 2
の場合
A1 28
B1 3
の場合
A1 30
です >>838
=DATE(0,B1,1)-1
表示形式を d >>839
閏年考慮してなかった
時間ないので、どなたかフォロー宜しく 何年の月かわからないので、今日の年を使った
年を変えたければYEAR(TODAY())を好きな年に替えて
=DATE(YEAR(TODAY()),B1+1,1)-1 >>836
B2 =IF(SUMPRODUCT(($G:$G=$A2)*($H:$H=B$1))=0,"","○") >>839
>>840
>>841
閏月まで考慮入れてくれるなんて
感激です
どうもありがとうございます >>833
>>832です
30日までの月と2月、あと閏年も正しい開始日になりました
ありがとうございました ▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
VBA初心者です。的外れな質問でしたら申し訳ない。
現在、VBAの勉強がてら業務効率改善のため、表作成ツールを作成しています。
表から特定の文字列を取得し、その文字列が含まれるセルを検索、別シートに貼り付けるというプログラムを作成できないでしょうか。
文字列は1列ですが、貼り付けたい文字列は複数存在します。
----
取得文字列の例
2017/1/1
検索、貼り付けたい文字列の例
2017/1/1 0:00
2017/1/1 1:00
2017/1/1 2:00
・
・
・
2017/1/1 23:00
(時間は同一のセル内に入力、要は取得した日付の24時間分のデータを抜き出し、別シートに貼り付けたいという感じです)
抽象的で申し訳ないのですが、検索ワードすら思い浮かばない状況です。申し訳ありませんが、知恵をお貸しください。 >>845
オートフィルターでデータを抽出して、その結果をコピペするのが一番簡単だと思う
Sub Macro1()
' A列から2017/1/1のデータだけ抽出
Sheets("Sheet1").Select
ActiveSheet.Range("A1:A100").AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=Array(2, "1/1/2017")
' 結果を別シートにコピペ
Columns("A:A").Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
End Sub >>846
回答ありがとうございます
後出しで申し訳ないですが、抽出する日付は可変なんです
具体的には1年の中で最大の数値(数値は別セル)を持つ時間帯が含まれる日付を取得し(時間はバラバラ)、その日付の0:00から23:00までのデータを別シートに貼り付け
といったものを作ろうと思っています。
数値データ自体は貼り付けた日付からsumifでいいのですが、0:00からの1日分を取り出すのに難儀しています 追記
一応最大値の日付を取得することは成功し、indexでmaxを取り出し、intで2017/1/1 0:00のような形から時間を削除したデータを用意しました。
後はこの日付を用いて部分一致する日付をコピー、貼り付けできればいいと思うのですが、上手く行っていないです。
こちらも効率の良い方法ではないと思いますので、さらに良い方法があればご教示いただきたい 平気で後出しするような奴はVBAムリ
どうしてもと言うなら先ずフローチャート作成出来るようになってから ■ このスレッドは過去ログ倉庫に格納されています