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 >>371 今までと同じデジカメで撮った写真ならば(Exifの仕様が同じなら) 2016の写真のExifの読み込み方法が変わったかバグだろうね win10ってそもそもexifを読み込んで写真を勝手に縦にするんだよな たまに横の写真が縦だったりするわ で、付属の写真アプリで開いても縦なんだけどフリーソフトとかで開くと横だったりする フォルダ内で回転させたのとフリーソフト等で回転させた向きが合わずにフォルダ内がカオスになったことあった 写真撮影時に写真の縦横がExifに記録されないデジカメもあるしね そんな画像ファイルはExifデータを修正しておかないと後々面倒だ まあ切り分けていかないと原因は判りにくい 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 指定したシートを、入れたい文字でPDF形式で保存したいと考えています。 具体的には、a-見積書-20180220-20180228.pdfのような感じで aは参照するセルの内容によって可変。 20180220と20180228は参照するセルによって可変で、当該セルは和暦表示(例:平成30年2月20日)としています。 また、保存先は作業ブックと同じディレクトリをデフォルトととし、 重複する名前のファイルがあった場合の確認ダイアログを表示させたいと考えています。 ExportAsFixedFormat Type:=xlTypePDF、Application.DisplayAlertsの使用と FilenameをString宣言するまでは、調べてわかったのですがファイル名の日付への反映がうまくいきません よろしくお願いします。 >>376 こんなんでいけるんじゃない Sub Macro1() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ ThisWorkbook.Path & Format(Cells(1, 1), "yyyymmdd"), Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ True End Sub 最近は-pdfの保存がデフォルトで用意されてるのね 便利 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2016 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 オートフィルタで絞ったまま可視セルのみでセル移動をし、さらに移動した可視セルに入力した内容を可視セルの一番下までペーストするため引っ張りたい オートフィルタで絞る列はもちろんデータが入ってますが、他に空白の列がありその列の可視セルだけにデータを入力しそのまま下までペーストしたいのがやりたいことです 普通にoffsetでセル移動すると非表示セルへ移動しデータを記載してしまいます 検索しましたが解決できていません 宜しくお願いします >>379 vbaにおいてのことのみ書きました もちろん手入力時は上記内容は簡単にできますがvbaで実現したいです 手作業だと出来ても、それを記録したマクロはダメってこともあるよね 俺は印刷設定の改ページを変更したくて、 それをマクロの記録でコードにしたけど、 そのコードを実行しても改ページは変更できなかった 具体的な記録内容としては ファイル開いて、改ページプレビューにして、改ページ位置の点線を動かした でも手作業では上手くいくのに、そのマクロでは何にも変わらなかった >>379 どこまで自動化するのかわからないけど、オートフィルタしてあると仮定して Dim ftable As Range 'オートフィルタの選択範囲 Dim target As Range 'それぞれの抽出セル 'A1にオートフィルタデータがあるとして Set ftable = Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible) For Each target In ftable 'この辺で好きにしたらいいと思う Debug.Print "セル位置" & target.Address Next target offsetで解決できました ありがとうございました >>382 ,>>383 レスくださった方々ありがとうございます。 >>384 が379になりすまして書いてますが自分が>>379 を書いた者です >>383 を試しまたレスするようにします ありがとうございます >>381 記録だと具体的なセル番地を読み込んでしまうだけでした。。 >>383 まだ試す前ですが、入力する値はA1には元々入っている…ことはなく、 例えばオートフィルタして1行目はそれぞれカラムの項目名として A2,A3が非表示となりA4が1番上にあるとするとしたら、A4にバナナと記載しそれをオートフィルで下まで引っ張る でまずバナナと入力するセルをA4にしたいのに非表示のA2になってしまうのだ!という事なのです。。。 >>383 >どこまで自動化するのかわからないけど、 >オートフィルタしてあると仮定して 前後は他にもあるけど、オートフィルタ設定、絞る、絞った可視セルに単語記載→下まで引っ張る このオートフィルタ絞り記載引っ張るの一連を12種類繰り返すので自動化したいという訳なのです うぉおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお shift-spaceで1行選択して、 ctrl-d で上の行をコピー をすると、行コピーとか挿入とかいろいろ苦労してやらないといけない、 数式や書式をキープしたまま行が増やせて便利 >>389 それは普通にみんな使ってる それをVBAで書いてあげればいい 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 シート1に数字の表があり、シート2でシート1のA5+A8+A10の計算をしているとき、 シート3で同じくシート1のB5+B8+B10のように列をずらして計算させたいのですが、数が多く手作業では負担が大きいため関数で解決できるとありがたいです。 offsetとindirectの組み合わせでできないか試してみたのですがやり方がよく分からず断念しました 宜しくお願いします 391の追記ですが、 シート1のデータは毎回変化するので予めセル指定することができないため、 1か所に入力したものを元に計算できないかと思い質問させていただきました >>393 違うシートの同じセルに列をずらして計算させたいのですが相対指定でずらせるものなのでしょうか? >>391 Sheet1が左端にあって、Sheet1のB3:K12に10行10列のデータがあり M列に5, 8, 10行目のデータを抽出するために作業列{0;0;0;0;1;0;0;1;0;1} を加える =SUM(OFFSET(Sheet1!$B$3, 0, SHEET()-2, 10, 1)*Sheet1!$M$3:$M$12) と入力して shift + ctrl + enter シートが目的の順に並んでいる限り目的行の和が得られるけど 正直お勧めしない >>391 もっと具体的にどういう構成なのか教えて 例えば https://dotup.org/uploda/dotup.org1470913.txt みたいに、関数で式を生成するという手もあるけど コード直接書いたらエラーで弾かれたのでアップロードにしている >>394 元の計算式の入ったシートをコピーして ズラす分だけ行削除か挿入で調整。 必要なら後から書式のみコピーで整えて終わり。 一度作って終わりでいいのかメンテを続ける必要があるのかだな ちゃんとしたデータ構造になってれば、計算も楽なのが普通 計算が大変なのはちゃんとしてないからで、それでも一度限りなら残業して仕上げればいいけど、 その後誰かが使うなら、その人が可哀想 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 年月日を入力したところ全く異なる生年月日に変換されてしまいます オリジナルの年月日より数十年前の年月日になっています(月日も異なる) こうなる理由とオリジナルに戻す方法をご存知でしたらお願いします >>399 具体例を一つ書いてみて キーボードから「18/2」と入力すると、「30年2月1日」と表示される、みたいな感じで >>401 1975/6/6と入力されたセルは1941/9/16と表示されます 既に変換された生年月日が入力されているため オリジナルの年月日に直したいのです >>403 原因や法則がわからんことには直しようがないんだよなあ そのブックを作ったのは誰で、その時に使ったExcelのバージョンはわかる? 日本以外の国で作られた物だとカレンダーの計算がまったく違ってることもあるんだけど >>402 そのセルには数式は入ってない? そのブックにマクロは登録されてない? 本当にシリアル値になってるかどうか確認したいので、どれか一つ、日付とシリアル値の数字を正確に書き写して >>404 ブックを作ったのは他部署の人 なのでバージョンも同じ2010だと思います >>405 1975/6/6は1941/9/16と表示されますが 書式設定を標準にすると15235になります 15235って事は1941/9/16が入ってる 1975/6/6と入力していないはず >>408 他部署の人間の話では197566と入力したらしいんです なのでどうなっているのかと 197566と入れると2440/11/29になるけどね 409 それって1975/6/6って意味じゃなくて、単純に6桁の数字を入れたら勝手に日付に変わったってこと? まだ法則が見えてこない Bookにマクロなくても他にマクロが在ったんだろうな 空のセルで ctrl-; を押して今日の日付を入れて、 表示形式を標準にしたら 43155 になるのかがまず怪しいな >>409 無い 恐らく書式設定が日付のところに 19756辺りを打って、シリアル値が日付に変換されたのだろう 1941/9/16も間違っているはず 19756だと1954/2/1になるからこの辺の日付だろう ロケールの問題だったりして? あと、そのセルの現在の表示形式ってまだこのスレには書いてもらってないよね 標準に変更する前にちゃんと確認したのかな 2017/1/11 も 2017/11/1 も 2017111 なのか知りたい 因みに、桐からもらったフォーマットだと 2017/ 1/11 とか 2017/11/ 1 とかが有って「を?」と思ったことはある その時はインポートした後に 確かに変な日付に成ってた CSVにエクスポートした相手の担当が無頓着だっただけだろうが >>409 新規のブックだけ開いて入力してどうか それでも正しい日付にならないならエクセル側の問題 該当のブックやシートのみなら一回書式をクリアするなりでやり直してどうか 質問してる人は入力してないんだよな こういう風に入力したと聞いてるのに、そうなってない 何でだ 実はそう入力してないからという単純な話な気がする 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 ピボットテーブルで、全てユニークなデータの場合、 「Σ:値」に入れる項目は何が良いでしょうか >>422 求人の集計です。タウンワーク、バイトルなどの媒体に求人を出していて、 どの求人媒体が効果的か・・・と言った感じです 他には最終的な合格率なども求めます データは以下のような感じです 日時は同じセルに入っています 日時 媒体 結果 1/1 9:00 タウンワーク 合格 1/1 10:00: バイトル 辞退 1/2 10:00 タウンワーク 不合格 1/3 10:00 バイトル 辞退 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 ピボットテーブルで、「行ラベル」「列ラベル」の文字列を非表示にすることはできますか? >>423 行に媒体、列に結果、シグマに結果の個数、表示を比率にすれば合格率は出るな >>425 個数だったらどの項目でも同じデータになりますが、 「結果」が良いでしょうか 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 リンク先に飛びたい時、マウスでクリックするのではなく リンクのところまでセルを動かして、キーボードのボタンだけで 移動するのってどうすればよいのでしょうか? 【1 OSの種類 .】 Windows 10 【2 Excelのバージョン 】 Excel 2016 【3 VBAが使えるか .】 いいえ(コピペして貼り付ける程度です) 【4 VBAでの回答の可否】 否 あるセルに文字列と数字が混ざっていて、そこから他のセルに数字だけ抽出する場合はどうすれば良いでしょうか また数字も全角の場合は文字列扱いとなりますが、これを数字に変換して抽出する事は可能ですか? WebクリエからGoogle為替レートのドル円為替相場のデータから数字だけを抽出したいと考えています 円/ドルだと、例ですが「1JPY/USD =0.00133」と表示されます このうち、0.00133を抽出したいのです 全角数字の場合は文字列になってしまいますが…外国の友達に送るものなので、できれば半角英数字に変換できるのが1番好ましいです >>428 = 以降の文字列を抽出するなら MID(A1,FIND("=", A1,1)+1, 100) 全角数字ってほとんど見ないけど VALUE(ASC(B1)) エクセル2010です。 一つのエクセルで複数のブックを開き、表示を標準(最大、最小以外)にしたときに、 ブックの上部がエクセルリボンの下に入ってしまい、ブックをエクセル上で移動できない状況になるときがあります。 この状況を打開するにはどうしたらよいでしょうか? 回答お願いいたします。 >>424 文字色を白や背景と同じ色にする ではダメですか? >>428 規則性が無いと難しそうだ あとアポストロフィ付きの数字があると面倒だな ISNUMBER関数だと文字列と判定される VALUE関数なら数値になるけど 以前下記のExcelでメールを作成してメールソフトに流し込むVBAを教えてもらいました 件名と本文が中国語等日本語以外だとメールソフトに流し込まれた時に文字化けします メールソフト側でUTF-8のメールを作成するようVBAでコントロールできないでしょうか Sub createMail() CreateObject("Wscript.Shell").Run _ "mailto:" & URLEncode(Range("B4").Value) & _ "?cc=" & URLEncode(Range("B5").Value) & _ "&subject=" & URLEncode(Range("B6").Value) & _ "&body=" & URLEncode(Range("B7").Value) End Sub Function URLEncode(ByVal strOrg As String) As String With CreateObject("ScriptControl") .Language = "JScript" URLEncode = .CodeObject.encodeURI(strOrg) End With End Function 逆に質問だけど、そのメールソフトであらかじめ設定できないのか? >>439 メールソフト側で設定すると全てのメールがUTF-8になりますよね それはしたくないので 【1 OSの種類 .】 Windows 10 【2 Excelのバージョン 】 Excel 2016 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 セルに計算結果が表示され、その計算結果が1未満であれば1、1以上であればその数字を表示させるにはどうしたら良いでしょうか。 例えばC1が=A1×B1となっており、 A1×B1が0や-1であれば、C1に1と表示され、 A1×B1が1であればC1に1、2であればC1に2と表示されると言った感じです。 よろしくお願い致します。 >>436 ありがとうございます とりあえずそれで行きます もし何らかの設定などで>>424 を達成する方法があれば、お願いします >>442 どちらでも C1=IF(A1*B1>=1,A1*B1,1) C1=MAX(A1*B1,1) 391です 返事が遅くなって申し訳ない >>395 この例だと毎回作業列に手を加えないといけなさそうですね… 知識として参考にさせていただきます ありがとうございました >>396 txtファイルはウイルスバスターで弾かれて見れておりません… 一応具体的な構成ですが、 ・システムから出力される毎月の営業成績データから個人別に各項目の売上小計及び合計を出したい ・個人別のシートが既に作成されており、営業データから各項目を足して小計を出していく ・営業成績データの項目数が毎月変化するので小計部分の位置がその月によって変化する ・営業成績シートの構成としては、A列項目名、B列項目詳細、C〜J列個人別売上金額 分かりづらくてすみませんがこのような状態です >>397 毎回調整作業をする必要はありますが作業量の減少はできそうですね 目的の式が作れなかった場合はこの方法でやっていこうと思います ありがとうございました 表示されてない行があって、再表示では表示されず、オートフィルターを解除してもダメ で結局、VBAで行高さを確認したところ2000行ぐらいのデータのうち高さ0が十数行もあった。 高さ変更して解決したと言えばしたんだけど、なんで高さ0になっちゃったんだろ? 知らず知らずのうちマウス操作ミスって高さ変更ドラッグとかやってしまってるんだろか? どうも納得がいかない 複数シート選択してるのに気付かずに、 高さ変更とかした影響がよそに及ぶことがある 複数シート同時編集とかやることは希なんだから、 明示的に有効にしない限りoffになってて欲しい 10が100になり5が10になる時に7はどうなるかみたいな関数ってどうすればいいのでしょう? >>448 複数シート選択してるとそういうこともあるんですね でもそんなことしてるとは到底思えないんです。 たまたま操作ミスで高さゼロにしてしまうことがあるのなら、 行高さをが5だったり、時には20だっりとかあると思う。 でもなぜか高さ0ばかり。 人為的なミスで高さ0が連発ってありえないような気がするんだけど、 人為的ミス以外に高さ0が発生する要因ってあるんですかね? 高さゼロって非表示と同じでしょ Ctrl-9 押すだけでそんなことは起きる 式が判ってて収束値を求める、みたいなのなら、 反復計算でできちゃうな 解析的に解けない式でも答えが出せてしまう vbaマクロで、ヘッダーにシート名を付けるにはどう記述スレば良いでしょうか? マクロの記録だと以下のようになります With ActiveSheet.PageSetup .CenterHeader = "ヘッダータイトル &A" End With 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2016 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 ピボットテーブルで質問です 以下のデータがあるとして、 ピボット一発で集計する方法はありますか id 項目 1 りんご 2 みかん,りんご 3 ばなな >>451 Ctrl+9で行非表示って初めて知りました でも行非表示と行高さ0って同じなんですかね? Ctrl+9で例えば30行目を非表示にすると29、31と行番号が飛んでるけど 29,31行を選択右クリック再表示で30行目が表示されるはずだけど >>447 にも書きましたが、このときには再表示でも表示されなかったんですよ・・・ 高さ0や非表示は再表示で表示される 高さ1みたいな、カーソルは止まるけど見えないようなのは、 再表示してもそのまま 高さ0と非表示は違うと思ってたけど、同じみたいね。 どちらも0(非表示)にする前の高さ情報持ってるし、同じ操作で再表示できるし。 subtotal関数の引数にしても、同じ結果になるし。 行に対して高さ情報と表示フラグがあって、 高さを変える処理は高さだけ変えてフラグはそのままの筈なんだけど、 0の時だけ例外的に高さ情報はそのままでフラグの方を変える あれ、一緒になったのか? 昔はsubtotatlの結果が変わってた気がしてたけど、気のせいか どこかのバージョンで変わったなら、 >>447 の使ってるのは、高さ0が再表示できない高さ0だったのかも office 2003あたり? vbaでhiddenプロパティ取得しても、どちらもtrueになってる。 高さ0にしても、非表示にしても、hiddenはtrueになる。 verは2016(365)。 知らなかったな、というか以前は違った気がする。 多分違ってたと思う 何かで挙動が変わったと思うんだけど、なんだっけなぁ 非表示にしたのと高さ0にしたのと、xlsxファイルを展開して比較しても、 時刻以外に差分は無いので完全に同一だと思っていい 2003あたりで既に高さ0とhiddenは同じになってたような記憶があるけど >>462 >>447 です。エクセルのバージョンは2010です。 それだと高さ0が原因で再表示されないということにはならない 多分フィルターとかが原因 カンだけど、98形式の時に設定した高さ0などが悪さをしていた可能性も >>468 フィルタは解除したんですが再表示されなかったんです。 >>469 確認できる最も古いデータは2015年。自分の記憶を辿ってもOffice2010を買って以降のものと思われます。 フィルターは解除したつもりが解除できてないことが多いからなあ 全解除ボタンがあるのに隠しコマンドみたいになってるし ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる