▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━ ・1 現行スレ内で既出の質問が無いか、ページ内検索をしよう。(Ctrl+F) ・2 図やコードを書く場合、TABや連続する半角スペースは無視されるので注意 ・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。何レス使っても構いません。 ・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。 ・5 回答内容でわからない部分があっても、すぐに聞き返さずにヘルプやGoogleなどで検索しましょう。 ・6 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。 ここは技術的な質問のみで。 ・7 VBAはプログラム言語のVisualBasic(6以前)に近い処理が可能で Excelに関係ないことも出来ます。 Excelの操作に関係ない部分は、スレ違いなのでここで聞かずにVB言語やAPI、COMについて自分で勉強し、 どうしてもわからない部分はVBスレやAPIスレなどの該当スレで質問しましょう。 但し向こうはプログラマのスレなので、構文規則などの最低限の事は覚えてから質問しましょう。 ここみたいに丸投げはダメですよ。 ・8 うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。 例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。 その上で、どううまくいかないのかを具体的に書きましょう。 エラーが出るなら、何処でどういうエラーが出るのか、 想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。 ・9 マルチはダメ。一度マルチしたら、謝っても他のスレの質問を取り下げても回答は得られないと思ってください。 ・A テキストボックス(エディトボックス)、コンボボックス(ドロップダウンリスト)、リストボックス、コマンドボタン、 チェックボックス、オプションボタン(ラジオボタン)、スピンボタン、スクロールバー、等の質問をするときは、 ユーザーフォーム、コントロールオブジェクト、フォームオブジェクトのどれなのかを必ず書くこと。 ・B 書籍や解説サイトの紹介以来はスレ以外。ここは技術的な質問のみで。
★ルールを無視すると…
>>1-2 あたりのルールに従うか否かは自由だけど、従わないと以下のような不利益があるよ
★1.マルチをしてしまったら…
A.謝っても他での質問を取り下げても、以後その質問に対する回答は付かない物と思ってください。
それが嫌なら初めからマルチなんてしないように。
>>2 にマルチ禁止と書いてあり、
マルチの意味が分からなければ検索すれば出てくるので、「知らなかった」は通用しません。
★2.
>>1 ★4に従わず、必要な情報を出さないと…
A.自分の使用しているバージョンで使えない機能を答えられたり、VBA使えないとか使いたくないと書かないと
VBAでの解決OKで自分でコード書けるものと勝手に解釈されて、「VBAで出来るから自分でコード書いて」程度の
適当な回答を返されたりします。また、ここではVBAコード書けない人の丸投げ依頼を許可してますが
これはきちんとルールに従って質問、依頼した人のみの特権です。
★3.情報・条件を後出しすると…
A.後から出された情報は意図的に無視されたり、質問自体を放置されたりします。
>>1 ★4の必須情報はもちろんのこと、要望や条件、既に試したことなどは、
長文になってもいいので詳細かつ明確かつ具体的に書きましょう。
★VBAについて
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法) ▼環境・書式 ・ 列数を256列以上、行数を65'536行以上に増やす (Excel2007以降では16'384列、1'048'579行扱える) ・ Excel2003以前で条件付き書式を3つ以上設定する (文字色だけなら、入力規則でも3つ設定可能。それ以外はVBA) ・ 行の高さを0.25きざみ以下の単位で指定する ・ セル内の文字を○で囲む、一部のみ2段にする (オートシェイプ、オブジェクト) ・ オートフィルタで英字の大小文字を区別する (小文字 → 半角、大文字 → 全角、と使い分ける) ・ 祝日を判断する (作業セルに祝日を列挙、VBA) ・ 同一列内でセル(行)ごとに列幅を変える、同一行内でセル(列)ごとに列高を変える (セルの結合) ・ ヘッダー・フッターのページ番号の開始番号任意指定、ページ番号演算、同シート内で違ったものを指定など ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する ・ 罫線幅の自由指定 ・ 表示形式で「10/ 1」といった書式を指定し、日付が一桁の場合のみ日付の前にスペースを入れる (TEXT関数、VBA) ・ 書式設定の「折り返して全体を表示する」と「縮小して全体を表示する」を同時に使う (折り返しを有効にして、手動で文字サイズを調整) ▼操作 ・ ファイラーの右クリックメニューからの新規作成で、Excelで設定したシート数のブックを作る (任意のシート数のテンプレートを作成) ・ 複数シートを選択して入力規則やシートの保護を設定する (VBA) ・ オートコンプリート機能を、別列や離れたセルで動作させる (VBA) ・ 選択範囲から一部を除く、Ctrlを押しながらの複数選択で一部を取り消す (VBA) ・ 優先キーを3つ以上指定しての並べ替え (優先度の低い方から順に並べ替える) ・ 1セルを分割 (分割したいセル以外を結合)
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法) ▼数式・関数 ・ 表示形式以外の書式の取得設定、書式情報を条件とする数式 (ユーザー定義関数) ・ 関数式でセルの選択状態を取得する (VBA) ・ セルの値でパスを補完して、開いてないブックのセルを参照する (VBA) ・ 入力したセルに結果を返す (VBA) ・ 範囲を引数にしての文字列連結 (ユーザー定義関数) ・ 値の書き換え、値の保持 (VBA) ・ 複数の結果を抽出、不定な数の結果を返す (VBA、結果の最大数が解っていれば最大数以上の式を論理式で組む) ・ 空白のセルの部分を上詰め、左詰めなどで表示する (作業セルを使って別セルに詰めて表示なら可能、それ以外はVBA) ・ VLOOKUP,HLOOKUP,MATCH等の関数で、検索語を全半角両方にマッチさせる (ユーザー定義関数) ▼VBA ・ ExecuteExcel4Macroの参照で空セルと0値を区別する ・ セルの値や変数値で直接変数名を指定する (配列、コレクション) ・ VBのコントロール配列と同じような操作をしたい (イベント以外ならコントロール名を「同名+連番」にしてControls(名前 & インデックス)で処理、イベントはクラスでWithEvents) ▼ユーザーフォーム ・ フォーム上から変更したプロパティ値の保持 (シートや外部ファイルに書き出して、次回読み込む) ▼グラフ ・ 棒グラフでひとつだけ突出したデータがあった場合に波線を入れて位置を合わせる (オートシェイプなどで見た目だけそうなるように弄る、別アプリでグラフを作り、オブジェクトとして挿入) ┌┐ 〜〜 ||
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。 間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。 Excel2010についても未確認な項目が多いので変更点が有ればご指摘下さい。 また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。 ここに書かれてないからといって必ず出来るはずだなんて思わないように。 >▼環境・書式 > ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する 補足 2007以降ではページレイアウトビューの表示時に限り、幅・高さともcm単位で表示され、 指定も同じくcm単位でできる。 ただし大元がインチ系なのでなかなかピタリの値は出ない。1cm→0.98cmのように 近い値に勝手に丸められる。
【1 OSの種類 .】 Windows7 home premium service pack1 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 お願いします。 今度、職場でルールや一覧表を書いたポケット版ガイドブックを作ることになりました。 A4で横書き。 それをさらに横半分にし、更にそれを1/4に折り、 合計1/8分割で裏表16ページ分を 作りたいのですが、 折ってもずれないようにするにはどういう工夫が必要でしょうか。(うまく説明できなくてすみません。) 1234 5678 こんなかんじです。 上半分下半分のページが綺麗に折れるよう、そして、隣同士の数字のページが綺麗に折れるようにしたいのです。 よろしくお願いします。
>>8 この質問はExcelとは関係がないと思うけど、余白はプリンタ毎に微妙に違うから、
好みの状態になるまで何度も微調整しながら印刷を繰り返すしかないんじゃない?
そういうことじゃなくて?
>>7 プリンタによるけど、割付印刷で設定できませんか
>>8 ワードに貼り付ける
Excelは画面上の表示と印刷でだいぶズレるから、何度も印刷するにしろWordとかに貼り付けて作業したほうが効率いいと思われ
Excelさんはホント印刷はオマケ機能だよね…
7です。ありがとうございました。 エクセルで作ったのをワードに移す時、シートの罫線が入ってしまうのですが、これってどうやって消すのですか?
14 :
名無しさん@そうだ選挙にいこう :2013/01/05(土) 15:13:42.01
>>14 表の作り方が不適切なんだけど、そこを直す気はあるかい?
単純な合計とかの計算なのに式を組むのが面倒って場合の要因の大半は
表作り、データ作りの基礎を理解しておらず、自己流で不適切な表を作っていることにあるんだよね
不適切な表のまま、無駄に冗長な式で計算するのをお望みか?
それとも表を適切な状態に作り換えて、簡単に合計を出す方が良いのか?
16 :
名無しさん@そうだ選挙にいこう :2013/01/05(土) 15:35:47.73
>>15 確かにそうですね。
でもなぜか横方式なんです。うちの会社。
17 :
名無しさん@そうだ選挙にいこう :2013/01/05(土) 15:42:02.79
すいません。もし直すとすればどう表を直せばいいか教えて下さい。
SUMIF()がつかえれば =SUMIF($B$2:$U$2,V$2,$B3:$U3) で「服」の合計が出る
間違えたので訂正 =SUMIF($B$2:$U$2,V$2,B3:U3)
そうか いずれにしても他の合計出すときはちょっと修正がいるな
>>17 正規化するのが一番だが、修正コストと改変の少なさと
計算の簡素化を両立するなら、1シートで一月(ひとつき)分にしな
で、1月、2月、、、12月、合計、ってシート作って
合計シートのB3に、
=SUM('1月:12月'!B3)
って入れれば、串刺し計算といってシートを跨いでの合計が出るよ
【1 OSの種類 .】 Windows7 home
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
ttp://i.imgur.com/crJsg.png B2:C6のような表があり、これをE2:F3のように抽出したいのですが、なんかいい方法はないでしょうか?
ピボットテーブル
誤爆?
>>25 名前でフィルタじゃだめなのか?
E2:F3のようにすると加工しにくくて後々困ると思うが
変換したいって話ではなく、抽出したいって話だから 元の表は弄らないのだろうから、後々困るとかいう話には繋がらないと思うが?
俺がやってやる、まってろ
やめや!VBAつかえ!!!!
33 :
25 :2013/01/05(土) 23:41:57.98
思いついたのはVLOOKUPと配列数式やな あとは頑張れ…
面白いなこのスレ
>>36 それはVBAのスレと違ってコテハンのおっさんがいないからだよ
38 :
名無しさん@そうだ選挙にいこう :2013/01/06(日) 00:58:10.95
複乳 vs VBA厨 糞コテの醜い争い 複乳の回答:回りくどいが初心者には分かりやすく感謝のレスも多かった人気者 VBA厨の回答:凝ったコードで初心者には理解し難く感謝のレスはあまり無かった厄介者
>>38 その2者は、2者同士の仲は良かったとは思わないが回りから見てるとお互い上手く補完しあえてたように見えたけど?
ほとんど常時常駐体制で簡単な案件に颯爽と回答付ける複乳と、複乳では対応出来ない難しい案件にも対応できるVBA厨って具合に。
スキルレベルで言えばVBA厨の方が遙かに上だったようだけど、あまり出てこない割に簡単な案件にもいちいち蘊蓄入れてウザいからVBA厨だけ居れば万事OKってこともなく、両者が居てこそスムーズに進むって感じだったな。
詳しすぎる回答者ってのは他回答者から嫉妬やヤッカミを買うからね コテ名乗って回答するなら弄れるくらいアフォの方が人気者になれる ここでの人気者だの厄介者だのというのは、解決したらもう来ない質問者視点ではなく 常駐している他回答者視点の話だからな 質問者に有り難がられても、他回答者に嫌われたらボロクソに言われる
パッケージ版を1つ購入すれば1台のPC以外にもインストールできたりするのでしょうか?
>>42 パッケージでもDSP版とかOEM版とかはあかんで。
1台の他に外出用とか同時に一台目と同時に使用しないことで 2台まで桶だべ。
45 :
名無しさん@そうだ選挙にいこう :2013/01/06(日) 14:01:49.48
ahoka
俺だ
いや、俺のことだろ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 否 例えば2012年12月分費用のブックを呼び出すのに sub test MsgBox (Workbooks("2012年12月分費用").Worksheets("2012年12月分費用") _ .Value) End Sub で2012年12月分費用がbookに開いてなければそこから呼び出すことは不可能なんでしょうか
>>49 MsgBox (ExecuteExcel4Macro("'[2012年12月分費用]2012年12月分費用'!R1C1")
VBAでの回答「否」ってどういうことだってばよ
間違えた MsgBox (ExecuteExcel4Macro("'[2012年12月分費用.xlsx]2012年12月分費用'!R1C1") かな
VBA初心者ですが ついにVBAの基本的な構文を一通りマスターして思うようにコードを書けるようになり早速数百の命令文を 書き上げてこれで作業を自動化してゆっくり寝れるかと思いましたが 書いている間に行き着いたのはコードだけもっと桁外れな作業が出来ると言う今までより柔軟で遙かに自由な全く未知の世界だったのです・・・・。 結局更に合理化するためのアイデアを色々と1から積んでいかないといけないのは間違いないと思われるので やはり寝る暇は無さそうですが一体どうすれば良いのでしょうか?
Excel2003のVBAで Dim atai as variant atai=Range("A1:E60000").value として大量データを格納する。このatai配列の大量データを、タブ区切りテキストファイルとして保存したい。 いま思い付く方法は、 open textFile for Append as #1 '書き込み用テキストファイル for r=1 to 60000 buf=r '連番を振っておく for c=1 to 5 buf=buf & chr(9) & atai(r,c) 'タブ文字で区切る next c Print #1, buf next r close #1 というループくらい。ただ、タブ文字を結合するやり方がスマートじゃない気がするし、大量データだと結構時間がかかる。 もう少し効率のいいやり方はないかな?
それ普通にシートタブ区切りテキストで書き出せば済むんじゃないの速度は知らんけど。 あとテキストストリーム保存だったら、バッファに全部まとめといて最後に1回writeすればいいんでないの。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel 2010 複数のブックがあり、お互いにリンクが張られています。 これらをマクロで開くとき、「更新しますか?」のメッセージを出さず、 強制的に更新させるにはどうすればいいですか? また、終了時には元に戻したいです。 Workbooks.Open FileName:="C:\Book1.xls", UpdateLinks:=3 Workbooks.Open FileName:="C:\Book2.xls", UpdateLinks:=3 Workbooks.Open FileName:="C:\Book3.xls", UpdateLinks:=3 みたいに書いてみたものの、うまく更新されません・・・
最近目を閉じてもExcelのCELLがはっきりと見える事があるのですが ここにいる人たちもそうなのでしょうか?
57 :
名無しさん@そうだ選挙にいこう :2013/01/10(木) 22:53:56.32
うっ
=SUMPRODUCT(範囲A, 範囲B) で計算するときに、Aは先頭から、Bは最後からの組み合わせで計算させたいのですが、 良いテクニックなどはありますか?
Excel初心者ですが 多数の表を集計している時に 1つのセルの中に複数の要素が入れられたら便利だのになあと思う時があるのですが状態にできれば
>>60 誤爆スマソ・;・
Excel初心者ですが
多数の表を集計している時に
1つのセルの中に複数の要素が入れられたら便利だのになあと思う時があるのですが、
たとえばある箇所だけ1セルに1つの表が凝縮されて入っているみたいな・・・
1セルに複数の要素を収納する方法はあるのでしょうか?
どういう妄想してるのか知らんが Excelでそんなことするメリットはない
>>61 イメージ通りになるかどうかはわからんが
セルにハイパーリンクを仕掛けて
セルをクリックしたら別のシートにある表を表示する
…といった程度ならできる
>>61 >>62 たとえば千個の表がありその結果をまとめる集計データを新しいbookで作るとします。
新しいbookには千個の表から抽出した結果のリストができますがその結果から千個の表のうちの30個を見たいとなるとその
30の表をを探して開いて分析するとなると結構な時間と手間がかかります。
千個の表を1ブックにまとめてリンクを張ったりしますとその作業だけで何日もかかりますし作ったリンクのほとんどは使われません。
そこでリンクではなくいっその事1セルの中に丸々表がはいていればすぐ見れて良いのになあと思いましたが・・w
>>64 現状再分析する30程度の表を開いて表を行ったり来たりしているうちに何をやっているのか全くわけがわからなくなります。
自分の経験不足が問題なのでしょうが。(笑)
>>63 ありがとうございます。
ピボットテーブルで
67 :
64 :2013/01/12(土) 15:36:21.11
>>66 やはりそれですか・・・何度か試しましたが思うように使いこなせませんでした。。またチャレンジしてみます。
ありがとうございます。
俺もピポットテーブル使いこなせん なんかいい例が載ってるサイト無いの? 俺が見たところは何処も非現実的な要素でしか構成されてないのでまったく参考にならん てか、ピポットテーブル使ってると要素が多すぎて何を表現したかったのか理解できなくなるタスケテ
>>68 必要な要素に絞って抜出し集計できるのがピボットテーブルの強みだと思うぞ
だから要素が多すぎて云々と言うのは理解できない
単に元のテーブルが整理されてないからのように思える
ピボットテーブル使いこなすにはどうしたらいいのって聞く奴は多いけど ピボットテーブル使いこなすにはピボットテーブルの使い方を勉強するのではなく データベースの扱い方を学ぶべきなんだよね
サンプルのデータファイルくれればピボットのサンプルつくるよ
>>64 そういう考え方のソフトはあるんですよ。
JMPとか
途中で終わっちゃった、 JMPとかQlikViewとかTableautとか 扱い方はちょっと異なるけど。 その範囲を選べば、それだけが対象として扱える。
日付 店 商品名 分類 価格 数量 で毎日家計簿つけとけ ある程度貯まったらピボットテーブル使ってみ? 便利さを実感できるから
ピポットテーブルを使いこなせないっていう意味がわかんね それってピポットテーブルを使う必要性がないってことじゃないの?
>>70 そういうとを言ってるんじゃないと思うぞ。
>>68 自分の仕事で必要なデータに出会えば
すぐに理解できるよ。
いまのところは基本だけ覚えておけば大丈夫だと思う。
77 :
76 :2013/01/13(日) 06:36:54.76
間違ったー
>>69 そういうとを言ってるんじゃないと思うぞ。
だった。
「そういうと」は間違いじゃなかったのか
>>76 =77
「自分の仕事で必要なデータ」が誰にでもすぐ
エクセルで処理しやすい形で提供される可能性のほうが
実際の職場では、はるかに小さいと思いますです
俺は
>>70 さんと
>>74 さんを支持したいな
80 :
55 :2013/01/13(日) 19:30:00.06
55ですが・・・
>>80 Application.DisplayAlerts = False
で、できなかったっけ?
データを流しこむ用のシートがあって、そこから集計用のシートに必要な部分(品名とか個数とか)をピックアップして集計を行い、ランキング化しております。 データは300行くらいあるのですが、中には不要な項目(大分類、中分類など)もあり不要な項目は除外するように設定したいです。 現在は =IF( OR(D19=0,C19="",データ!A19=" スナック",データ!A19=" 丼物"), "", データ!B19) な感じでやってますが、データに不要な項目が増えてきて数式に追加するのがダルくなってきました。 何より、数式が美しくないのがよろしくないです。 別途、除外リストを作り、そのリストに記載されているものはカウントしないようにしたいのですが、なんかいい方法はないでしょうか?
ピボットテ(ry
分析データで0〜1000までの破損強度を計るテストを500回づつ2つの異なる条件で行い 条件1と条件2の差違を割りだすに使える関数はありますでしょうか? データーは 90 88 102 67 89 と言ったようなデーターでそれぞれの条件で頻度が高い値は何かや 条件1には存在しても条件2では存在しない数値値はこれです! よって条件1と2は全くの別物とか類似しているとかと言うような事を 自動的にさらっと求める事を目指しています。。
>>82 除外リストをVLOOKUP()で参照する式を作業列につくってフラグたてる
あとはピボットテーブルで
1日 2日3日4日5日6日7日8日9日10日11日12日13日14日15日16日17日18日19日20日21日22日 累計 23年度 実績5 6 7 8 9 4 5 2 5 6 7 8 9 1 6 6 5 2 3 35 24年度 実績4 3 9 9 5 30 こういう表があり、累計にはどちらも同じ日での計算をする場合、延々とこんな式を入れて作りましたが、 もっと簡単にする方法はありませんか?マクロはなしで教えてください。 =IF(AND(ISNUMBER(B6),C6=""),B5,IF(AND(ISNUMBER(B6),ISNUMBER(C6),D6=""),SUM(B5:C5), IF(AND(ISNUMBER(B6),ISNUMBER(C6),ISNUMBER(D6),E6=""),SUM(B5:D5),IF(AND(ISNUMBER(B6),ISNUMBER(C6),ISNUMBER(D6),ISNUMBER(E6),F6=""),SUM(B5:E5), IF(AND(ISNUMBER(B6),ISNUMBER(C6),ISNUMBER(D6),ISNUMBER(E6),ISNUMBER(F6),G6=""),SUM(B5:F5),IF(AND(ISNUMBER(B6),ISNUMBER(C6),ISNUMBER(D6),ISNUMBER(E6),ISNUMBER(F6),ISNUMBER(G6),H6=""),SUM(B5:G5), IF(AND(ISNUMBER(B6),ISNUMBER(C6),ISNUMBER(D6),ISNUMBER(E6),ISNUMBER(F6),ISNUMBER(G6),ISNUMBER(H6),I6=""),SUM(B5:H5), IF(AND(ISNUMBER(B6),ISNUMBER(C6),ISNUMBER(D6),ISNUMBER(E6),ISNUMBER(F6),ISNUMBER(G6),ISNUMBER(H6),ISNUMBER(I6),J6=""),SUM(B5:I5),・・・・・・・・
88 :
87 :2013/01/14(月) 11:23:42.78
枠がずれてしまいましたが 1日〜22日までの累計があって23年度はそれぞれ5 6 7 8 9 4 5 2 5 6 7 8 9 1 6 6 5 2 3 と言う数字が入り累計には5日目までの数字を合計しています。 24年度は4 3 9 9 5と言う数字が入っておりその後は未記入ですので単純なsum関数でいいのですが、23年度は毎日24年に数字が入るために自動で同日の計算をするというものです。
>>87 そんな複雑なことしてもあとで困るだけ。俺なら日付は日付として扱う
A列:日付、B列:実績 の縦に長い票にする
同じ日で累計したいなら適当な列にDAY(A列)とでもすればいいし、実績以外のデータも自由に負荷できる
要するに、H24の入力済みの日付に対応する、H23の日付に入力された値の合計を出したいわけだな =SUMIF(B6:W6,">0",B5:W5)
式が複雑になる原因は、元の表の不適切さにあるという格言通りのパターンだな
87です。
>>90 おおおっありがとうございました。
これです。こんな簡単にできるんですね。
上のバカ長いAND関数をアップした私が恥ずかしい。いつまでも初心者の
域から脱することが出来ません。
ただし、H24で途中に空白がある場合、対応するH23の日付に値が入力されていると 正しい累計は出ない
セルに書いた複数行のコメントのうち、1行目だけマクロで取り出せますか? 下記の場合なら、txt1 = "あいうえお" にしたい。 ┌───────┐ │ あいうえお │ │ かきくけこ. │ │ 2013/01/11 │ └───────┘
95 :
94 :2013/01/14(月) 14:22:51.94
補足 コメントは、押し返しせずに改行で2〜3行です。
最近、ピポットテーブルって言えば許されると思ってる流れになってるよな
>>94 Sub test()
Comment = Range("A1").NoteText()
a = InStr(Comment, Chr(10))
txt1 = Left(Comment, a - 1)
MsgBox txt1
End Sub
>>97 それだと1行しかなかった時にエラーになる
>>94 こっちのが安全
a = Split(Cells(1, 1), Chr(10))
txt1 = a(0)
Debug.Print txt1
つ[コメントは、押し返しせずに改行で2〜3行です]
押し返しがなんだかわかりませんが、わたし気にしません
101 :
94 :2013/01/14(月) 15:30:55.63
>>97 ありがとうございます。
┌──────────────
|コンパイルエラー
|Functionまたは変数が必要です
└──────────────
になり、a= が反転してました。
Dim a As Integerにしたら、うまくいきました。
>>98 上記同様、コンパイルエラーになりました。
Dim a As Integerにしたら、
┌──────────────
|配列がありません
└──────────────
になり、a が反転してます。
未だ解決方法が見つからず・・・
>>99-100 すみません、折り返しの誤記です。
おいおい、同じエラーが出るもの教えてどうなるw Dim a() As String だろ あと a = Split(Cells(1, 1), Chr(10)) txt1 = a(0) は txt1 = Split(Cells(1, 1), Chr(10))(0) に要約出来る 間にUBoundでの例外処理を入れないならな
105 :
名無しさん@そうだ選挙にいこう :2013/01/14(月) 18:19:24.30
フィルターがかかったシートに 別のシートの選択範囲からのデータをコピペしようとすると みなさんおなじみの現象でうまくできません。 どうすればいいですか? (不明な点は「エスパー」願います)
無理
107 :
94 :2013/01/14(月) 18:35:55.69
>>102-103 また違うエラーが出てしまいました。
┌─────────────────
|実行時エラー '9':
|インデックスが有効範囲にありません。
└─────────────────
このとき、デバッグをクリックすると txt1 = a(0) で止まってます。
UBoundは、ググってもよく分からなかったので
とりあえず今回は考えないこととします。
>>93 空白ではなく0でも正しい累計が出ないのですが、0の場合は正しい数字が出る方法は
ないでしょうか?
Excel初心者ですが列のアルファベト表記は数が多くなると全くわけがわからなくなるのですが ユーザーインターフェース上の表記をA (1) B (2) と出ていれば初心者でもすぐわかると思うのですが 表示を強制的に修正することはできないのでしょうか?
>>109 PCにポストITで、それを貼っとく。
VBAでcells(i,"G")がOKと知り、剥がしたけど。
>>109 できません
列も行と同じように数字で表示する方法(R1C1参照形式)ならありますが
セルの表記がA(1)B(2)とかだと、慣れるにつれかえってわずらわしくなる
だけだと断言しときます
>>108 =SUMIF(B6:W6,">=0",B5:W5)
113 :
94 :2013/01/14(月) 19:54:06.80
a = Split(Cells(1, 1), Chr(10)) の Cells(1, 1) がダメだったのね・・・ 解決しました。
>>107 txt1 = a(LBound(a))
無意味なことをw
MsgBox "VBA厨さんの地方は大雪で大変でしたね"
?
>>112 ありがとうございます。
おかげさまで完全に解決しました。
【1 OSの種類 .】 Windows7 home 64bit 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 なるべくナシで 一行おきに色を変えたいです。 =MOD(ROW(),2)=0 が有名ですが、フィルタで非表示行があるときも、表示ベースで隣接している行に対して一行おきに色を変更したいです。 どうにかならないでしょうか?
>>119 2010ならテーブル使えばよかろ
挿入>テーブル
デフォのスタイルが1行ごと塗り分け済
Excel初心者ですが Excelを活用して億万長者になった人はいるのでしょうか?
【1 OSの種類 .】 WindowsVista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 作業で使う計算式を全部盛り込んだExcelシートを作り、最初は便利だと褒められていたのですが、 最近、「おまえのシートは重すぎる、軽くしろ」と言われ、修正を余儀なくされています。 そこで質問です。 現在、シートの軽量化のために、一番多用しているVLOOKUPを見直しているんですが、 A・A1=VLOOKUP(C2;D2:E53;2;0) B・A1=INDIRECT("E"&(MATCH(C2;D2:D53;0)+1)) どちらも挙動は同じですが、どちらがより動作が軽いでしょうか? VLOOKUPを使っているセルだけで数百個(下手をすると千くらい)あるため、 全部直してから「実はINDIRECT-MATCHのほうが重かった」では徒労過ぎるので、質問しました。 もし、VLOOKUPよりも、INDIRECT-MATCHよりも「更に軽い関数があるよ!」と言う場合は、 そちらを教えて戴けると非常に助かります。
126 :
125 :2013/01/16(水) 18:48:41.35
125です。追記が2つあります。 追記1・ 家のOpen Officeで式をコピッたため、カンマがセミコロンに化けました。ごめんなさい。 追記2・ ほとんどの式のD2:E53に相当するの部分は、数式〜名前の定義で、名前をつけています A1=VLOOKUP(C2,名前1,2,0) こんなかんじです。これ(名前の定義した場合)の重さも教えていただけると助かります。 つまり話を総合すると、以下の中から一番軽い物を教えていただけると有り難く存じます。 軽ければどんなに変則的な計算式になってもかまいません。 A・A1=VLOOKUP(C2,D2:E53,2,0) B・A1=INDIRECT("E"4&(MATCH(C2,D2:D53,0)+1)) C・A1=VLOOKUP(C2,名前1,2,0) D・その他、もっと軽い関数がある(〜〜関数<具体例>)
VLOOKUPが1000個くらいで重くなるようなら、PCを買い換えたほうがいい
【1 OSの種類】 WindowsXP 【2 Excelのバージョン】 Excel2007 【3 VBAが使えるか】いいえ 【4 VBAでの回答の可否】否 EXCELで以下のような表を作りたいと考えています。 A B C 1○ ▲ 5 2× ○ 4 3▲ ▲ 4 ・仕様としては、A列とB列には、○、▲、×のどれかを任意入力する。 ・○は3点、▲は2点、?は1点として、各行のA列とB列の和をC列に表示する。 この時C列に入る数式を教えて下さい。 よろしくお願いします
=FIND(A2,"?▲○")+FIND(B2,"?▲○")
>>125 つ 配列数式 (配列を引数にする式ではなく、配列に結果を返す方の配列数式)
この説明で解らないなら、
「私の能力では重すぎるシートしか作れないので、軽くする必要があるなら他の人に作ってもらって下さい」
と言って断るか、勉強して自分で組めるようになれ
解らない場合、断るか勉強するかのどっちを取るかは君に任せる
131 :
125 :2013/01/16(水) 21:18:38.64
>>127 自分以外の人間が、自分以外のPCでそのシートを使うときに「重い」なので、
安易に「PC買い換えろ」と言うわけには・・・。
ちなみに、家のOpen Officeではサクサクです。
Excelと仕様が違って、重いシートはファイル読み込みに時間がかかる代わりに、
一つ一つの計算式の結果出すのはアホみたいに軽いんですよ。
「重い」ってクレームに「ハァ?軽いじゃん」と中々気付かなかったくらいですよ。
>>130 配列数式ですね。ありがとうございます。
今検索してみましたが、中々軽そうで、しかも面白そうです。
元プログラマなんで、配列も、*,+によるand,orも熟知してるので、
簡単に直せそうです。
お二方、ご回答ありがとうございました。
配列数式だと早くなるんか??
VLOOKUPで重いから配列数式使うなんて状況ありえるんか??
つーか
>>125 単にゴミデータが蓄積してて重いとかそういうオチは無い?
何か目印として行全体塗りつぶししたり消したりよくわからん操作をするエクセル無知な人にエクセル使わせたら
1週間後とかに激重ブックに変身することあるけどそういう方向は大丈夫か?
エクセル 重い とかでググってまず出てくる
http://matome.naver.jp/odai/2134672226548347701 こういう内容は知ってますか?
特にここの「使ってない行・列の削除をする」の方法でゴミデータが確認できる場合、ブックを使う人がどこかで
間違った操作をしてゴミデータ増やしてる可能性あるよ。
条件付き書式とかつかってるとすげー重くなるのは確か 知らない間に増殖してるし
>>132 > 配列数式だと早くなるんか??
> VLOOKUPで重いから配列数式使うなんて状況ありえるんか??
ヒント:( )の中
ピボット初心者ですが 毎日記録されているデータを月ごとで集計しようといちばん上の枠に日付の項目を放り込んでみると 何をどうやっても1日ごとにばらけるのですが月ごとで集計結果を出すには一体どうすれば良いのでしょうか?
どのくらいかは状況によって違う
>>139 1/6
1/7
1/8
2/2
2/3
2/4
↓
1
1
1
2
2
2
に別列に変換する必要が有ると言う事でしょうか?日にち入りの状態では不可ですか?
秒単位で変化するデータを分析していますがシートに平たく書き出すのではなく ダイナミックにセルの数値が変動するような感じでExcelの表に時間軸を持たせる事は出来ないのでしょうか?
>まずはデフラグさせろ デフラグなんて言葉を久しぶりに見たw 貧乏人は苦労するよねw
>>139 >>140 月刊統計は何となくわかりました。ありがとうございます。
同様に週間統計とクオーター統計もピボットで切り替える対称にしたい場合もあるのですが、
この場合は何か自動で割り出す方法はあったりするのでしょうか?
手入力としたらクオーターはまだ何とかなりますが週間は数が多いとさすがにきついですね、、w
ピボットテーブルの月毎集計て グループ使うてまとめたらあかんの?(´・ω・`)
一時期に比べて過疎ってるような気がするけど ここ最近で急激にExcelの人気が落ちて 誰もやってる人がいなくなってしまったのかな? それとも寒くなるとExcelをする人がいなくなるのか?!
147 :
名無しさん@そうだ選挙にいこう :2013/01/17(木) 20:41:40.53
149 :
名無しさん@そうだ選挙にいこう :2013/01/17(木) 22:25:14.07
office2010 Windows8 です。 すみません、VLOOKUPが急に使えなくなりました。 今までできていたのに、CSVタイプのファイルを参照できなくなりました。 でも、以前作成してあった古いバージョンのエクセルファイル(xls)は参照できます。 範囲を参照すると、 「正しくありません」 となり、続行すると、 「このバージョンのファイルに、ワークシートのサイズである256列の外(IW列以降)または 65536行の外にあるエクセルを参照する数式を含めることはできません。」 とでます。 どうすればいいですか?教えてください。<m(__)m>
150 :
149 :2013/01/17(木) 23:18:40.30
今、yahoo知恵袋を検索したら、私とまったく同じ症状の方がいて、 それを参考にしました。 新バージョンのファイルに、旧バージョンのファイルをコピーしてVLOOKを試みたところ、 できました。 参照ファイルの問題ではなく、もとにしているファイルが、旧バージョンで作成したものだから だったようです。 ありがとうございました。
If 積雪 = True Then Call 雪かき()
153 :
名無しさん@そうだ選挙にいこう :2013/01/18(金) 10:35:22.57
If 童貞 = True Then Call 自殺()
>>152-153 If *** = True Then 〜
とか
If *** = False Then 〜
という書き方は冗長
True判定のIfなら
If *** Then 〜
Falseなら
If Not *** Then 〜
と書くべき
普通はね でも稀な例として、対象がTrue、False以外の値を返す場合もある そういう場合はIf *** = True Thenとする必要がある場合もあるので 「このケースの場合」ではなく、一概に「この書き方は冗長」というのはちょっと浅慮 例を出すと、値が"a"の場合 If *** = True Then なら正常な否判定になるが、 If *** Then だとエラーになる まあ変数や戻り値の型をValiantにして、真偽値も文字列も混在して格納する(返す)というのは 設計としてどうかとも思うが、言語としてそういうことも出来る仕様であり、実際にもそういうものが 存在している以上、覚えて置いた方がいい
素人はそこまで考えなくていい。 エラー出てから対処すればOK プロならそこまで考慮しなくちゃダメだがな。
エラーが出ればいいけどね 関数の戻り値がたとえ数値型でも If Func1 = 123 Then If Func1 Then はどっちもエラーにならないから演算子や条件は省略せず明記した方が安全
>>157 冗長の意味わかってないんじゃね?エラーが出るからとかそういう理由で=Trueを省くほうが良いと言ってるわけじゃないけど。
TrueFalseの判断でIf ○ ThenのところにBoolean以外を使う時点でおかしいからあなたの理論での安全性は必要ありません。
それを防ぐのは=Trueを省かないという方法じゃなくて、しっかり型を宣言して正しい型を使う事の方が重要。
@ If Func1 = 123 Then A If Func1 Then @は、もしFunc1が123だったらホゲホゲ Aは、どーゆー意味なの?
1がTRUEで他がFalseだっけ 0がFALSE 他がTRUE? どっちかになるんじゃないかな
>>159 VB、VBA、MS-BASICの場合はIf の条件に数値だけ書かれると「0」と「0以外」で分岐する
「0」がFalse
「0以外」がTrue
という扱い
N88-BASICの時代は、メモリを節約するために IF X+Y<>0 THEN みたいな式を IF X+Y THEN と書くのが定番のテクニックだった 当時はこれが当たり前だったから、あとで別人がソースを読んでも困ることなんてなかった
というか If ・・・ Then は、 If CBool(・・・) Then だと思えば良い CBool関数の規則でTrueやFalseにされる値はそれに CBool関数で真偽値に変換できない値はエラーになる
164 :
159 :2013/01/18(金) 20:09:19.41
>>161 へぇ〜、初めて知ったw
ありがとうごじゃりまする。
でもさ、俺は万年初心者だから If *** = True Then 〜の方が分かりやすいな。
TWB = ThisWorkbook.Name TWS = ThisWorksheet.Name と書いたら、 2行目で「オブジェクトが必要です」ってエラーになるんだけど、 ThisWorksheet.Nameじゃだめなんですか?
ThisWorksheetってどこから来たんだ? ブックに置いて、ブックは単一だからThisWorkbookというオブジェクトがあるが ブックに置いて、シートは不特定多数存在する可能性があるから ThisWorksheetなんてものは存在しないし仕様上ありえないんだが・・・ シートのコードモジュールでなら、Meでそのコードモジュールが属するシートのオブジェクトを掴めるから Sheet1のコードモジュールでMe.NameならSheet1が Sheet2のコードモジュールでMe.NameならSheet2が得られるけどね
シートは入れ子には出来ないのでしょうか? 例えば、日計表を一日づつ、またそれをひと月づつ、またそれを年度毎に入れ子にしてまとめ、 各々の時節の合計額を出すのを簡単に出来たらなと思うのですが。。。(子シートの同セル合計を親シートで出せたり)
視覚上でシートタブを入れ子にするってことは基本的に出来ないし むりやりやるにはVBAが必要だけど 計算上で親子関係を作るのは可能だよ 親、子1、子2、子3、1孫1、1孫2、1孫3、2孫1、2孫2、2孫3、3孫1、3孫2、3孫3 とシートを作れば、「子1」シートに =SUM(1孫1:1孫3!A1) で、「子1」の子である「1孫*」達のA1の合計が出せるし 「親」シートに =SUM(子1:子3!A1) で、子1〜3のA1の合計を「親」シートに出せる
そういうのは全データを1枚のシートに並べて、ピボットテーブルで集計した方が簡単だよ…
場合によってはそれな入力性が激しく悪くなる可能性があるからなぁ ユーザーフォームで入力補助フォーム作れるレベルならいいんだが ここで質問してる奴がそのレベルに達してるとは思えないし
171 :
167 :2013/01/19(土) 17:31:22.63 BE:1810737656-2BP(0)
なるほど分かりましたありがとう。 有用っぽいから簡単に出来ると思っていましたが、意外と難しいんですね。。 頑張ってやってみます。
普通はデータベースにやらせることだからね 当然データベースでは有用だからそういうことも出来るけど Excelはデータベースソフトじゃないからな 本当のデータベースを使いこなせない奴が、 簡易データベース代わりに使うことがあるというだけで
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 とあるセルに通貨を入力しようと思っています。 円なら"\10"に、ドルなら"$10"のように表示させようと思っています。 単純に"10"と入力しただけではそれが円なのかドルなのか判断のしようがないので 隣のセルに選択リストを作り、それが"円"が選択された状態なら"\10"と、 "ドル"が選択されている状態なら"$10"と表示させることができればと思っています。 どういう方法を用いればこういうことが可能になりますか?
IF TEXT
じゃ既に値が入力されてるセル自体の表示を弄るのは無理だな Excel2007以降なら、確か条件付き書式で表示形式指定できたと思うが 2003ではそれも出来ないし
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range For Each r In Target If r.Column = 2 Then Select Case r.Value Case "yen" ' Case "doller" ' End Select End If Next End Sub
隣のセルに円とかドルとか入力するくらいなら、かわりに¥と$を入力したほうがかんたんだとおもうが
みなさん、レスありがとうございます。 $か\を直接入力する方が簡単そうなので単純にそちらを選ぼうかと思います(^^;)
179 :
しおりん推し :2013/01/20(日) 12:19:27.31
Excelで2010の下付きアイコンが出せないけど, このアイコンありますか
ショートカットのこと言ってんの? Excel.exe右クリしてショートカット作成しろ
ホームタブにあるよ
下付きより上付きがイイな
挿入もいいよ
ピストンもいいね
185 :
しおりん推し :2013/01/21(月) 01:38:52.29
>>181 どうもないんだよね.
フォントのところの右下の斜め矢印から,
いちいちやってるんだけど.
>>180 あほちゃう?
アクティブセルの文字を下付にするマクロをショートカットに登録するのが一番手っ取り早いんでね。
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Sheet1のA列をSheet2のB列に引用するときは、Sheet2のB1に「=Sheet1!A1」で下へフィル Sheet2のB列をSheet2のC列に引用するときは、Sheet2のC1に「=Sheet1!B1」で下へフィル というのはわかるのですが これと同じことを、R1C1形式でやる場合にはどうすればいいのでしょうか?
>>189 それやってみて、表示をR1C1に変えてみればわかるんじゃない?
>>190 いや、文字単位でしたいのかなと考えていました
H2Oの2だけとか
>>186 なんで「下線」「下罫線」が2つずつあるの?
いっぱいあるとうれしいんじゃない?
196 :
名無しさん@そうだ選挙にいこう :2013/01/22(火) 12:25:19.05
フィルターしたシートに 他シートのSelectした部分のデータを 「うまく」コピペするためのコードを教えていただけませんか? コピー先だけがフィルターされてて、コピー元はフィルターされてません。 「うまく」とは表示されてるセルにちゃんと記入されるということです。
コードってことはVBA? 一旦フィルタ解除する、貼り付ける、再度フィルタ掛ける を自動化すればいいだけじゃね? テンプレ(質問時必須事項)を省略してるから こっちも具体的なコードは省略するが
まるちー
ず
B2〜D6セルの文字、コメント、色、罫線を消すマクロで 自動記録をちょっとイジって次のようにしました。 しかし、罫線の削除のところが長いので短いコードにできますか? With Range("B2:D6") .ClearContents .ClearComments .Interior.Pattern = xlNone .Borders(xlDiagonalDown).LineStyle = xlNone .Borders(xlDiagonalUp).LineStyle = xlNone .Borders(xlEdgeLeft).LineStyle = xlNone .Borders(xlEdgeTop).LineStyle = xlNone .Borders(xlEdgeBottom).LineStyle = xlNone .Borders(xlEdgeRight).LineStyle = xlNone .Borders(xlInsideVertical).LineStyle = xlNone .Borders(xlInsideHorizontal).LineStyle = xlNone End With ただし、B2〜D6セルの周囲に文字とかあるので、 Rows("2:6").Delete Shift:=xlUp ではダメです。
.Borders.LineStyle = xlNone
>>201 おぉぉ、凄いぃぃぃ!!!
ありがとうございます。
複数のExcelの表を手入力で集計していると異常に時間がかかったり 眠くなって全く進まない時があるのですが一体どうすれば良いのでしょうか?! 回避方法はあるのでしょうか?
そんなときこそVBA
>>203 自分に弱いってことなら、精神科にでも言ってみてはどうでしょうか
カフェインなら薬局でも買えるし、結構おすすめ
頭による結果の判断と評価の書き込みがあるのでなかなかそうも、、、VBAが鋭い評価を書いてくれると最高ですが!(笑)
> VBAが鋭い評価を書いてくれると最高ですが 「鋭い評価」をアルゴリズム化出来れば、VBAがその通りに評価してくれるよ いまやコンピュータは、将棋やチェスの世界の頂点と同等以上の思考をさせられるのだから
VBAに鋭い評価をさせることができることはできるが、 そのためには鋭い評価をできる視点が必要なわけで、 どんな人は評価されるまでもないコードを書けるわけで・・・ がんばれ、みんながんばれ時は流れて東へ西へ
209 :
名無しさん@そうだ選挙にいこう :2013/01/23(水) 02:47:33.45
210 :
名無しさん@そうだ選挙にいこう :2013/01/23(水) 02:49:21.23
211 :
名無しさん@そうだ選挙にいこう :2013/01/23(水) 02:52:49.31
あと例えばこのSUMPRODUCTの説明とか。
http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/sumproduct.htm サムプロダクト
=SUMPRODUCT(配列1,配列2)
・配列の対応する要素間の積をまず計算し、さらにその和を返します。
ただし、SUMPRODUCT関数は数値以外の配列要素は、0であると見なされます。
・SUMPRODUCT関数で複数条件の件数をカウントしたり、合計を出すことができます。
・SUMPRODUCT関数を用いて、1行/1列おきに計算することもできます。
なんでこんなに説明がへたくそなの?こんな書き方されたらわかるわけないじゃん。
SUMPRODUCT(A、B)って入力した場合、このAとBを、SUMPRODUCTはどうしてくれるのか
って書けよバカじゃねーのかよ。
なんでこのコンピュータ関係の説明ってみんなゴミ糞以下なんですかね?
日本語苦手なんですかね?っていうか相手に教える気があるんでしょうか?
ほんっとーにわかりづらいの。ていうか、あたかもこれは皆最初から知ってるかのように話すの。
ほんとゴミ。
何この痛い子? 「私はバカです」ってアピールしたいの? だとすれば大成功してるけどさ
213 :
名無しさん@そうだ選挙にいこう :2013/01/23(水) 03:07:49.08
>>212 人をバカ呼ばわりする前にまず正々堂々と反論してみろよ。
214 :
名無しさん@そうだ選挙にいこう :2013/01/23(水) 03:11:18.65
例えば SUMPRODUCT(A、B) この場合、AとBに何が起こるか って書かないと、応用きかないでしょ? >・配列の対応する要素間の積をまず計算し、さらにその和を返します。 なんでこんなわけのわからない書き方するの? 法律家とかの間で流行ってる、わざとわけのわからない言い回しをして、賢い人アピールですか? お前が賢いかどうかなんて、世界の99.99999999999999999999999999%の存在が興味がないんだが? だったらわかりやすく、応用が利くようにかけよ?
有効な質問残件無し 次の方どうぞ
「返す」って表現については俺もからまれた記憶があるなあ エクセル初めてって人に教えてたときのことなんだけど 関数に引数を渡すと答えが「返って」くるんだということが どうしてもイメージできなかったらしくて 「返す」ってなによ! とさんざんゴネられた 理屈抜きで慣れさせたほうがマシとひたすら 「とにかくこうしろ」といろいろなケースで簡単な関数だけ 使わせていたら、あるとき不意に理解したらしい 「あれ。こういうことだったの」と、文句を言わなくなった
もともとはreturnを直訳しちゃったのが問題なんだよな この手の翻訳が変なコンピューター用語はいっぱいある きちんと意訳すれば、関数は「解く」、あるいは結果が「出る」あたりになったと思うんだけどね
なるわけねーだろアホか
【1 OSの種類 Windows XP】 【2 Excelのバージョン Excel2007 】 【3 VBAが使えるか いいえ】 【4 VBAでの回答の可否】 否 図形描画で作成した図形に「テキストの編集」で入力した文章のフォントを変えたいのですが 特定のフォントがホームのドロップダウンリストに表示されず、変更できない状態です 特定のフォントというのが、自分でインストールしたフリー素材のフォントなのですが 3種類インストールした内、2種類しか選択できませんでした 普通のセルでフォントを変更する時は3種類全て選択でき、実際にフォントの変更が可能なのですが図形内のテキスト編集のみ何故かリストから消えている状態です ちなみに3種類のフォントは「過充電FONTフルBOLD」「過充電FONT細字フル」「じゃぽねすく」で 「じゃぽねすく」の選択ができません
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel97 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 データの入力規則「リスト」で元の値「=$C$1:$C$50」などが選べる他、 この=以降にIF条件式を入れるとそのIFの通りにリストを作れますが、 (例:=IF($B$1="OK",$C$1:$C$50,$D$1:$D$50)とすると、B1セルが「OK」の場合、 C1〜C50をリストにして、「OK」でないならD1〜D50をリストにできるようです) この際に、$C$1から$C$50までのデータの中で、 Nullや0のセルを除外してリスト化したいのですが、 どのような条件式を入れたらいいでしょうか? (例:C5とC10がNullの場合、C1〜C4、C6〜C9、C11〜C50だけを リストに表示させたい。尚、C1〜C50の値は他のセルの状況に合わせて 変動しますので決め打ちはできません)
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 始めたばかり 【4 VBAでの回答の可否】 可 教えてください。 Option Explicit Sub Macro1() ' ' Macro1 Macro ' ' Range("B2:B10,B12,B12:B17,B19:B26").Select End Sub 同じSelectをCellsを使ってやりたいのですが、どのように書いたら よいかわかりません。教えてください。(マクロの記録って、A1形式でしか記録してくれないんですよね。)
>>222 Range(Cells(1,2),Cells(3,4)).Select
で、1行2列のB1から、3行4列のD3までのB1:D3
Cells(2,2).Resize(9).Select
で、2行2列のB2から9行範囲のB2:B10
Union(Cells(12, 2).Resize(6), Cells(19, 2).Resize(8)).Select
で、12行2列のB12から6行範囲のB12:B17と
19行2列のB19から8行範囲のB19:B26を合わせてB12:B17,B19:B26
With Columns(2)
Union( _
Range(.Cells(2), .Cells(10)), _
Range(.Cells(12), .Cells(17)), _
Range(.Cells(19), .Cells(26)) _
).Select
End With
で、2列目の、2行目から10行目と、
12行目から17行目と、
19行目から26行目を合わせてB2:B10,B12:B17,B19:B26
>>223 ううう、思ったよりずっと複雑なんですね。
じっくり読んで勉強させて頂きます。
ありがとうございました。
VBAについて質問ですが 複数のExcel画面を立ち上げ多場合それぞれの画面で同時に違うコードを走らせる事は可能なのでしょうか? VBAは裏でつながっててだめですとか言われてしまうのでしょうか?
>>225 複数のExcel.exeを起ち上げれば、Excel.exe単位で個別にコードを実行させることは出来るけど
一つのExcelで複数のブックを開いて、そのブック単位で別々のコードを実行させることは出来ない
というか、俺もVBAを簡易開発環境代わりに使ってた初心者の頃、複数のコードを同時実行したくて
同じ疑問に行き当たったが、ブックやシートを操作するのがメインでそれの補助にVBA使うのではなく
コードを実行するのがメインなら、VBSなりVB2010EEなり使った方が煩わしさは少ないよ
227 :
225 :2013/01/23(水) 21:33:05.61
>>226 詳しい説明 ありがとうございます。
まだ右も左もわからないVBA初心者ですのでVBS?は初耳です調べてみます。
228 :
225 :2013/01/23(水) 21:40:11.78
>>226 ちなみに利用目的はExcelの数値をあれこれ集計する作業の高速化です
初心者ながら命令コードはいきなり千行を超えて処理にもっさり時間がかかってしまう問題がでたため
コードを分割して実行できればと思いました。
とりあえずプロシージャの記述が大きすぎますとかしかられましたw
そんなにでかいとメンテできなくなる 適当に分けてmainから呼び出す形にしないと
処理が複雑だからコードが多いんじゃなくて 冗長なことやってるからコードも処理時間も膨大になってるだけだろうな まあ俺も経験した道だがな
ちゃんとテーブル作っておけば、集計なんかピボットで一瞬なのに
ちゃんとエクセル使えない人が作ったデータを集計しなきゃならん事はよくあるんだぞ。
データをテーブルが使える形に加工するのが速いか 関数やVBAを駆使しまくって集計するのが速いか そういう問題だわな その場限りの集計でいいのか データが更新されたら継続的に集計しなけりゃならんのかにもよるが
そこでindirect
ところが毎回表の大きさが変わってな… なんで必要な項目まで増えたり減ったりするんだよ、「備考2」なんて追加したの誰だよ
>>234 indirectで済むのはむしろ単純な部類だ
エクセル初心者さんが作るデータを舐めてはいけない
VlookupとIndirectを組み合わせればなんとか 場合によってはVlookupじゃなくてIndex使わなきゃいけないときもあるが、数式が長くなってデバッグに難がある以外は問題無い デバッグといえば、ifを使うときは if(a1=0, "111", "222") みたいな感じで確認しやすいように改行して編集したりするんだけど、バージョンによっては改行が保存されてなかったりするよな
どうせなら改行だけでなくインデントも使うと更に幸せになれるかも × =if(a1=0, "111" ,if(a1=1, "222", "333")) ○ =if( a1=0, "111", if( a1=1, "222", "333" ) ) 因みに、俺は自作アドインに「数式自動整形」「数式整形解除」の機能を盛り込んでいるので 数式の確認やデバッグの時だけボタンひとつで改行&インデントして、終ったら基本的に1行に戻してるので 数式においては整形状態が保存されないとかは知らないし関係ない感じだな セル内改行してると、そのセル選択した場合に数式バーがシート上に出張ってきて邪魔なので 数式に限らずセル内改行は極力やらず、やっても基本的に1改行で2行までにしてる でも数式ではなく文字列でセル内改行が勝手に解除されるとしたら、かなり問題だと思う 改行が保存されないのは数式の場合だけ?それとも数式に限らずセル内改行は勝手に消えることあるの?
2010で印刷設定って昔のようにできなくなった? プリンター買い換えたら余白の大きさが全部変わって、 1枚ずつ再設定で死にそう 少なくとも2003では複数シート選択して一括で変更できたのに
>>238 インデントはめんどくさいな
さすがにそこまで視認性が必要な状況は無いだろう。
>>239 これを機にvbaを覚えてみては?
>>240 プリンターの機種ごとに固有の設定はVBAでも鬼門だよ
用紙サイズの選択ぐらいしかまともにできない
インクジェット専用紙を手挿しトレイに入れてフチ無し印刷とかやろうとするとドハマりする
Excelで、インクジェット専用紙を手挿しトレイに入れてフチ無し印刷する書式ってどんなもの?
243 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 11:52:00.32
A1235.xlsx A22356.xlsx A31415.xlsx A4126.xlsx 上記のファイルを開いてる状態で、A1235.xlsx と A22356.xlsx を 変数に入れるとき、@とAにはどう書けばいいですか? For Each wb In Workbooks If Left(wb.Name, 2) = "A1" Then Set wb1 = @ ElseIf Left(wb.Name, 2) = "A2" Then Set wb2 = A End If Next
Set wb1 = wb
>>244 ありがd
でも、もう少し根が深かったので再質問です。
各ファイルのアクティブなシートをSetしなければなりませんでした。
次の書き方で動きましたが、ブックをActivateせずに変数に入れられますか?
Workbooks(wb.Name).Activate
Set ws1 = Workbooks(wb.Name).Worksheets(ActiveSheet.Name)
ついでに、セルやシートやブックを対象に何かするときに アクティベートしている状態でないといけないか、それともアクティベートしなくてもいいか、 その基準みたいなものはありますか?
247 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 13:13:10.75
たくさんのセルの文字列を連結するにはどうすればいいですか? さらにそのセル間に"-"のハイフンを入れたいです。 例えば、A1セルからJ1まで山手線の駅名が入ってて やりたいのは「新宿-渋谷-恵比寿-品川-有楽町-東京-新橋-秋葉原-上野-池袋」を1つの別のセルに出力することです。 *山手線の途中の駅名が省略されているという苦情は受け付けません。
>>246 以前は、対象のブックをその都度Activeにし、シートをSelectして、
Cells(i, 1) = "" とか書いてましたが、今は Set 変数= hogehoge にして
変数.Cells(i, 1) = "" にしてます。
249 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 13:14:54.33
*新橋も受け付けぬ。
Sub 山の手() For unko = 1 To 10 chinko = chinko & "-" & Cells(1, unko).Value Next unko Range("A3").Value = Right(chinko, Len(chinko) - 1) End Sub ダサw
251 :
247 :2013/01/25(金) 14:00:10.13
>>250 ちょっとそのコード臭いんですけど。
というかVBAはわからないんで、普通のExcelの関数かなにかでお願いできないかしら?
ほれw =A1&"-"&B1&"-"&C1&"-"&D1&"-"&E1&"-"&F1&"-"&G1&"-"&H1&"-"&I1&"-"&J1
=CONCATENATE(CONCATENATE(A1,"-",B1,"-"),CONCATENATE(C1,"-",D1,"-"),CONCATENATE(E1,"-",F1,"-"),CONCATENATE(G1,"-",H1,"-"),CONCATENATE(I1,"-",J1))
254 :
247 :2013/01/25(金) 16:19:49.55
書いたように「A1セルからJ1まで」はただの例。 実際はいろんなセルアドレスだし 1行とはかぎらず複数行x複数列のこともあるのに。(このときは左上から始まり右に、行の最後で次の行の最初の列に行く)
255 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 16:30:15.95
ピボットテーブルは何のためにつかいますでしょうか? まず1行で趣旨を教えていただき、 次に詳細を教えていただくか、まとめサイトにご誘導ください。
256 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 16:33:06.13
>>254 対象が変わったら式の中のアドレス書き換えれば良いだけの話でしょ
心の中で「このセルとこのセルと・・・このセルを連結したい」と思ったらその通りの結果になるなんて
VBA使っても無理なわけで、対象が変わったら書き換えを行うことは絶対に避けられないし
ただ、規則性があれば書き換えが楽なVBAを使うか、VBAの使い方勉強するの面倒なら手軽に使えるが
書き換えはやや面倒な数式使うかで、君は数式使うことを選択したわけだが、やっぱりVBAがいいってなら
例の悪臭漂うコードから悪臭(変数名)だけ変えればいいし
258 :
247 :2013/01/25(金) 17:02:32.80
どいつもこいつも、使えねーやつらだな。
2つも最初の質問を解決できる回答が付いたのに それでも使えないと言うなら、君が条件後出しばかりで きちんと質問できてなかった証拠だから、自分の使え無さの裏返しということになる
260 :
247 :2013/01/25(金) 18:26:25.29
261 :
247 :2013/01/25(金) 18:28:09.40
>>259 どちらもハゲのそのまんま東のようにそのままつなげただけじゃん。
「関数名(選択範囲, 連結文字)」みたいなのがあったらそれを教えてほしいし
なければもっと汎用的に使える方法を知りたい。
そんなお馬鹿な247に・・・ っ[ユーザー関数]
範囲指定して文字列を連結できないか、という質問は飽きるほど見てきた しかし、いまだにそういう機能は提供されてない 現状はマクロを使うしかない
>>261 Function 関数名(選択範囲, 連結文字)
For Each c In 選択範囲
s = s & c & 連結文字
Next
関数名 = Left(s, Len(s) - Len(連結文字))
End Function
使い方
=関数名(A1:J1,"-")
>>261 Excelのバージョンが分からないのだが、
最新版を使ってるならこれでどうだ?
=Combined(A1,"-",E9)
注:A1からE9まで、全てのセルに文字列を入れてから使え!
266 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 19:53:32.68
セルやシートやブックを対象に何かするときに
アクティベートしている状態でないといけないか、それともアクティベートしなくてもいいか、
その基準みたいなものはありますか?
>>248 さっぱり分かりませんがどういう意味ですか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 加工したファイルを保存するとき、同じファイル名があったら 「○○というファイルが既にあります。置き換えますか?」とメッセージが出ますが、 このとき「いいえ」または「キャンセル」をクリックするとエラーメッセージが出ます。 エラーメッセージを出さないようにするにはどうすればいいでしょうか? 無条件で上書きしたくないので、Application.DisplayAlerts = Falseでは駄目です。
>>267 これVBA使って良い質問だよね?
んで、エラーメッセージってどんなの?
多分、保存をキャンセルしたことで
保存を前提に組んでるVBAのコードと不整合が生じてるんだと思うんだけど。
とりあえずエラートラップ入れて例外処理組んだら良いんでないかい?
つーかVBAの質問ならソースぐらいさらそうよ
>>268 実行時エラー '1004'
'SaveAs' メソッドは失敗しました: 'Workbook' オブジェクト と出ます。
267の説明だけで、エラーは書かなくても分かると思い敢えて書きませんでした。
SaveAsまでの過程は関係ないので、ソースも不要だと思ってます。
270 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 21:21:35.07
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 4行*4列にランダムな4桁の数字が入ってる表があります。 別途指定する下2桁と一致する4桁の数字の数を数えたいです。 4444 3141 1245 5364 指定の2桁=44 4548 1241 1295 5364 その個数=? 1611 2044 3733 4955 2647 2728 3343 4950 この例だと(4444と2044だから、) その個数=2という風に。 modを使い、100で割った余りが44だったらプラス1みたいにすればいいと思うのですが。。。 sumproduct やcountifやsumif を使いましたがどれもうまくいきません。どうか知恵をよろしくお願いします。
>>269 回答にソースが必要か否かの判断を自分で出来るくらいなら
回答そのものが不要だと思ってます。
以上。
>>270 =SUM((MOD(A1:D4,100)=44)*1)
を入力したらCtrl+Shift+Enterで確定
式が { } で囲われた状態になれば正しい結果が出てるはず
44の部分は指定数値を入力するセルアドレスに書き換えて
>>271 なるほど、俺って案外できる子なのかも・・・
ちなみに、「以上」と書いたあとは句点を打たないんだよ。
勉強になったでしょ?
残念、ハズレ
274 :
247 :2013/01/25(金) 21:53:52.77
どいつもこいつも、使えねーやつらだな。
275 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 21:54:50.61
>>272 × 勉強になったでしょ?
○ 勉強になったでしょ。
日本語は正確にね。
276 :
247 :2013/01/25(金) 21:55:40.73
278 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 22:27:39.91
>>270 です。
>>271 ありがとうございました。一発でできました。すばらしいです。
ご相談なのですが・・・
会社のPCにはexcelがはいっていて成功したのですが、
このファイルを家の、excelが入ってないopen officeのcalで
使おうとすると、 open officeは Ctrl+Shift+Enter は
対応してないようで、エラーになってしまいます。
Ctrl+Shift+Enterを使わない代用方法はありますでしょうか?
>>275 問いかけだから、「勉強になったでしょ?」でおk
間違った内容じゃ勉強にならないから、問いかけなら 「いいえ」 と答えてやればいいのか?
以上。 初めて見たよw こんなバカな書き方w
283 :
267 :2013/01/25(金) 22:53:53.41
>これVBA使って良い質問だよね? んなこと書かなくても判るだろ? >んで、エラーメッセージってどんなの? 書き込みをキャンセルしたときのエラーも知らんのか? >つーかVBAの質問ならソースぐらいさらそうよ もぅね(ry >とりあえずエラートラップ入れて例外処理組んだら良いんでないかい? これだけマトモな回答だったな
>>282 >なにか間違っているか、もう少しぐぐったりして頑張ってみて。
・・・もう少しぐったりして・・・・
って読んじゃった。
>>283 こちらからは質問者のスキルレベルは分からないし、
質問者が勘違いしていたり訳分からんことしてるケースはままあるわけで
ああいう文章からそれを読み取ることは難しいのよ
一応、ありがちなエラーの原因は予想したから回答だけはしておいたでしょ
エラーメッセージやソースの開示を求めるのは
そういった要素からなら過不足なく状況を把握できる可能性が高いからだよ
286 :
名無しさん@そうだ選挙にいこう :2013/01/25(金) 23:43:23.32
>>270 =
>>278 です。
>>282 ありがとうございました。
LibreOffice にしたら一発でできました。
そして、さっきはできなかったんですが、
いまやったらOpenOffice でもできました。
お手数おかけしました。
>>281 見識が狭いんだね。
勉強になったかい?
高卒ニートかw 論文を書いたこともなければ、ビジネス文章すら見たことないなら 知らないのも無理は無いなw ハロワ行って、履歴書の書き方でも教わって来いよw 以上。 なんて書いたら注意されるぞw
つーか、エラー対策としてエラートラップを入れて回避するなんて当たり前なんだがな。 もっとも、エラートラップは回避策の手段であり、エラーの原因を潰しておかないと だめなのは言うに及ばず。
なんでいつも正しい日本語講座が始まるんだ? こんなとこの書き込みに正しい日本語の書き方なんて意識してねーし。
>>288 もういいって
こういうのって無理すれば無理するほど
後で自分のカキコを読み返して恥ずかしくなるぞ
以上とか書いて恥ずかしくない神経の奴に何言っても無駄だ
履歴書w 箇条書きの最後に付ける「以上」と 文章の最後に付ける「以上」を混同してたわけか 奴が何故「以上。」に執拗に噛み付いてたか解った まぁ、頑張って就職活動してくださいな
ところで質問の件は解決ということなのかな
解決 以上。
これで両方解決か
297 :
247 :2013/01/26(土) 09:35:53.00
俺の問題が解決してないんですが
例の2つ以外に、後出し条件にも対応した回答が更に2つ付いてるじゃん ってことでこれも解決 有効な質問残件なし
____________________ || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| || || || 回答にソースが必要か否かの判断を自分で出来るくらいなら || 回答そのものが不要だと思ってます。 || || || || 以上。 || || || || 箇条書きの最後は 以上。 です || いいですね || 。 ∧_∧ || \(゚ー゚*) ||____________________ ⊂⊂ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄| ∧ ∧ ∧ ∧ ∧ ∧ |____| (・,, ∧ ∧ ( ∧ ∧ ( ∧ ∧ 〜(_( ∧ ∧ __( ∧ ∧__( ∧ ∧ 〜(_( ∧ ∧_( ∧ ∧_( ∧ ∧ カジョウガキ? 〜(_( ,,)〜(_( ,,)〜(_( ,,) @(___ノ 〜(___ノ 〜(___ノ / は〜い、先生 \ 以上。
負け犬の遠吠え見苦しい・・・
>>293 >箇条書きの最後に付ける「以上」
そもそも箇条書きに「以上」なんて書かないし、271は箇条書きじゃないし・・・
バカなの?
以上。
的外れなこと言い続けてると、その時は悔しさを紛らわせることが出来ても 後から読み返したり思い返したりして、余計に惨めになるからほどほどに
Excelの雑談ですらないんだけどな。 単に情報後出しどころか出し渋りした奴が まともな指摘に逆ギレして暴れてるだけで。
>>298 これが解決してません。
A1235.xlsx
A22356.xlsx
A31415.xlsx
A4126.xlsx
上記のファイルを開いてる状態で、A1235.xlsx と A22356.xlsx のアクティブシートを
変数に入れるとき、ブックをActivateせずに変数に入れられますか?
For Each wb In Workbooks
If Left(wb.Name, 2) = "A1" Then
Workbooks(wb.Name).Activate
Set ws1 = Workbooks(wb.Name).Worksheets(ActiveSheet.Name)
ElseIf Left(wb.Name, 2) = "A2" Then
Workbooks(wb.Name).Activate
Set ws2 = Workbooks(wb.Name).Worksheets(ActiveSheet.Name)
End If
Next
306 :
名無しさん@そうだ選挙にいこう :2013/01/26(土) 10:35:20.11
ついでにセルやシートやブックを対象に何かするときに アクティベートしている状態でないといけないか、それともアクティベートしなくてもいいか、 その基準みたいなものはありますか?
>>306 質問の意図が分からないですが、
>>248 ではダメですか?
今まではアクティブ、セレクトしてた
今はSet 変数にしてる
つまり、基準は後者です。
したがって、ブックをActivateせずに変数に入れられるかという質問です。
>>305 Application.ScreenUpdatingdeで表示更新止めておけば
Activateメソッド実行しても逐一表示上でActivateされることはないよ
それすらダメだというなら、内部でしかActivateされず、
表示が切り替わる煩わしさもないActivateメソッド実行に
なんの弊害があるのか聞こうじゃないか
309 :
306 :2013/01/26(土) 10:53:20.37
>>307 さっぱり分かりませんがどういう意味ですか?
たとえばアクティブじゃないシートに対してSelectしようとすると
エラーが出てエラいこっちゃということになります。
でもその対象シートをアクティベートしたあとにSelectすると
問題なくできる、というようなことを言っています。
よくわからんが、こういうこと? For Each wb In Workbooks Set ws = Worksheets(wb.ActiveSheet.Name) MsgBox ws.Name Next
>>308 Application.ScreenUpdatingdeは、いつも宣言しています。
画面が切り替わるのが嫌だから、という意味ではないです。
かなり前ですが、Range("A1").Select: Selection.Copyのような書き方は
無駄で動作も遅くなると指摘され、シンプルにしようと心掛けています。
そこで、今回の質問はActivateせずに変数に入れられるか否か、という
疑問が出てきたわけです。
結果的にできないなら、このままで大丈夫です。
>>309 なぜ理解できないのかが理解できません。
(しかも、二度も同じコピペとか)
アクティブじゃないシートに対してSelectしようとするとエラーが
出るのは、前スレあたりでも話題になりましたので知ってます。
ただ、今回の質問は For Eachで開いてるブックを探し、該当する
ブックのアクティブシートを変数に入れるものです。
(何度書けばいいのやら・・・)
あれ、これでいいのか? For Each wb In Workbooks Set ws = wb.ActiveSheet MsgBox ws.Name Next
Excel2010を立ち上げると、こんな感じで複数のファイルが出てきます。
ttp://uproda.2ch-library.com/627777hP9/lib627777.jpg これらの中で、(a)と(c)は不要なので消したいのですが、ぐぐったら
「PERSONAL.XLSB」は各ユーザーのExcel起動用のフォルダ「C:\ユーザー\(アカウント名)\AppDate\Roaming\Microsoft\Excel\XLSTART」 に保存されます。
と出てきたものの、AppDateとかRoamingとかのフォルダが見つかりません。
スタート - 検索から *personal* で探しても出てきません。。。
どうやって消せばいいでしょうか?
あと、(b)が怪しいですが、消してもいいのでしょうか?
>>313 (a)(c)を選んで、イミディエイトウィンドウで実行
DebugPrint ThisWorkbook.Path
(b)はアドインで分析ツールをはずせばよい
>>312 ありがとうございます。
シンプルでいいですね。
しかし、スキルが低い回答者にレスされるのも迷惑だよね。
自覚があるのはよいことです
ごめんね
319 :
名無しさん@そうだ選挙にいこう :2013/01/26(土) 23:38:59.78
以上。 これ、他スレでも使って流行らせようぜw
結局リボンって使いやすいの?
2003との併用は苦労する。 切り替えなら慣れで何とかなる。
慣れ
未だに悔しがってるとかどんだけw つーか珍しくも何ともないから流行るもクソもないだろw
新しく始める人に教える場合は 確かに2003までの頃より 2007でリボンにかわってからのほうが 覚えが速いみたい あくまで俺個人の印象だし、それほど大量の人間に 教えているわけではないので、一般的かどうかはわからん
>>316 246はともかく、266、306、309はトンチンカンだったなw
結局この人は質問者を困惑させたかっただけだろ?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel203 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 @表 [日付け] [1][2][3][4][5][6][7]・・・ [たろう ] [a][a][b][b][c][a][x]・・・ [じろう ] [b][c][x][a][a][b][a]・・・ [はなこ] [c][b][a][x][b][c][b] ・・・ : A表 [a勤務][b勤務][c勤務][やすみ] [1日] [たろう][じろう][はなこ][ ] [2日] [たろう][はなこ][じろう][ ] [3日] [はなこ][たろう][ ][じろう] : [31日] @表からオートフィルタを使って名前を抽出し、同じシート内のA表に貼り付けたいです。 実際の人数はもっと大勢で勤務パターンも多いです。a、b、c・・・の各勤務の人数は1日最大7、8名です。A表は縦にどんなに長くなってもおkです。 1日のa勤務の人を抽出→コピー貼り付け→b勤務の人を抽出→コピー貼り付け→c勤務の人を抽出→コピー貼り付け→2日のa勤務の人・・・・ という具合に1ヵ月分を一気にやりたいです。今は1日づつチマチマやってます。 ネットであちこち見ましたがいまいちわかりません。よろしくお願いします。
そんな貴方にピボットテーボ
まず、たろう、じろう、はなこに社員コードつけた方がいいぞ
@表からオートフィルタを使って名前を抽出し、同じシート内のA表に貼り付けできる? 俺には無理だわw
Set MENU = Worksheets("MENU") MENU.Copy After:=MENU このようにして追加したシートの名前を"MENU2"に変え、 Set MENU2 = にセットするには?
【1 OSの種類 .】 Windows Xp Home Edition SP3 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 クイックアクセスツールバーに追加できる要素「ドキュメントの場所」で 表示できる長さを長くしたいのです。 Excel2003ではマウスでドラッグして長く出来たのですが、 Excel2007では同じ方法では出来ませんでした。 何か別の方法があるのでしょうか? それともサイズ変更することは出来ないのでしょうか?
>>333 固定だと思ふ
幅が足りなくなれば(そうとう多くのボタンを置かないとそうならないが)
横向きの▲▲が出てそこから選べる
336 :
333 :2013/01/27(日) 19:30:56.74
>>334 そうですか固定ですか。残念です。
開いているファイルのフルパスをひと目で確認したいというニーズは、あんまり無いのですかね。
回答ありがとうございました。
開いているファイルのフルパス、をニーズにするほうが問題と思う 似たようなファイルの数式を書き換えるならわかるが、 今のファイルがどれか・・・は、まずいと思う
338 :
332 :2013/01/27(日) 20:09:16.45
ねぇねぇ、332だけど誰か教えて〜
>>336 「ドキュメントの場所」ではなく「ドキュメントの詳細プロパティ」ボタンじゃあかんかね?
その場に表示されるのではなくワンクリック必要だが
>>333 リボンの下に表示するようにしても、だめかな。
>>332 こういうこと?
Dim Menu As Worksheet
Set Menu = Worksheets("MENU")
Menu.Copy After:=Menu
Dim Menu2 As Worksheet
Set Menu2 = Menu.Next
Menu2.Name = "Menu2"
342 :
332 :2013/01/27(日) 21:13:55.78
例えば10万から6%引くにはどうすればいいんですか
>>343 a1=100000
b1=a1-a1*0.06
345 :
333 :2013/01/27(日) 21:29:44.31
>>339 パスがプロパティのウィンドウに収まらないほど長かったりするので、
ワンクリックで確認できないことが多そうです。
>>340 リボンの下に表示しても長さは変わらないようです。
回答ありがとうございました。
>>345 じゃ、QATにフルパス表示するマクロを登録するとか
>>345 確認するだけでいいなら、
オフィスボタン=>配布準備=>プロパティ
を選択すると、シートの上に新しいバーが出てくるので
ちょっと小さく(細く)しておいて、左上の矢印クリックすると
必要な時に、ファイル情報がみられる。
これだと面倒かな?
ただ、私のPCでそれやると、なぜかExcelがうまく終了しないんだけど
これはバグかな?
=100000*(1-0.06)
【1 OSの種類 .】 Windows8pro 64it 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 ■Sheet1 列 A B C D E 行 1 1 商品A 2000 - - 2 2 商品B 1000 - - 3 3 商品C 650 - - 4 4 商品D 280 - - ■Sheet2 前月売上 前月順位 列 A B C D E 行 1 1 商品B 1500 1000 2 2 2 商品D 700 - - 3 3 商品A 500 - - 4 4 商品C 100 - - A列は順位、C列は当月の売上金です。 Sheet2の1行目のように、D列に先月(Sheet1)の同商品の売上金、 E列に先月(Sheet1)の同商品の順位を、2行目以降も一気に表示 する場合はどうすればよろしいでしょうか。
VLOOPうp RANK
あ゙ーーーーーまちがえたぁーーーーーー VLOOKうp RANK あとはggrks
関数を使う必要がない計算に関数を使えという発想がわからないです(´・ω・`)
>>353 Function WARIBIKI(a, b)
WARIBIKI = a + a * b
End Function
A1=WARIBIKI(100000,-6%)
【1 OSの種類 .】 Windows7 home 64bit 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 上司が2007とか2010のリボンスタイルが見にくいようで、2003しか使ってくれません。 2007と2003がインストールされているようですが、2007は専ら.xlsxの拡張子のファイルが送られてきた時に開く用と割り切っている様子で、普段は一切使いません。 AverageIFなどの便利な関数が使えなかったりA2:B50000と指定せずにA:Bと適当に範囲指定するとエラーが出たり条件付き書式が3つまでしか使えなかったりと、色々面倒です。 どうすれば、2007の方を常用してくれるようになるでしょうか?
>>356 上司または部署でミーティングをする機会があればその場で提案しましょう
>>356 「仕事の能率が落ちるので、新しいExcelの使い方を覚える気のない人はこの仕事から外れてください」と注意する
ただし上司に直接言うんじゃなくて、Excelが苦手な部下に言うといい
もちろん上司の近くではっきり聞こえるように
正式な名前は忘れたけど、第三者を使って間接的に意思を伝えるってのは
直接言いにくい時によく使われる手。「三角切れ」なんて言われることもある
そういう部下がいなければ、事前に頼んで演技に協力してもらう
359 :
328 :2013/01/28(月) 14:44:19.32
>>335 様はじめ、レスくれた方ありがとうございます。
難しくて理解するのに少し時間がかかりそうだけど、がんばります。
仕事の都合でレス遅くなりました。ごめんなさい。
>>356 >>358 上司だけの問題ならその方向でもいいけど関係企業が2007に未対応でそこでも取り扱うデータである場合も
考慮する必要があるのかもしれない
>>355 向上心を持てって言ってんだろ
お前のはそれ上昇志向だよ
>>353 SUMって関数得意だべ?
=sum(=100000*(1-0.06))
でいいよw
=w
>>353 が求めてるのはこれだろう
=PRODUCT(100000,SUM(1,-0.06))
>>353 ほれ
=IF(AND(A1=100000,B1=A1-A1*0.06 ),100000-100000*6%,100000*(1-0.06))
366 :
名無しさん@そうだ選挙にいこう :2013/01/28(月) 22:27:27.37
面白いとでも思ってるの?
だって関数でって言うことなんだもの
>>356 うーん、俺なら上司の上司に直訴かなぁ。
以下、俺が同じ立場だったら送る報告書。
上司の上司様、上司がoffice2010に移行していただけなく、困っています。
以下、会社として移行しなければならない、具体的な理由を申し上げます。
office2003のサポートは一年後、切れます。それ移行はウィルスに対してとても弱くなります。
上司の表計算ソフト一つのために、会社の信用、顧客の個人情報を天秤にかけている状態とも言えます。
今なら2010に不慣れだったとしても、2003を使うことができます。
一年もあれば併用しつつ、十分意向できると思います。
実際に私も2003からの移行には戸惑っていました。
サポートの切れた一年後に意向すると、強制的に2010しか使うことが出来ず、
急な用事に対処できない、また余計なストレスも貯まると思います。
以上の理由から、上司に対して今すぐにでも、2010に移行していただくように
取り計らっていただけないでしょうか。
よろしくお願いします。
って感じかな。どうだ、ダメか。
エクセルの無料の練習用ソフトってどっかに落ちてないですかね?
あ、ごめ 相談場所間違えた。
368はニートか?
>>369 基本的なことならOpenOffice
短期間で最新版なら公式の試用版
356の上司は決して間違ってないと思う。 上司はマネージメントが仕事であって、エクセルの関数が使えなくても問題ないし、 部下が作った資料(目標に対する結果)が見られればいいだけ。 サポートが切れたら、言われなくても乗り換えるだろうよ。
>>373 部下が2007で作った資料が見れなかったらダメ上司じゃんw
>>374 2003でもxlsxを見れるアドインかなにかはあるよ
>2007と2003がインストールされているようですが、2007は専ら.xlsxの拡張子のファイルが送られてきた時に開く用と割り切っている様子 インスコされてるんですってよ
377 :
名無しさん@そうだ選挙にいこう :2013/01/29(火) 00:02:25.72
てゆーか、356は何で困ってるんだろう? 2007の関数を上司に使ってほしいわけ?(バカジャネーノ 上司が使ってるエクセルのバージンもハキ〜リしてないのは、 普段からコミニュケェーソンがとれてないんじゃないの?
>>377 いや、2003発売から10年も経ってるんだぜ
互換性もあるし、セキュリティ面でまずい
移行しない理由が「慣れていない」というのも最高にかっこわるい
そんな上司は持ちたくない
>>378 でも新しいモノ受け付けない現状維持大好きな上司はどの会社にも一人はいるけどな。
.xls使用禁止。 .xlsxで統一する。
上司の扱い方までここで質問してんじゃねーよ
オートフィると、アイコンみたいな感じのやつが出るんですが、Escキーを押しても消えません>< どーやったらこのウザすアイコンみたいな感じのやつを消せますか?
>>382 無視して次の操作(入力でもなんでも)すれば勝手に消える
ほっとけばいい
384 :
名無しさん@そうだ選挙にいこう :2013/01/29(火) 19:13:40.42
>>270 です。前回はありがとうございました。
次は、別途指定する下3桁と一致する4桁の数字の数を数えたいです。
044 の場合、 2044だけなので、1個が正解なのですが、44の数も一緒に
数えてしまいうまくいきません。最後はE1に数字を入れるだけでF1,F2が自動で出るようにしたいです。
Rightで右から3桁とか、Textにするとかやったのですが、
どうもうまくいきません。最後は教えてもらった Ctrl+Shift+Enterで確定
でいいと思うのですが。どうか知恵をよろしくお願いします。
A B C D E F
1 4444 3141 1245 5364 044 = 指定の下3桁は
2 4548 1241 1295 5364 個数=? 個
3 1611 2044 3733 4955
4 2647 2728 3343 4950
リボンを2003のツールバー表示みたいにするアドインだかフリーソフトだかがあったような気がする
上司にExcelを教えるVBA
356もおバカだが、368も勝るとも劣らずwww 大企業は未だに2003が主流なわけで、パソコンはリース、 ソフトは自前だから仕方が無い。 社員全員のソフトを更新したら、億単位で金が掛かるからなぁ・・・ その点、中小はいいよねw
x 社員全員 o PC所有者全員
よほど規模の小さい企業でなきゃライセンス契約だろ 億単位ってどんだけムダ金使ってんだ(´・ω・`) 確かに未だに2003使ってる企業が多々あるのは知ってるが 2007やら2010も入ってて、ただデータをやり取りする際は 面倒が起きにくいようにxlsを使うだけというケースがもっとも 多いように思うぞ
中小にすら就職できないニートの戯れ言だから放っておけ
2003ってセキュリテーに問題あんの?
>>392 今は別に
普通に更新かけてりゃ2007/2010と変わらん
ただし2003のサポートは2014年の4月に終了する
それ以降はなにかあってもMSは面倒見ない
ほぅほぅ、つまり>378は世間知らずってことですね
すみません 知ってたら教えてください 2月7日にOffice2013が発売されますね Excel2013だけ買おうかと思ってますが 今回はアップグレード優待版はないのでしょうか?
>>395 なんか無さそう
officeならあるんだけどね
マクロで、メッセージを出して[はい]なら何もせず続け、[いいえ]なら終了とするとき、 ググって探しましたが、もっと簡素化できますか? Q = MsgBox("おkですか?", vbYesNo) Select Case Q Case vbYes '何もしない Case vbNo Exit Sub Case Else Exit Sub End Select
>>397 VBAはよくわからんけど変数Qはなくてもいいんじゃない?
Select Case MsgBox("おkですか?", vbYesNo)
Case vbYes
'何もしない
Case vbNo
Exit Sub
Case Else
Exit Sub
End Select
>>397 If MsgBox("おkですか?", vbYesNo) <> vbYes Then Exit Sub
アタイ阻止
ifの評価の中で色々するのは、間違いそうですごく抵抗がある 慣れてないだけかな
>>399 は色々って程のことはしてないだろ
If 変数 比較演算子 定数 Then
の「変数」部分を関数にしただけのオーソドックスな使い方
でも俺はMsgBoxの場合、OkOnlyやOkCancelならIf使うけど
YesNoならCancel無しの2値でもSelect Caseだな
因みにYesNoCancelではなくYesNoなら、[×]ボタンも無効になって
Cancelが返ることは無くYesかNoだけなので、SelectCaseでやるならCase Else要らないし、
Ifでやるなら<> vbYesではなく= vbNoでExitしたほうが「[いいえ]なら終了とする」の仕様に合ってるな
>>395 EXCEL2010単体の人に適用できるかどうかわからないけど
とりあえずOFFICEの無償アップグレードプログラムに登録しておいてアップグレードが可能であると向こうで判断
されたらアップグレードを行う。
で、アップグレードのなかでEXCELだけアップグレードするようにすればいいかと
405 :
404 :2013/01/31(木) 11:54:00.25
VBA初心者ですが プロシージャ名の最後を下記のように数字にして Sub name1() 命令1 End Sub Sub name2() 命令2 End Sub Sub name3() 命令3 End Sub 計算結果に応じて同じ数字の命令へ飛ばしたいのですが goto 等で呼び出すプロシージャ名の最後を変数に指定するには 一体どうすれば良いのでしょうか? goto name & 変数1〜3 で出来そうな物ですが動いてくれません。 宜しくお願い致します。
>>407 Run は外部プログラムの実行と説明されているようですがどうやって使うのでしょうか?
スペース空けて記述って便利そうでもなれないと何が何だかよくわかりませんね、
VBAはなにやら暗黙のルールがありすぎ!訳わからん! そういうのを細かく網羅して解説しているサイトは無いのでしょうか?
PHPとかなら¥記号で文字定期と変数を切り分けたりしますが VBAでは一般文字と変数をどうやって区別させているのでしょうか?
暗黙のルールってそんなにあったっけ
クッソ古いのを継ぎ足し継ぎ足しで作ってるから、暗黙のルールっていうかガラパゴス化して 他の言語やってる人から見たら意味わからんこと多いんだろ。
SheetsとWorksheetsの使い分けを教えてホスィ〜 Sheets("Sheet1").Selectでも動作するし、Worksheets("Sheet1").Selectでも動作する
特に困っているわけではないのですが、CountIFなどで範囲指定する際に必要以上に範囲を広げると処理速度が遅くなったりするでしょうか? 例: =COUNTIF(C1:C90000,A1) 今は200件くらいしかデータがありませんが、不要になったデータを削除せずに放置しておけば5年後10年後には1000件、2000件に達するかなぁと思い、あとになってエラーが出てからデータを直すよりは今のうちにセットしておいたほうがラクかなぁと。 2007以降だったらC:Cでもだいじょぶみたいなのですが、2003ベースなんで…
だから そういうのはテーブルつかえって
2003だと90000行なんて無いが
ついでに言うと2003にはテーブルないぞ>416 リストというテーブルもどきならあるが
構造化参照べんりなのに つかえないってかわいそう それはともかく、テーブルが使えないなら最下行をダミーにして 行を追加するときはダミーの上に挿入すればいい ダミーまで範囲指定しとけばいくら行を追加しても問題ない
>>416 テーブルとやらを使えば、エクセルがよくわからない素人が、出力されたデータを貼り付けるだけでも結果表示をさせることが可能でしょうか?
コンピュータから出力されたデータがただのデータの羅列なので、見やすく整形するのが今回の目的で、フォーマットだけ作ってあとは現地のみなさんでデータだけ貼ってもらえれば…と思ってます。
最初からわかりやすい形で出力してくれるのがベストなんですけどね
>>417 そーいうのいいから結果だけ教えろよエクセル中級が!
2回目以降の質問では名前欄に初回質問の番号を入れよう。
統合とオートサムを使う串刺し集計って何が違うんですか? 同じ範囲のシートしか合計出せないなら串刺しいらないと思いませんか?
>>412 dim a as string
dim b as string
dim c as string
c = a + b
これでエラーにならないんだぜ。
>>415 その部分を書き換えた場合は当然、遅くなる
d1を書き換えても遅くはならない。
>>423 暗黙のルールと暗黙の型変換は違うだろ
暗黙の型変換ってマニュアルに明記されてなかったっけ?
ざっと探してみたけど、VBのドキュメントはあったけどVBAが見あたらん
>>414 Sheetsにはワークシート以外にもグラフシート、モジュールシート、ダイアログシート、マクロシートを含む
Worksheetsはワークシートだけ
大半は過去の遺物なので使い分ける必要はない
例えば家計簿を作って1月分にバランスシートを作って新しいブックにコピペすると 参照した数字にレフ!が出ます 貼り付けの画面で値と数値の書式123%を貼り付けたら正しく表示されるんですが バランスシートで幅を広げたそれは無効になってしまいます 元の列幅を維持にしたらいけるんですがややこしいのは四半期、上半期、通期など ではコピペできないんです 説明はわかりにくいんですがこれは素直に新しくバランスシートを作ったほうがいいんでしょうか
>>426 まず、何の理由で#REF!が出ているのか
それを先に自分で追求しなはれ
#REF!は数式内で無効なセルを参照しているときのエラー
コピペった段階で、参照できないセルができているはずだから
個人マクロブックに保存したユーザー定義関数を呼び出すときに personal.xlsb!......を省略する方法は無いでしょうか?
Sub test() If Range("b8") > 0 Then Range("A1").Value = "大きい" Else Range("A1").Value = "小さい" End If End Sub VBA初心者ですが上のような判定命令で あまり複雑にせずにゼロの場合はスルーさせる方法を教えて下さい 宜しくお願い致します。
>>429 ElseをElseIfにするだけでいいのでは?
ElseIf Range("b8") <> 0 Then
Range("A1").Value = "小さい"
>>430 うまくいきました!!どうもありがとうございました。
VBA初心者ですが =0- (A3+P5) のようなカッコを含む計算式をVBAで記述刷る場合一体どうすれば良いのでしょうか? テスト変数 = 0 - ( Range("A3) + Range("P5")) とあてずっぽで入れてみましたが当然エラーが出ました・・・(笑)
それだけ見ると"A3 の右に"が足りないだけじゃんと思うけど なんで「当然エラーが出ました・・・(笑)」と思ったのか
434 :
432 :2013/02/02(土) 21:33:11.66
>>433 なぬーーw お恥ずかしい・・全く問題無く実行出来ました。 ありがとうございました。
色変わらんの?
436 :
名無しさん@そうだ選挙にいこう :2013/02/02(土) 23:07:35.98
【1 OSの種類 .】 WindowsXP 7 8 【2 Excelのバージョン 】 Excel2003 か 2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 20130101_ America_001 20130202_America_001 20130202_Brazil_001 20130202_Canada_001 20130204_America_001 20130302_Canada_001 20130402_Brazil_001 のようなデータがあるとして、 真ん中にあるような文字(国名)だけの個数を数える関数はありますか?
>>436 真ん中にある文字だけを、文字列操作関数使って作業列に書き出す
あとは種類数(
>>436 の例では3種類)が知りたいのか、種類別の個数(同、3個、2個、2個)が知りたいのか解らないが
どっちにしろ対象部分だけ抽出しちゃえばどうにでも料理できるだろ
あとVBA可になると、関数は探して使うものではなく、作って使うものになるからな
作業列使いたくないとかなら、配列変数に対象文字だけ抜き出して処理するユーザー定義関数作ってもいいし
438 :
名無しさん@そうだ選挙にいこう :2013/02/03(日) 00:28:14.88
excel2010 セルに外部のエクセルファイルへのリンクがあるファイルがあるのですが、 元のファイルがなくなっても表示され続けています。 おそらく、元ファイルのデータを一緒に保存しているからだと思うのですが、 その認識であっているでしょうか? また、表示されるセルとされないセルがあります。 一緒に保存される外部ファイルの範囲というのはどうやって決まるのでしょうか? たとえば、日付を入力すると、外部ファイルのその指定日の行が表示される、といった 数式で、去年くらいまでは表示されるのですが、それ以前のは表示されずエラーと出ます。 よろしくお願いします。
>>438 知らん。
試してみたが、おそらくある程度残っているのだろう
消したほうが無難
個人的な意見だと、これはIE準拠臭い
不安定な外部ファイルはあまり使わないほうがいいと思う
441 :
名無しさん@そうだ選挙にいこう :2013/02/03(日) 02:20:30.63
>>440 そうですか・・・・・・・
同じブック内のシート同士の参照だと、シートを消したとたんにエラー表示されるのに、
違うブックへのリンクのところは残ってるんでどういう仕様なのかと思ったのです。
希望的には残っててほしいんですが、
違うブックでも、そのブックを開いているときにシートを消すと、エラーになりませんか。 「外部参照のエラー」も記録されているのかも。
443 :
名無しさん@そうだ選挙にいこう :2013/02/03(日) 12:57:02.89
>>442 その通りになりました。
参照している外部のシート丸ごと保存してるんですかね・・・
参照元のセルに任意の管理番号を入力すると、参照先の消えている
シートのデータが表示されますから。
実際に参照しているセルのデータだけ保存されるのであればわかりますが、
まだ一度も参照していないセルの値まで管理番号を変更すれば見れてしまうんですから。
もう少し検索してみます。ありがとうございました。
VBA初心者ですが VBAはExcelのシートファイルをアプリで開いてない状態でも(保存されているファイルに対して直接) 特定のセルの情報を書き換える事は可能なのでしょうか?
>>445 出来るっちゃぁ出来る
CreateObject("Excel.Application")でExcelオブジェクトを作って、対象ファイルを非表示で開けばいい
>>446 なるほどちょっと一手間かかりそうですね、ありがとうございます。
>>446 保存されているバイナリが直接リライトされれば究極の高速化だと思っていたのですが
やはりオープンは必要なわけですね。w
449 :
名無しさん@そうだ選挙にいこう :2013/02/03(日) 16:01:31.70
>>444 管理番号というのは、業務の話です。エクセルとは関係ありません。すいません。
見てみます。ありがとうございまs。
>>448 書き換える部分と内容もバイナリ(バイナリアドレス&バイナリ値)で指定できるなら
直接リライトも出来るよ
それって下手したらエクセルファイルが壊れるんじゃ
xlsの書き換えは難しいけど、xlsxなら中身は単なるテキストだからけっこう自由に読み書きできるよ
>xlsxなら中身は単なるテキスト バイナリだよw
思いっきりバイナリデータが入ってた と思ったけどぐぐったらxmlデータとある ドユコトー
拡張子をzipに変えてみ
>>455 ありがとう!
こういうデータだったのか
【1 OSの種類 .】 WindowsVista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 なるべく関数でお願いします ア あ エ え ア え ア あ ☆ イ い 上記の様な表があるとき 1行目と4行目はA列/B列で同じ組み合わせとなりますが その際、二つ目以降の重複(上記で言うと4行目 とそれ以降の同組み合わせ)に対し 識別のための印を付けられる判定ができる計算式を教えてください。 よろしくお願い致します。
>>457 次のように処理するのはどう?
2行目からデータが入っていると仮定して
@D列に1行目から連番を振る。
AA列とB列をキーにソートする
BC列の2行目に次の式を入れる
=if(A1&B1=A2&B2,"☆","")
CC列の式を下にコピーする
D結果をコピーし、同じ列に値貼り付けをする。
ED列の連番で並び替えて行を元の順序にする。
ちょい修正 @D列に2行目から連番を振る。
3ヶ月前の日付を関数で求めるのってどうするんでしたっけ? ( この際土日祝日など一切無視で) vbaなら DateAdd("m", -3, Now()) で出せるんだけど
edate(日付,-3)
463 :
457 :2013/02/04(月) 19:07:04.83
464 :
名無しさん@そうだ選挙にいこう :2013/02/04(月) 20:56:11.26
1 8 1 0 3 6 9 5 9 1 9 6 9 3 と並んでるとします。 この羅列から 3 6 9 の次に来る数字を表示させる関数はありますか? また、3 6 9 の次に該当する数字が2個ある場合、2個とも表示させる方法はありますか? よろしくお願いします。
>>464 数字は各セルに1桁ずつ?
セル範囲が決まってるなら全部文字列として連結してFINDで場所を調べる
複数あって数が不定の場合は、作業セルをたくさん使うかVBA
製造業の日報集計したいんだけどエクセルで出来るかな。 日報に書かれる内容は、作業者、日付、品名、工程、良品数、不良種類、不良数 一人の作業者が複数の品名、行程をする。 一つの工程に対して不良種類と不良数は複数になる。 アクセスならテーブル3つで テーブル1 日報ID、日付、作業者 テーブル2 詳細ID、日報ID、品名、工程、良品数 テーブル3 詳細ID、不良種類、不良数 こんな感じになるんでしょうか。 エクセルでやる場合はどうしたらいいかな?
>>466 テーブルの作り方に正解はないよ
目安となる正規化という概念はあるけど
466みたいにシートを分けて、index+matchで値を引っ張ってくればok
>>466 テーブル3つ→ワークシート3つにする
シート1のA列=日報ID、B列=日付、C列=作業者
のように決めてデータを上から順番にどんどん詰めていく
Excelをデータベースのように使う場合はこれが基本
>>466 集計目的ならアクセス的思考を取っ払え
そのまま作業者、日付、品名、工程、良品数、不良種類、不良数 の列で
あとはズラズラデータを入力していけばよい
でピボットテーブルで終わり
作業時間の列も増やすと、品名ごとに総作業時間も出るから工数管理も楽
慣れたらピボットテーブル作成時のマクロを記録して
編集画面で週単位とか月単位とかでまとめ直したり
標準では3つまでのフィールドを追加したりいろいろ強引に作れる
ワークシートは1つでよい ピボットテーブルを3つでもいくつでも管理に使う分だけ作っといて あとは更新だけすればよい
更に慣れたら 今度はワークシートをアクセスからリンクさせ リンクで得たアクセスのシートからレポートを作成し 必要な書式で納品書だの請求書だの書類作成・保管すればよい
>一つの工程に対して不良種類と不良数は複数になる。 恐らくこれを気になってるんだろうけど 2/5 A男 納豆 包装 外観キズ 3 2/5 A男 納豆 包装 外観凹み 1 2/5 A男 納豆 包装 中身漏れ 5 のように同じ日付、同じ作業者、同じ工程でもそのまま不良種類があるだけデータを記入していけば良い 数10人規模の製造管理なら1年分入力したって問題ないデータ量だよ
納豆が漏れたのか …ヌルヌルになるな
ヌルポ
ガッ
B5〜C12セルに数式または空白セルがあり、0を超える数字と、
セルに付けたコメントをE5〜G12セルに転記するマクロでの質問です。
h
ttp://uproda.2ch-library.com/631929y1l/lib631929.jpg --【条件】------------------------------------------------
B列のセルが0より大きい数値なら、その数値をE列のセルに書く
B列のセルにコメントがあれば、そのコメントをG列のセルに書く
C列のセルが0より大きい数値なら、その数値をF列のセルに書く
--------------------------------------------------------
これら8通りの組み合わせを次のIF文で書きましたが、
重複しているところもあり散漫に感じます。
どこか無駄を省くことはできますか?
477 :
476 :2013/02/06(水) 21:51:21.63
Sub sample() Dim i As Integer For i = 5 To 12 If Cells(i, 2).Text <> "" Then If Cells(i, 2).Value > 0 Then Cells(i, 5).Value = Cells(i, 2).Value If Cells(i, 3).Value > 0 Then Cells(i, 6).Value = Cells(i, 3).Value If Cells(i, 2).NoteText() <> "" Then Cells(i, 7).Value = Cells(i, 2).NoteText() End If End If Else If Cells(i, 2).NoteText() <> "" Then Cells(i, 7).Value = Cells(i, 2).NoteText() End If If Cells(i, 3).Value > 0 Then Cells(i, 6).Value = Cells(i, 3).Value End If End If Else If Cells(i, 3).Value > 0 Then Cells(i, 6).Value = Cells(i, 3).Value End If End If Next i End Sub
478 :
466 :2013/02/06(水) 21:52:45.12
>>466 です。みんなレスありがとう。
エクセルでシート3つにするとデータの修正とか繰り返した場合にどこかで矛盾が出てきそうだから不安でした。
皆はどうしてるのかなと思って。
エクセルは関数とVBAも少しはわかるんですがピボットテーブルが全くわかりません。でも集計ならピボット使うべきだと思うの
でピボットで扱いやすい形に持っていきたいです。
>>472 の内容に良品数の項目入れた場合、良品の行には良品だけ、不良の行には良品数が空白という形になりそうですが、
この形でピボットテーブルは問題無く使えますか?問題無ければとりあえずデータ入力はこの形で進めておいて、
ピボットの使い方は本一冊買ってきて勉強しようと思ってます。
日付 名前 品名 工程 良品数 不良種 不良数
2/5 A男 納豆 包装 200
2/5 A男 納豆 包装 外観キズ 3
2/5 A男 納豆 包装 外観凹み 1
2/5 A男 納豆 包装 中身漏れ 5
>>476-477 For i = 5 To 12
If Cells(i, 2).Value > 0 Then Cells(i, 5).Value = Cells(i, 2).Value
If Cells(i, 3).Value > 0 Then Cells(i, 6).Value = Cells(i, 3).Value
If Cells(i, 2).NoteText() <> "" Then Cells(i, 7).Value = Cells(i, 2).NoteText()
Next i
じゃダメなのか?
数値か空白(Empty)なら > 0 の比較演算だけで十分だし
結果は8通りあっても「B列にコメントがある場合は、B列の値はH列に書き出す」みたいに
別の条件に干渉するものが無く、全て独立した条件なら、コードでの条件も
それぞれ独立して書けば良いだけだが
480 :
476 :2013/02/06(水) 22:47:25.16
>>479 おkです。ありがとうございます。
なんでここまで省略できるのか、ちょっと時間をくださいw
481 :
476 :2013/02/06(水) 22:49:48.88
あ、理解できました。 何ともお恥ずかしい・・・
理解はやっ
476の表で、 If Cells(i, 2).Value > 0 Then MsgBox "B" & i & "=" & Cells(i, 2).Value だとメッセージが3回出て、 If Cells(i, 2).Text > 0 Then MsgBox "B" & i & "=" & Cells(i, 2).Value だとメッセージが5回出る。 B11〜B12を空白にしてるんだけど何で?
>>478 良品数は2/5の分だから
どれか不良の行と同じにまとめても問題ない
というか
日付 名前 品名 工程 数 品質
2/5 A男 納豆 包装 200 良品
2/5 A男 納豆 包装 3 外観キズ
2/5 A男 納豆 包装 1 外観凹み
2/5 A男 納豆 包装 5 中身漏れ これでいいんじゃね?行数は減らないけど
485 :
名無しさん@そうだ選挙にいこう :2013/02/07(木) 00:02:07.11
【1 OSの種類 .】 Windows7 64bit 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 既に反転(選択)されたセルから、任意のセルを反転解除するにはどうすればいいですか? 例えばA1:L40と反転させ、B4、D10、G30を反転解除させる、というようなことです。 CTLRキーを押しながらクリックしてみてもうまくいかないようです。
あー 複数人で製造してればちょっと問題あるな 日付 名前 品名 工程 数 品質 2/5 A男 納豆 包装 200 良品 2/5 A男 納豆 包装 3 外観キズ 2/5 A男 納豆 包装 1 外観凹み 2/5 A男 納豆 包装 5 中身漏れ 2/5 B男 納豆 包装 200 良品 2/5 B男 納豆 包装 1 外観凹み これだとA男とB男2人で200作ったのか、400作ったのかわけわからなくなる 製造内容によってデータ入力とフォーマットに注意が必要
>>483 何も入ってないセルのValueは「Empty」という特別な状態になって、それは0より大きいと判断される
>>487 数値としては0と同じじゃないの?
0より大きいではtrueにならないけど
Sub a()
If Cells(1, 1).Value > 0 Then
MsgBox "0よりおおきい"
End If
If Cells(1, 1).Value = 0 Then
MsgBox "0とおなじ"
End If
End Sub
>>489 A1〜A3に0,1,Aと入れてA4には何も入れない状態で確認してみると、何も入ってないA4だけが
ValueとTextで異なる状態になる
Sub a()
For i = 1 To 4
Debug.Print TypeName(Cells(i, 1)), TypeName(Cells(i, 1).Value), TypeName(Cells(i, 1).Text),
Debug.Print Cells(i, 1) > 0, Cells(i, 1).Value > 0, Cells(i, 1).Text > 0
Next
End Sub
>>483 Cells(i, 2).Text ← 数値に変換出来ないVariantなString
0 ← 整数
数値に変換出来ないVariantなStringと整数を比較演算子で比べると
整数よりも数値に変換出来ないVariantなStringの方が大きいと判断されるらしい
VariantなStringが数値に変換出来るかどうかは IsNumeric で調べる
IsNumeric(Cells(i, 2).Text) だと Falseが返る
てことで、セルの中身が数字かどうか、チェックしながら進めた方がよさげ
temp = Cells(i, 2)
if isNumeric(temp) And temp > 0 then 〜
一体vbaは何と比べているんだ…
Sub a() Dim v As Variant Dim s As String v = 1: Debug.Print v > 0 v = "1": Debug.Print v > 0 v = "A": Debug.Print v > 0 v = "": Debug.Print v > 0 s = "1": Debug.Print s > 0 s = "A": Debug.Print s > 0 ' エラー End Sub
一方のバリアント型 (Variant) の式が Empty で、もう一方は数値 0 を Empty 式として使用して、数値比較を実行します。 0とみなすってことなのか?
【1 OSの種類 .】 Windows7 home premium service pack1 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 挿入→図でjpg、pngなどの画像を挿入したときに勝手に画像が縮小されて 出てきます。 画像を右クリックし図の書式設定のサイズの欄で100%に変更しているのですが、 最初から100%固定で出すことができませんでしょうか。 仕事で何百シートもあり、困っています。どなたかお助けいただけたら 助かります。
>>496 VBA必須
しかしVBAでの回答=否なので無理
498 :
466 :2013/02/07(木) 06:20:52.47
>>486 その品質列は良いですね。その方法で入力してみようと思います。
今の時点で、なぜ二人で200か400かわからなくなるのかが解らないですが、とりあえずピボットの使い方を早めに勉強
してから考えようと思います。
>>498 例えば巨大な納豆200個を作るために
必ず2人作業を要する作業の場合
お互い話しあって100個ずつの分担記載と決めてれば済むところを
それぞれが重複して総完成数200を記載してたとか
俺の所では巨大製品だから
いわゆる注文書通りに長期のロット数をまとめて製品名区分側に組み入れてる
「2/1受注」「納豆」「200個口」
これに対して「作業日」「名前」「大工程」「小工程」ごとに「時間」を集計
不良品は出たら直すので出ないし
作業者が1日何個やったか?はどうでもいい
で終わってから「総時間」/「ロット数」で1個あたり時間がわかり、成績がわかる
久しぶりに納豆買って食っちまったじゃねぇか バカヤロー!
>>500 納豆位で済んで良かったな
松阪牛とか大間産ホンマグロとかでサンプルコード作られたら
大散財だったぞ
今度、そういう美味しそうなサンプルデータも作っておこうw
エクセルと食欲がこんなにも近いものだったなんて・・・
松阪牛やホンマグロくらいなら、家で食えば3000円程度だからまだいいが もし・・・・・いや、この先はやめておこう
こんなところで宣伝してないで問い合わせろよ
サンプルに納豆使うと納豆食いたくなる人は ウン○とかチ○コとかでサンプル組んだらどうなるんだ?
508 :
名無しさん@そうだ選挙にいこう :2013/02/07(木) 16:42:52.05
うざ
エクセル2010 win7 (100シート)各シートにA1から下に1から100までの数字がランダムではいっていて終わりの行はシートごとにばらばらでどこで終わるかわかりません。 どこの行で終わっているかわからないA列の数字をB1からしたに逆に並べたいのですが。 A B 52 35 21 65 65 21 35 52 のようにしたいです。 100シートありA列の最終行はばらばらです。
よろしくお願いします。
>>509 B1に
=INDEX(A:A,COUNT(A:A)-ROW(B1)+1,1)
以下B列にコピー
>>511 オートフィルは複数シート選択ではまともに動かないので大量にシートがあると対処できない
>>509 Sub Macro1()
Application.ScreenUpdating = False: Application.Calculation = xlManual
For Each w In Worksheets
w.Activate
Range("B1").FormulaR1C1 = "=INDEX(C[-1],COUNTA(C[-1])-ROW(RC)+1,1)"
Range("B1").AutoFill Destination:=Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
Next
Application.Calculation = xlCalculationAutomatic: Application.ScreenUpdating = True
End Sub
【1 OSの種類 .】 Windows7 Pro SP1 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 A学校 1年生 100 男 40 女 60 A学校 2年生 110 男 50 女 60 A学校 3年生 120 男 80 女 40 B学校 1年生 130 男 70 女 60 B学校 2年生 140 男 70 女 70 ・・・という感じで続くものを、WORDで差込印刷を行うため、 A学校 100 40 60 110 50 60・・・ B学校 130 80 60 140 70 70・・・ という感じで学校名を基準に1列にまとめたいです。 マクロの記録で、学年、学校名の順に並べ替えてA学校1年生、B学校1年生としたあと、 2年生と3年生をそれぞれ範囲選択して1年生の範囲の右側の列にコピーペーストをして、、 学校名と人数部分以外を列削除してみました。 しかし、実行したら空白の範囲をコピーペーストしてしまってうまくいきませんでした。
>>514 全部の学校が3学年ずつ?
それとも学校によっては5年制だったり6年制だったりするの?
>>514 A〜G列に元のデータが入ってるとする
A B C D E F G
A学校 1年生 100 男 40 女 60
H列以降にこの式を入れて下の方までずっとコピーすればいい
H列=INDEX(A:A,ROW()*3,1)
I列=INDEX(C:C,ROW()*3-2)
J列=INDEX(E:E,ROW()*3-2)
K列=INDEX(G:G,ROW()*3-2)
L列=INDEX(C:C,ROW()*3-1)
M列=INDEX(E:E,ROW()*3-1)
N列=INDEX(G:G,ROW()*3-1)
O列=INDEX(C:C,ROW()*3)
P列=INDEX(E:E,ROW()*3)
Q列=INDEX(G:G,ROW()*3)
>>516 自分が表現しやすい方がいいと思って学校にしたので、
実際には学校と学年を区分にしていないので、
学校=対象、学年=区分としてですが、
対象は68あり、68個がすべて25区分です。
対象の数は毎回変わりますが、区分は常に25です。
>>518 何かの一覧表を組み替える時は、元の状態と新しい表の状態が正確にわからないと
数式やプログラムを作ることができないので
その説明では回答は無理です
元の表の幅は7列で、作りたい表の幅はタイトル+25区分×各3列=76列あるってことですか?
25行ずつまとめる Sub z() si = 1 di = 1 Do While Cells(si, 1) <> "" Cells(di, 8) = Cells(si, 1) c = 9 For i = si To si + 24 For j = 3 To 7 Step 2 Cells(di, c) = Cells(i, j) c = c + 1 Next Next si = si + 25 di = di + 1 Loop End Sub
521 :
名無しさん@そうだ選挙にいこう :2013/02/09(土) 22:09:09.78
2003までは図形の調整で「微調整」てのあったと思うんですが 2007からなくなってます?
>>521 2003当時でも矢印キー(↑↓←→)で微調整できるから
2007以降は無理に残さなかったものと思われ
Excel2013をインストールしました。 xlsファイルをクリックすると,Excel2013が必ず2つ起動します。 ひとつはpersonal.xlsだけを読み込んだもの,もう一つは目的のxlsファイルを読み込んだものです。 後者にはpersonal.xlsが反映されおらず,アドインが使用できません。 これでは実用できません。 他の方はいかがでしょうか?
win7-64bitです。
personal.xlsて2013でもxlsのままなのかい?
まずOSからクリーンインストールしてみて、それでもダメならまたどうぞ インストールし直すの面倒とか言うかも知れないが、質問するのに金掛からない場で質問するなら つまり善意に縋るなら、面倒でも自分で出来ることをまずはやるのが当然のマナーだし
>>526 2010までxlsでいけたので、そのままにしていましたが、2013はxlsではだめなのかもしれませんね。
>>527 わかりました。
【OSの種類】Windows7Pro 【Excelのバージョン】Excel2003 【VBA】VBA使った事がありません 数値をまとめて表を作成しています。 x軸に角度を使っていて、左から 120°,150°,・・・,330°,0°,30°,60°,・・・,120 としたいのですが、何か方法はありますか?
>>529 A1に120と入れる
B1に=MOD(A1+30,360)と入れる
A1とB1の書式を0"°"とする
B1を右にずーっとコピー
【1 OSの種類 .】 Windows8 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 Windows8になったのでキーボードからの入力ではなく タッチパネルからの入力にしたいのですが タッチキーボード(Win8でログインの時に使うやつ) のプログラムのアドレス(VBAでShell関数で呼び出し時に使う) を教えていただけないでしょうかお願いします ググってもわからなかったもので
【1 OSの種類 .】 WindowsXP/Vista/7/OSX 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ(これから勉強) メンバー全員にオンラインストレージ上のExcelファイルを同時閲覧・編集出来るようにさせたいのですが、 色々調べても、各々にマイクロソフトのIDが必要だったり、それぞれにメールで招待せねばならなかったりで、 ものぐさなメンバーたちに強要出来るとは思えない内容のものばかりです…会社じゃないので。 面倒な作業はリーダーひとりだけが行なって、後は全員URLを開くだけでOKみたいな事って出来ないのでしょうか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 いいえ $C$1:C10の範囲で、セル内容が <br> のものをカウントしようと思いました =COUNTIF($C$1:C10,"=<br>") ではカウントできるのですが、 =COUNTIF($C$1:C10,"<br>") ではブランクセル以外ならなんでも当てはまってしまうようです 文字列で一致しているかどうかなら、後者で良かったと思うのですが、 私が何か間違っているのでしょうか?
やはり良いですか。チャット機能もあって魅力的でうが、でもそれも確かアカウント作る必要があったような… 今さっき、数日前にSkyDriveがID無しでも編集出来るように改良されていた事を知りましたので、 Live Workspaceだとマクロ使えないとかいう記事あって諦めてたんですが、とりあえずはそれで行こうと思います。 助言ありがとうございました。
>>535 < や > は先頭に持ってきたら比較演算子として扱われるんじゃないの?
比較演算子やワイルドカードとして扱われない文字なら
=無しで後者のように書いても確かに問題ないけど
>>538 なるほど、そういうことでしたか
ありがとうございました
540 :
名無しさん@そうだ選挙にいこう :2013/02/13(水) 06:52:46.34
VBAでIEを操作し、リンクをクリックしたいんですけど
それについて詳しく解説してるサイトとかありますか?
ていうか、VBAでIEを操作する際って
XXXXXX.Navigate "
http://XXXXX.ne.jp/ "
このページを開く構文は必ず必要なんですか?
自分でIEのページを開いて、ページを開いた後の処理をVBAにやらせるってことはできないんですか?
ページを開いた後の処理をVBAにやらせるには、ページを開くことからVBAにやらせないといけないんですか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 言われたのを書くぐらいはなんとか…… 【4 VBAでの回答の可否】 可(ただし、できればエクセルの機能でできると助かります) D列に"不許可"と入った場合に、同じ行のB〜Fの色を灰色に変わるようにしたいです。 A B C D E F 1 2 No. 名前 結果 場所 備考 3 01 太郎 不許可 家 ← D3に不許可が入るとB3:F3が灰色に変わる 4 02 花子 許可 学校 5 一個ずつ条件付き書式で B3:F3を選択 → =$D$3="不許可" → 書式を灰色塗りつぶし という設定はできますが、一気に範囲全てを設定する方法はありませんか? D(行数)が"不許可"の時、B(行数):F(行数)ってできないのかなって調べていたのですが エクセル初心者なので、調べてもよくわかりませんでした 書式をコピーしても、普通にコピーした時のように空気を読んでD3がD4になってくれたりしないので、 D3を不許可にしたら全部灰色になってしまいます。 D4はもちろん不許可にしても色が変わりません。 どうすればよろしいでしょうか?
すみません、エクセル図がずれてます 備考の上がFになります
>>542 =$D3="不許可"
3の前の$が邪魔しているのな
>>544 を補足すると、"設定したい範囲を選んだ状態"で、条件付き書式の条件を
=IF($D$3="不許可",true)
↓
=IF($D3="不許可",true)
ありがとうございます!コピーできました!
549 :
名無しさん@そうだ選挙にいこう :2013/02/13(水) 22:18:24.01
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】否 横一列に入力された数値(同一の行の異なる列に入力された複数の値と言えばいいの?)を、 「並び替えることなく上位○番目まで合計する」ことは可能でしょうか? データ数がそれなりに多いことと、上記の○の部分をいつでも変更できるようにしたいので、 LARGE関数とIF関数を使いまくってなんとかする力技はできれば避けたいです。 知恵をお貸しください。
もっと具体的に書け
・(例として)A1〜J1に1,2,3,4,5,6,7,8,9,10と入力 ・K1に上位何番目までを合計したいのかを入力 ・L1に合計した結果(この場合だと3番目までなら27、5番目までなら40)を出力 この場合、L1に入力するべき式はどのようなものなのでしょうか? >LARGE関数とIF関数を使いまくってなんとかする 以外の方法があれば有難いです。 説明が下手で申し訳ないのですが、よろしくお願いします。
作業列をつくるという発想さえあれば なんてことない問題
553 :
547 :2013/02/13(水) 22:57:51.09
>>551 例えば仮にA1~J1に数値として
K1:指定順位
L1:=SUMIF($A$2:$J$2,"<="&$K$1,$A$1:$J$1)
A2:=RANK(A$1,$A$1:$J$1) としてJ2までコピー
とか
>>553 2010だけど、削除して保存、開いてからカーソルをA列に戻すと戻ったけどな
どうしても気になるなら使っている列だけ新規シートにでもコピーすればいいと思う
>>554 全く同じ事書こうとしてた
>>554 質問者じゃないけど、すげえw 考え方ひとつなんだな!
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 ほとんど使えない 【4 VBAでの回答の可否】可 Private Sub Worksheet_Activate() Cells.Select Selection.Clear Range("B2").Select With Sheets("sheet1") .AutoFilterMode = False .Range("B2:G2").AutoFilter .Range("B2:G2").AutoFilter Field:=3, Operator:=xlOr, Field:=4, Criteria1:="=不許可" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False End With End Sub 上記のオートフィルタの条件にもう一つ、orでField:=1, Criteria2:="=不参加" を追加したいのですが、どうしたらよろしいですか? Field1不参加 or Field3不許可 or Field4不許可 で抽出したいのですが Operator:=xlOr,でもう一つField1を足したらエラーが出てしまってどうすればいいかわかりません よろしくお願いします
558 :
557 :2013/02/14(木) 09:58:02.75
あ、すみません、追加の質問なのですが、 上記のField内で空白があった場合、それはリストからオートフィルタで弾くようにしたいのですが、どう書けばよろしいでしょうか? 新規リスト用の空白枠まで一緒にコピーされるので、それが邪魔でフィルタ後のシートには出ないように消したいのですが
>>559 ありがとうございます、諦めて別にチェック枠作ってなんとかしました
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 ほとんど使えない 【4 VBAでの回答の可否】可 認可_H24-04.xls 認可_H24-05.xls 認可_H24-06.xls 認可_H24-07.xls ↑のような、一つのフォルダにあるエクセルファイルのデータを一気に集めるエクセルファイル"集計"を作りたいのですが、 認可シートの中にある、"許可シート"の"A1:L34"をコピーして、"集計"ファイルの中にそれぞれごとに新しいシートを作って、そこに貼り付けするような仕組みは作れますか?
>>561 はい、作れます。
集計を開いた状態でプログラムを開始
認可_H24-04.xlsを開く
コピー、貼り付け
認可_H24-04.xlsを閉じる
認可_H24-05.xlsを・・・という流れになると思う
H24の24の部分はinputboxで指定できるといいですね
またわからなくなったらおいで
563 :
561 :2013/02/14(木) 15:15:17.93
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 ほとんど使えない
【4 VBAでの回答の可否】可
Sub 集計()
Const myPath As String = "c:\認可○○\" '←これを、今開いている"集計"ファイルがあるフォルダという指定をしたい
Dim rIdx As Long
Dim fName As String
fName = Dir(myPath & "*.xls")
Do Until fName = ""
Workbooks.Open Filename:=myPath & fName
rIdx = rIdx + 1
'←開いたファイルの"認可シート"の"A1:L34"をコピー
'←"集計"ファイルに新しいシートを作成して、そこに貼り付け
Windows(fName).Close SaveChanges:=False
fName = Dir
Loop
End Sub
>>562 ご返信ありがとうございます
調べて出てきたの無理やりコピペして、開くだけはできたのですが、素人過ぎて、どう改変すればいいかわからないです
教えていただけませんか?
>>563 早いな
>これを、今開いている"集計"ファイル
ThisWorkbook.Path
だったかな
「vba ファイルパス 自分」とかでぐぐるといいかもしれない
>'←開いたファイルの"認可シート"の"A1:L34"をコピー
>'←"集計"ファイルに新しいシートを作成して、そこに貼り付け
マクロの記録というものがあってな。これを使うとコレぐらいなら自動でコードを書いてくれるんだ。
超便利だから絶対に覚えておいたほうがいい
ヤパーリVBA最強ですねw
566 :
561 :2013/02/15(金) 09:53:07.78
>>564 ありがとうございます。修正してみました。
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 まるで使えない
【4 VBAでの回答の可否】可
Sub 集計()
Dim rIdx As Long
Dim fName As String
Application.DisplayAlerts = False
fName = Dir(ThisWorkbook.Path & "\" & "*.xls")
Do Until fName = ""
Workbooks.Open Filename:=fName '← ここで、"認可_H24-04.xlsが見つかりません"という実行時エラー1004というのが出ます
rIdx = rIdx + 1
ActiveWorkbook.Worksheets("認可シート").Activate
Range("A1:L34").Select
Selection.Copy
Windows(fName).Close SaveChanges:=False
fName = Dir
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
Loop
End Sub
上記のエラーはどう対処すればよろしいでしょうか?なぜか名前は取得できているのですが、開くことができません。
よろしくお願いします。
567 :
561 :2013/02/15(金) 10:09:54.57
すみません、↑のrIdxのところいりません。消し忘れてました
>>566 こうかな?
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fName
569 :
561 :2013/02/15(金) 10:42:13.25
すみません、自己解決しました。お騒がせしました。
570 :
561 :2013/02/15(金) 10:52:47.88
>>568 すみません、569書いたとき更新してなくて、失礼なかんじになりました
ありがとうございます
571 :
561 :2013/02/15(金) 10:55:26.59
追加で質問なのですが、
>>566 の最後の方にある
fName = Dir
の役割ってなんでしょうか?
これを外したら、永遠と最初のエクセルファイルを開いてしまう感じになるのですが
なぜこれを入れたら次のエクセルファイルに移ってくれるのかわかりません
誰か教えていただけると嬉しいです
Dir(パターン)は、まず指定したパターンに一致するファイル群を保持し、その1つめ返す 次に引数を省略してDirを呼ぶと、保持したファイル群の2つめ、3つめを順次返していく パターンを指定すると、新たにそのパターンに一致するファイル群を取得してその1つめを返すので 毎回パターンを指定したら、毎回1つめのファイルしか返らない つまり Dir(パターン) → 一致するファイル群を保持しろ、その一つ目を返せ Dir() → 保持しているファイル群の次のファイルを返せ という感じだ
573 :
561 :2013/02/15(金) 15:22:13.94
>>572 ありがとうございます!理解できました!
もう一つ質問なのですが、
ボタンを作って、
>>566 をボタンのとこにコピペして実行したら
Range("A1:L34").Select
のところで1004のエラーが起きて、"RangeクラスのSelectメソッドが失敗しました"
と出ます。
誰か原因わかりますか?
>>573 Dir関数で返ってくるのはファイル名のみなんでカレントディレクトリ以外にあるブックならフルパスで
fName = ThisWorkbook.Path & "\" &Dir(ThisWorkbook.Path & "\" & "*.xls")
とかしないと
575 :
名無しさん@そうだ選挙にいこう :2013/02/15(金) 19:33:49.84
有名というか、右も左も解らないならそこ行っとけってだけで 解説はわかりやすいがレベルが低いから、すぐにそこじゃ物足りなくなるだろ
577 :
名無しさん@そうだ選挙にいこう :2013/02/15(金) 21:24:05.44
エクセル2007を使っています。 セルに「1-2-3」という住所があるとして それを「1丁目2番3号」というふうに変換したいのですが どのようにすればいいでしょうか?
578 :
名無しさん@そうだ選挙にいこう :2013/02/15(金) 21:51:47.19
>>557 office田中のオッサンに聞くのがよろし
まずひとつめの"-"を別の文字にする。住所には含まない記号がよい それができれば、記号を"丁目"に置換。つぎに"-"を番に置換 最後に住所に"号"を付加
581 :
名無しさん@そうだ選挙にいこう :2013/02/15(金) 22:15:30.55
なぜ直接ひとつめの"-"を"丁目"に置換しないのだ?
>>577 A1に入力されているとして
=SUBSTITUTE(SUBSTITUTE(A1,"-","丁目",1),"-","番地")&"号"
正規表現使わなきゃ誤作動起こすだろうな
>>581 2つめの"-"もいっしょに置換されちゃうじゃないか
>>585 SUBSTITUTE ( 文字列 , 検索文字列 , 置換文字列 , [置換対象] )
このスレには優秀な先生もいるが、おバカも数多く存在する。 しかも、天然ボケではなく、ウケ狙いだから性質(タチ)が悪い。
(・∀・) アッタマイーナー
VBAの For Each 変数 In XXX next ってどういう意味なんですか? XXXと変数がどう関係してくるんですか? あと CreateObject("xxxxxxxxxx").Windows これはどういう意味なんですか? あと .getElementsByTagName(A) これはどういう意味なんですか?
ググれ
ググったんですが、どこも説明が下手糞すぎてわかりません。 具体的に何をどうしているのかということを知りたいのです。
ググってないわコイツ
×どこも説明が下手糞すぎてわかりません ○自分、バカで理解力が足りないのでわかりません そりゃどうしようもないな さようなら
わろた
foreachの前に配列の意味も知らんだろこいつは
VBA初心者ですが VBAを使って芸術的な計算を実行しているようなお勧めのサンプルデータ等ありましたら教えて下さい ゲーム以外でお願いします
芸術的って何だよ
どいつもこいつも句読点が打てない馬鹿ばっかだな
釣りだろうこれw
芸術的=すごい・目を見張るような て事だろう。
言うのはそこじゃないと思うんだ
果たしてVBA初心者に理解出来るのだろうか
603 :
名無しさん@そうだ選挙にいこう :2013/02/16(土) 19:02:03.17
Excelで数字を文字列として入力ことがあるのですがそれを防ぐ方法はないでしょうか? 年配がたまに文字列をコピペして計算式が反映されなくなってしまうのです。
>>603 簡単なのは入力セルの値に×1することです。
計算式の中にそれを意識して組み入れましょう。
入力規則
VBA初心者ですが 沢山のサブプロシージャを作成する場合に それぞれずべてに同じ提議たとえば Dim XXX を記述する必要がある場合 プロシージャの数だけDim XXX をコード上に記述することになりますが Subの外か何所かにまとめて1回で提議することは出来ないのでしょうか?
>>607 >>608 ありがとうございます。
単純に外に出してみてまったく動かなかったため100箇所ぐらいに同じ物を記述した感じでした
頂いたURLをみて研究してみます。。
まとめたいと思うほど同じ変数をあっちでもこっちでも使うって サブプロシージャの作り方というか利用法を根本的に間違ってるんじゃないの?
100箇所ってどんな大規模プログラムよ
グローバル変数って知らない人かも
だからグローバル変数じゃ根本的な解決にならないって こういう用途で使う物じゃないんだから、表面的には解決したように見えても 不適切な用途で使えばバグの原因を増やすだけ
明らかに違うだろw やりたいのは宣言の簡略化であって、変数の共有化じゃない 一見、「Subの外にまとめて」ってのがグローバル変数のことを指してるように見えなくもないが 目的と一致していない以上、グローバル変数では弊害を孕む グローバル変数の宣言場所と、質問者が想定した宣言場所が一致してようが 何のために外に出したいかまで考えれば、グローバル変数の本来の用途とは明らかに使途が違うことは一目瞭然で この用途でグローバル変数使うのは、典型的な「間違ったグローバル変数の使い方」の一つ
と思いたいのは勝手で、
>>606 に聞かないとわからないね
頭悪い奴多いな。
>>616 きかんでもわかるだろ。グローバル変数の用途なら
>>606 のような質問内容になるわけないだろ。
618 :
606 :2013/02/17(日) 02:02:26.04
Public XXX As Object これでうまくいきました! 記述は単純ですが説明が難解な物が多く使い方を理解するのに時間がかかりました、、w
619 :
606 :2013/02/17(日) 02:19:17.95
>>615 すみませんまだ1月末に始めたばかりの右も左もわからない初心者です。
ただ他にプログラムを書いた経験があるため何となくわかる面もあります、VBAの独特なルールはさっぱりです。w
>>620 なんか見当違いに勝ち誇ってるところ悪いが、残念なのは君の頭の方だ
俺も、
>>617 も、他のグローバル変数じゃ不適切だって言ってる奴も
グローバル変数で目的そのものが果たせないとは一言も言ってない
むしろ、表面的には目的を果たせた上で使途不一致により問題を抱える可能性ががあるから指摘してるんだよ
まあグローバル変数の特性と、各プロシージャで使う変数をまとめる用途には不適切であることを
理解した上で使う分には、使途不一致による問題を回避するように使うことも出来るし
知らなくても、偶々問題が出ない使い方をする可能性もあるけどね
もう少し、指摘されている内容を理解してから書き込むか
その内容が自分の頭では理解が及ばないものなら静観するかしないと
後で、意味を理解するなり理解できるレベルになった時に恥ずかしい思いするだけだぞ
>>592 うーん
頭が悪い癖に人に突っかからないと気がすまないようですね。
いいですよじゃあ本気で議論しましょうか。
私が検索をしていないという根拠・証拠を述べてください。
>>593 えっと、私はあなたのような頭が悪いくせに知ったかぶりで博士を気取る自称天才ではないのでね。
知らないなら答えなくていいですよ。
私はわからないから聞いているので。
あなたみたいな役立たずのゴミには用はない。
知力でも武力でも足元及ばない雑魚がよく威張っていられますね?ネット弁慶さん?
私は初心者なんですが、どこに初心者でもわかるように説明しているというんですか?
どこにそんなページがありました?
自分ですらも答えることができない無知なゴミに威張られても困りますね。
あなたがいつどこで、私に対して威張れるほど、私にとって役に立つことをしたというんです?
お答えを。
ご説明できますか?
ていうか前から疑問なんだけど なんでここって答えもしないくせに、偉そうな奴が多いの? 誰もお前みたいな答えを知らないゴミには聞いてないんだが? 答えもしないくせに偉そうな態度とられてもねえ。殺したくなるだけで終わりなんだけど。 邪魔にしかならないし。 「ググれ」だけじゃ言葉を覚えたての子供でも言えるんですが? どうして言葉を覚えたての子供にしかできないことしかやってない分際で威張ってるの? 誰なの君? 本当はお前も答えを知らないんじゃないの? 答えを知らないくせに何威張ってるの?バカなの?
For Each 変数 In XXX next ってどういう意味なんですか? XXXと変数がどう関係してくるんですか? あと CreateObject("xxxxxxxxxx").Windows これはどういう意味なんですか? あと .getElementsByTagName(A) これはどういう意味なんですか? って聞いてるのに ググれ って答えになってませんよ?大丈夫かなぁ? 日本語読める? AかBかで聞かれたら、AかBで答えなきゃ答えにならないよ? バカなの? しかもいつ君を指名して答えろって命令したっけ? 知 ら な い な ら 、 無 理 し て 答 え な く て い い よ 博士?笑
知らない ではさようなら
質問ならここより教えてgooとかMOUGのほうがいいんじゃないの
For Each 変数 In XXX でぐぐれば四番目にすごい適切なサイトが見つかるよ。良かったね。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12102188952 朝の五時から知恵袋で質問してる人がいて笑った。
まぁ、煽りはこのへんにして、マジレスすると多分おつむの構造が人とやや違うようなので理解し難いんだと思う
このスレで説明されても同じようにわからないだろうから、
For Each 解説 初心者 vba
CreateObject Windows 解説 初心者 vba
getelementsbytagname 初心者 解説 vba
でぐぐればたくさんサイトが見つかるので、自分が理解できそうなサイトで勉強するといいよ、知恵袋君w
>>624 >>628 でも書いたけど、人によって理解しやすい文章ってあると思う
長々と解説してどこかのサイトと同じような文章、またコピペするぐらいなら
最初から本人に、自分にあったサイトを検索させればいいと思う
なんで2chで初歩の初歩を懇切丁寧に教えてもらえると思っているのか、その方が理解に苦しむ
ネタに走るような面白いやつなら俺はいくらでも教えるけどなw
ええ。ここでは非常に頭が悪く、質問の内容すらも理解できないような、日本語に不自由している役立たずばかりだったので、 知恵袋で質問させていただきました。 非常によかったです。 しかも聞かれてもいないのに、自分に聞かれていると反応しちゃって なぜか顔真っ赤にしてイライラしてる自意識過剰な自称博士の気持ち悪い人もいないようなので 安心しました。 ありがとうございました。
ちなみに、言っておきますけど。 なぜ、わざわざ新しいアカウントとって知恵袋で質問したか。 絶対あなたが見つけるだろうとわかっていたからです。 まさにその通りに行動してくれましたね。どうですか?ここで聞いておきながら、他でも聞いてしかもこのなめた態度? ストレスためると体に悪いですよ? まあ、それであなたがストレス障害死でもしてくれるなら、 いくらでもイライラする質問してあげますが。 んー。悔しいねぇ。 マルチされた上に、答えをもらって理解できちゃったよ。 顔を真っ赤にしてかみついたのは、無駄な努力でしたね。 純粋に答えを知りたかったのが、結果的にあなたをイライラさせるだけの結果になってしまいましたね。 ありがとうございました。
知恵袋w
むしろこの滑稽っぷりを(・∀・)ニヤニヤ眺めるのはストレス解消になるがw ありがとさんw
久しぶりに2chらしい流れを見た。
【1 OSの種類 .】 WindowsXP、Windows7 【2 Excelのバージョン 】 Excel2010 B2〜H10セルに罫線を引くとき、やたらと長くなりますが、 もっと短縮できますか? Sub keisenn() Range("B2:H10").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With
With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With End Sub
xlEdgeBottomとかxlEdgeTopの定数には何が入ってるんだろ 連番だとかだとforでまわせばいいよな
それと一回選択してから、Selectionで指定だと遅くなる気がする 直接B2:H10に罫線を引くように指定したほうが良いんじゃない
よーしパパ暇だから
>>589 さんのプロファイリングしちゃうぞー^^
まず出だしの
>>589 vbaはマクロの記録ぐらいはできる、もしくは覚えたて。0から作る事は出来ない。
土曜の昼間の書き込みからして、
家に仕事は持ち込まないタイプ(持ち込むような人ならとっくに解決している。
書き込みは会社からだろう。休み時間かな。書き込み時間がやや遅いところからすると、エクセルスレを探すのに手間取ったとみた。
やけに特殊なコードに関することからして、人の作ったコードを見ている感じがする。
ぐぐり方も知らないので、拾ったコードとは考えにくい。
部下が作ったものを聞けない環境、もしくは先代が置いていったvbaのコードを解読しようとしているのかな。
また、テンプレを使わない、人へのモノの聞き方を知らないところから係長か課長クラス。
改行の多さも自己主張の激しさを感じさせる。
ネットというか、2chに対しては本当に不慣れ。SNSもやってない、せいぜいアメブロかな。毎日長時間テレビを視聴しているのかな。韓流が好きかもしれない。
>>622-625 で不思議なのは、異常な朝の早さ。なんで五時に起きて2chしてるんだろう?
ダイエットのためにジョギングでもしてるのかな??これはよくわからない。寒くておきただけ?
一分あたり約100文字以上の打鍵速度。間違いなく事務職だろう。
徐々に怒りをあらわにすることから、怒りを抑えるのが苦手。部下のミスを許せない。部下がどんどん辞めていっているのは人事のせいだと思っている。もちろん自分のミスには寛容。
語彙はなかなか豊富だな。年は結構いってるだろう。30後半ではないな。40代以上。
>>625 のあと、30分も空けて知恵袋で質問している。新規アカウントの名前も凝ってることからして、新アカの情報もご丁寧に入れてるのか…仕事も私生活も、変な所で几帳面。
トイレットペーパーの紙も三角に折ってそう。
周りからは疎まれるタイプ、でも本人は気づいていない。
最近若い部下(プログラムは多少できる)がやめたか仲が悪い
半ドンの零細企業
全くもてない。厚化粧、体型は普通、のオバサン事務員。おせっかいが多い。
結構自信あるんだけど、どうだろう?
>>635 Sub Macro1()
Dim a(3) As Long
For Each x In Range("b2:H10")
For y = 7 To 10
x.Borders(y).LineStyle = xlContinuous
Next
Next
End Sub
こんな感じ?
>>637 7-10が入ってた。1-6は知らん。
Dim a(3) As Long は不要だ。スマン
記録じゃForeachなんて出ないでしょ
>>640 トップ、レフト、ライト、ぼっとむ、バーティカル、ホリゾンタルで6つのはずじゃない?
>>637 別に連番じゃなくてもForで回せるだろ
定数の中身をいちいち調べるみたいな方法は非効率だしバグの元だから使うな
edges = Array(xlEdgeTop, xlEdgeBottom, xlEdgeLeft, xlEdgeRight)
For Each K In edges
' 処理
Next
上下左右縦横の格子罫線なら、Bordersの引数省略すれば一発で引けるの誰も知らないのか? Selection.Borders.LineStyle = xlContinuous あとはループ廻すより先に、サブプロシージャ化した方がいいぞ With 範囲引数.Borders(線位置引数) .LineStyle = 線種類引数 .ColorIndex = 色引数 .Weight = 太さ引数 End With というプロシージャ作っておけば、ループ廻さなくても大元は4行なり6行なりのコードで済むし もちろんループと合わせて更に簡略化することも出来るし、更に 外枠は太線、縦線は二重線、横線は細線みたいなことも ループの中に処理をベタがきするより遙かにやりやすい 線位置引数をParamArrayにして、サブプロシージャの中でループ廻せば、 Array関数で配列作ってやるより大元は更にスッキリ
BVA初心者ですが 以下のようなコードでログ1・2・3・4・・・と同じコードが続きます。(一部省略してあります) FSO As Object は昨日教えて頂きおかげさまで省略に成功しましたが Set FSO = CreateObject("Scripting.FileSystemObject") ' ←このコードも同様に多用されているのですがパブリックに入れる事は出来ないのでしょうか? ------------------------------ Public FSO As Object ------------------------------ Sub ログ1() Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.CreateTextFile("C:\test1.txt") .WriteLine Now .Close End Sub ------------------------------ Sub ログ2() Set FSO = CreateObject("Scripting.FileSystemObject") ' ←このコードも多用されているのですがパブリックに入れる事は出来ないのでしょうか? With FSO.CreateTextFile("C:\test2.txt") .WriteLine Now .Close End Sub ------------------------------ Sub ログ3() ・ ・ 宜しくお願い致します。
647 :
646 :2013/02/17(日) 14:57:22.06
>>646 Withの箇所を閉じる End With が抜けてました。スミマセン。。
こんなんでいいんだっけ Private Sub auto_open() Set FSO = CreateObject("Scripting.FileSystemObject") End Sub Private Sub auto_close() Set FSO = nothing End Sub
>>646 そういう時は呼び出し元からファイル名を指定するようにする
Call ログ1()
Call ログ2()
って書かずに
Call ログ("test1.txt")
Call ログ("test2.txt")
ってする
Sub ログ(strFName)
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.CreateTextFile(strFName)
.WriteLine Now
.Close
End With
End Sub
>>648 >>649 ありがとうございます。
Call
これはまだ使ったことないですが勉強しながら試してみます。。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 セルにドロップダウンリストをつけるにあたって、入力候補に斜線(罫線でセル全体に/を引くやつです)を 入れたいのですが、可能でしょうか。 よろしくお願いします。
653 :
635 :2013/02/17(日) 18:28:15.41
>>640 ありがとうございました。
変数は、Dim x As Variant, y As Longでいいのかな?
やってから聞けよ
>>653 答えじゃなくて申し訳ないけど
なるべく厳密に型を指定するほうが良い気がするので
俺だったらVariantは使わずに Dim x As Range,y As Long で宣言する
でも、もしかしたら何か拙いかもしれないから答えと言えるほど自信は無い
>>645 勉強になりました。
しかし罫線をvbaって発想がないわ。
657 :
635 :2013/02/17(日) 19:02:10.68
>>654 やってから聞いてますが?
「ヴァリアント型にしる!」って怒られたから、Dim x As Variantと書きました。
>>655 ありがとうございました。
658 :
635 :2013/02/17(日) 19:09:09.25
>>636 ボタンクリックで集計し、表をつくり、印刷するところまでをVBAでやってるので、
その不定形な表に合わせた罫線が必要なんです。
659 :
635 :2013/02/17(日) 19:10:10.25
>>656 条件付き書式で使える線のスタイルには限りがあるし、古いExcelは条件を3つまでしか指定出来ない
VBAなら自由に枠線を引く事が出来る
神奈川とかw
>>657 >「ヴァリアント型にしる!」って怒られたから、Dim x As Variantと書きました。
出て来た疑問を逐一垂れ流してんじゃねぇよ。
>>651 あー、条件付き書式があったな
リストに「/」を入れておいて、
文字列が「/」と等しい場合に
「文字色を白」、「罫線を斜線」
にすればvba使わなくてもいけるわ
>>663 まぁまぁ
別にいいじゃん勉強になるし なにそんなかっかしてんの
答えたのに、お礼がなかったとかw ケツのアナが・・・ 臭いヤシ
667 :
レス代行していただいてます :2013/02/17(日) 21:29:33.53
>>660 >>664 ありがとうございます。今
>>664 の方法で試しているところです。
リストに/を入れて条件付き書式→/のセルを選択→セルの書式設定で
文字色を白まではいけたのですが、罫線の/が選択できない状態です。
どこか間違っているでしょうか。お手数かけてすいません
条件付き書式ではセルに斜線は引けない、線種に二重線や太線も選べない
>>667 >>668 うわ、本当だ、ごめんね。
斜め線だけできないとは知らなかった。
ってかなんでできねーんだよwwwくそwww
というわけで、俺では
>>660 のVBA、ワークシートチェンジしか思いつかない。
670 :
レス代行していただいてます :2013/02/17(日) 23:24:36.99
671 :
561 :2013/02/18(月) 10:20:03.56
>>574 ありがとうございます。
追加で質問なのですが、ボタンでマクロを実行したさいに、最後の方で実行途中のまま進まなくなります。
そこでクリックを押したりしたりするとマクロが正常に終了するので、業務上は問題ないのですが、
きちんとマクロを最後までキレイに終了させる方法はありませんか?
>>671 それって99%はプログラムのミスだから「よく見直せ」としか言えない
残り1%は「仕様だからあきらめろ」
ステップ実行でどこで止まってるのか確認すればいいのに
>>671 5行目を
fName = Dir(ThisWorkbook.Path & "\" & "*.xls")
に戻して
7行目を
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fName
でどうだろう
675 :
名無しさん@そうだ選挙にいこう :2013/02/18(月) 16:30:20.91
EXCEL2010です。 VBAを使わないで、選択した複数のシートの全データを列方向につなげて 1つのシートにコピーできる関数があれば教えて下さい。 (文字列コンカチネートのシート版みたいなイメージ)
VBA無しでシートの選択状態をどうこう考える事自体が無理
エクセルに図形を挿入して、その中に文字を入れたいです。 昔のエクセルでは、図形のサイズに応じて、長くなりすぎた文字列は自動で縮まった気がしたのですが、今のエクセルにはそのような機能は無いのでしょうか? 検索したら、文字列に合わせて自動でテキストボックスのサイズを変更するという意味のわからないものばかりが引っかかりましたが、四角の方は大きくしたくないです。 関数とかVBAとかの質問ばかりのところ初歩的な質問で申し訳ありません。
下記のようなマクロで、途中の行が非表示だったら MsgBox i & "行目が非表示です!" とメッセージを出すには どう書けばいいですか? Sub test() For i = 2 To 10 If Cells(i, 1) = "合格" Then Cells(i, 3) = 10 End If Next End Sub
For i = 2 To 10 if Rows(i).Hidden = True then MsgBox i & "行目が非表示です!" end if Next
681 :
679 :2013/02/18(月) 23:34:13.38
>>680 おぉぉ、素早いご回答ありがとうございます。
>>678 図形を右クリック、図形の書式設定
あとは開いた窓の中を見ればわかる。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 使えない 【4 VBAでの回答の可否】 可 Private Sub CommandButton10_Click() Application.ScreenUpdating = False Application.DisplayAlerts = False CommandButton10.Enabled = False Dim Last_Row As Long Dim Sheet_Count As Long On Error GoTo Finish For Sheet_Count = 1 To 50 Sheets("Sheet" & Sheet_Count).Select ActiveSheet.AutoFilterMode = False ActiveSheet.Range("B3:L3").Select Selection.AutoFilter ActiveSheet.Range("$B3:$L34").AutoFilter Field:=3, Criteria1:=">13" ActiveSheet.Range("B4:L34").Select Selection.Copy ActiveSheet.AutoFilterMode = False Sheets("統合").Select Last_Row = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row Cells(Last_Row + 1, 1).Select ActiveSheet.Paste Next Exit Sub Finish: End Sub 上記のコードだと、オートフィルターの>13で引っかからない場合にすべてをコピーして、貼り付けてしまいます。 オートフィルターで検索されたセ数が0の場合に、コピーを0にするか、またはコピーしないにはどうすればよろしいでしょうか? if アクティブシートでの検索結果が0 then next みたいなのってどうすればいいですか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 オートフィルタってやつをすると、横に設置してあるボタンの位置がそれに合わせてずれるのですが 対処方法はないですか?
>>684 それくらいまずググってから聞けよ
図形を右クリック⇒図形の書式設定⇒プロパティ
⇒「セルに合わせて移動やサイズ変更をしない」
686 :
679 :2013/02/20(水) 02:57:52.28
>>679-680 の関連です。
非表示行があったら、2行を再表示するため次のように書きました。
For i2 = 3 To 100 Step 2
if Rows(i2).Hidden = True then
Rows(i2 & ":" & i2 + 1).Hidden = False
End if
Next
Rows(i2 & ":" & i2 + 1).Hidden = Falseでも動作しましたが、
他の書き方があれば教えてください。
rows(i2).resize(2).Hidden = False
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 少しだけ 【4 VBAでの回答の可否】 可 (UserForm上) Private Sub CommandButton1_Click() Columns("B:F").Select Selection.Clear If OptionButton1.Value = True Then Sheets("情報").Activate ActiveSheet.AutoFilterMode = False ActiveSheet.Range("D4:G4").AutoFilter ActiveSheet.Range("D4:G4").AutoFilter Field:=4, Criteria1:="=欠席" ActiveSheet.Range("D4:G2000").Select Selection.Copy Sheets("確認").Activate ActiveSheet.Range("B2").Select ActiveSheet.Paste Elseif ……(上とほぼ同じ)…… ×4 End If Unload Me End Sub これでメモリ不足ってのが発生してしまうんですが、原因はなんでしょうか? 一応最後までいって終了する時に発生するので運用はできるのですが……
すみません、エクセル閉じてやり直したら出なくなりました
メモリ不足はメモリ不足だろ 7で1GBとかしか積んでないメーカーPC買うとそうなる
一応6gb積んでます……
じゃあ今度また同じようなエラー出るようになったらブレークポイント付けてどの時点でメモリ使用量が上がってるのかを調べる
6GBでも使い方次第で本当に不足するからな うちじゃ12GB中10GB以上使ったら警告出るようにしてるが、偶にこの警告出るし
694 :
679 :2013/02/20(水) 20:52:55.31
>>687 ご回答ありがとうございます。
Resizeって、Range以外にも使えるんですね・・・ メモメモφ(..)
>>694 Rowsの中身はRangeなのです
Rows(i2 & ":" & i2 + 1) は Range(i2 & ":" & i2 + 1) と書き換えることもできます
最近VBEを必ず使うようになってきたのですが Excel起動時にデフォルトでVBEが表示されるようにすることは出来ないのでしょうか?
>>696 個人用マクロブックかアドイン
質問時必須情報(
>>1-3 参照)を書いてないので、こっちも具体的な方法は伏せる
まあ簡単なので、VBEを自動で起ち上げたいってくらいVBAを使い込んでる奴なら
具体的な方法などそもそも教える必要など無いだろうがな
VBEはショートカットキー[ALT]+[F11]で起動しましゅ(^▽^)
VBAの実行を繰り返していると スタック領域が不足しています (エラー 28) と出てきますが プロシージャの数は100ほどで1回に実行されるのはせいぜい10個も事項されない感じなのですが 実行を繰り返すと実行されたプロシージャを記憶してるのか最後は速エラーが出るようになるのですが BOOKを閉じてまた開くと初期化されるようですが 単発実行して終了する時、End時に記憶された物をその都度すべてクリアする事は出来ないのでしょうか?
再帰しすぎなんじゃない
>>700 10個も事項>10個も実行、、、でしたすみません。
>>700 詳しく説明しますと80通りぐらいの個別の実行分を80のプロシージャに記述し
ショートカットキーを使って実行させると表のデーター数カ所の数値の計算結果に応じて80の内の3〜5個ぐらいのプロシージャが実行されます、
その後最後はend ステートメントで終了するようにしています。
表の値を変えながら ショートカットキーをぽちぽち押していくと数十回程度押すとエラーが出始めます
最後は押した瞬間エラーが出ます。
endステートメントは変数の値をクリアする機能があると説明されているようですが何故スタック領域が不足するのか謎です。。
End は開いているリソースの後処理を何も行わずにアプリケーションを終了させるため、 使用する前にリソースを正しく閉じてみる必要があります。 たとえば、アプリケーションの フォームが 1 つでも開いている場合は、制御が End ステートメントに到達する前にフォームを 閉じてください。 End の使用はできる限り控えて、すぐに停止する必要がある場合にのみ使用してください。 通常の方法 (Return ステートメント (Visual Basic) および Exit ステートメント (Visual Basic)) を使ってプロシージャを終了させれば、プロシージャを正しく閉じることができるだけでなく、 正しく閉じるための処理を呼び出し元のコードに追加することもできます。 たとえば、 コンソール アプリケーションの場合なら、Main プロシージャから Return を実行するだけです。
>>704 初心者でしてExit ステートメント Return ステートメントをどうやって使えばいいかヘルプを見た感じではぱっと理解出来ませんでしたが勉強してみます。
ありがとうございます。
80個をばらして細分化し何がエラーの原因になっているのか時間をかけてチェックしてみます。
PC再起動でエラーの回数が減ったりしたようですが、
VBAは何でも出来ると思っていましたが
こんなエラーが出るアプリはやっかいですね、、w
スタック領域が不足しています (エラー 28) ・スタックの詳細は不明 ・解放の仕方は無い? これは逆に言えばVBAはいつエラーが起きてもおかしくないプログラムで、 起きるメカニズムもブラックボックスで解明のしようがない よってVBAは本当に複雑で膨大で確実性が求められる処理には向いていないという理解でOKでしょうか?
exitはsubの上に書くだけでok Sub a() '処理内容 Exit Sub End Sub VBAだとreturnは使えなくないか
708 :
705 :2013/02/21(木) 23:54:41.05
>>706 スタック領域を使い切るようなプログラムを組んでいる人が悪いだけです。
確かに未知のバグの可能性も否定できないが
少なくとも私はそうしたエラーで困ったことがないし、聞いたこともない。
複雑で膨大な処理がどこからかはわかりませんが、
あくまでアプリケーションの付属品の上、ずっとアップデートしていないので
現行の言語より使い勝手は劣りますね。
一番の問題は多人数開発の環境がないに等しいことです。
処理の所々でエクセルが使ってるメモリの量や空きメモリ量を監視して 一定量を超えたらブレークさせてローカルウィンドウ等で変数の状態を見てけば原因はわかるんじゃないの
>>709 とあるビックデータの解析で
10→40→80と増やし最終的には10000以上までプロシージャ数を増やす予定でしたが
この計画は泡と消えそうですね、、
>>711 心配しないでください、あなたのプログラミングスキルが足りないだけです
どんな解析処理なのかわからないんでなんともいえないけど VBAで10000プロシージャは常識を超えてるね 設計に問題はないのかとまず疑うレベル
百聞は一見に如かず、そのスタックを使い切るプロシージャのソースを見てみたい
>>713 10000プロシージャで授業員500~1000人に匹敵する計算処理が自動で処理出来て
これで仕事も人生も安泰かと勝手にワクワクしていました。(マジで笑)
>>714 お見せするのは厳しいです、、
>>715 データ処理のキモになる部分は省いて、コメントも全部外して、変数名も適当に変えて、見せてくださいな
>>711 そこまで行くと、VBAのコードでメモリが食い潰されてる気がする
staticとかそういう次元じゃなさそう
>>715 もうちょっとプログラムも人生も、効率的に回せるようになるといいね
719 :
名無しさん@そうだ選挙にいこう :2013/02/22(金) 10:34:15.38
質問です。 EXCEL97の時代から2010まで、エクセルで注文書を書いているのですが、 過去の文字列を膨大なファイルの中から検索する方法はありますか? 2000の頃まではフリーソフト(何とかFIND?)があったのですが、現在はアドインとして使えないみたいです。
Windows自体のドキュメント検索機能の詳細オプションで何とかならない?
それ以上に高速化したいなら、過去の分と、今後は月が変わったら前月分を データベース化しちゃったら? ちょっと事前準備的な手間は掛かるがExcelブックのまま検索するのとは比べものにならない速さだよ まあそれをやるかは、検索を行う頻度と相談して決めればいい 年に1,2度程度しか過去注文書の検索をやらないならDB化する手間の方が大きいかも知れないが 頻度が多ければ、毎度の検索で短縮できる時間がDB化の手間を上回るし
>>719 Windows Vistaから、Windowsの検索機能はファイルの中の文字列も検索の対象になった
パスワードがかかってなければExcelやWord文書の中も検索してくれる
逆にファイル名だけで検索するのが手間になったので、こっちをフリーウェアでやる人が多い
それで絞り込んでから、ファイルを開いてExcelの検索機能で検索すれば、
二度手間だけど目的は一応達成できる
723 :
名無しさん@そうだ選挙にいこう :2013/02/22(金) 12:51:03.16
excel2010で、郵便番号ウィザードがインストールしようとすると、Microsoft excel が見つかりませんと表示されます。 [ハードディスクにダウンロードした zipcode7.xla を以下の場所へコピーします。スタートメニューの[プログラムとファイルの検索]ボックスに以下のパスを入力してEnterキーを押すと、Libraryフォルダが開きます。] ↑この意味が全く分かりません。プログラムとファイルの検索にパスワードを入れても一致する項目はないと出ます。 どなたか分かる方居ますか? ちなみに郵便番号辞書はインストールできました。 お願い致します。
725 :
700 :2013/02/23(土) 04:58:43.36
>>714 ひたすらググってようやく似たような事例を発見しました。
http://www.gizcollabo.jp/vbtomo/log/archive/vbqanda_2480_3.html 一番最後の箇所で述べられています
SubプロシージャA(終了処理でBを呼び出す)
SubプロシージャB(終了処理でCを呼び出す)
SubプロシージャC(終了処理でAを呼び出す)
このように芋づる方式で自分も書いています、基本的に取得数値に応じて途中でendで終了するようになっていますが
最後まで到達した場合80プロシージャを通過していくことになりこれがエラーの原因になっていると解説されていました
解決方法の箇所を見ると芋づるではなく一つのセプロシージャからひたすら呼び出だせばOKと書かれているようですが
おそらく数百から数千を呼び出す仕組みを書くには相当時間をかける必要がありそうで挫折気味ですがw
プロシージャ数がエラーの原因なら1プロシージャに40個ぐらいのIF文を書いて回避出来るのではないかと思ったりしました。
アホの子か
727 :
700 :2013/02/23(土) 05:24:05.29
>>725 といいますがユニット化されたプログラムは基本芋づる式で動かすのは常識ではないかと思うのですが
何で100個程度でエラーになるのかVBA初心者としては納得いかない物がありますwがエラーを出す理由は何なのでしょうか?
MSならWindowsのメモリーの制御もたやすい物だと思いますがえらく小さいサイズに設定しているようですが処理スピード維持意外に何か都合の悪いことでもあるのでしょうか?
>>726 超眠くて文章がまとまっておらずスミマセン。w
>>727 とりあえずコードを晒さないならもうその話終わりにしてね。
今までの内容からだと、基礎の基礎さえも無視した初心者が自分で理解できる範囲で無理やりコード書いてる状態にも思えてしまいます。
たとえばメインからサブAを呼び出して処理を終えたら、サブAからメインに帰るのが基本。 サブAの結果によってその後の処理を変えたいなら、サブAがメインに変数を渡せばいい。
>>725 >SubプロシージャA(終了処理でBを呼び出す)
>SubプロシージャB(終了処理でCを呼び出す)
>SubプロシージャC(終了処理でAを呼び出す)
最後の三行目はおかしいっていうかダメだろ
これって要するに再帰呼び出しになるから、
どこかで処理をやめないとどんどんスタックを消費する
まぁ、正解は
>>730 ってこった
732 :
名無しさん@そうだ選挙にいこう :2013/02/23(土) 10:08:48.28
シート1に下のような顧客データ3000件ほどあります。 A B C 千葉県 館山市○○ 契約済 東京都 葛飾区○○ 契約否 シート2に、契約の済んでいる県を、県別にカウントしたいのですが、関数の数式がわかりません。 分かる方お教えください。 よろしくお願いします。
まともに作ったらプロシージャの呼び出しだけでスタックを食い潰すはずがない
>>729 コードが晒されたとしても、たぶんひどいスパゲッティでとても読む気になれない
>>732 そういう時は数式じゃなくてピボットテーブルを使え
手順通りに10回ぐらいクリックするだけで集計された一覧表が作れる
735 :
名無しさん@そうだ選挙にいこう :2013/02/23(土) 10:21:20.57
732です。 ありがとうございます。でも会社のシートなので、ピボットに変えることができないのです。 引き続き、分かる方お願い致します。
>>732 =SUMPRODUCT(($A$1:$A$3000="東京都")*($C$1:$C$3000="契約済"))
別シートか =SUMPRODUCT((シート1!$A$1:$A$3000="東京都")*(シート1!$C$1:$C$3000="契約済"))
738 :
名無しさん@そうだ選挙にいこう :2013/02/23(土) 11:00:16.42
736さん。 出来ました☆ 本当にありがとうございました!
このスレは良スレでしゅ(^▽^)
大きなお世話かもしれんが、SUMPRODUCTは数が増えると重くなるよ フラグとSUMIFの組み合わせでやる方法もある
Dictionaryを使う手もある
countifsはもう少し認知、評価されていい。 引数の並び方が大変分かりやすい。
あと出して「Office2003なんです」と言われるのがオチなので環境が書いてない時はあえて持ち出さない
いいやん 誇りを持てよ
そんな後出しのおれ知ってるけど感出されてもなあ
VBA初心者ですが プロシージャ内で指定行数や先に書かれている特定の命令へジャンプさせる命令は無いのでしょうか? IF文ならIF文内でのジャンプは行われていますがもっと自由に指定した箇所へ速ジャンプ出来る命令をさがしています プロシージャ間ならプロシージャ名を記述するだけでできますがプロシージャ内で同じような事を行う事は出来ないのでしょうか?
GoToがあるけど多用は勧めない
748 :
746 :2013/02/24(日) 13:03:11.91
>>747 GoToは同一プロシージャ内で使えるのですね
しかもサブルーチンなんて指定も出来るとは知りませんでした、一歩前進しました。
ありがとうございました。
エラートラップ以外ではGoTO使わないのが基本 そもそもGoTOの移動先にしたいような場所は、だらだらと繋げず そこから別プロシージャに分けるべき場所と認識した方が良い
goto、テスト以外で使ったことないや。 そんなに必要な場面ってあるのの?
751 :
746 :2013/02/24(日) 13:09:59.76
試行錯誤もいいけど、構造化プログラミングを基礎から勉強しなおしたほうが効率的だと思う
>>751 >>725 を見る限り、
プロシージャ分けすぎてるんじゃなくて、
呼び出したプロシージャを正しく終わらせてないから
スタック領域が開放されないんですよ
Callは飛び先のプロシージャでのEnd SubもしくはExit Subで
元のプロシージャに戻るわけで、そのために呼び出し元の情報を記録してます。
725の例みたいに
プロシージャA、B,Cがあって、
AからBをCall、そのBからCをCall、CからAをCall、なんてことをやっていると
戻り先の情報がどんどん溜まっていき最終的にスタック不足になります。
>>730 にあるようにメインのプロシージャを作っておいて
そこからAをCall、AからEndSubでメインに戻って
つぎにメインからBをCall、みたいな構造にしておけばいいんですよ。
>>751 スタック不足になるのは設計ミスというか単なるバグ
プロシージャをまとめるなんていう間違った対策をしちゃいけない
基本がわかってないと、たぶん何をやってもいずれ破綻する
あとVBAの話題はVBAスレで
あっちはもっと厳しい人が多いけどな
みんなやさしい
756 :
751 :2013/02/24(日) 14:10:49.91
>>753 詳しい説明ありがとうございます
自分はすっかり
スタック領域が不足しています (エラー 28)
に相当警戒しています、、w 破滅的なエラーですので
教えて頂いた情報を参考に事前に負荷検証しながら書き進めて逝きたいと思います。
それくらい自分で直せるようになっとかないとこれから先別のエラーが出た時困るよ
なんでvbaで負荷検証なんて必要になるんだよ・・・
>>754 基本をもっと勉強します、ありがとうございます。何と!VBAスレがあるとは知りませんでしたw 元々Excel初心者でしたが最近VBAを覚えそのままここへ質問していました、、のぞいてみます。
>>757 >>758 解析するデータが大きくVBAを使い数週間から1ヶ月ぐらい24時間計算処理を続ける事を考えています
その過程においていつ発生するかわからない
スタック領域が不足しています (エラー 28)
はあり得ない現象だと思っています。
1ヶ月稼働させる中でたとえプロシージャ数が3つだったとしても1回の受け渡し処理を別処理として新規で記憶し続ける
構造になっているとしたらちりも積もればで何週間かたつとエラーが出るという事になるかと思われます。
道具の使い方を根本的に間違ってる 不可能じゃないけど回り道だ 東京から大阪まで自転車で行くようなもん そういうのはVBAじゃなくて、せめてVBを使え VisualStudioも個人使用なら無料だし、エディタのアシスト機能もVBEと比較にならないほど充実してるから 初心者でもとっつきやすい
言語の選択を誤っているな。 VBAはあくまでエクセルの付属品、単体のコンパイラに比べて恐ろしくパフォーマンスが悪い。 スタック領域のエラーじゃなくてもメモリ不足で落ちる可能性は十分にある。 なんのデータ解析かは知らんが、そのままいけば本当に後悔するぞ。
>>759 エラー処理くらいしろよw
エラーを見越したプログラミングをすれば良いだけ
処理の進捗を管理しつつ、中間データをテキストで吐き出し、何かあっても最小のロールバックで済む様にするとか
1週間とか1ヶ月単位で稼働させ続ける端末にWindowsを選ぶ事自体があたまわるい そのうえでExcelとかさらにあたまおかしい 素直にお金払って業者に相談しなさい
エクセルで1ヶ月フル稼働して解析するビックデータとか寒過ぎる
>>760 >>761 >>762 なるほどVBってWindowsのアプリその物を作るものですか!
自分は多少のWEB系のプログラム経験がある程度ですので
今はまだそこまではという感じがあります、、敷居が高いですね
VBへ行くと計算式その物のコードを書き正しい答えを出しているか
検証する必要があるかと思いそこの所が気になります。
>>764 休日にやっていることからお察しいただけるかと思いますが
ふとした思いつきで実験的にやってる趣味のデータ分析です
知りたい答えが得られれば手段は何でも良いかと
ビックデータは解析理論がどうかにかかっていると思っています
http://www.youtube.com/watch?v=Q4gTV4r0zRs
理論の前にプログラミングスキルを身に付けなさい
>>765 そろそろVBAスレなりなんなり行ってくれ
頑張れよ
VBA出来たらVBも出来ると思うわ
他人にGOTOのやり方聞かなきゃいけない人には無理ってもんだ。
GoToなんてコーディング規約でも禁止されてるところ多いし使えなくても問題ないだろ
ヴォルクアップってコード番号みたいなもんがないと検索みたいなことはできないのか
773 :
719 :2013/02/25(月) 09:29:15.94
ありがとうございました。WIN標準の検索機能に気が付きませんでした。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 特定のセルにある文字列をシート名にコピーするマクロを作りたいのですが Sub 名前() Dim N As String N = Sheets("sheet3").Range("B1").Copy Sheets("sheet3").Name = N End Sub だと名前がtrueになってしまいます。どうしたらいいでしょうか?
N = Sheets("sheet3").Range("B1").Text
776 :
名無しさん@そうだ選挙にいこう :2013/02/25(月) 15:08:34.50
【1 OSの種類 .】 WindowsXP Professional Version2002 Service Pack 3
【2 Excelのバージョン 】 Excel 2007 SP3
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可・否
http://or2.mobi/data/img/51591.jpg 赤の矢印より右でセルが無くなっています
この設定の名称と設定と解除の仕方を教えてください
>>776 ALより右の列を非表示にしてるだけじゃないの
AL列から右側の黒いとこまでドラッグしておいてから右クリック再表示でいいんでは
778 :
名無しさん@そうだ選挙にいこう :2013/02/25(月) 16:50:14.70
>>777 表示、再表示できるようになりました。
ありがとうございました。
このスレは良スレでしゅ(^▽^)
780 :
名無しさん@そうだ選挙にいこう :2013/02/25(月) 19:11:33.70
▼━質問テンプレ (必ず使ってね) ━━━ 【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 1.xls 2.xls 3.xls というファイルがあり、それらのファイルを参照させて それぞれの項目の○×を集計したいのですが、可能でしょうか? 項目は決まっていないので、集計が001〜004まであるとは限りません。 (もしかしたら005という項目があるかもしれないということ。) よろしくお願いします。 1 001 AAA 003 CCC 004 DDD 2 001 AAA 002 BBB 004 DDD 3 002 BBB 003 CCC 集計 1 2 3 001 AAA ○ ○ × 002 BBB × ○ ○ 003 CCC ○ × ○ 004 DDD ○ ○ ×
ファイルが3つしかないなら、いっこのテーブルにしてからピボットがいちばんかんたん
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 取り消し線のアイコンをリボン内にいれるにはどうすればいいですか? 逆に、フォントサイズの拡大・縮小、ふりがなの表示・不表示はいりません。
リボンの設定を開いて左のリストを「その他のコマンド」にしてから「取り消し線」を探せば見つかる
784 :
名無しさん@そうだ選挙にいこう :2013/02/26(火) 05:12:43.46
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2003、2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 A列に入力してある数値が一緒の場合はB列に入力してある文字列も一緒でなければならない といった感じにしたいのですが上手くいきません =IF(AND(COUNTIF($A$1:$A4,$A1)>=2,COUNTIF($B$1:$B4,$B1)=1),1,0) =IF(AND(COUNTIF($A$1:$A4,$A2)>=2,COUNTIF($B$1:$B4,$B2)=1),1,0) =IF(AND(COUNTIF($A$1:$A4,$A3)>=2,COUNTIF($B$1:$B4,$B3)=1),1,0) =IF(AND(COUNTIF($A$1:$A4,$A4)>=2,COUNTIF($B$1:$B4,$B4)=1),1,0) A B 100 リンゴ 100 リンゴ 100 リンゴ 100 ミカン 上記のような場合は「100 ミカン」がチェックされるのですが A B 100 リンゴ 100 リンゴ 100 ミカン 100 ミカン このような場合はスルーされてしまいます(「100 ミカン」が2か所間違っているので両方チェックしたい) EXACT関数だと2つの比較しか出来ないようですし、どのような関数を使えば良いのでしょうか? 説明の為にA1〜A4までしか書いていませんが、実際はA50まで使用します
>>784 リンゴが2つ、ミカンが2つで同じ数ですからリンゴが正解でミカンが間違いとする根拠がないように思います。
その辺をはっきりしないと解決しないんじゃないでしょうか。
「100の時はリンゴが正解」という風に決まっているんならVlookup関数とか使った方が楽な気がします。
>>784 B列もりんごとみかんだけなら他の簡単なアプローチもある
あと関数式中の”範囲”が固定の場合$A$1:$A4ではなく$A$1:$A$4とするべき
もう少し言うと行(横)へのコピペをしないのならA$1:A$4でいい
A列でソートしてからC列に =if(A1=A2,if(B1<>B2,"×",""),"") とかやればいんじゃね
788 :
名無しさん@そうだ選挙にいこう :2013/02/26(火) 09:42:01.77
C列に =A1&B2 を入れる A1、C1それぞれをcountifで数えた数が一致してればTrue、不一致ならFalseでいいのでは
789 :
名無しさん@そうだ選挙にいこう :2013/02/26(火) 10:50:58.35
【1 OSの種類 .】 WindowsXP service pack3 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 お願いします。今度、職場で2台のPCを購入しました。 この2台のPC用にExcel2007を2つ別途買いました。(プリインストール版ではありません) それぞれのPCにそれぞれのExcelをインストールすればなんの問題もありませんが 管理がめんどうなので1つのExcelを使い回しで入れたいと思っています。 ライセンスとしては2つ購入してるので問題ないと思ってますが 電話認証って2台のPCに可能なんでしょうか? 2台目をインストールすると1台目のライセンスは無効(使用不可)になるんでしょうか? この2台のPCはインターネットにはつながっていません。ローカルLANにはつながってます。 よろしくお願いします。
790 :
784 :2013/02/26(火) 10:53:20.73
>>785 入力するシートによって正しいか否かが違います
「100 リンゴ」で正しい場合もあるし、「100 ミカン」で正しい場合もあります
これは入力する人によって100の時はリンゴ派とミカン派がいるので仕方ないのですが、
最初に「100 リンゴ」と入力したら、そのシート上の後の行のセルでは「100 ミカン」は駄目ですよ・・・
といった感じにしたいのです
>>786 B列は思いついただけでも20〜30種類あります(A列も同様に10〜20種類あります)
あと、$はご指摘の通りに「$A$1:$A4ではなく$A$1:$A$4」にしています。ここに書き込む時にミスりました
>>787 その方法だと実質的にEXACT関数での2つのセルの比較になるのではないでしょうか?
最大で50行ぐらいある全てのセルとの比較をしたいのです
>>788 その方法でも後者のケース(「100 ミカン」と「100 リンゴ」が2個ずつある場合)だとチェックに引っかからないかと
管理が面倒の意味がわからん 別のプロダクトキーでアクティベーションするだけじゃん
792 :
名無しさん@そうだ選挙にいこう :2013/02/26(火) 11:12:02.97
>>790 C列中に「100リンゴ」が2つ、A列中に「100」は4つ、数字が合いませんからエラーと判別できるでしょう
「100リンゴ」の数と、「100ミカン」の数を比べるのではありませんよ
793 :
名無しさん@そうだ選挙にいこう :2013/02/26(火) 11:13:43.23
>>791 数年後にPCが壊れたとかで
このPCでどっちのExcelつかってたっけ?
ってなったりすると案外忘れてるもんですよ
さらにいうと企業だと使ってる人も入れ替わるわけで
PCの台数も数十台とかになってるかも知れんし
案外面倒なもんです
794 :
784 :2013/02/26(火) 11:16:53.10
補則ですがA1&B1のセルにチェックすべき数字、文字列が入力されるとは限りません あと、説明の為に1〜4行目に比較すべき数字、文字列を記入していますが、 1〜2行目と35目〜40行目に「100 ミカン(リンゴ)」が記入される場合もあります (時系列で並べてあるのでソートは出来ないです)
>>794 C列に =IF(AND(A1<>"",B1<>""),A1,"")
D列に =IF(AND(A1<>"",B1<>""),A1&B1,"")
E列に =IF(C1="","空欄あり",IF(COUNTIF($C$1:$C$10,C1)=COUNTIF($D$1:$D$10,D1),"○","×"))
>>793 それが管理できないレベルだと、会社として続かないだろうから、後々のことを心配する必要ないよ
それにライセンス絡みとかは、不特定の匿名ネット住人に問うべきものじゃない
メーカーに問い合わせるのが基本
そんな基本というか世の常識が解ってないことからも、先は長くなさそうだな
797 :
名無しさん@そうだ選挙にいこう :2013/02/26(火) 12:41:41.42
>>796 一応、日本の超有名企業なんだけど
ある業界5指に入る&うん十年の歴史あり
まあ、いいたいことはその程度のことで会社はつぶれませんよってこと
エアー社会人のニートなんだろうけど世の中しらなすぎ
匿名って便利ですね( ̄ー ̄)ニヤリッ
799 :
784 :2013/02/26(火) 12:52:38.66
>>795 おお、出来ました
ありがとうございました
これでチェックミスによる不良が削減できるかも?
こういうのを作っても運用されるか?ってのと、チェック漏れ(質問以外にもチェック項目あり)で
作った俺が悪い!とか言われそうだけど頑張ってみます
>>797 そんな企業なのに専門の部署(IT部署とか)が無いの?
普通なら購入からインスコ、トラブル対処までお任せだと思うが
PCスキルの無い人間に丸投げって変だよな
789の1ライセンス使い回しの方がよっぽど手間も管理も大変でしょうに それでもなお1ライセンス使い回しを強行したいのであればmicrosoftに確認しなさい 業界5位以内の超有名企業って業務用のPCとソフトウェアの管理を担う部署すらないんですね
>>799 お前、作ってないじゃん
仕組みを理解してチェック漏れ対応くらい追加しろ
803 :
名無しさん@そうだ選挙にいこう :2013/02/26(火) 13:03:52.22
>>800 社内のシステムはすべて管理されててそのとおりだけど
一部管理外のテスト環境とかはそんな管理はされてない
上にも書いたけどネットにつながってないローカルネットっていったでしょ?
企業にはいろんなことがありえるのよ。勉強になったね
プロダクトキーパソコンにペタって貼れるようになってなかった?
苦しくなってきたなw
きぎょうにはいろんなことがあるからあるんじゃねーの バカが自分のバカ棚に上げてバカな事言ってんのも
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 For i = 1 to 100 If ActiveSheet.Range("D" & i).Value = ">15:00" Then ActiveSheet.Range("D" & i).Copy 上記のifで、15:00以上が判定されません。 どうしたらよろしいでしょうか? 対象のセルには"15:38"など時間が記入されています。
VBA使えないのにVBAの質問かいな
× = ">15:00" ○ >= TimeValue("15:00") でもこれ解らないレベルだと、他にも問題いっぱいありそうだな 気付かないまま間違った結果を返してたりすることもあり得るし
811 :
困ったよ・・・・ :2013/02/26(火) 18:57:09.64
エクセル2級のデータ処理 設問2抽出条件がわかりません。 どなたか詳しい説き方を教えてください。 抽出先 セルB17以降 抽出条件(次の@又はAのいずれかを満たすものをタイトルを含めて抽出) @「性別」が女子で、かつ、「タイム」が1:45:00以上で1:50:00以下のもの A「氏名」に「田」が含まれ、かつ、「タイム」が1:45:00より速いもの ひとつ ひとつは出せるのですが、二つ同時に抽出する方法じゃないと点が入らないと聞いて、 あせっています。 どなたかお教え願えませんか?
カンニングでなく会社で困ってるとかいえばすぐレスがつくのにw
813 :
名無しさん@そうだ選挙にいこう :2013/02/26(火) 19:36:05.98
え〜ん え〜ん 誰か教えてよぉ(;;) 落っこちるのいやだよぉ
なんで落ちて困る奴がなんの努力もしてないのに
彼が落ちて何も困らない赤の他人が、そいつの手助けしなきゃならないんだ?
まず本気で教えて欲しかったら、自分勝手な質問の仕方せずに
>>1-3 くらい読んで従うだろ?
質問内容からして回答に関係なさそうとか勝手に判断せず、とりあえず郷に入りては郷に従えで
テンプレ使わなくても回答付ける教えたがりクンだけではなく、テンプレ無いと解答付けない奴からも
回答貰えるように、少しでも可能性を増やそうとするだろ?
そういう必死さや本気度が全然伝わってこないんだよね
テンプレってのは、回答に必要な情報って側面もあるけど、そういう質問者の態度を量るバロメータでもある
俺としては回答に必要な情報が欠けてようと質問者が本気なら情報を聞き返して答えてやるが
適当に質問したって回答付くだろうと高をくくってナメた態度で居る奴をつけあがらせるようなことをしようとは思わない
とかマジレスしてみる
ひとつひとつが解るなら AND(一つの条件、一つの条件) でええんちゃうか
今宵は優秀な先生方ばかりですなw
まずエクセル質問3級をとらないからこうなる
このスレは糞スレでしゅ(^▽^)
Excelレベルじゃなくて日本語レベルが低すぎる
>>811 実務的には腐るほど回答パターンがある
そんなクソみたいなテストの回答なんて不能
そろばん8級ですが質問いいですか
Excel ViewerなんですがWin7の64bitをクリーンインスコしたんですが インストールの途中でエラーになってインストールできません。 64bitは非対応なんでしょうか?
仕様やバグについてはメーカーにお問い合わせ下さい
2次元配列けつごうするときかたっぽだけダメなときのやりかたおしえて
日本語で
>>811 If (性別 = False And (タイム >= 1:45:00 And タイム <= 1:50:00)) Or (InStr(氏名, "田") And タイム > 1:45:00 then
処理
End If
If (性別 = False And (タイム >= 1:45:00 And タイム <= 1:50:00)) Or (InStr(氏名, "田") > 0 And タイム > 1:45:00 then 処理 End If
性処理に空目した
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 就業開始時間が 2013/1/31 22:30:00 2013/2/1 2:17 2013/2/1 22:39 な形で1つのセルに記載されております。 この表から、22時台に就業開始した人が何人いるのかを求めるには、どうすればよいでしょうか?
>>831 まず作業列に時刻だけを抜き出せ
時刻全体を抜き出したなら、22時以降の数-23時以降の数
時刻の「時」を整数で抜き出したら、22に一致する数を数えればOK
一応言っておくが、作業列使いたくないとかの条件後出しは無しの方向で
>>831 =hour(セル番地)=22でぬきだせる
作業セル使えば簡単だと思う
作業列使うのは問題ないですが、時間の入ってるシートは取り扱い数の関係から別のシートにしておきたいです。 23-22をしなくても、 =COUNTIF(A:A,TIME(22,"*","*")) 的な感じでどうにかならないでしょうか?
hour関数で出来るっていってんじゃん
836 :
831 :2013/02/28(木) 18:33:11.75
>>835 =COUNTIF(HOUR(A:A),22))
ですね
ありがとうございます!
DQNの定番SUMPRODUCTがでてねーなw
=IF(
>>837 =DQN,"SUMPRODUCT,"")
839 :
831 :2013/02/28(木) 23:07:58.30
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
>>831 です
作業列を作ってhourだけ抜き出す方法でやったのですが、データが7,000行と膨大なためか、ファイルサイズが
1.2MBから8.6MBまで肥大化してしまいました
あまりスマートでない&社内メール(w)に添付できる1ファイルの容量が5MB(爆笑)なので
もう少しファイルサイズが小さくなる方法を教えていただけないでしょうか?
zipで圧縮しろボケ
なぜ1列足しただけで1.2MBが8.6MBになるのか;
配列数式使えば?
扱えるファイルサイズ上限が5MBであることで、 爆笑してしまうほど感受性豊かな人と一度食事とかしてみたい。 自分の顔前面が相手方の噴出した米粒で埋まる自信がある。
ファイルサイズ抑えたいならVBA使えばいいじゃん VBAなら10行くらいで書けるでしょ
100万行扱えるExcelで7000行を膨大って、なんのギャグ?
a1-a1000に0を入れてみた 45.6kb b1-b1000に =IF(HOUR(A1)>=22,1,0) を入れてみた 96.6kb どんな作業列か分からんが、大変そうだな、ということはよくわかった。
>>846 はexcel2010のマクロ無し形式xlsxな
他の形式やバージョンは知らん。
>>845 DB使えずに、DBで扱うべきデータまでExcelで処理してる君にとっては
日常茶飯事的なデータ量なんだろうな
うちでは一時的にならまだしも、数千行のデータを持つエクセルファイルを
サーバーにごろごろ転がしといたら怒られるけどなw
へー
>>839 7000件で1MB超えるのがすでにおかしいんちゃう?
7000行7列に日付・時間・名前・数量などダミーデータ入れて、作業列を入れても3〜400kb程度だけど。
1列2列追加して何MBも増えるのはおかしい。
ヒント:書式 わざわざデータベースではなくExcel使ってるのは書式設定したいからだろ?
しょうがない。作ってやったぞ。 Sub ボタン1_Click() Dim cnt As Integer cnt = 0 Dim row As Integer For row = 1 To 3 If Hour(Cells(row, 1).Value) >= 22 Then cnt = cnt + 1 End If Next MsgBox cnt & "人" End Sub
バージョンアップしてやったぞ。 Sub ボタン1_Click() Const TARGET_COL As Integer = 1 Const START_ROW As Integer = 1 Const END_ROW As Integer = 3 Dim cnt As Integer cnt = 0 Dim row As Integer For row = START_ROW To END_ROW If Cells(row, TARGET_COL).Value <> "" Then If Hour(Cells(row, TARGET_COL).Value) >= 22 Then cnt = cnt + 1 End If End If Next MsgBox cnt & "人" End Sub
浮動小数の誤差って対策してますか? やってるとしたらどのようにしてますか?
VBAでやらない javaでbigdecimal使う
>>854 身も蓋もないけどそれが正解かなぁ・・・
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002SP3 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 ここでいいのかちょっと迷うけど EXCELの「ツール」−「マクロ」−「VisaulBasicEditor」で起動したVBエディタで 前後の行に桁揃えで入れた複数の半角空白やTABが勝手に半角空白1個に短縮されてしまう機能をオフにできないでしょうか あるいはその機能はそのまま、明示的に半角空白を残す入力方法とか無いでしょうか
先頭に '
861 :
名無しさん@そうだ選挙にいこう :2013/03/02(土) 14:28:24.45
月曜から日曜日が延々と続く表を作ってるのですが(もちろんその上には日付あり) 土曜、日曜の下のセルに「○」と付けたいんですが分からない!! 皆様おしえろ下さい。。。
>>862 すまぬ
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
864 :
名無しさん@そうだ選挙にいこう :2013/03/02(土) 14:40:42.56
1行目に日付、2行目に曜日、3行目に◯を表示だとしたら、A3に IF(OR(A2="日曜日",A2="土曜日"),"◯","") を入力してオートフィルでコピーしていく
オートフィルのやりかたがわかりません
>>864 863ですが○が出ない!!A2の所の選択がわるいのか?
式提示されても式の意味理解出来なかったら意味ないよな
曜日は書式で出してんじゃないの
「恩に着る」だから 丁寧語に直すと「着ます」なんだよな
恩を切ってどうするw
バカしかいねぇなw このスレわ。
おれわ例外だけどね
確かに 君は単なるバカではなく、例外的な大バカだもんな
俺はバカな男さ、笑ってくれよ
ははは・・・
でも、マジな話、ぐぐればすぐにわかるようなことを、こことか、 質問サイトで聞くようなヤツは、バカが多いよ。
【1 OSの種類 .】 Windows 7ultimate 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 空のエクセルファイル作成して、適当な文字列入力して 上書き保存を押すと「応答なし」になるんですけど 誰かぼすけて ちなみに20セルぐらいに文字入力すると反応しません
>>879 OSをクリーンインストールしてからExcel入れ直しても同じ症状出るか検証してみて
因みに面倒とか、先に他の方法教えてとかは却下
金かけずに質問できる場で解決しようと思うなら、面倒でも自分で出来ることは自分でするのが鉄則
それが嫌なら金使って解決してくださいな
OSの問題かこれ? HDDとかのハード系な気がする
>>879 エクセル 応答なし
でぐぐって色々試してみてほしい
とりあえずエクセルの再インストールかな。
OSごとの再インストールはまた後でいいだろう
884 :
名無しさん@そうだ選挙にいこう :2013/03/03(日) 11:52:22.67
はじめまして、今excelでA列に244007このデータがあって、 それをA2475から101個のデータをA2578から101個のデータ、 A2681から101個・・・といった風にA24153までB列に連続して表示したいのですが 、手作業ではとても時間がかかりすぎてしまいます。どうか早くできる方法を教えていただけないでしょうか?
なんかちょっと意味わからん A2681:A2780 を B列のどこに表示させるの?
まちがえた A2681:A24153をB2681:B24153にっていうふうにしたいみたいに聞こえるが
>>884 B1=INDIRECT("r"&MOD((ROW()-1),101)+1+(INT((ROW()-1)/101))*104+2474&"C1",0)
これを下にオートフィル
>>884 日本語が稚拙すぎて書いてる意味がよく分からないが、Excelでする内容じゃないだろ
ひょっとしてデータ約2500個ずつを、B,C以降100列に振り分けたいということか?
質問者の日本語が糞すぎる;
普通にINDEXでいいんじじゃねーの?
作業列にグループ番号ふってピボット
よーく読めば、 B1-B101=A2475-A2575 B102-B202=A2579-A2679 で、それをA24153、B21052まで続けるわけだな。 楽勝
番号が少し飛んでるとこの説明がないっつの 101も意味わからん
>>895 わからないなら無理に考えなくていいぞ、誰も強制してない。
こんなところで時間を使ってストレスをためるとか、本当に人生の無駄遣いだぞ?
俺はパズルを解いているみたいで面白いからやってるだけで
>>894 あのな、質問者の日本語が糞すぎるのも問題だけどお前みたいな表記も同類なんだよ。
引き算に見えるだろうが。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ(既存のモノの色や指定セルを変える程度) 【4 VBAでの回答の可否】 否 横に短く縦に長いデータがあります。 そのまま印刷すると無駄にかさばるので、整形して印刷しています。 ■ ■ ■■■(1P目) ■→ ■ ■■■(2P目) ■ : 【1】毎回手作業で整形しているのですが、これを楽に行いたい場合はマクロを組む必要がありますか? 【2】両面印刷したいのですが、Wordと違って『手動で両面印刷』の項目がないのと印刷ページ指定機能がないため、 1ページ目を印刷→手差し→2ページ目を印刷と一つ一つ印刷を行なっています。 ※プリンタ側にも両面印刷設定項目がありません。 なにか簡単に両面印刷できる方法はありますでしょうか? 現在1枚のシートで処理しています。
>>899 1.はそう。indirectでできなくもないけど、きっとマクロのほうが早いだろう。
覚えておくと、色々融通がきいて便利だよ
2.は知らないや
A4を縦半分にした用紙サイズをつくって、A4縦に2UPするって方法をいま 思いついた 実験してはいない
プリンタに両面印刷の機能が無いって事だよね 6ページの印刷なら、先に3枚の紙に1、3、5を印刷し 3枚まとめて裏返しにプリンタにセットしてから残りの2、4、6を印刷する、って程度の工夫しか無いんじゃないの 印刷範囲の設定はマクロで出来るけど、厄介なので覚悟しておくように
そもそもそんな縦長のデータを印刷すること自体を見なおすべき 少なくとも印刷するために手間かけて整形とか馬鹿げてる どうしても印刷するなら段組で2ページずとかにしといたら?楽だよ
一旦PDFに出力してしまってから、PDFを印刷する行程で工夫する、という手もあるな
905 :
899 :2013/03/03(日) 19:20:59.28
>>899 です。
お答えくださった方々ありがとうございます。
ただ印刷したいときは段組がよさそうですね。今度ためしてみます。
きちんと印刷する場合は整形が必要なので、こちらはマクロを調べます。
印刷範囲指定は盲点でした。
PDF出力後印刷というのも手っ取り早そうです。
どちらにしても、片面印刷→手差し→もう片面よりはずっと早くなりそうですね。
ありがとうございました!
>>906 F を右クリックして「切り取り」
D を右クリックして「挿入」
カット&ペーストで挿入
>>907 出来ました!
ありがとうございます!!
間違えた F を右クリックして「コピー」 D を右クリックして「コピーした列を挿入」
>>906 セルの中央ではなく、セルのふち、罫線が引かれるところをクリックしてドラッグする。
カーソルが通常の白い十字ではなく、
↑
← →
↓
こうなった時だな。もう一度画像をよく見るといい
もう出来たっつってんだろ
>>911 ありがとうございます、勉強になりました。
>>912 そうですね、出来たという回答は確認しています。
ですが、出来た後に回答してはいけないのでしょうか?
誰かの名誉を傷つけたのでしょうか?
それともレス数が多くて読むのが疲れますか?
それともテンプレに書いてありますか?
>>912 今後のためにも、ご回答のほどおねがいしますね。
納得の行く回答が得られましたら、今後二度と同じ事はいたしません。
【1 OSの種類 .】 WindowsXP(windows8購入予定) 【2 Excelのバージョン 】 Excel2003(excel2013購入予定) 【3 VBAが使えるか .】 習得中 【4 VBAでの回答の可否】 可 vbaを勉強しているのですが、 今ひとつはかどりません。 問題集が乗っている サイトなどはありますか?
プログラムは目的ではなく手段だ 何か作りたいものを見つけてどんどん作っていけばいい
>>914 既に解決していたにも関わらずあえて回答をしたのだから
「解決済みですよ」という指摘は当然ではありませんか?
>>917 ありがとうございます。
がんばります。
>>916 初心者が一から順を追って覚えたいなら初心者向けの本買った方が絶対良い。一冊で良い。
金出したくないなら図書館。
辞書みたいな分厚いのは不要。そういう内容はネットで十分見つけれる。
最初のとっかかりにたいして親切なのはやっぱりネットより本だと思う。
>>918 なるほど、指摘だったのですね。ありがとうございます。
怒っているものかと感じ、疑問になっていました。
922 :
名無しさん@そうだ選挙にいこう :2013/03/04(月) 00:04:59.70
うざ
911は解答の補足的情報になるんだから そういうのだったら別にかまわんと思うけどな すでに同じ答えが出てるのに何度も答えられると リロードしろよと思うけど。
しつけぇ
Excel2013の置換が1セル1セル置換されていって遅いです。 設定で一気に置換できるようにできませんか?
926 :
名無しさん@そうだ選挙にいこう :2013/03/04(月) 16:18:04.48
女の子を痴漢するのに一人一人やったら毎回逮捕されてイヤです。 大量に一気に痴漢すれば逮捕は一回で済みますか?
一気にやってそれで一生分満足できるのであれば1回で済むだろうけど、そうじゃないだろ? しばらくしたらまたやりたくなるだろうから答えはNO
928 :
名無しさん@そうだ選挙にいこう :2013/03/04(月) 16:55:28.57
普通に一括置き換えされるけど 逆にどうやったら1セルずつ置換されんの?
Pentium IIじゃねーの?
俺の環境下だと、excel2000より新しいバージョンは皆、 数式が大量にあるともたつくなぁ。 だから対象のファイルだけはバッチファイルから起動させて、 バッチ処理の中でexcel2000で開くようにしている。 ファイルは縦型のカレンダー数年分と、毎日の実績、月集計などを入れたもので、 if sumif ISERROR 何かがごちゃってる1枚シート。 ちなみに2000だと瞬時起動に対し、2003だと開いてから20秒くらい待つ。 (PhenomUx4 910e / SSD) excel2000は外せないのう。
黄色に塗ってあるところを緑色に置換することは可能ですか? 可能であれば、どのようにすればいいのでしょうか?
933 :
931 :2013/03/04(月) 23:28:58.28
>>932 おぉ、こんな便利な機能があったのですね
今まで何度も置換して来ましたが、全然きづきませんでした
この機能さえあれば俺のシートもバラ色か
935 :
名無しさん@そうだ選挙にいこう :2013/03/05(火) 01:12:49.62
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2000&2003 【3 VBAが使えるか .】 習得中 【4 VBAでの回答の可否】 可 VBA限定になると思いますが・・・ INDEX関数で引用したい範囲が他のファイルになる場合はどうやって選択(指示)したら良いのでしょうか? ・ファイル名はさまざま ・引用したい列は決まっている(A列〜E列)が、行に関しては10行〜200行とさまざま ・複数のファイルから引用してデータの比較をしたい(データ比較の関数は作成済み) ・データが入力されている最後の行(150行目とします)から5行下あたりにBMPファイルの画像が貼ってある このような感じになっています INDEX関数を使わなくても素敵な方法があったらご教授願います
2013にはラベル印刷ウィザードないの? 見当たらないのだが
937 :
935 :2013/03/05(火) 01:48:04.10
引用したいファイルが3つあった場合 ファイル1には30行 ファイル2には50行 ファイル3には100行 のデータが入力されており、これらのファイルを開いておけば ファイル1からはA1:E30 ファイル2からはA1:E50 ファイル3からはA1:E100 の範囲を自動的に認識してコピーして、合計180行のデータを貼り付けれたら良いかなと…
938 :
名無しさん@そうだ選挙にいこう :2013/03/05(火) 16:09:41.92
>828 さん >829 さん ありがとうございます。
>>937 開きたいファイルが1つのフォルダにまとまってるならDirでファイルの一覧が取れる
データの量が不定の場合はxlDownを使うと、どこまでデータが入っているか、切れ目を自動的に探してくれる
行数を足し算しながら次のデータをコピペしてけばいい
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2010
淡い色で着色した表を、インクジェットプリンタで印刷しています。
レーザープリンタを増設したので印刷したら、ピンクやオレンジなどが
黄色寄りになってしましました。
例えば、標準の色で用意されてるオレンジ(左から3番目)はほぼ黄色です。
しかし、黄色や緑はインクジェットと比べても差が少ないので、
マゼンタを混ぜる色がダメっぽいです。
何が悪いのでしょうか?
ちなみに、このようなカラーチャートを作って印刷すると、
インクジェットもレーザーも、それなりの発色で印刷できるので
プリンタの故障ではないと思います。
ttp://uproda.2ch-library.com/642164YBT/lib642164.jpg
その表のスクリーンショットを印刷するとどうなる?
プリンターのユーティリティーで調整すべきプリンターの問題じゃね?
色相をテスト印刷してみなきゃ
プリンターだけではなくモニターの問題の可能性もある つまり、データ上の色と印刷された色は一致しているが データ上の色とモニターで表示される色が違うから 印刷された色とモニターで表示される色が一致しないというケース なんにしろ、プリンタ、モニタが絡んだ環境依存の問題なので ネットの質問じゃ埒があかないよ リアルで相談できる相手や業者を頼りなさい
945 :
940 :2013/03/06(水) 22:53:45.24
>>941 会社のプリンタなので、あとでやってみます。
>>942 940のカラーチャートだと問題がなく、2010のカラーパレットで
用意されてる中間色のうちオレンジ・ピンク系が変なので、
プリンタの問題ではないと思ってます。
>>943 色相とは?
>>944 モニタと印刷色が合致しないのは理解しています。
カラーキャリブレーションはやっていませんが、940で書いたとおり
それなりの発色で印刷できています。
>>945 画面上で人間の目にはよく似た色に見えても、印刷すると全然違うなんてよくある話
とくにレーザーはちょっとした色の違いが大きな違いに化けやすいので
あらかじめテスト印刷を何度もやって、使う色を絞り込むしかない
947 :
名無しさん@そうだ選挙にいこう :2013/03/07(木) 11:33:53.82
PDFで出力してそれ印刷すると色どうよ
確かにPDFで検証するのは有効だな ということで、この件はその報告が来るまで保留だね
macがあれば、mac使うといいよ 画面をそのまま印刷するという点に関してだけは、windowsと比べ物にならない
今はそんなに変わらないよ 少なくともExcelやPDFを印刷する上ではね ただ、昔の名残で、「画面をそのまま印刷する」ということに 重点を置いた設計や設定項目のあるソフトウェアが多いから、 Excelを捨ててでも印刷結果に拘りたいならmac使う価値もあるけどね
すまんけど教えてつかあさいや Excel2003なんじゃがのう 今9+6って入力しとるんじゃ 当然数値じゃのうて文字列になっとるがー 並び替えん時に15にゃならんよのう これを9+6の見た目のまんま実際には15で扱いたいんよ =9+6にしたら見た目も15になりよるけえダメよね 並び替え専用の列作らんとなんとかできんかいね
テンプレとVBAを使え
テンプラとばばあ?そがなもん使えんで・・・
じゃあ2chとエクセルは向いてない
ほうか見た目9+6のまま15にするんは無理言うことじゃね 無理なもん頼んで悪かったねごめんね
>>951 セルに15って入力したら、セルの書式設定開いて
表示形式のユーザー定義で "9+6" って入れたらいいさ
セルの実値は15だから、並び替えでは15として扱われるが
表示はセルの値に関係なく、ユーザー定義で指定した表示になる
たくさんあると、逐一表示形式を設定するのは面倒だろうから
そういう場合は9+6形式で入力してからVBAで変換すると良い
.NumberFormat = """" & .Text & """"
.Value = Evaluate(.Text)
ブックにマクロを含みたくなければ、変換が終ったらVBAコードは消しちゃっても問題ない
VBAでEvaluate使えば出来るだろ
書式を全て文字列にする ふりがなとして適切な値を付ける 並べ替えオプションでふりがな使用する テキスト形式で並べ替え
>>956 できたよ!親切に教えてくれてありがとね!!
960 :
名無しさん@そうだ選挙にいこう :2013/03/07(木) 17:15:54.33
【1 OSの種類 .】 WindowsXP、Vista 【2 Excelのバージョン 】 Excel2003、2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 「総合」相談書所ってことで、ここで質問 Excel上に管理品目のリストが記載されてある表から、VLOOKUP関数などを使って発注依頼書に必要な項目を抜き取って プリントさせる単純なマクロを組んだのですが、ファイルを開く時は「マクロにはウイルスが含まれている場合があります〜」 と当然のように表示されます。 何故か「ウイルス」という言葉に反応して「ウイルス!?これはウチの会社では使えないね」と言われてしまいました。 (転職して3ヶ月になる従業員50人程度の中小企業です) 今までは既にプリントされてある表から必要なアイテムを見て手書きで発注依頼書を書いていたらしく、 業務時間短縮の為にと思ったのですが受け入れて貰えません・・・ 他にもPC上から直接プリントすることになるのですが「コピーした方がコスト削減になるでしょ」とも言われてしまいました コピー、孫コピーを繰り返して細かい文字が読み取れなくなっている発注依頼書の原紙よりも明確に見えますし、 スキャナ機能を使わない分、コピーよりもプリントの方が電気代的にコスト削減になるかと思うのですが、 入って3ヶ月の身分では反論も出来ません。 今まで単純、複雑は置いとくとしてマクロを含むファイルを作成したことなかったのか?とツッコミ入れたくなりますが、 一般的に見てマクロ(VBA)とは敬遠されるものなのでしょうか? 大半は業務の効率化が目的のオフィス系ソフトですし、マクロだとは思うのですが「ウイルス」という言葉に過剰に反応されるとキツいです・・・ (ウイルスという言葉に反応していますが、会社のPCから2chを始めとしたアクセス制限は掛かっていません)
961 :
960 :2013/03/07(木) 17:17:59.63
愚痴が多くなりましたがマクロを組んでいても「マクロにはウイルスが含まれている場合があります〜」 と表示されないようにする方法はありますか? ぶっちゃけ、そんなこおを言ってくる上司なら表示さえされなければ気付かないとおもうのでw
上司のパソコンのエクセルの警告レベルをさげたらいい
マクロセキュリティーを設定で下げれば表示されなくなるけど、それを無断でやったことがバレたら 懲戒処分されても文句言えないからやめたほうがいい もちろん、直属の上司はマクロに理解が無いだけで、更に上に上司やシス管から許可を貰えるなら 構わないけどね というか、こういうのは君のプレゼン能力次第だよ マクロというのがどういうもので、ウィルス云々という警告が指す意味はこういうことで マクロ使うとこのくらい省力化出来ますってことを、上手くプレゼン出来れば採用される 俺も派遣やってた頃、私物の携帯もUSBメモリも持ち込み禁止ってくらいセキュリティー意識の高い派遣先でも プレゼンして業務効率化マクロをいくつも作って、それでちょっとばかりの特別報奨金まで貰ったことあるし マクロに理解のある人が1人も居ない職場で、派遣1,2ヶ月目でも通せるんだから、あとは君の実力次第
>>960 システムまわりを一任されるようになれば楽なんだけどねぇ
上司の上に言った方が早いんじゃね
それかVB.NETで作るか・・・うーん。
ウイルスって言ってもただのプログラムなんですよー、 と言っても通じなさそうだ
こういう場合、どういうふうに言うもんなのかな。ちょっと知りたい。
そんな長いプログラムじゃないし1行1行解説してやればいいじゃん ここはA8のセルのvalueをBBって変数に読み込んで・・ ここで印刷ですね みたいに
それはないだろw
>>960 転職せざるを得ない背景(あなたの問題)がわかるわ。
それを乗り越えられるよう頑張ってください。
コミュニケーション。
これなしでは社会人務まりませんよ。
人間社会って、難しくて正論が正しいとは限らないんだよね。 上手く立ち回らないと損するだけだよ。
マクロとエクセルファイルを分けて保存すりゃいいんでは。
べつにいいじゃん 自分だけで使えば。 明らかに他人より効率良ければ、向こうの方からそれどうやってんのと聞いてくる。 そうでなければたいした差がないってことだから無意味。
>>970 最初から何食わぬ顔でそうしてればともかく、
一旦ダメだと言われた以上そんなことしたら拙いでしょ。
無知な上司の下に付いたのが不運だったと言うしかないよ。
マクロ知らないの?プギャーってすればいいんだよ
>>960 VBA使うならそのセキュリティに関しては知ってて当然な知識だと思うけど。
ちょっとマクロ覚えて簡単な作業が自動化できて嬉しいのはわかるけど、 まだ3ヵ月でVBAもその程度のスキルなら無理して背伸びしないほうが無難ちゃうか。
>>960 契約内容にもよるけど、保守メンテ費用を考えるとプリントの方が安いという点もあるよな
こんな完全な愚痴聞かされてもそうですねとしか言えねーよ。飲み屋でも行けよ。
自分で使うマクロ入りのエクセルファイルには、自己署名入りデジタル証明書で署名する そうすると自分のパソコンで開く分には「マクロにはウイルス云々〜」のダイアログは出なくなる 人に渡すファイルは作業シートを別名で保存する、そうすればマクロの痕跡は残らない
977 :
940 :2013/03/08(金) 01:02:55.79
ピンク系、オレンジ系のチャートを作って印刷したら、そこそこの再現ができました、
ttp://uproda.2ch-library.com/642625Xqr/lib642625.jpg これらは3セルを1組としてRGBに変えたもので、これだとレーザープリンタでも
順応してくれるようです。
テーマの色として用意されてる薄いオレンジをB2セルに着色するときは
Range("B2").Interior.Color = 11851260 と書いていましたが、
これだと順応してくれません。(インクジェットだと順応してくれますが・・・)
>>977 11851260をRGBに直すと(252, 213, 180)になるってのはわかってる?
わかっていませんが何か?
>>978 同じじゃねーだろ!ハゲ!
11851260は32ビット
(252, 213, 180)は24ビット
255^3=
256^3だった
>977の数値を使って、Excel2003でやると酷いことになるなw
987 :
名無しさん@そうだ選挙にいこう :2013/03/09(土) 04:19:05.03
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 A1の文字がショウガのときはB1がイワシでなければならない A1の文字が大根おろしのときはB1がサンマでなければならない ・ ・ ・ A1の文字がワサビのときはB1がマグロでなければならない A1の文字がコンブのときはB1がマダイでなければならない このような条件で合否判定する(0,1で返す)ときは、どのような書式にすれば良いのでしょうか? 但し、A1の文字がショウガ、大根おろし・・・ワサビ、コンブ(10種類)のときのみ合否判定するようにしたいです
ショウガ | イワシ | 1 大根おろし | サンマ | 2 : : : コンブ | マダイ | 10 というような表を作って、A1とB1それぞれVLOOKUPやMATCH関数に掛けて 返った値が同一かどうか見ればいいんじゃね? ショウガ=1、イワシ=1、結果:合 ショウガ=1、サンマ=2、結果:否 リストに無いものならN/Aが返るから、あとはISNAやISERRORを使って判定すれば良い
10種類ならギリギリifのベタ打ちでも大丈夫な量だな
>>989 メンテナンス性ゼロなので2・3種類だとしてもその方法は却下。
991 :
名無しさん@そうだ選挙にいこう :2013/03/09(土) 12:03:14.82
sumif関数を使って、 =SUMIF($E$3:$E$14,F18,C$3:C$14) と構文で F18 に >F18 と記載すれば F18 以下の数値が抽出されますが、 =SUMIF($E$3:$E$14,>F18,C$3:C$14) と構文自体に記載するとエラーになります。 どのように書けばいいですか?
">"&F18
>>987 にしたがって、
A1の文字がが七味唐辛子のときのB1のセルの値を述べよ。
思慮の甘い奴だな そう言うネタを出すなら、B側を指定してA側を問うんだよ Bに対して適する候補は1,2個だが Aに対して適する候補は多数有るので Aを指定した場合は、正解となる値は腐るほど発生してしまう
しょうがといわしなら結合して1つのキーにすればVLOOKUPでかんたん "しょうがいわし"をけんさくするだけ
その方法は「じょうがい」と「わし」の場合を区別できないから嫌いだ
それは区切り文字入れることでいくらでも回避できるな
梅
お疲れ様1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。