Excel総合相談所 135
■ このスレッドは過去ログ倉庫に格納されています
【1 OSの種類 .】 Windows** 【2 Excelのバージョン 】 Excel** 【3 VBAが使えるか .】 はい・いいえ 【4 VBAでの回答の可否】 可・否 ▼━関連スレ━━━━━━━━━━━━ 前スレ Excel総合相談所 https://find.5ch.net/search?q=excel Excel VBA 質問スレ https://find.5ch.net/search?q=excel+vba 【質問不可】Excel総合相談所スレの雑談・議論スレ https://find.5ch.net/search?q=excel+%E3%80%80%E7%9B%B8%E8%AB%87%E6%89%80 >>76 誤字訂正です。 Sheet21!B:B →Sheet2!B:B >>75 ですがMID関数で出来ました 取り消します >>74 文字列になっているので作業列を使って日付型に直す B1=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "(日)",""),"(月)",""),"(火)",""),"(水)",""),"(木)",""),"(金)",""),"(土)","") ,"年","/"),"月","/"),"日",""),"午前",""),"午後","")+IF(ISERROR(FIND("午後",A1)),0,1/2) 後はB列を基準に並び替え 日付を抜き出す式 =DATEVALUE(LEFT(A1,FIND("日",A1))) 時刻を抜き出す式 =TIMEVALUE(RIGHT(A1,LEN(A1)-FIND("午",A1)-1))+TIMEVALUE("12:00:00")*(SUBSTITUTE(A1,"午後","")<>A1) 日付+時刻は2つの答えを足し算するだけ >>80 評価するのは良いけど、より良い式を提出しないと無能の烙印押されるぞ >>79 >>81 ものすごく助かりました。 2日間悩んだのが嘘のようです。 Excelって奥が深いんですね 本当にありがとうございました<(_ _)> ありがとうございます。 End If を付ければうまくいきました。 少しずつ勉強していきます。 >>62 ありがとうございます。 End If を付ければうまくいきました。 少しずつ勉強していきます。 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel365 【3 VBAが使えるか .】 【4 VBAでの回答の可否】 私自身は365を持っていないのですが、365ユーザーに操作を聞かれて困っています。 「非表示にした行」は、どう操作すれば表示に出来るでしょうか? ちなみにExcel2010での操作は、非表示にされている辺りの行をまとめて選択して、 (または名前ボックスから直接非表示行を"A55:A71"と言った具合に入力指定して) ”ホームタブ>書式>非表示/再表示>行の再表示”でした。 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 開いているIEを全て閉じ、特定のurlを開き、カーソル位置に文字を入力したいのですが、どう書けばいいでしょうか 文字入力はカーソルがアクティブになってればsendkeyでいけますよね? >>86 >”ホームタブ>書式>非表示/再表示>行の再表示”でした。 どっちでもいいけど、右クリックの再表示の方が早くない? あとこのスレ教えて上げればいいよ 誰かテキトーに答えてくれる >>87 開いてるIEってエクセルから開いたIEオブジェクトの事? それとも普通のIE? 後者だとかなりキツイ >>87 とりあえず前半だけ IEを全部閉じる 後半は俺には高度すぎて無理だ Sub CloseAllIe() Dim oSA As Object Dim oWT As Object Set oSA = CreateObject("shell.Application") For i = oSA.Windows.Count To 1 Step -1 Set oWT = oSA.Windows(i - 1) If TypeName(oWT) = "IWebBrowser2" Then oWT.Quit Next End Sub >>88 前者で大丈夫です 自分でもgetelementbyidなるものでやってまたんですが原因不明のオートメーションエラーとやらが出てしまいました・・ >>90 ありがとうございます、閉じるのはなんとかなりそうです! 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2016 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 [タブ1]ページ1,ページ2,ページ3 [タブ2]ページ1,ページ2,ページ3,ページ4 [タブ3]ページ1 [タブ4]ページ1,ページ2 [タブ5]ページ1,ページ2 ・ ・ [タブ20]ページ1,ページ2 このようなエクセルファイルがあり、 [タブ1]の全ページ、[タブ3]の全ページ、[タブ4]の全ページ、[タブ6]の全ページ、・・・[(タブ20ほどまである)]と、 印刷の必要のないタブは除いて、全ページ印刷を行いたいです。 [タブ1]をクリック→作業中のシートを印刷→[タブ3]をクリック→作業中のシートを印刷→[タブ4]をクリック→作業中のシートを印刷・・・とやると果てしない作業になってしまうので、なんとか「ブック全体を印刷」で印刷できるようにしたいのです。 (印刷の必要のないタブを消すと、計算式などが絡まっているらしく、他のタブに影響があるために消せません) @[タブ2][タブ5]をあらかじめ「ブック全体を印刷」では印刷されないようにする操作などはありますでしょうか? 印刷範囲の設定、でできるかなと思ったのですが、印刷範囲を無くすことはできませんでした。 A印刷範囲を完全に消すことができないなら、ページ指定で「1-3,8,9-10」のように指定すればいいのでは、 と思ったのですが、2016では[]から[]までという入力しかできないようです。 不可能でしょうか? Bどれをタブを印刷しますか?□タブ1 □タブ2 □タブ3 ・・・ みたいなのがでてきて、 これとこれとこれーとチェックいれたら印刷できるーみたいなのがあれば最高なんですが そういうアドインとか機能はありませんでしょうか? if(A1="","",○○)で空白が入力されたセルを更にcountifsで参照すると"<>"を空白と認識してくれません if(A1="",0,○○)にして"<>0"なら認識するんですが 空白無理ですか? >>95 "<>"&""でも無理でした 何とか空白で出来る方法ありますか? 数式の空白と元の空白が区別される・・・前からこんな仕様だっけか [タブ2]ページ1,ページ2,ページ3,ページ4 [タブ5]ページ1,ページ2 [タブx]ページ1,ページ2 [タブx]ページ1 -----いらないタブを前半にもっていって---- [タブ1]ページ1,ページ2,ページ3 [タブ3]ページ1 [タブ4]ページ1,ページ2 ・ ・ [タブ20]ページ1,ページ2 で、[タブ1]の最初のページ〜最後のページを印刷すれば 一気に印刷できてクリック数も減る気がしてきました。 ・・・スマートですかねこれ >>97 countifなら""が空白とみなされる countifsだと""が空白とみなされない こんな事ありましたっけ? ExcelはBlankとnullが別扱いで数えるのに専用の関数すらあるだろ 昔から一貫したクソ仕様のはず >>100 null数えるのは2010でできますかね? >>99 そこは統一されてると思う >>100 あぁ、そうだ。作業列でcounta()でやってた もしかしてcountifs()だと無理なのか >>95 出来るかもしれないが、無理な気がする。 俺なら諦めて条件の数だけ作業列作ってしまうかなぁ すいません(´д`) タブの中に不必要なページがなかったので、 印刷の必要がないセルを「非表示」にするだけで希望がかないました お目汚しすみません >>102 もう容量いっぱいいっぱいで 作業列追加するのもキツイかなぁというところです 空白認識できなければifを0にしてcountifsを"<>0"でやっとくのがいいですかね? vba書く前提部分なんだけど、tabキーでリンクフォーカスしてるのにエンター押してもリンク先に飛ばないのはなんで? >>106 言ってる意味が良く分からない エンターでダメならスペースキーは >>107 言葉足らずごめん IE上で動いてるシステムでtabキーでリンクフォーカスしてenter押してもリンク先が開かないんだよね spaceでもだめだった >>108 ページを見ないと分からないが、 ページ遷移が、マウスclickにバインドされているならそういう可能性もある >>109 チェックボックスへのチェックはスペースでできたからそれかもしれないですね なんでこんな使えない仕様にするかなあ 行と列に加えてもう一つのデータ軸を含んだ表をうまく扱う表形式ってどうすれば良いんだろう シートで分けるのは最悪 集計が面倒になるだけ 多次元配列だろうがなんだろうがテーブルにぶちこむだけだ 前任者の作ったシートがやたら重くて不評で「どうして重いのか見て貰えないか?」と言われて直してるんですが、 全てのVLOOKUPをINDEXに変えたり、無駄に名前があるセルの名前を廃止したり、変える必要も無いセルで無駄に条件付書式で色換えするセルを廃止したりで 一応は軽くなったんですが こういうのを見つけてしまいました AA7〜AA900まで、前半は変動するZを使って居るんですが後半が全く同じ式 AA7=Z7*1.08*IF($A$2="2倍修正",2,1) 〜 AA900=Z900*1.08*IF($A$2="2倍修正",2,1) 私の更に後任者になるだろう人に分かり易くするために、この後半のIF($A$2="2倍修正",2,1)を適当な作業セルAZ2辺りに移して AZ2=IF($A$2="2倍修正",2,1) AA7=Z7*1.08*AZ$2 〜 AA900=Z900*1.08*AZ$2 としておくべきでしょうか? 同じ計算を893回もやっているのを1つに纏めるわけですから既にVLOOKPU廃止などで軽くなっているものの、もう少し軽くなるでしょうし、分かりやすくなる…と思うのですが… どうでしょうか? 将来的にはマシンスペックが上がるから必要ないんじゃ? それよりも「1.08」を設定セル作って一ヵ所直せば全てに反映されるようにすべき いまどきのPCでたかだか1000行くらいで重いのは異常 昔は3000行あると重いなーということがあったもんだが おそらく原因は条件付き書式の増殖 >>117 高速vlookupとかでググるがよろし 速度差が出る原因も知っておいた方がいいし >>119 ググった index+matchのほうが結構早いんですね しかし本質的に完全一致が遅い原因でそこを工夫するべきと 勉強になりましたサンクス A列は固定の西暦(2019など)、B列に四桁の月日(0511など)C列に日数(60など)を入れて D列に2019年5月15日の60日前を「何年何月何日」として E列には同じように60日後を表示させたいんですがうまくいきません。 B列を年月日のデータにしてしまえば簡単なんですが、どうにかなりませんか? F列に年月日のデータをいれてそれを利用スレ簡単なんですけど >>121 d1 =DATE(A1,MID(B1,1,2),MID(B1,3,2))-C1 e1 =DATE(A1,MID(B1,1,2),MID(B1,3,2))+C1 >>117 処理速度はINDEXの方が軽いが容量はVLOOKUPの方が小さい なので、用途に分けて使い分けるのがいい >>125 多用したシートのファイル容量 あと、 1,2,3,4,5,6,7と並んでいるのを完全一致で検索するのはINDEXでも出来るが 2.7.9.10.13みたいな間が開いた数字を、以上以下で検索出来るのはVLOOKPだけ 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2013 15.0.5049.1000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否(っていうか、VBA関係ないので) 5月を和暦で表示しても、H31.5.12などと表示されてしまい、 令和にならないのですが、どうしてでしょう? Windows10の時計は令和対応になってますし、 レジストリにも令和が書き込まれているのですが。 再起動してもダメです。 Excelのバージョンが古いのかと思いましたが、 更新しようとしても、最新バージョンですと言われます。 >>126 >多用したシートのファイル容量 初めて聞いたけど、どれぐらい変わるの? >2.7.9.10.13みたいな間が開いた数字を、以上以下で検索出来るのはVLOOKPだけ 一応確認だけどindex+matchだよね? matchでも出来るよ https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheetfunction.match ↑すいません、取り消します。 やっぱ令和表示できなくていいです。 KB4495667のせいで、シート上に配置したコマンドボタンの位置が、 ありえないことになってしまったので、アンインストしました。 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 この上の画像のシートに入力して下のシートの領収書作りたいんですけど、 下の#NEME?のところに関数入れてその横の"2"のところに数字入れると、リストの2行目を参照するみたいなの作りたいんだけど、#NEMEのところにどんな関数いれれば良いか教えて下さい というか関数でできますか https://i.imgur.com/371l4bZ.jpg https://i.imgur.com/GCr4fmE.jpg 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Office 365 Solo 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 図形で直線と四角・丸はコネクトできますが 直線同士でコネクトさせる方法をお聞かせください できればoffsetの関数を使ったやり方教えて下さい >>132 コネクトってのが良く分からないけど、 ctrl押しながら両方選択して右クリックでグループ化で良いのかな >>131 そういう数式はM1セルに入れるんじゃなくて、A5とかM6に書いた方がいいんじゃない? それともアドレスを文字列で作ってINDIRECTとか使うつもりだったりする? とりあえず A5 =OFFSET(Sheet1!A1,N1,3) M6 =OFFSET(Sheet1!A1,N1,2) E9 =OFFSET(Sheet1!A1,N1,4) みたいな感じでいいんじゃないかな >>135 なるほど。offsetの使い方勘違いしてました。勉強になります。 ありがとうございました。 >>132 > 直線同士でコネクトさせる方法をお聞かせください 直接は無理じゃねーの? 俺はダミーの透明図形(例えば○)を置いて各々それに接続してる 日付1-1(例:1992/10/1 0:00:00) 値1 値2 値3 日付1-2(1992/10/1 0:01:01) 日付1-3 ・ ・ 日付1-1000 日付2-1 日付2-2 日付2-3 ・ ・ 日付2-1000 1日の中で数秒刻みに値が記録されているシートがあるのですが グラフを生成しようとするとパフォーマンス的に出力し切れなかったので 日別(各日記録された先頭の1行だけを抽出(時間以下は切り捨て)シートを作成したいです どのように行えば良いでしょうか >>138 作業列に日付だけ抜き出して重複データの削除 sendkeyするときのfnに当たるキーってどれ? >>140 ない Fnは物理的なキーが足りないときにハード的に増やすための物だから、物理の制約を受けないSendkeysには関係ない >>141 そうすると、テンキーのないキーボードでnumlockが他のキーと兼用になっている場合、マウスキー機能を有効にする場合はshift +alt +numlock +fnだ思うんだけど、sendkeyじゃ対応できないですか? ちなみに>>110 です マウスキー機能ならあるいは・・と思いついてみたけどダメですかね すでに開いている IEのリンクをvbaでクリックしたい →getelementbyid等はどうしても理解できなかったし上手くいかなかった→ tabキーを適当な回数押して該当箇所にフォーカスした状態でenter押すようにsendkeyしよう→ なぜかフォーカスenterができないページだった(>>109 )→ マウスキー機能使えば行けるんじゃないか→ マウスキー機能に入るためのキー操作shift+alt +numlock +fnで躓く 素人丸出しでごめんなさい getelementbyid側から操作した方が楽な気がするんだけどな〜 idない場合もあるから、その時はclassやtagnameになるんだけど >>137 やはり直線同士は無理なんですね ダミーの図形を使ったやり方等で対応するようにしてみます >>145 社内システムの仕様が絡むので説明しづらいんですがgetelementbyidが厳しそうなんですよね、二窓以上で開くとすぐログイン競合とみなされてログアウトするとか >>144 マウスキー機能なんてあったのか、知らなかった fnは関係ないな。 shift+alt +numlockをsendkeyで送るだけでいいはず getelementbyidと二窓以上は関係ないよ 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel365 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 列でなく、行にフィルターつけれませんか? 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 西暦から会期を求める関数を教えてください。 会期は2月21日から翌年2月20日で セルA1が「2018/1/11」ならB1に「2017年度」 セルA2「2018/4/3」ならB2に「2018年度」 と表示させるためのB列の関数を教えてください。 B1=IF(AND(MONTH(A1)>=1,AND(MONTH(A1)<=2,DAY(A1)<=20)=TRUE)=TRUE,YEAR(A1)-1&"年度",YEAR(A1)&"年度") >>152 =YEAR(A1)-IF(MONTH(A1)*100+DAY(A1)<=220,1,0)&"年度" >>149 いけそうだったけどsendkeyでshift・alt・numlock同時押しってどういう書き方になるんでしょう 質問ですがご回答よろしくお願いします 【1 OSの種類 .】 Windows8 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 VBAやマクロが使えないので関数で抽出したいのですが 列 A B 行 1 A商店 750円 2 B商店 600円 3 C商店 650円 このような場合一番安い値段を提示している「B商店」を抽出したいのですがやり方が分かりません 値段ではなくあくまでも「B商店」と出したいのです 処理的にはまずB行から最安値を探し、その次にA行の同列の「B商店」を抽出する やりかた分かる方いれば教えてください。 よろしくお願いします。 >>157 同じ金額がないとして =INDEX(A:A,MATCH(MIN(B:B),B:B,0)) >>158 ありがとうございます その数式を当てはめてみたんですがブックに「循環参照が見つかった為〜」とエラーが出てしまい0になってしまいました できれば同じ数字がある状態でできないでしょうか? 同じ数字がある場合は一番上の列のお店を出るようにしたいです よろしくお願いします >>158 すごいできました すみませんその数式をコピーして貼り付けただけだったのでエラーがでてしまいました 列番をいれてみたらちゃんとB商店とでました ありがとうございます さすがです! >>150 そのファイル使う時だけ、画面表示を90度回転させるとか。 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2016 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 全コピペでいけるなら可 ブックの最初の形式としては、『1』と『テンプレート』のシートが1枚あります。 2日以降はテンプレートのシートをもとに今日までのシートを自動で追加作成したいです。 今日14日に開いたときは1〜14の名前のシートがある状態にしたいのです。 ・1日に開いたら『1』のシートだけある。 ・5日に初めて開いたら『2』〜『5』のシートを自動で追加作成。 ・5日に一度開いて保存して10日に開いたら『6』〜『10』のシートを自動で追加作成。 というイメージです。 どうやればよいでしょうか? >>164 workbookに記述 Private Sub Workbook_Open() For i = 1 To Day(Date) 'シートの有無確認。あればtrue flag = False For Each ws In Worksheets If ws.Name = i & "" Then '文字列で比較 flag = True Exit For End If Next If flag Then 'none Else 'シート作成 Set シート = Sheets.Add(After:=Worksheets(Worksheets.Count)) シート.Name = i End If Next End Sub A1〜C3までを範囲として、 1 2 3 4 5 6 7 8 9 のように数字が並んでいて、 sendkeys A1 sendkeys B1 sendkeys c1 をひとまとめ、 sendkeys A2〜を二まとまりめ、 という形で飛ばしたいと思ってます 範囲はもっと下まで行くこともあるので最終行の取得は必須だと思いますが、どう書けばいいでしょうか for each c in [a:a] 処理 next >>166 帰ったらサンプルファイルアップするので賢者の皆様アドバイスお願いします >>166 https://dotup.org/uploda/dotup.org1847293.xlsx.html 東京・大阪・北海道の各出発時間・到着時間を黄色い部分に「sendkeysで」、「それぞれ東京・大阪・北海道の順序を守って」入力したいです。 実際にsendkeysでキーを送るのはブラウザ上のフォームであるため、順序等が変更できません また入力するのが東京・大阪・北海道だけでないかもしれないので、記載してある行すべてというイメージでお願いします ここでもvbaマスターがよく現れるから勘違いしてたけどvba専門スレがあるんですね 行ってみます 好きって言うか、本当はVisual Studioが良いんだけど、 会社のPCに入ってないので、仕方なくExcel。 でもまあExcel使わせてもらえるだけいいわな。 中には、Calcにされちゃったところもあるだろうし。 【1 OSの種類 .】 Windows8 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 始めたばかり 【4 VBAでの回答の可否】 可 すみません教えて下さい VBAでワークシートに設置したボタンを押すと、指定したセルに記載してあるワークシートを読み込み そのワークシートの複数の範囲を再計算をするプログラムが分かりません。 再計算の理由は演算式を消したいからです。 また、sum等の関数で求めた値を再計算すると3.2000000038のようになるのですが 表面だけではなくちゃんと3.2の値にしたいと思います。 よろしくお願いします ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる