Excel総合相談所 136
■ このスレッドは過去ログ倉庫に格納されています
【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 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 B列からZ列くらいまで、10行の表があります。 B3の値が「出席」なら、B4のセルの背景色が青になるというように、 BからZ列までぜんぶ、「○3の値が出席なら○4の背景色を青」と 設定したいのですが、どのようにすればいいのでしょうか? 条件付き書式って、自分自身のセルのことしか無理っぽいです。 ひとつ上のセルを条件にするってことと、できればBからZまで一括設定がしたいのですが 何か方法あるでしょうか? >>374 毎回範囲を選択した状態にするのも面倒なら 入力したい範囲のセルの書式設定の保護タブで、ロックのチェックを外し 校閲タブのシートの保護で、ロックされたセル範囲の選択のチェックを外すと ロックされていないセル範囲=入力したい範囲しかカーソルが動くことはなくなる。 >>376 1 B2:Z11のセル範囲を選択する 2 リボン→ホーム→条件付き書式→新しいルール→数式を使用して〜 3 数式を入れる枠に =B1="出席" を入力 4 [書式]ボタンをクリック 5 塗りつぶしのタブをクリック→塗りつぶす色を指定→[OK]をクリック 6 [OK]をクリック B2:Z11を選択している状態で、数式にB1と指定したところがミソです。 >>376 B4セルの条件付き書式の条件の数式に =B3=”出席” でええんとちゃう? なんでそのセルの値しか参照できないと思い込むのか分からん 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 条件で別領域に取り出すSMALL関数について質問があります。 B店舗夜間 25000 A店舗夜間 30000 Z店舗夜間 35000 Y店舗昼間 50000 Z店舗昼間 75000 A店舗昼間 100000 B店舗昼間 200000 上記のような売上表があって、 別セルに"A店舗夜間"を除外して、以下の式を別領域で計算していました。 ={SMALL(IF(A$1:A$100<>"A店舗夜間",B$1:B$100),ROW(A1))} 条件に"B店舗夜間"も除外対象に追加したいのですが、うまくいかないのでご教示いただければ幸いです。 >>381 ご教示ありがとうございます。 確かにフィルターオプションでできました。 ただ、元の式から条件が追加になるだけだったので、式の軽微な修正でできるかと思ってました。 【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 初心者ですが、ここにながれつきました・・・ エクセルの式で、どのように作ればよいか分からず 悩んでいます。 セルA1が「1」ならB2を反映、A1が「2」ならC5を反映 としたいのですが、この場合どのような式になるのでしょうか。 ifsは2013では無理とやっと分かり、vlookupではとなりのセルしか 反映できない?みたいで、行き詰まっています・・・ すみませんが、どなたかご教授願います! >>383 =IF(A1=1,B2,IF(A1=2,C5,"")) これでいいのでは?最後の方の""は、セルA1の値が1でも2でもない場合の値となります。 >>383 =SWITCH(A1,1,B2,2,C5,C1) A1が1ならB2の値、A1が2ならC5の値、それ以外ならC1の値を表示する >>383 =CHOOSE(A1,B1,C5) 2013ならこれ >>386 B1どこからでてきたw 初心者さんだと簡単なミスでも混乱するぞきっとw ご回答ありがとうございます!! 今晩、パソコンで試してみます! 色々とありがとうございます。 【1 OSの種類 .】 Windows 10 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 初心者 【4 VBAでの回答の可否】 希望します i = Int(100 * Rnd + 1) 変数 i に 1から100までのランダムな数値入れて その内、NGとなる数字を30個、A1:A30に入力します。 そして i に A1:A30 の値を参照させて判定させたいのですが 複数のセルを参照することができません。 If i = Range("A1:A30") としても、参照されるのがA1だけになってしまいます。 If i = Range("A1,A2,A3…")としても、一緒でA1だけになります。 参照するセルが複数の場合、どのように指定すれば良いのでしょうか? また、マクロではあまり、セルに入力されている値を参照するものでも ないのでしょうか?分かりにくい説明ですみません、よろしくお願いします。 >>389 forで回すとか、WorksheetFunctionでやるとか On Error Resume Next hage = WorksheetFunction.Match(i, Range("A1:A30"), 0) On Error GoTo 0 If hage > 0 Then MsgBox "OK" Else MsgBox "NG" End If findか何かを使えばいいんだろうけど構文を調べるのが面倒だから ForEachで作ってしまう僕が通るだけで後はまかせますよ >>389 if range("A1:A30").find(i) is nothing then debug.print "NG" 間違えたわ if range("A1:A30").find(i) is nothing then debug.print "OK" findは文字列・数値で見つからないのが微妙に怖い 見つからないことが困るか困らないかは仕様と目的による findって対象の値が二つ以上あったらどういう挙動なんだっけ? >>396 最初に見つけたところで検索終了 ただどこまで検索したのかの位置は内部的に記録してあって それ以降のを検索するには FindNextメソッド使って終わりまでループさせる 正直面倒な仕様だと思われ vbaでIEを動かす際、テキストボックスへのfocusが、成功するときと成功しない(で次の処理に移行しエラーが出る)ときがあります 安定させるのに何か方法はないでしょうか? エクセラーってちょっと響きかっこよいですよね ワード… 【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 10シートのうち,「作業用」,「転記用」という名前が入っているシートがいくつかあります。 通常は非表示にしてあり,現在は,担当者が再表示する場合は「校閲」→「ブックの保護」→「パスワード入力」と行っています。 これを,例えば「シートの再表示」というマクロを実行すると, 1.「校閲」→「ブックの保護」→「パスワード入力」 まで自動で進む。 2.パスワードを入力する。 3.「作業用」,「転記用」という名前が入っているシートのみが再表示される。 また,逆に, 例えば「シートの非表示」というマクロを実行すると, 1.「校閲」→「ブックの保護」→「パスワード入力」 まで自動で進む。 2.パスワードを入力する。 3.「作業用」,「転記用」という名前が入っているシートのみが非表示される。 といいう動作にしたいです。 どのように記述したらよいか教えてください。 >>400 エクセラだとインスタントコーヒーになってしまうので、エクセリストが推奨されています >>401 です。追記です。 パスワードなしの場合は,以下のように記述しています。 Sub 転記用シート一括非表示() Dim s As Worksheet For Each s In Worksheets If InStr(s.Name, "転記用") > 0 Then s.Visible = False End If Next s End Sub Sub 転記用シート一括再表示() Dim s As Worksheet For Each s In Worksheets If InStr(s.Name, "転記用") > 0 Then s.Visible = True End If Next s End Sub アドバイスありがとうございました。 とても勉強させて頂きました。 私もいつかは回答者さん側になれるよう精進したいと思います。 A1をリスト入力に設定し、リスト候補をセル範囲指定に している場合で、セル範囲(縦一列に入力)の下部セル にリスト候補を追加入力しただけで、リスト候補として 追加される方法はありますか? >>406 C列に候補を入れているとした場合にデータの入力規則でリスト、 元の値のとこを↓にすれば出来る =OFFSET(C1,0,0,COUNTA(C:C),1) 入力セルがA列、リスト候補の列が別のとこに設けている ようにしています。 新しいリスト候補ができると、都度入力規則を設定し直 しているのを省略したいです。 >>406 リストの範囲を縦一列にしたらそうならんか? 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2016 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Excelは計算量が多いと途中で計算をやめると聞きましたが、本当ですか?? >>411 ステータスバーに処理のパーセンテージが表示されてる時にEsc押すとキャンセルできる って話? 本当 試しにA:Aに=1+1とか入れてみると良い >413 キャンセルしなくても終わる事はあるよ vba で複数シートを一括印刷する際、A1セルに「××」という文字列があるシートは除外して印刷するような設定ないでしょうか? >>406 追加入力? ちょっと後半の意味わかんない 画像つけてよ 【1 OSの種類 .】 Windows8.1 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 >>383 です。色々と試してうまくいきました!ありがとうございました! 2つ目の試練が出てきました・・・・ A1が1の時、 A3〜M3の範囲で「1であるセル」の下を選ぶ (例えばC3が1なら、C4) という指定は可能なんでしょうか。 418の続きです。 カレンダーの日付で、●日の時のメニューを、別シート(配送表)に反映させたいんです。 カレンダー様式は曜日が固定されていて、月によって●日という位置が変わるんです・・・ 月 火 水 木・・・ 1 2 3 4 もあれば 月 火 水 木・・・ 31 1 2 3 などもあり、 日付と一致するセルの下のメニューを引っ張りたいんですが、式で可能なんでしょうか。 何度もすみませんが、どなたかご教授願います。 ↓だと半分ぐらいが削除されるのですが、なぜか削除されない行もあります。 セルにはスペースも何も入っていないで。 原因と解決方法を教えてください。 Sub Macro2() 'シート名「***」のC列に空欄のセルがあれば、その行を行ごと削除して詰める Sheets("***").Select For r = Cells(Rows.Count, "C").End(xlUp).Row To 2 Step -1 If Cells(r, "C").Value = "" Then Rows(r & ":" & r).Delete End If Next r End Sub >>420 For r = Cells(Rows.Count, "C").End(xlUp).Row To 2 Step -1 If Cells(r, "C").Value = "" Then debug.print r&"行目の中身:"&Cells(r, "C").Value Rows(r & ":" & r).Delete End If Next r って感じでコンソールに出力すると良いよ 他にもF8のステップインって機能がある 一行一行見ていけば、変な行がわかる >>383 ,418 これでどうでしょう。 =IF(A1=1,OFFSET(A3,1,MATCH(1,A3:M3,0)-1),"") =IF(A1=1, ,"") の部分は説明不要ですね。 OFFSET(A3,1,MATCH(1,A3:M3,0)-1)の解説 OFFSET(A3,1,□) で、A3セルを基準に1行下、□列右のセルを指定したことになります。 □はどうやってもとめるか・・MATCH関数の出番です。 MATCH(1,A3:M3,0) で、A3:M3セル範囲(1行×13列)の中から値が1のセルが何番目に あるかを求める関数です。例えば、D3セルが1だったらMATCH関数の値は4になります。 このままではA3セルを基準に1行下4列右のセル=E1セルを指定してしまうことになるので MATCH( )-1 としています。 ただし、A3:M3に一致する値がない場合はエラー #N/A となります。 なお、>>419 を見てみた限り、この方法がいいのかどうかはわかりません。表の全体がもう少し 詳しくわかればいいのですが・・・。 かといって、実際のファイルをアップすることはしないように。 週間カレンダー形式の表は私もいくつか作ったことがあります。 >>419 俺だったら、日付とその日のメニューを 左右2列に並べたシートを作り それを元にカレンダー作るけどね 休業日のシートも作って それもカレンダーに反映させればいいし 万年カレンダーでググればヒントになるの見つかるよ >422 ありがとうございます!自分の知らない関数でした! 確かに、これだといけますね! 範囲を複数にまたがる時ってどうしたらいいんでしょうか? カレンダーなので、行が変わるんです。「A3:M3」だけでなく、 「A10:M10」も みたいなイメージです。 >423 横に書くデータ入力シートを作って、それを反映させるって意味ですね? 入力する素人おばちゃんが、縦と横、目を回さずに間違いなく入力できたら いいんですが・・・一度話してみます! 色々とありがとうございます。 >>424 横じゃなくて縦並び 手帳と同じ 日付,メニュー 2019/8/28,オムライス 2019/8/29,ハンバーグ定食 って感じ カレンダー作る時 日付を“1”で入れるか“2019/9/1”で入れて 書式にd入れるのは見かけ同じで意味が違う 後者の方が応用させやすい 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 少し 【4 VBAでの回答の可否】 不可 あるシートのA5に、=IF(A50>0,"支払済","未") という関数が入っており、それがZ列まであります。 それぞれ、50行目に金額が入っていれば 支払済、なければ 未 と表示されるようになっています。 このA5からZ5に、「値が 支払済 なら背景色変更」という条件付き書式を設定しようとしているのですが、 うまくいきません。 なぜか「値が 未 なら背景色変更」というのはできます。 「支払済」という文字が間違っているとは思えません。「済」という文字のコードに問題が?とか思って 関数も「すみ」に変えてもダメです。「未」だけ判定できる条件付き書式なんてありえるのかと わけがわかりません。 何かアドバイスください。お願いします。 >>427 それって、色を変える書式の条件を A50>0 にすればいいだけのような >>427 支払済を試しに半角英数字に変えてみては? >>427 絶対参照にしてたというオチはないだろうか >>427 条件式に間違いは無いのでは? ただ、それに対応する書式がきちんとしていないとか? >>428 普通はそうだよね。 強いて言えば、A50に"金額"という名前を付ける方が後で修正のときに迷わない。 細かいこというけど、A50が空白かどうかの判定は A50>0,"支払済",“未” じゃなくて ISBLANK(A50),"未","支払済" >>427 結局、支払済と未でそれぞれの背景を何色にしたいねん? それを書かないとなんともなあ。 >>424 簡単に作ってみました。 >>423 さんが書いてるような、入力のためのシートと週間カレンダー形式のシートで構成しています。 両方のシートを画面イメージでアップしました。 https://i.imgur.com/kVRc5G6.png 曜日固定のカレンダーに日付を設定するのは第1週の最後の曜日の日付を求める計算式が要です。 B1セルとC1セルに入れた年と月とI4セルの計算式で求めています。 I4セルの計算式の説明は割愛します。C4:I4、C7:I7、・・・のセルは計算式で日付を出しています。 セルの書式で日付のうちの日部分だけ表示するようにしています。I4セルだけ年月日を出してます。 入力シートから日付をキーとして引用する計算式は、図の下の方のF5のセルの =IFERROR(VLOOKUP(F4,入力!$A$2:$C$50,2,FALSE)&"","") です。 $A$2:$C$50という、49行×3列のセル範囲の先頭列が日付の検索範囲で、2 は該当したら 2列目(B列)のセルを返すようにしています。 項目2の欄であるF6セルの計算式は =IFERROR(VLOOKUP(F4,入力!$A$2:$C$50,3,FALSE)&"","") です。違いはわかりますか? >>427 色変える条件式どう書いたか晒してみ? >>432 それだと数字以外でも支払済みになる >>408 返事が遅くなってしまいましたが、できました! ありがとうございます! 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 数式や関数がたくさん入っていて非表示になっているシート1があるとします。 VBAで、このシートのコピー(各セルの値はすべて値を貼り付け的な処理をして関数や数式は残さない) を別ファイルとして保存することは可能でしょうか? 可能なのかどうか、また、できればそのコード(長くなるならヒントだけでも)を教えてください。 >>437 可能です。 マクロの記録でもできそう。 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2019 【3 VBAが使えるか .】 可 【4 VBAでの回答の可否】 可 特に質問はないので、一応テンプレだけ。 >>437 特殊な処理無いし書いてることそのまんまやるだけ >>437 ようは、マクロの記録でも出来る そのマクロコードでオブジェクトやプロパティの意味を知りたければドラッグしてF1押せばマイクロソフトのサイトで解説してくれる >434 ありがとうございます! まだパッと見てもわからないので(笑) 少し夜考えてから質問させてください! 写真まで丁寧にありがとうございます(^◇^) >434 何分か見比べてみました。何となくわかります!(笑) 画像つきで丁寧に教えていただきありがとうございます(^^) VLOOKUP関数なるものは、検索してわかりました。(IFERRORも) これを使うには、入力シートが、横に項目1・2と続く場合に 拾うというものですよね。縦のものを拾う関数は存在しないんでしょうか。 お弁当屋さんなんですが、結構デザートまで入れると6種目あって、 メニューの品名も長くて。縦に項目1・項目2として、それを反映する関数だと 一番入力する人間もわかりやすいのかなって思ってしまい・・・ でも、これが一番よいのかも!? >>443 一応、HLOOKUPというものもある 今年後半からXLOOKUPというのも出るそうだ VLOOKUPよりindex+matchの方が使い勝手良いから使ってきたけどXLOOKUPの方が楽かもしれない >>443 まさか”メニュー”という言葉が出てくるとは! 自分は現在、福祉NPOに関わってて、ボランティアでパソコン関係の支援をしてます。 NPOの調理部門のメニュー表作成で以前作ったもののイメージをアップしたので参考にしてください。 https://i.imgur.com/rtRqHo9.png 左側のシートは”DB”シートです。同じ日付で4行あるのは、朝・昼・夕・おやつ の4種類のためです。 VLOOKUPの対象となるのはC列〜I列です。 出力側シートのC11セルの計算式が見えてますが、おもしろいことに「昼食」の欄(C9:C13)の計算式は 全て同一です。計算式中の ROW()-7 の部分で自動的に引用する列をずらしているからです。 C11セルなので ROW()-7 の結果は 11-7=4 → VLOOKUPの対象となるのはC列〜I列なので 4列目にあたるF列の値が引用されます。 vlookup をdisってようやくExcel上級者として認められる >>446 vlookupをindexとmatchで置き換えるのは中級レベル LOOKUPだと縦でも横でもいけるんじゃなかったっけ? INDIRECTとMATCHが好きだけど vlookup 初級者 indexとmatchで 初級者+ vlookupmatch 中級者 実務で間違いが起こらないように数式を組み立てる事が出来る、これが一番大事 技術が幾ら凄くても間違ってたら駄目なんだ 実務では無駄に凝った数式作って後でメンテする人に迷惑かけない事が大事 >>453 しかし自分が使うとなると実装したくなる病気が発病するよね〜 楽したい〜 分かるマン なんなら誰かが見つけて称賛されたいマン I列にゼロがあれば、そのセルをクリアにするようにしたいのですが For Each c In Range("I:I") If c <= 0 Then c.Clear End If Next c これだと結構時間がかかります。 早くするコードをおしえてください >>456 範囲の値を配列に入れてそれを処理したあとまた範囲に戻す >>456 オートフィルタかけたらいかんの? range("a:i").autofilter field:=9,criteria1:="<=0" range("i:i").clear range("a:i").autofilter それか、「0を含む」ではなく「0固定」なら置換使った方が楽で速いんじゃね >>456 Sub Macro1() 列 = 9 最終行 = Cells(Rows.Count, 列).End(xlUp).Row For i = 1 To 最終行 If Cells(i, 列) = 0 Then Cells(i, 列).Clear End If Next End Sub >>457-459 お、お前等 シートの最終行まで見てる事が遅い原因だぞ >>460 いや、Rangeを使ってるのが原因 Rangeは遅いから大量セルを弄るのに使うのは向かない Excelの機能でできることはExcelの機能で実現しないと遅くなるよな 大量のセルを扱う時はRangeじゃなくて配列で処理したら一瞬だよ 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 あいうえおおおかき(abcd)くけこさ(efef)しすせそた(gggg)ちつてと 上のようなパターンの文字列がありまして、いくつか(多くて5つくらい)のカッコで囲まれた文字列を除く計算式が知りたいです 結果こうなりたい あいうえおおおかきくけこさしすせそたちつてと 置換Ctrl-Hじゃなくて計算式でよろしくおねがいします。 >>401 >>404 ですが,いかがなものでしょうか? >>465 =substitute(a1,"あ","") みたいな感じで >>466 難c >>465 ユーザー定義関数使っていいなら出来るが VBA否だからなあ VBA実行ファイルと同じフォルダ内に複数のCSVファイルがあり、そのCSVの各ファイルのA〜Gの2行目以降を コピーしてVBAを実行するBookの“日報”と言うシートに張付けて、行を累積していくコードを教えてください。 それぞれのCSVファイルの最終行はA行の最後です。 >>471 何かの試験問題か? >A行って何? A~G言うから、これ列指定かと思ったら行と来たもんだ? そもそも、どういう構造のCSVやねん? 複数のシート間で対応するセル同士を相互リンクするのって関数じゃ無理ですか? どちらで更新しても全てに反映されるような >>472 すみません。A列でした それぞれのCSVファイルはA列〜G列に文字が記入してあります。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる