Excel総合相談所 132
■ このスレッドは過去ログ倉庫に格納されています
▼━質問テンプレ (出来れば使ってね) ━━━ 【1 OSの種類 .】 Windows** 【2 Excelのバージョン 】 Excel** 【3 VBAが使えるか .】 はい・いいえ 【4 VBAでの回答の可否】 可・否 ▼━関連スレ━━━━━━━━━━━━ 前スレ Excel総合相談所 131 https://find.5ch.net/search?q=excel Excel VBA 質問スレ Part51(1000到達済み) 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 >>651 lookup関数でダメですか? データがどんな感じかイメージが難しいけど。 ベースデータを温度表A、ぶつける先を場所表Bとして、Bを時間で降順にする 1. 表Bの時間に対して、次の時間との中間値を保持 例)A3に =ROUNDDOWN( (A1+A2)/2, 10) 2. 表Aの時間からMATCHの「以上」設定で 中間値を探す ※表Aの値以上の最小値の行が判る =MATCH(表Aの時間, 表Bの中間値全部, 1) 3.その行の場所データを取る。 かなあ、VLOOKUPとかは近似値の上下どっちにあたるかランダムだし こんな? 時間 気温 INDEX(場所エリア,MATCH(時間,中間値エリア,-1),1) 11:00:00 28.3C 場所A 11:00:05 28.1C 場所B 11:00:10 27.9C 場所B 11:00:15 27.9C 場所C 11:00:20 28.4C ダミーED 時間 場所 RoundDown(値,10) 11:00:20 ダミーED 12:00:00 11:00:19 場所D 11:00:19 11:00:14 場所C 11:00:16 11:00:07 場所B 11:00:10 11:00:01 場所A 11:00:04 11:00:00 ダミーST 11:00:00 うわ、基本仕様見落としてる。すまん馬鹿だった。場所と温度の親子関係逆じゃないか >近い時間のGPSログに、気温ログを統合させたい >>649 気温データをちょっといじって A列 元の時間-1.5秒 B列 元の時間+1.5秒 C列 気温 みたいな表にしとく GPSデータの方でSUMIFSなりSUMPRODUCTなりで A列<GPSの時刻<B列 になるデータを拾う 俺ならこうする ceiling()、floor()「俺たちのこと忘れないで!」 どうせ両方CSVだろうから自分だったらPowershellでスクリプト組んでマージするな >>632 >>633 回答ありがとうございます。 >>633 のおっしゃる通りです。 無理そうですね。実はデータはもっとあるのでどうにかしたかったです。 >>649 配列数式っての初めて使って、上下比較して近似値にVLOOKUPしかける式作ってみたけど。説明めんどい 単純に以上か以下固定しちゃって、一番近い値ならすっげえ簡単。つか一発、そうしちゃえ スレチだったらスマソ Android版のExcelの「画像から表を作成」の機能ってまだ実装されてない? office365のベータ入ってるけど見当たらない 和文OCRって精度悪いよね、表組になると余計にバグる、英文なら精度高いけど そりゃまあよく使われる文字は100種類ぐらいしかないし、スペルチェックあるしで条件が違いすぎる 海外の公式twitterみた感じだともう実装されてるっぽいんだけどなぁ もしかしておま国? 【1 OSの種類 .】 Windows7,10 【2 Excelのバージョン 】 Excel 2007,2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 北海道 青森県 秋田県 札幌市 青森市 秋田市 旭川市 弘前市 男鹿市 函館市 八戸市 大仙市 小樽市 三沢市 仙北市 千歳市 むつ市 室蘭市 平川市 石狩市 岩手県 宮城県 山形県 盛岡市 仙台市 山形市 滝沢市 石巻市 上山市 一関市 大崎市 東根市 花巻市 栗原市 天童市 遠野市 新庄市 上記のようなリストがあります。(このリストは画面をスクロールせずに全て見ることが出来きます) A1にドロップダウンリストがあって 「北国A」を選択するとB1のドロップダウンリストには北海道の市が表示 「北国B」を選択するとB1のドロップダウンリストには青森県の市が表示 「北国C」を選択するとB1のドロップダウンリストには秋田県の市が表示 「北国D」を選択するとB1のドロップダウンリストには岩手県の市が表示 といった感じにしたいのですが、どのようにしたら良いのでしょうか? 厳密には北海道、青森県・・・山形県の部分は正式名称で、北国A、B・・・Dの部分は略称です 略称には正式名称の文字を含んでいなかったり、カタカナ表記で略しているのもあります 北海道 札幌市 旭川市 函館市 小樽市 室蘭市 千歳市 石狩市 青森県 青森市 弘前市 八戸市 三沢市 秋田県 秋田市 男鹿市 大仙市 仙北市 岩手県 盛岡市 滝沢市 一関市 花巻市 遠野市 宮城県 仙台市 石巻市 大崎市 栗原市 山形県 山形市 上山市 東根市 天童市 新庄市 このように大項目と言える部分がA列にあれば、スレ内の質問にあった手法で出来そうなのですが リストをスクロールせずに1画面に表示させる為にA1、B1、C1、A10、C10、B10に大項目があるので使えない感じがします 他にも正式名称と略称の紐づけもあって、どのように手を付けたら良いのか困っています 別シートに 668形式で値を保持してマスターデータに、ドロップダウンはそっちを利用する 667は見た目だけのシート、値は668シート参照してとってきてもいい 貴方がメンテする際だけでも667形式から668形式の変換マクロを使えれば便利だね このシフト表と同じものをExcelで簡単かつ早く作るとしたら、どうやりますか? https://i.imgur.com/ume1DLM.jpg 漢字になってる所は「調」と読みます 思い当たるものは有るにしても素早く簡単と言う訳にはいかず、わかりません >>672 まずワークシート全体の書式を(左右)中央揃えにする A1 B1 C1を結合して4/1と入れて書式を m"月"にする A2に=A1と入れて書式をdにする B2に=A2と入れて書式をaaaにする C2に=IF(MOD(A2,7)>1,"○","休")と入れる A2 B2 C2を選択したらフィルハンドルをつかんでずるずると下に引っ張る A B C列をコピーしてD E F列に貼り付け D1に=DATE(YEAR(A1),MONTH(A1)+1,1)と入れる D E FをコピーしてG H I列以降好きなだけ貼り付け 最後に調の日だけ手動で入力 あ、あと31日の塗りつぶしも手作業でやって 自動でもできるけどちょっと手間がかかるから、手動のが早い うるう年だけ注意して >>675 >>676 凄い、そう言うの思い付かなくて… たいへん参考になりました、ありがとうございます 後でご指摘通りに入力してみますね やっぱり場数踏まないと効率の良い書式なんか思い付かないんだな 対象をファイルに保存してExcelでイメージを挿入・・ というボケが間に合わなかったー。 リモコンの電池カバーどうした 1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 エクセルの印刷について教えてください。 かなりの分量の資料を作成しました。 横26行以上、縦80行以上、その全てのセルに何文字も入っている資料です。 完成はしましたが、ここから印刷して渡さないといけないので、今エクセルの印刷の設定をしてますが、苦戦してます。 例えていうなら、A4サイズ3枚で印刷したいとき、設定で縦3といれて、横を一枚にそろえるでやったところ、最初の2枚はギチギチですが、最後の一枚は上数10cmしか使ってないみたいな。 こうなるくらいなら、A4三枚で全部ギリギリまで使ってもう少し文字大きくしてほしいんです。そういう拡大をしたいんです。 このシートをA4(もしくはA3)用紙一杯のものを○枚の状態で作りたいのです。 仕事上ページの指定は厳しくないので、列が全部収まってれば行はいくらでも構わない、ページ数も増えてもまあいいという感じです。 しかし、印刷設定で列を1ページにおさめるとかやるとどうしても縮小されてしまいます。 こういう分量多いものをきれいに印刷する方法を何でもいいから方法教えてください。 最悪入力したものを削って内容簡素化するのもありです。 列幅基準で縮小されるならその倍率にしないと全部の列入らないんじゃないの それなのに拡大しろとか無茶言うなって話 683やね。 横26項目に文字いっぱい?A4じゃ見えないと思う。A3横が無難 1.余白は手動で全部0か、タイトルなどにギリギリまで寄せる 2.プレビュ表示モードにする 3.行の高さを広げていき、丁度いい具合で止める 自分のやり方だけど、縦は自動(文字サイズ次第)のままで 表の右、印刷範囲外の列を選択して「フォント△」で大きくする。フォントサイズに合わせて行が広がる 広げてる見出し行とか、改行入りでもともと広がってる行とかには影響しない >>675 たびたびすいません、ご指摘通りに入力し オートフィルでコピーしたけど連続でコピーされなくてオートフィルのオプションにも 「連続データで」の選択が無いのでA2のセルは「1」B2が「日」でしかコピー出来なくて困ってます 何が悪いのでしょうか? >>685 A2 B2 C2をA3 B3 C3にコピーしたあと、A3を=A2+1に直してから下へ31日までコピーですな >>675 お手数ですが気が向いた時でいいので IF(MOD(A2,7)>1,"○","休")が平日○土日休になる仕組みを教えて頂けますか? 日付の内部データは1900/1/1 = 1、からの連番なので 7で割った余りが0なら土曜日、1なら日曜日 になる。水曜休みなら=4にする 今日2018/10/19は43392 ※1900/2/28以前は1日ズレる問題はある、がどうでもいい >>689 なるほど土曜日が7の倍数だから割ると0 日曜が8の倍数だから余り1になるわけか ありがとうございます、納得しました >>690 それも良いかも、少しは自身の頭で考えないと為にならないし 変数のオブジェクト型って情報量がすごく多いと思うんだけど消費メモリがLONG型と同じなのはなんで? >>696 オブジェクトへの参照ポインタが入ってるだけだから マクロ初心者なんですが何回も同じ処理を使いたいんてすが callで別プロシージャ呼び出して結果を元プロシージャの変数として使いたい場合functionでいいんですか? もちろん別プロシージャを使わずに変数のセットを何回も書くって方法もあるとは思いますが、スッキリさせたいので functionの場合、呼び出しはcallではありませんけど >>672 これをweekdayでやるとしたら IF(weekday(A2,2)<6,”○”,”休”)にするのが良いのかも 多分裏側同じだろと、ふと数式200万セルで100万回 calculate 回してみた mod 42.41秒 weekday 44.42秒 PCの状態より、weekdayが+1加算してるからかな >>706 とっさに確認しちゃうあたり、なかなかの愛ですなー >>689 1900年のバレンタインの曜日が間違えていると再提出命じた上司を思い出した 意地悪目的ではなく、新人に仕組みを学ばせるためだったようだが 難しく考えすぎると逆に効率的なやり方を思い付かなくなるんだ… こっちは命令を出す側なのを意識して仕事の段取りをする事に集中するってか 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 お願いします 1月1日〜1月31日 が一つのセル内にあって毎月"月"を変えたいのですが 数式で変えると末日の表示の所がうまくいきません EOMONTH(TODAY(),0)を最後に組み込むとシリアル値そのままが返ってしまいます セル書式設定はEOMONTH単独だと日付に変換されるのですが 1月31日の部分に入れると無効になりました 何か他の方法ありますでしょうか? ありがとうございます ちょうど今試していて別セルに出したeomonth参照でなんとかできたのですが 月でIFを使い、間に文字列挟むので数式がめっちゃ長くなってしまいました 初心者なものでスリム化できなくて A. 書式を 「m"月1日〜"m"月"d"日"」にして、価を =EOMONTH(TODAY(),0) B. =TEXT(EOMONTH(TODAY(),0),"m""月1日〜""m月d日") ※個人的には式内にTODAY()は好きではないな 前月分、翌月分などを処理したい時に数式の中を書き換えたくないから どっかに基準日セルを持ちたい まさしく求めていたものでした 本当にありがとうございます Aでやってみようと思います >>714 式の長さじゃ無くてわかりやすさ重視でいくならchoose関数で12ヶ月分指定するのもありかな。閏年の考慮は必要だけど、式を見ただけで誰でもわかると思う 年間カレンダーを作成して特定の日にちを空欄にし まとめて「休」の字を入れるのに何かうまいやり方無いですか? >年間カレンダーを作成して特定の日にちを空欄にし >まとめて「休」の字を入れるのに何かうまいやり方無いですか? これの「どこ」を「うまいやり方」でやりたいの? 「特定の日にちを空欄にする」なら、「特定の日にち」を特定する方法が分からなければ 回答できないし、「空欄に『休』の字を入れる」だけなら置換するかジャンプ機能でできる。 「年間カレンダーを作成」なら、カレンダーの様式から不明なので、答えようがない。 1.まず日付、休有無、表示テキスト の年間データを作ります 2.年間カレンダーのレイアウトを作ります 3.年間データの値を引っ張ってきます 4.データ表に入れたとおりに一瞬でカレンダーが完成 上司のおっさんに「月を入力すると日数が出るようにするにはどうすれば?」と聞かれたのでコレを教えてあげた心温まる話 https://togetter.com/li/1279312 カレンダーはオフィスタナカ(表示名うろ覚え)にあるサンプルが一番適切 一年を1Sheetに日付順にずらずら並べて、土日のみならず、祝祭日も ちゃんと(VBAで)判別してる それを週・月・年とかのそれぞれのシートに 反映させてて見た目もそれなり それを改良するのが一番手っ取り早い 年が変われば別にSheetを作って元日から大みそかまでを新規作成 という流れ 来年たぶん新たに増える祝日にも対応可 因みに春分・秋分は海上保安庁が確定させるので二年先は(予定)というのが正解 >>726 俺は「西向く侍」派 このクソ長い関数は1と入力すると31、2と入力すると28・・・・12と入力すると31になるのかな? 地味に耳が痛くなるかもね >>727 担当者が居なくなって、ある日カレンダーがおかしあ!という話になって死亡 何年も先まで、ノーメンテで祝日を正確に表示できるカレンダープログラムなんか存在しない 作成不可能 >730 webから取ってくる形にすれば存在するんだな、これが 結局そこに落ち着くんだよね、サイトが間違ってたらオワ 政府のページあたりに法定休日とかcsvで取れるページありゃ良いのに 政府のweb検索からデータ貰うマクロ組んだけど 1データ毎にブラウザ戻るが必要で困る かけっぱなしでIEパカパカさせてる URLやページ構成が変わったらアウトだから、結局ノーメンテにはならない 政府系のサイトだってしょっちゅうアドレスが変わるし、実際それで苦労したことが何度もある 確かに国が色々なデータを取得できるWebAPIとか用意してくれてもいいよね できれば省庁をまたいで共通プラットフォームで エクセル2016 vba可 あるアプリから抽出されたデータがエクセルのファイルとして出力される。 その中の表を、さらに集計したり加工したりするんだが、毎回手でやるのも面倒なので、別の既に関数入れたテンプレート的なファイルを開いて、表をコピー&ペーストして終わらせてる。 アプリから出力されたエクセルのデータを、既に関数の入ってるシートに自動でコピーしたい。 同じブック内なら簡単にvbaで出来るが、異なるファイル間でやる方法がよくわからない。 出力されるファイルの名前はランダム。 無理でしょうか? PowerShellの領域かなとも思ったんですが、エクセルだけで完結できると助かります。 >>734 違うブックへデータをコピーすること自体はVBAで簡単にできる ランダムでもファイル名を手動で入力すればいいんじゃない? 保存されるフォルダが固定なら、その中から更新日が最新のファイルを開くのもVBAで可能だけど >>735 出力されたデータはどこかに保存されるわけではなく、そのまま開いた状態。 既に開いているエクセルのファイル(ファイル名不明)を別のエクセルで開いたブックからvbaで取得する方法があればと。 カレンダーって言うと職場の男は昔ヤクザやってたらしいが 悪い元先輩に「お前、俺等が出演してるカレンダー買えよ!」と言われ 一つ四万円でも無理やり買わされたって言ってたな 買ったのを見せてもらったがヤクザ達が刺青出してふんどしになり 海岸でポーズ決めてる写真ばっかりでクソワラタw >>736 for eachで開いてるファイルを全部回す。 指定の形式に該当するファイルをコピペ。 >>736 VBAでWorkbooksコレクションオブジェクトというのを使えば、今開いているブックの一覧を簡単に調べることができます あとは、セルの内容とかシート名などを頼りに、目的のブックを機械的に見つける方法があるかどうかですね まあ、シート1の名前とかA1の値とか。なんか識別はできるだろう もう1つの方法。自分だけしか使わない自分用なら Personalにマクロ作って、開いた状態で実行して結果を別のBookにするとかでもいい 実行する時は「ペルソナー!」って叫ぶ 【1 OSの種類 .】 Windows7Pro 【2 Excelのバージョン 】 Excel2016 【3 VBAが使えるか .】 はい(マクロをボタンに登録して使うくらい) 【4 VBAでの回答の可否】 可 vlookup参照をVBAで最終行まで繰り返し処理したいです 具体的には、 A4からA列の一番最後の行を調べて C4=VLOOKUP(A4,H4:J100,3,FALSE) をC列でA列の最後の行まで繰り返したい H4:J100の範囲はH4からH列の一番最後の行のJ列までにしたい 前提としてA列とH列は途中に空欄ありません H列に無くてA列にある値があります。その場合N/Aではなく空欄にしたいです >>742 です 文章では分かりにくいのでイメージのスクショを貼ります 右の古い客先一覧のJ列を左の新しい客先一覧のC列に転記したいのです https://i.imgur.com/BsBGDg1.jpg >>742 Sub Macro3() Dim rowA As Long rowA = Range("A4").End(xlDown).Row Dim rowH As Long rowH = Range("H4").End(xlDown).Row Range("C4").Formula = "=IFERROR(VLOOKUP(A4, H$4:J$" & rowH & ", 3, FALSE), ""\(^o^)/"")" Range("C4").Copy Range("C5:C" & rowA) End Sub て、マクロにして毎回変わる行数へ使えるようにしたいのでは無かったのかw 1回で良ければ$付けてコピーすりゃ良い >>744-745 >>742 です 早速ありがごうございます 希望通りでした 古い客先一覧から客先の増えた新しい客先一覧に更新するのに 列で古い一覧で決まってる担当の列を新しい一覧に転記したかったです なので毎回行が増えたり減ることもあります ところで古い客先一覧で担当の列が空欄だった時、 新しい一覧に転記されて空欄になるのと0になるのがありますが なぜか分かりますでしょうか? 古い一覧に白色で見えない0が入力されているのかと思いましたが 本当に空欄でした お世話になっております ご質問の問題について調査を行いましたところ H列にありj列に無いケースについては要件定義に明記されていなかった事から、 想定外のケースであることがわかりましたが 変更およびテストの実施はリリースに間に合わない恐れがある為 しばらくは運用にて対処いただけませんでしょうか? ご理解ご協力の程宜しくお願い申し上げます >>747 お世話になっております 手入力でC列にVLOOKUP関数を入力コピペしても同じ結果になりました J列に空欄があるとC列はそのまま空欄になると思うのですが C列のVLOOKUPの結果が空欄になる時と0になる時があるのは何が原因でしょうか データに問題があると思うので改善したいと思います >>734 自分が良く使う方法はインプットボックスでセルを指定してそのrangeオブジェクトからparentでワークシートとワークブックを変数にセット >>747 お世話になっております >>746 ですが自決しましたので下記ご報告申し上げます Range("C4").Formula = "=IFERROR(VLOOKUP(A4, H$4:J$" & rowH & ", 3, FALSE), ""\(^o^)/"")" 以上部分を Range("C4").Formula = "=IFERROR(VLOOKUP(A4, H$4:J$" & rowH & ", 3, FALSE)&””””, ""\(^o^)/"")" に修正してJ列の空欄はC列に空欄で返すようにできました ただVLOOKUPで参照先が空欄だった時スペースも入力されていないにも関わらず 0になる時と空欄になる時があるのが謎です 後学の為ご存じでしたらご教示いただけませんでしょうか お忙しいところお手数ですがよろしくお願い申し上げます ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる