08/12/07 22:07:10
Excelに関する質問は、ここで!
▼━ 質問のしかた ━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に>>2-10あたりの注意書きやQ&Aを必ず読むこと。
★4 質問テンプレ(雛形)は必須じゃないけど、
OSやExcelのバージョン、VBAの可否など(下記テンプレ1~4の情報)は必須情報。
▼━質問テンプレ (出来れば使ってね) ━━━━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
※【5】は、あなたがGoogleやヘルプで検索した際に使ったキーワードを書いてください。
まだ検索してないなら、質問の前にGoogleやヘルプで検索してみてください。
URLリンク(www.google.co.jp)
前スレ
Excel総合相談所 75
スレリンク(bsoft板)
2:名無しさん@そうだ選挙にいこう
08/12/07 22:07:45
▼━質問時の注意・決まり事━━━━━━━━━━
・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 書籍や解説サイトの紹介依頼はスレ違い。ここは技術的な質問のみで。
3:名無しさん@そうだ選挙にいこう
08/12/07 22:08:22
★ルールを無視すると…
>>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分野の話ではないので、ここでは聞かないでください。
4:名無しさん@そうだ選挙にいこう
08/12/07 22:09:04
★ 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セルを分割 (分割したいセル以外を結合)
5:名無しさん@そうだ選挙にいこう
08/12/07 22:09:36
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。
間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。
Excel2007についても未確認な項目が多いので変更点が有ればご指摘下さい。
また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。
ここに書かれてないからといって必ず出来るはずだなんて思わないように。
>▼環境・書式
> ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する
補足
2007ではページレイアウトビューの表示時に限り、幅・高さともcm単位で表示され、
指定も同じくcm単位でできる。
ただし大元がインチ系なのでなかなかピタリの値は出ない。1cm→0.98cmのように
近い値に勝手に丸められる。
6:名無しさん@そうだ選挙にいこう
08/12/07 22:10:14
||
|| ━ 質問のしかた ━
||
|| ★1 質問するときは、環境や条件をキチンと書くこと。情報後出しはダメ。
|| ★2 要望は具体例や図を使って明確かつ具体的にしる。
|| ★3 質問前に>>2-20あたりの注意書きやQ&Aを必ず読むこと。
|| ★4 質問テンプレ(雛形)は必須ではないが、
|| OSやExcelのバージョン、VBAの可否などは必須情報。
||
|| ∧ ∧ 。
|| ( ,,゚Д゚)/ ジュウヨウ!! E[]ヨ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ つ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/  ̄ ̄ ̄ ./| ________________
| ̄ ̄ ̄ ̄| | |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|____|/|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ は~~~~い /
∧ ∧ ∧,,∧ ∧ ∧
( ,, ∧▲ ミ ∧ ∧ ( ∧ ∧
~(_( ∧ ∧_( ∧ ∧_ミ・д・∧ ∧
@(_(,,・∀・)@ ( *)~ミ_ ( ,,)
@(___ノ ~(___ノ ~(___ノ
エクセルの技術的な質問と関係ない議論・雑談は下記スレッドで。
【質問不可】Excel総合相談所スレの雑談・議論スレ2
スレリンク(bsoft板)
7:名無しさん@そうだ選挙にいこう
08/12/07 22:10:47
【 このスレの登場人物 】
┌─質問者──────
どこにでもいるごく普通の初心者だったり
会社で上司に無理難題を押しつけられて困っている人だったりする。
たまに学生が宿題を持ち込んでくることも。
┌─回答者──────
テンプレを使わないと無視したり、質問を小出しにするとキレたりするくせに
自分は回答を小出しにして優越感に浸りニヤニヤしている嫌なヤツ。
┌─自称回答者─────
質問者を煽ったり、回答者を煽ったり、とにかくスレを引っかき回すだけで
何の役にも立たない賑やかし。単なるヒマ潰しでこのスレを見ている。
┌─VBA厨 ──────
VBAは万能と信じ、どんな単純な問題もついVBAで解いてしまう。
Module1がデフォルトで挿入されている世界を夢見るが、いまだ実現していない。
その実態はほとんどが理系の(元)学生。ピボット厨に目の敵にされている。
┌─ピボット厨─────
ピボットテーブルの機能が強力すぎるため、なんでもできると錯覚している。
口癖は「データを正規化して出直せ」「ピボッと参上ピボッと解決」など。
弱点は大嫌いなVBAを使わないとテーブルのリアルタイム更新ができないこと。
┌─啓蒙先生─────
ピボット厨一派の過激派。Excelはピボットテーブルだけのためにあり、
それ以外の機能はワークシート関数すら不要と言い切る。ピボットテーブルで
解決できない質問からは威嚇しながら逃げる。最初から出てこなきゃいいのに。
┌─そのほか─────
ワークシート関数厨……何重にも入れ子になった複雑怪奇な数式を作り出し、
関数だけでどんな問題も解いてしまう。たまに自分でも何をやっているか
わからなくなる。悩みは数式バーが1行しかないこと、頭が薄くなってきたこと。
配列数式厨……意外と使えるやつだが滅多に出てこない、というか出番がない。
極めてマイナーな存在。見かけたらその日はいいことがあるかも。
ナレーター……誰か知らない人。
8:名無しさん@そうだ選挙にいこう
08/12/07 22:37:35
マクロを途中で一時停止させるにはどうしたら良いのでしょうか?
お願いいたします。
9:名無しさん@そうだ選挙にいこう
08/12/07 22:40:35
中断ボタンを押すか、Ctrl+Break
毎回特定の場所で一時停止させたいならMsgBoxでも使え
10:名無しさん@そうだ選挙にいこう
08/12/07 22:54:47
表を作るときに指数部分を揃える方法ってないでしょうか?
どうしてもE-02やE-01など混ざってしまいます
11:名無しさん@そうだ選挙にいこう
08/12/07 23:13:07
>>8
F8押せば一行ずつ実行できる
ステップインとかでぐぐれ
12:名無しさん@そうだ選挙にいこう
08/12/08 00:08:47
>>10
指数表示をやめればいいのでは?
13:名無しさん@そうだ選挙にいこう
08/12/08 00:13:14
>>10
##0.0E+00
のように#を好きなだけつける
14:名無しさん@そうだ選挙にいこう
08/12/08 03:30:29
>>12-13
ありがとうございます
15:名無しさん@そうだ選挙にいこう
08/12/08 06:11:21
以前はPCにあったエクセルが消えてしまったんですが、復活させる方法はあるのでしょうか?
また、消えてたってことは自分で削除したってことですよね・・・?
16:名無しさん@そうだ選挙にいこう
08/12/08 06:16:29
>>15
消えたってのはアンインストールされてるってこと?
デスクトップやスタートメニューにアイコンがないってこと?
具体的に書け
アンインストールされてるならインストールしなおすしかない
アイコンないだけならexeからショートカット作り直せばいいだけだからまた聞け
17:名無しさん@そうだ選挙にいこう
08/12/08 07:31:16
>>15
ウィンドウズキー+R、ボックスに
excel.exe
と入れてok
起動すれば残ってる、起動しなければ残ってない
ディスクが残ってなければOOoでもいれとけ
18:名無しさん@そうだ選挙にいこう
08/12/08 09:30:30
>>9
Ctrl+Break ってどうやるのですか?
Breakボタンってどれのことなのでしょうか?
19:名無しさん@そうだ選挙にいこう
08/12/08 09:53:38
Sub 自動グラフ作成()
For i = 5 To 32 Step 3
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=distance!R18C1:R1009C1"
ActiveChart.SeriesCollection(1).Values = "=distance!R18C" & (i + 2) & ":R1009C" & (i + 2)
Next
End Sub
上記のように表の中の決められたセルからデータを取り出して自動的にグラフを作成してくれるマクロを作成したのですが、奇数個めのグラフは正常に生成されるのですが、偶数個めのグラフになぜか
x=
y=distance!$M$18:$M$1009
x=
y={1}
みたいな必要なグラフ以外に上記の2つのグラフを混じってしまいます。これってどこがおかしいのでしょうか?
どなたか助けて下さい。
お願いいたします。
20:名無しさん@そうだ選挙にいこう
08/12/08 09:57:18
Excel VBAで有効数字ってどうやって指定するのでしょうか?
計算である有効数字以下全く計算しない設定にするにはどうしたら良いのでしょうか?
21:名無しさん@そうだ選挙にいこう
08/12/08 09:58:59
>20
つRound
22:名無しさん@そうだ選挙にいこう
08/12/08 10:12:46
>>21
小数点何桁以下の四捨五入とかではなく、有効数字で決める方法はないのでしょうか?
それと例えば24324342*453454353
みたいな計算があるとして、有効数字5桁目以下を全く計算せず四捨五入する
みたいな方法も教えて頂けないでしょうか?
お願いいたします。
23:15
08/12/08 10:25:16
PCから>>15です
レス有難うございます
曖昧な書き方でごめんなさい
>>17の方法で出なかったので、ファイル名を指定して実行をしました
あったので開こうとしたら、「オブジェクト ライブラリ(vbean32.old)が見つからないか、または壊れています。
セットアップ プログラムを実行し、インストールし直して下さい。」と出て開けませんでした
ok押すと、「Miclosoft excelは現在のユーザー用にインストールされていません。セットアップを実行してアプリケーションを
インストールして下さい。」と出ました
ちなみに、数ヶ月前まで使えていたWordも開けませんでした
これも「Miclosoft wordは現在のユーザー用にインストールされていません。セットアップを実行してアプリケーションを
インストールして下さい。」出ました
これらは修復可能なんでしょうか?
OSはXPで、6年以上前に購入したPCで古いです
どうかよろしくお願いします;;
24:名無しさん@そうだ選挙にいこう
08/12/08 10:43:57
マウスのダブルクリックを使わずにキーボードから、
選択セルを「編集モード」にするにはどうすればいいですか?
25:名無しさん@そうだ選挙にいこう
08/12/08 10:52:02
F2
26:名無しさん@そうだ選挙にいこう
08/12/08 10:53:35
>>25
ありがとうございます
27:名無しさん@そうだ選挙にいこう
08/12/08 11:12:59
>22
つRound/Rounddown/Roundup
28:名無しさん@そうだ選挙にいこう
08/12/08 12:51:35
>>22
値が必ず整数の場合
=ROUND(値,有効数字-値の文字数)
その他の場合は上式を工夫する
29:名無しさん@そうだ選挙にいこう
08/12/08 13:17:16
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 エクセル 空白セル 挿入
一行にある入力済みの複数のセルの任意のセル間に空白セルを挿入する際に、
マウスやメニュー操作等を用いず、キー操作だけ(なんかのキー+Tab等)で行う方法はありませんでしょうか?
例1:ここに空白セルを挿入したい
. ↓
東京都|西新宿|1-1-1
↓↓↓
東京都| |西新宿|1-1-1
例2:ここに空白セルを挿入したい
. ↓
神奈川県|横浜市|1-1-1
↓↓↓
神奈川県|横浜市| |1-1-1
よろしくお願いします。
30:名無しさん@そうだ選挙にいこう
08/12/08 13:25:29
Alt i e i Enter
31:名無しさん@そうだ選挙にいこう
08/12/08 13:35:33
>>30
早速にありがとうございます。
確かにできますね。
ただ手間としてはマウス右クリック→挿入とそれほど大差ないですね、、、
もっと手間の少ない入力方法があれば・・・思ったのですが、諦めますorz
ありがとうございました。
32:18
08/12/08 13:47:21
何卒よろしくお願い致します。
33:名無しさん@そうだ選挙にいこう
08/12/08 13:50:22
Dim i As Long
みたいに変数の型を定義しなかった場合どうなりますか?
何に定義されるのでしょうか?
34:名無しさん@そうだ選挙にいこう
08/12/08 13:50:49
バリアント
35:名無しさん@そうだ選挙にいこう
08/12/08 14:09:29
>>29
挿入だけ続けてやるなら Ctrl + Y が便利だけど
それじゃだめなのかな
36:15
08/12/08 14:12:43
>>23について分かる方いませんか?
他スレで回答聞いた方がいいのでしょうかorz
37:名無しさん@そうだ選挙にいこう
08/12/08 14:15:32
グラフについて教えて欲しいのです
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ・まったく
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 Excel総合相談所
普通の棒グラフなのですが、棒の色を半透明というか透過とうか
そういうことってできませんか?
単純な成績のグラフで、実績と挙績の数字があって
実績のグラフの中を挙績のグラフで塗りつぶしていこうという目論見なのです
棒の重なりを100にして重ねることはできたのですが
このままだと挙績>実績になるとどこまでが実績かわからなくなってしまうので
挙績の棒を半透明みたいにスケレートンにしたいのです
よろしくお願いしたいのです
38:名無しさん@そうだ選挙にいこう
08/12/08 14:25:35
>>36
OSクリーンインストールして出直してこい。スレ違い。
39:15
08/12/08 14:31:11
>>38
すみません;;
ちなみに>>38の「vbaen32.olb」でした・・・
40:名無しさん@そうだ選挙にいこう
08/12/08 14:38:13
>>32
キーボードの右上あたりに、押したことのないキーが並んでるでしょ。
よく探してごらん。BreakとかBRKとかいうのがあるはず。
41:名無しさん@そうだ選挙にいこう
08/12/08 15:01:30
>>37
手前側になる方のグラフを塗りつぶしなしにして半透明のオートシェイプを貼り付ける。
別の方法としては、Mac版Excel2004でグラフを作ってインポートする。
Mac版2004ではワンタッチでグラフを半透明に出来て、しかもそれをWin版2002や2003で読み込むと
ちゃんと半透明のまま表示される。
42:名無しさん@そうだ選挙にいこう
08/12/08 15:02:42
>>40
うひょおおおおおお
ありがとうございます。
できれば一時停止の仕方もありましたら教えて下さい。
何卒よろしくお願い致します。
43:名無しさん@そうだ選挙にいこう
08/12/08 15:13:36
Range(Cells(2108, 2), Cells(3108, 2)).Cut Destination:=Cells(13, 2)
を使ってあるワークシートから違うワークシートに決められたセルの内容をコピぺしたい場合には
どう記述したら良いですか?
44:名無しさん@そうだ選挙にいこう
08/12/08 15:15:23
【1 OSの種類 .】 WindowsXP HE
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
以下のような源泉徴収票摘要欄のデータが数百行あります。
(ひとつのセルです)
前職:㈱2ちゃんねる 給与654254 税10840 社保82380
ここから給与、税、社保それぞれ別なセルに金額のデータを取り出したいのです。
規則性があるといえば、給与でいえば、"給与" から " "の間の数字になります。
45:名無しさん@そうだ選挙にいこう
08/12/08 15:17:21
>>42
Ctrl+Breakで一時停止、F5で一時停止したところから再開
46:名無しさん@そうだ選挙にいこう
08/12/08 15:22:16
>>43
Destination:=Worksheets("Sheet2").Range("B13")
47:名無しさん@そうだ選挙にいこう
08/12/08 15:25:59
>>44
=MID(A1,FIND(" 給与",A1)+3,FIND(" ",A1,FIND(" 給与",A1)+1)-FIND(" 給与",A1)-3)
48:名無しさん@そうだ選挙にいこう
08/12/08 15:29:26
給与
=MID(A1,FIND(" 給与",A1)+3,FIND(" ",A1,FIND(" 給与",A1)+1)-FIND(" 給与",A1)-3)
税
=MID(A1,FIND(" 税",A1)+2,FIND(" ",A1,FIND(" 税",A1)+1)-FIND(" 税",A1)-2)
社保
=RIGHT(A1,LEN(A1)-FIND(" 社保",A1)-2)
49:名無しさん@そうだ選挙にいこう
08/12/08 15:39:47
社保=MID(A1,FIND(" 社保",A1)+3,9)
50:名無しさん@そうだ選挙にいこう
08/12/08 15:42:51
給与=MID(A1,FIND(" 給与")+3,FIND(" 税",A1)-FIND(" 給与",A1)-3)
税 =MID(A1,FIND(" 税")+3,FIND(" 社保",A1)-FIND(" 税",A1)-2)
51:44
08/12/08 15:43:04
>>47-48
感謝感謝です。
52:名無しさん@そうだ選挙にいこう
08/12/08 15:44:05
>>46
ありがとうございます。
開いている全てのワークブックからそのファイル名と決められた位置のセルの内容を
A1にファイル名、A2:A1001にデータ
B1にファイル名、B2:B1001にデータ
・・・
みたいな感じで、複数のファイルからの内容を一つのワークシートにまとめるような
マクロを作りたいのですが、どうすれば良いのでしょうか?
For eachだとうまく作れないのですが、どうすれば良いのでしょうか?
53:名無しさん@そうだ選挙にいこう
08/12/08 15:59:04
>>52
こんな感じでできるはずだけど
Sub Sample1()
c = 1
For Each W In Workbooks
Cells(1, c) = W.Name
c = c + 1
Next
End Sub
54:名無しさん@そうだ選挙にいこう
08/12/08 17:08:26
【1 OSの種類 .】 WindowsXP HE
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 勉強中・初心者
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
BookAにはシートが50個あります。BookBはデータ処理し数値抽出用。BookCは真っ白。
BookAのシート1のデータをコピー(全抽出)してBookBに貼り付け、抽出されたデータをBookCに貼り付け。
次にBookAのシート2のデータをコピー(全抽出)してBookBに貼り付け、抽出されたデータをBookCに貼り付け(BookAシート1の時の下の段に)
次にBookAのシート3を・・・
というふうに自動でできるようにしたいのですが、どのようにマクロやVBAを使えばいいでしょうか?
例や使うべき命令などを教えていただけないでしょうか?よろしくお願いします
55:名無しさん@そうだ選挙にいこう
08/12/08 17:11:44
BookBを何に使ってるのかよくわからない
56:名無しさん@そうだ選挙にいこう
08/12/08 17:14:45
>>55
すみません。
BookBはBookAからコピーしてきた数値に特定の数値を足したり引いたりしているBookです
57:名無しさん@そうだ選挙にいこう
08/12/08 17:35:56
>>56
コピペには色々な方法があるけど、見た目でわかりやすいのはこう。
ブック名、シート名、範囲と、貼り付け先をこんなふうに書く。
Sub セル内容の一括コピー()
Workbooks("BookA").Worksheets("Sheet1").Range("A1:C100").Copy 'コピー
Workbooks("BookB").Worksheets("Sheet1").Range("A1").PasteSpecial '貼り付け
End Sub
58:名無しさん@そうだ選挙にいこう
08/12/08 17:44:23
>>54
ワークシートは名称で指定するのが普通だけど左から何番目かで指定することもできるから
for i = 1 to Worksheets.Count ~nextとか使って
Worksheet(i)の望みの範囲をコピー貼り付けすればいいんじゃないの
59:名無しさん@そうだ選挙にいこう
08/12/08 17:49:14
>>56です
>>57-58
ありがとうございます!とりかかってみます!
60:名無しさん@そうだ選挙にいこう
08/12/08 18:29:37
>>53
うおおお、できましたありがとうございます。
あと2つよろしいでしょうか?
いま001.xls、002.xls、003.xls・・・というファイルの中にそれぞれ001、002、003・・・というシートが入っているのですが、
Sub Sample1()
c = 1
For Each W In Workbooks
Cells(1, c) = W.Name
c = c + 1
Next
End Sub
でファイル名ではなく、そこに入っているファイル名と同じシート名を抜き出すためにはどうしたら良いのでしょうか?
それと、001.xls、002.xls、003.xls・・・というファイルの中の001、002、003・・・というシートから
それぞれ同じ箇所のセルからデータを抜き出したいのですが、
Destination:=Worksheets("Sheet2").Range("B13")
というのにどう書き加えれば良いのでしょうか?
何卒よろしくお願い致します。
61:名無しさん@そうだ選挙にいこう
08/12/08 18:41:44
>>53
質問者じゃないんだけれどこのWって何なの?
何の定義もせずに使えるものなの?
62:60
08/12/08 18:50:51
Sub Sample1()
c = 2
For Each W In Workbooks
For Each ws In Worksheets
Cells(12, c) = ws.Name
Range(Cells(2108, c), Cells(3108, c)) = ws.Range(Cells(2108, 2), Cells(3108, 2))
c = c + 1
Next
Next
End Sub
これでうまくいくと思ったのですが、
Range(Cells(2108, c), Cells(3108, c)) = ws.Range(Cells(2108, 2), Cells(3108, 2))
で定義エラーと出てくるのですが、なぜなのでしょうか?
63:名無しさん@そうだ選挙にいこう
08/12/08 19:08:57
▼━質問テンプレ (出来れば使ってね) ━━━━━━
【1 OSの種類 .】 Windows Vista Ultimate x64
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 折り返して全体を表示 ずれる 印刷
「折り返して全体を表示する」で複数行になっているセルを印刷プレビューや印刷をすると
下の行の文字がかなりの確率で印刷時切れてしまいます。
印刷前は文字が隠れたりはしないように適宜改行しているのにです
1.一セルの文字数は40字以上で減らすことは難しいです。
また、縮小表示も目視できずとり得ません。
その他にこれをなくすための改善策は2003ではありませんでしょうか?
とくに、
現状調べた中ではAlt+改行を繰り返すというのがありますが、
これをまくろでやることってできるんでしょうか。
2.Excel2007以降では改善されているのでしょうか。
64:名無しさん@そうだ選挙にいこう
08/12/08 19:37:34
>>61
変数宣言は一応省略もできるけども、しないといろいろ困るよね
>>63
Chr(10)が改行に当たる文字コードだからこれをマクロで挿入すればいいんだろうけど
Alt改行は好きな位置で改行が出来るというだけで、編集画面と印刷プレビューでずれる問題は
折り返して全体を表示の時と変わらないと思う
2007ではページレイアウトっていう新しい編集画面が出来たからこれでズレは防げるんじゃないかなあ
自分は2007あんまり使ってないから断言できない、ごめん
65:62
08/12/08 19:39:56
どうしてもうまくいきません。
どうすれば良いのでしょうか?
どなたか何卒よろしくお願い致します。
66:名無しさん@そうだ選挙にいこう
08/12/08 19:57:38
つーか、また計算ソフトで文書作成してる頭の弱い子ですか...
67:名無しさん@そうだ選挙にいこう
08/12/08 20:00:01
>>66
どういうことですか?
他に何か方法があるのですか?
68:63
08/12/08 20:05:01
>>64
ありがとうございます
バージョンアップして解決できるならエクセル2007明日にでも買うんですが。。。
69:名無しさん@そうだ選挙にいこう
08/12/08 20:08:33
2007はやめといたほうがいいような・・
2003で作って2007で最終仕上げ+印刷だけするってならわからんでもないけど
70:名無しさん@そうだ選挙にいこう
08/12/08 20:15:43
>>65
やはり前スレのあなたでしたか・・・
>>68
2007のヘルプより
>印刷機能の向上
>[ページ レイアウト] ビュー
>Office Excel 2007 では、[標準] ビューと [改ページ プレビュー] ビューに加えて、
>[ページ レイアウト] ビューが用意されています。
>このビューを使用すると、印刷時の見栄えを確認しながらワークシートを作成できます。
>このビューでは、ページのヘッダー、フッター、および余白の設定をワークシート内で直接操作したり、
>グラフや図形などのオブジェクトを目的の位置に適切に配置できます。
>また、新しいユーザー インターフェイスである [ページ レイアウト] タブでは、
>すべてのページ設定オプションに簡単にアクセスでき、用紙の方向などのオプションをすばやく指定できます。
>各ページに印刷される内容を簡単に確認できるので、何度も印刷を試したり、
>印刷時にデータの欠損が生じたりするのを避けることができます。
まあ2003と2007は一応共存できるし・・・2007だけ使おうとすると最初かなりイライラさせられるかも
71:名無しさん@そうだ選挙にいこう
08/12/08 20:20:36
>>62
作業してるシートをアクティブにすれば動くかもね
72:名無しさん@そうだ選挙にいこう
08/12/08 20:34:10
>>61
VBAは変数を宣言しなければシステムが勝手にバリアント型の変数を作ってくれる。
Dim W As Valiant を省略したのと同じ動作になる。
人間が楽を出来るかわりにパフォーマンスやメモリの利用効率が落ちる。
厳密にやるなら Dim W As Workbook と宣言する。
73:名無しさん@そうだ選挙にいこう
08/12/08 20:40:08
>>71
もちろんアクティブにしているのですが、うまくいきません。
どなたか助けて下さい。
74:名無しさん@そうだ選挙にいこう
08/12/08 20:54:26
>>62
シートを操作する時、どのブックの中のシートかをちゃんと書かないと常にアクティブワークブックが対象になってしまう。
For Each ws In Worksheets
↓
For Each ws In W.Worksheets
これをふまえて修正すると、こんな感じになる。ブック名と、各ブック内のシート名の一覧表を作るサンプル。
Sub Sample2()
Dim W As Workbook
Dim ws As Worksheet
Dim r As Integer
Dim c As Integer
c = 1
For Each W In Workbooks
Cells(1, c) = W.Name
r = 2
For Each ws In W.Worksheets
Cells(r, c) = ws.Name
r = r + 1
Next ws
c = c + 1
Next W
End Sub
ブック名を文字列変数に入れて拡張子を切り取ればいい。シート名を指定してコピーする方法は>>57
75:名無しさん@そうだ選挙にいこう
08/12/08 21:04:07
>>21>>27>>28
君たち有効数字って知ってる?
76:名無しさん@そうだ選挙にいこう
08/12/08 21:12:05
>>74
ありがとうございます。
でも実行してもうまくいかないのですが・・・
それと全てのシートの全てのデータを抜き出したいのではなく、
全てのシートの
Range(Cells(2108, 2), Cells(3108, 2)) に該当するデータだけを
Range(Cells(2108, c), Cells(3108, c))のセルにそれぞれ移したいのですが、
どうすれば良いのでしょうか?
For each だと範囲を指定できないのではないのでしょうか?
それと Next ws Next W って初めて見たのですが、
これってどういう意味があるのでしょうか?
77:名無しさん@そうだ選挙にいこう
08/12/08 21:29:38
>>76
つURLリンク(www.google.co.jp)
つURLリンク(office.microsoft.com)
78:63
08/12/08 21:35:51
>>69>>70
ありがとうございます。
非常に悩ましいですが70さんの説明だといけそうですね。
しまった。。。
大学で印刷する予定なのでOffice2003と下位互換性があるかお聞きして良いでしょうか
それとも1シート毎PDFで保存してPDFとして印刷すればよいのでしょうか。
79:名無しさん@そうだ選挙にいこう
08/12/08 22:14:21
>>78
詳しい人出てこないから答えちゃうけど
97-2003形式のxlsファイルで保存すれば一応互換性は保たれる事になってる
でも細かいレイアウトとかに関してはちょっとわからない
2003でプレビューと行ったり来たりしながら調整していくか
2007で作って2003で最終確認してから持っていくか
2007で作ってPDF化するか、のどれかになるのでは
80:76
08/12/08 23:51:24
うおおおおおおおおおおお
どなたかお願いしますよおおおおおおおおおおお
81:名無しさん@そうだ選挙にいこう
08/12/09 00:10:30
>>80
Nextのあとに書くのは制御変数。なくても動くしバイナリの速度もサイズも変わらない。
バグよけのおまじない。
82:名無しさん@そうだ選挙にいこう
08/12/09 00:54:15
そういえばNextの後ろに書くべきって遺体子がいたな。
83:名無しさん@そうだ選挙にいこう
08/12/09 01:15:22
>>80
こうか?
Workbooks("BookA").Worksheets("Sheet1").Activate: Range(Cells(2108, 2), Cells(3108, 2)).Copy
Workbooks("BookB").Worksheets("Sheet1").Activate: Range(Cells(2108, c), Cells(3108, c)).PasteSpecial
シート名を指定する"Sheet1"ってのは単なる文字列だから好きに変えればいい。
84:名無しさん@そうだ選挙にいこう
08/12/09 02:14:46
>>80
>>62
Sub Sample1()
dim W as workbook
dim ows as worksheet
dim ws as worksheet
dim c as integer
set ows = activesheet
c = 2
For Each W In Workbooks
For Each ws In W.Worksheets
ows.Cells(12, c).value = ws.Name
Range(ows.Cells(2108, c), ows.Cells(3108, c)).value = Range(ws.Cells(2108, 2), ws.Cells(3108, 2)).value
c = c + 1
Next
Next
End Sub
かな。試してないけど。activate はしなくてもできるはず
省略なんて、省略するとどういう動作をするのかをちゃんと把握してからやるもんだ
85:名無しさん@そうだ選挙にいこう
08/12/09 09:51:28
▼━質問テンプレ (出来れば使ってね) ━━━━━━
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 メール エクセル 背景色が変わる
メールにてエクセルの表を添付し送ってもらうと送信者の意図しない
背景色に勝手に変わって表示されてしまうのですが、
(背景色をなしで作成してメールを送ってもらうとこちらで開くと灰色に変わってたり)
この原因って何が考えられられますか?
分かる方教えて下さい。
86:37
08/12/09 12:00:36
>>41
棒の数が100や200ではないのと
デイリーに毎日作るグラフであること、
会社のPCなのでMAC版も無理なので
あきらめることにします・・・
お返事ありがとうございました
87:名無しさん@そうだ選挙にいこう
08/12/09 12:03:07
>>86
オートシェイプの貼り付けは棒の本数に関係なく、1つのグラフに1回やるだけ
88:名無しさん@そうだ選挙にいこう
08/12/09 12:13:34
>>86
作業列を作って、重なって見えなくなるときは作業列のデータを表示する
URLリンク(upload.jpn.ph)
89:名無しさん@そうだ選挙にいこう
08/12/09 12:44:13
>>84
ありがとうございます。
うまくいきました。
それと自分自身ファイルからはデータを転送する必要がないので下記のような書き加えをしたのですが、
なぜかエラーが出てきます。これは一体どこがまずいのでしょうか?
Sub Sample1()
Dim W As Workbook
Dim ows As Worksheet
Dim ws As Worksheet
Dim c As Integer
Set ws1 = ThisWorkbook.ActiveSheet
Set ows = ActiveSheet
c = 2
For Each W In Workbooks
If W.Name <> ThisWorkbook.Name Then
For Each ws In W.Worksheets
ows.Cells(12, c).Value = ws.Name
Range(ows.Cells(13, c), ows.Cells(1013, c)).Value = Range(ws.Cells(2108, 2), ws.Cells(3108, 2)).Value
c = c + 1
End If
Next
Next
End Sub
90:名無しさん@そうだ選挙にいこう
08/12/09 12:58:13
>>89
インデントちゃんと付けてる?End Ifを入れる場所がおかしいよ
Sub Sample1()
Dim W As Workbook
Dim ows As Worksheet, ws As Worksheet
Dim c As Integer
Set ws1 = ThisWorkbook.ActiveSheet
Set ows = ActiveSheet
c = 2
For Each W In Workbooks
If W.Name <> ThisWorkbook.Name Then
For Each ws In W.Worksheets
ows.Cells(12, c).Value = ws.Name
Range(ows.Cells(13, c), ows.Cells(1013, c)).Value = Range(ws.Cells(2108, 2), ws.Cells(3108, 2)).Value
c = c + 1
Next ws
End If
Next W
End Sub
91:名無しさん@そうだ選挙にいこう
08/12/09 13:14:08
>>90
ありがとうございます。
でも上記のものをコピペして使ってもまだ、自分自身のセルから
データを転送するようなのですが、
これはどうすれば良いのでしょうか?
92:名無しさん@そうだ選挙にいこう
08/12/09 13:17:41
こうかな?
If W <> ThisWorkbook Then
93:名無しさん@そうだ選挙にいこう
08/12/09 13:53:11
変な並びで作成されてしまった住所リストを普通のリストの形に並び替える方法がわかりません。
A1:100-0000 B1:100-0001 C1:201-3000
A2:住所ゴニョ01 B2:住所モニャ02 C2:住所ホニャ03
A3:社名ムニャ01 B3:社名モニョ02 C3:社名ヘニョ03
A4: 空 白 行
A5:次のデータ
・
・
のようになっており、非常に使いづらいのです。
しかも規則正しく並んでいるわけではなく、時々データが入っていなかったりします。
1レコード?分だけ飛び飛びで後から削除したような形です。
前任者に軽い怒りを覚えてます><
よろしくお願いします。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 リファレンスを見ながら格闘して負ける程度です
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 エクセル テーブル 並び替え
94:名無しさん@そうだ選挙にいこう
08/12/09 14:00:40
>>93
質問者に軽い怒りを覚えてます
95:名無しさん@そうだ選挙にいこう
08/12/09 14:12:16
>>>92
このメソッドには対応していません。というエラーが出るのですが・・・
なんなんでしょうか?
これは?
96:名無しさん@そうだ選挙にいこう
08/12/09 14:24:12
>>93
オートフィルタで空白行以外
コピーして貼り付け
97:名無しさん@そうだ選挙にいこう
08/12/09 14:29:50
>>93
4セル1組で並んでるなら
2列目の先頭から最後尾を1列目の最後尾の1セル後に挿入(もしくは貼付)
1レコードずつ横に並べたければこの後、別シートにでも関数で並べれば?
縦になってるやつを横にするのはROWやINDIRECTやOFFSETとか使ってやってる例が
過去スレとかにいっぱいある
>>94
激しくではないが同意
>>95
.Nameで比較して問題ないはず
デバッグで条件通りに動いているか見てみるべき
Ifとその下のForにブレークポイント置いてその条件の時に
処理を飛ばしているか確認してみるんだ
Ifの条件をウォッチ式に追加しておくと分かりやすい
98:93
08/12/09 14:35:02
ごめんなさいよく解りませんでした。結局コピペするしかないって事ですね。ありがとうございました<><><><
99:97
08/12/09 14:40:17
・・・前言撤回して少し訂正
>>94
激しく同意
100:名無しさん@そうだ選挙にいこう
08/12/09 14:50:44
質問があります。
実験結果を散布図に表示したいのですが、点をグループごとに色分けしたいです。
「やろうとしていることは、Aグループに所属する点は赤色
Bグループに所属する点は青色」
というように色づけをして、あとはそれぞれの点を
x軸、y軸の値よりプロットするだけです。
形式は
「グループ,x,y」
という形のcsvファイルから読み込む予定です。
A,312,789,
B,546,111,
という感じです。
もしよろしければ、アドバイス頂けないでしょうか。よろしくお願いします。
101:95
08/12/09 14:53:22
>>97
ありがとうございます。
マクロのおいてある場所が、現在開いているファイルではなく、002.xlsファイルにあったため、
うまくいっていないことが分かりました。
でも一応ブレークポイント、ウォッチ式についても教えて頂けないでしょうか?
それと
If W.Name <> ThisWorkbook.Name And W.Name <> "PERSONAL.XLS" Then
でPERSONAL.XLSを除外できないのはなぜなのでしょうか?
何卒よろしくお願い致します。
102:名無しさん@そうだ選挙にいこう
08/12/09 15:09:21
Andでやるからだろ
そのマクロをPERSONAL.XLSに入れてる場合にしか引っかからないよ
ブレークポイント URLリンク(www.vba-world.com)
ウォッチ URLリンク(www.asahi-net.or.jp)
少しはヘルプやネットで検索しような・・・
103:名無しさん@そうだ選挙にいこう
08/12/09 15:45:50
>>そのマクロをPERSONAL.XLSに入れてる場合にしか引っかからないよ
ではどうしたら良いのでしょうか?
皆目検討がつかないのですが・・
104:名無しさん@そうだ選挙にいこう
08/12/09 15:50:33
And→Or
105:名無しさん@そうだ選挙にいこう
08/12/09 16:13:58
motarouくんの応用力のなさはガチだな、、、
106:名無しさん@そうだ選挙にいこう
08/12/09 16:48:22
>>104
orにするとW.Name <> ThisWorkbook.Nameの方も無効になってしまったのですが、
なんなんでしょうか?
107:名無しさん@そうだ選挙にいこう
08/12/09 17:01:07
使用ソフト:EXCEL2003
ハイパーリンクについて質問させてください。
1.セルにハイパーリンクを設定して、名前を定義したセルに飛ぶ。
2.オブジェクトにハイパーリンクを設定して、名前を定義したセルに飛ぶ。
はできたのですが、
3.セルにハイパーリンクを設定して、特定のオブジェクトに飛ぶ。
4.オブジェクトにハイパーリンクを設定してオブジェクトに飛ぶ。
3.4.は可能ですか?
できる場合、方法も教えていただけると助かります。
宜しくお願いいたします。
108:名無しさん@そうだ選挙にいこう
08/12/09 17:13:46
>>106
よく見たら<>だからAndで合ってるのかw
もしかして条件が足りないのでは?
これならどう?
If W.Name <> ThisWorkbook.Name And W.Name <> ows.Parent.Name And W.Name <> "PERSONAL.XLS" Then
109:名無しさん@そうだ選挙にいこう
08/12/09 17:15:51
【1 OSの種類 .】 Windows XP SP2
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セルの中の文字とスペースを同時に何個か消したいのですが、
消したい文字は必ずセル入力の最初にありそのあとに全角スペースが
あります。文字数は一緒ですが文字は違う場合があります。例えば、
ABC 123456
ABC 2344567
ABC 44444
BBB 5568777
のようになっていて最初のアルファベット3文字だけ消して
123456
2344567
44444
5568777
というようにすることはできないのでしょうか?
宜しくお願い致します。
110:109
08/12/09 17:19:24
>>109
× のようになっていて最初のアルファベット3文字だけ消して
○ のようになっていて最初のアルファベット3文字と全角スペースを消して
111:名無しさん@そうだ選挙にいこう
08/12/09 17:20:44
>>100
AとBのデータをきっちり分けないとだめ。
作業列に移してもいいし、ソートしてもいい。方法はいくつもあるから自分が一番簡単だと思う方法で。
たとえばこんなふうに。
A列=Aグループのx
B列=Aグループのy
C列=Bグループのx
D列=Bグループのy
112:名無しさん@そうだ選挙にいこう
08/12/09 17:21:58
>>109
最初の3文字を削るだけなら
=MID(A1,4,99)
113:名無しさん@そうだ選挙にいこう
08/12/09 17:23:23
>>110
アルファベット3文字と全角スペース1個、あわせて4文字を削るってことは5文字目以降を残すってことだから
=MID(A1,5,99)
114:名無しさん@そうだ選挙にいこう
08/12/09 17:27:57
>>103
抜き出したデータをまとめるブックがあるでしょ。そのブックにマクロを登録するんだよ。
VBEを起動して左側のツリーを見ると、モジュールがどのブックに属しているかがわかるから。
115:名無しさん@そうだ選挙にいこう
08/12/09 17:43:29
>>109
データ/区切り位置
ウイザードに沿っていけば簡単にできるよ
詳細はヘルプで確認してね
116:名無しさん@そうだ選挙にいこう
08/12/09 17:49:13
すいません、>>107ですが、テンプレ見落としてました。
【1 OSの種類 .】 Windows xp pro
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 ハイパーリンク オブジェクト excel
宜しくお願いいたします。
ハイパーリンクについて質問させてください。
1.セルにハイパーリンクを設定して、名前を定義したセルに飛ぶ。
2.オブジェクトにハイパーリンクを設定して、名前を定義したセルに飛ぶ。
はできるのですが、
3.セルにハイパーリンクを設定して、特定のオブジェクトに飛ぶ。
4.オブジェクトにハイパーリンクを設定してオブジェクトに飛ぶ。
3、4は事はできますか?
できる場合、方法も教えていただけると助かります。
宜しくお願いいたします。
117:名無しさん@そうだ選挙にいこう
08/12/09 17:55:05
>>106
Orで出来ることはAndでもできる。
If foo<>"hoge"x And foo<>"hage" And foo<>"huga" Then
'処理
End If
これをOrで書けば
If foo="hoge" Or foo="hage" Or foo<> "huga" Then
Else
'処理
End If
となる。
Select Caseで書いた方がいいと思うが。
118:名無しさん@そうだ選挙にいこう
08/12/09 17:57:19
すまん、最初の"hoge"の後ろのxはゴミだ。
119:名無しさん@そうだ選挙にいこう
08/12/09 18:02:04
>>108
うおおおお、うまくいきました。
ows.Parent.Name And W.Name って何なんですか?
120:名無しさん@そうだ選挙にいこう
08/12/09 18:03:17
>>116
URLリンク(www.kotaete-net.net)
解決にはなっていないが代案なら出てる
121:名無しさん@そうだ選挙にいこう
08/12/09 18:05:45
>>108
ows.Parent.Name
ows(アクティブなシート)のParent(この場合はブック)のName(名前)
122:121
08/12/09 18:08:06
安価ミスった
>>119
123:109
08/12/09 18:37:36
>>112>>113>>115
できました、助かりました。ありがとうございました。
124:名無しさん@そうだ選挙にいこう
08/12/09 18:43:29
>>121
うおおおおおおおおおありがとうございます。
もう一つよろしいでしょうか?
いまの状態だとこのマクロをPERSONAL.XLSにおいたままだと使うことができないのですが、
このマクロをどこのファイルにおいた状態であっても、開いているファイルに対して
このマクロが適用されるようにするにはどうしたら良いのでしょうか?
何卒よろしくお願い致します。
125:121
08/12/09 18:55:47
>>124
PERSONAL.XLSに入れて試したか?
除外してる条件は
マクロが入っているブック
マクロを動かした時にアクティブになっているブック
PERSONAL.XLS
つまり「マクロが入っているブック」が「PERSONAL.XLS」だった場合も同じ動きのはず
126:名無しさん@そうだ選挙にいこう
08/12/09 19:29:43
>>>>>>>>>>>125555555555555
うひょおおおおおおおおおおおおおお
こりゃすげええええええええええええええ
ありがとうございます!!!!!!!!!
127:名無しさん@そうだ選挙にいこう
08/12/09 19:42:58
↑バカがきっ、もう来なくていいよ
128:名無しさん@そうだ選挙にいこう
08/12/09 20:16:57
結局全部人に考えてもらったな
129:20
08/12/09 20:24:06
結局、有効数字の件はどうなったのでしょうか?
よろしくお願い致します。
130:名無しさん@そうだ選挙にいこう
08/12/09 20:42:50
IDが出ない板でよかったね
131:名無しさん@そうだ選挙にいこう
08/12/09 20:52:58
自分なりに有効数字の出し方を考えてみたのですが、
Function xxxxx(x)
xxxxx = WorksheetFunction.Round(Buffer, (3 - Int(Log(x))))
End Function
これってどこが間違えていますでしょうか?
132:名無しさん@そうだ選挙にいこう
08/12/09 20:55:53
>>129
一発で有効数字を設定する方法はない。たとえばこういう式を使っていちいち変換する必要がある。
=ROUND(A1,4-INT(LOG(ABS(A1)))-1)
. ↑
これが有効数字の桁数。この場合は4。
133:名無しさん@そうだ選挙にいこう
08/12/09 20:56:55
>>129 >>20
>>28、これじゃダメ?
134:名無しさん@そうだ選挙にいこう
08/12/09 21:01:43
>>131
変数Bufferが初期化されてないので常に0になる。
それだと負の数に対応できない。
135:名無しさん@そうだ選挙にいこう
08/12/09 21:02:55
>>133
質問者のレベルから判断して、「工夫する」の部分ができないと思われ
136:名無しさん@そうだ選挙にいこう
08/12/09 21:03:25
すいません、
Function xxxxx(x)
xxxxx = WorksheetFunction.Round(x, (3 - Int(Log(x))))
End Function
の間違えです。どこが間違えているのでしょうか?
137:名無しさん@そうだ選挙にいこう
08/12/09 21:08:18
>>136
それだとxがマイナスの時にエラーになる。
Log(x)の部分をLog(Abs(x))にする必要がある。
138:名無しさん@そうだ選挙にいこう
08/12/09 21:09:58
>>136
せめて
Function RoundX()
みたいな、もうちょっとマシな名前付けようよ
139:名無しさん@そうだ選挙にいこう
08/12/09 21:29:17
>135さん、なるほど分りました
>>129 >>20 これでどうぞ
A1に対象となる値があるとして(有効数字4の場合)
=ROUND(A1,4-ROUNDUP(LOG10(A1),0))
140:名無しさん@そうだ選挙にいこう
08/12/09 21:36:28
こうだな
=TEXT(A1,"0.000E+0")*1
141:名無しさん@そうだ選挙にいこう
08/12/09 21:43:26
>>137
すいません、負の数でなく正の数のときでもエラーが出るのですが・・・・
それと
>>139
Excel functionではなく、VBAでこれを行いたいのですが・・・
何卒よろしくお願い致します。
142:名無しさん@そうだ選挙にいこう
08/12/09 21:50:15
ここの回答者ってなんでこんなに有効数字のことに無知なの?
143:名無しさん@そうだ選挙にいこう
08/12/09 21:54:57
グラフの凡例マーカーの色や形の一括変更や凡例をまるごとコピペってできませんよね?
一括変更や任意選択した凡例項目の変更をするためにはVBAでマクロ作らないとダメでしょうか?
144:名無しさん@そうだ選挙にいこう
08/12/09 22:06:32
>>142
だったら、教えてくれよ、賢い解答を ( ´,_ゝ`)プッ
145:名無しさん@そうだ選挙にいこう
08/12/09 22:07:55
>>142
そんなもん知る必要がまったくない
円周率を何桁まで言えるぜーとかと同レベル
まったく役に立たない金にもならない覚える必要なし
逆に教えて欲しかったら懇切丁寧に有効数字について解説してみろやクソガキ
146:名無しさん@そうだ選挙にいこう
08/12/09 22:22:47
>>142が居なくなったジャマイカ・・・/(^o^)\ナンテコッタイ
147:名無しさん@そうだ選挙にいこう
08/12/09 22:37:14
>>145
香ばしいな。
148:名無しさん@そうだ選挙にいこう
08/12/09 23:03:24
有効数字とかぐぐった方がよほど早くて正確で身になると思う
ここの回答者って実務以外にかなり弱いよなw
149:名無しさん@そうだ選挙にいこう
08/12/09 23:09:59
正解はわかるだろうけど身にはならないよね。ようするに質問者は答えを丸写しするんだから。
150:名無しさん@そうだ選挙にいこう
08/12/09 23:12:25
がんばって作ってみた。これでどう?
x=元の数、n=有効数字の桁数
Function RoundN(x, n)
s = Sgn(x)
x = Abs(x)
j = 10 ^ (n - Int(Log(x) / Log(10)) - 1)
RoundN = s * Int(x * j + 0.5) / j
End Function
151:名無しさん@そうだ選挙にいこう
08/12/09 23:16:56
質問者がExcelに直接関係ないVBAの有効数字型を作ってくれみたいな
丸投げで回答を求めてるようにしか見えないです
Roundなりで工夫して欲しいのです
152:名無しさん@そうだ選挙にいこう
08/12/09 23:17:20
>>149
自分で調べると、その情報の周りにある情報も見てしまう。それが非常に価値が高いらしい
例えばここで回答者に有効数字はxx桁、と言われるよりもwebで有効数字は云々~と言われるほうが価値が高く、さらに辞書で有効数字の周りにある情報を見てしまうのが脳としては情報の価値が高いとか
眉唾
でも辞書で呼んだことはなかなか忘れないんだよなー
153:名無しさん@そうだ選挙にいこう
08/12/09 23:18:52
まぁ
URLリンク(www.asahi-net.or.jp)
有効数字一覧
データ型によるとしか
154:名無しさん@そうだ選挙にいこう
08/12/09 23:26:00
あきれたやつらだな。本当に有効数字知らないんだな。
>>150
つまらないプログラム組む前にまず有効数字をぐぐれ。
155:名無しさん@そうだ選挙にいこう
08/12/09 23:28:19
それで結局>>136のどこが間違えているのですか?
アルゴリズム的には間違えはないように思うのですが・・・
156:名無しさん@そうだ選挙にいこう
08/12/09 23:30:23
>>154
質問をよく読め
157:名無しさん@そうだ選挙にいこう
08/12/09 23:36:18
>>155
VBAのLog関数は底がeだから底が10の時の対数を求めるにはLog(x)/Log(10)としなきゃならない
158:名無しさん@そうだ選挙にいこう
08/12/09 23:38:35
>>155
VBAで作る前に、ワークシートにその式を入れて結果を見てごらん
159:名無しさん@そうだ選挙にいこう
08/12/09 23:39:04
>>156
>>20のことか?読んでるよ。
「ある有効数字以下の計算をしない」ことになんの意味があるんだと
思ってたところ、へんてこな回答がいっぱい出てきてびっくりしている。
160:名無しさん@そうだ選挙にいこう
08/12/09 23:41:58
>>159
意味とか…
おまえこそ有効数字の意味を調べて出直してこい
161:名無しさん@そうだ選挙にいこう
08/12/09 23:43:49
>>155
Function xxxxx(x)
xxxxx = WorksheetFunction.Round(x, 3 - Int(Log(Abs(x))/Log(10)))
End Function
162:名無しさん@そうだ選挙にいこう
08/12/09 23:46:07
有効数字で計算することの意味も知らない>>159はまちがいなく中卒。
しかも実際は学校へ行ってなくて、お情けで卒業させてもらった。
163:名無しさん@そうだ選挙にいこう
08/12/09 23:48:01
>>161
ありがとうございます。
でも0のところで#VALUEというエラーが出るのですがどうにからないのでしょうか?
何卒よろしくお願い致します。
164:名無しさん@そうだ選挙にいこう
08/12/09 23:49:40
>>162
Excelで「ある有効数字以下の計算をしない」ことにどんな意味があるの?
165:名無しさん@そうだ選挙にいこう
08/12/09 23:50:23
>>163
Function xxxxx(x)
If x <> 0 Then
xxxxx = WorksheetFunction.Round(x, 3 - Int(Log(Abs(x)) / Log(10)))
Else
xxxxx = 0
End If
End Function
166:名無しさん@そうだ選挙にいこう
08/12/09 23:50:26
さーせん。有効数字ネタに埋もれてしまったんですが、
設定かなんかで>>143が可能かどうかだけ教えてくれませんか?
無理そうなら今から徹夜でマクロ作らないといけないので。
167:名無しさん@そうだ選挙にいこう
08/12/09 23:52:59
おまいらやさしいな…
正解やヒントがこんだけ出てんのに、ロクに自分で考えようとしない>>20や
有効数字の使い所も知らない中卒の相手なんかしなくていいよ…
168:名無しさん@そうだ選挙にいこう
08/12/09 23:53:26
>>164
計算スピードは速くすることです。
169:名無しさん@そうだ選挙にいこう
08/12/09 23:53:47
>>166
ごめん。質問の意味がよくわかんない
170:名無しさん@そうだ選挙にいこう
08/12/09 23:55:25
>>167
正解出てる?どこに?
>>168
例えば>>150みたいなの?
171:名無しさん@そうだ選挙にいこう
08/12/09 23:58:56
>>168
残念ながらコンピューターは二進数、人間は十進数と、扱う体系が違うので、
人間基準で有効数字を操作するとかえって計算が遅くなる
172:名無しさん@そうだ選挙にいこう
08/12/09 23:59:07
>>152
の言うとおり薀蓄語ってるサイト探した方がいいと思う
有効数字って計算しても意味がない部分を切り捨てるとかどーたらこーたら~って事でしょ
計算スピードが速くなるのは結果であって直接的には何の意味も無い
173:名無しさん@そうだ選挙にいこう
08/12/10 00:01:32
>>170
137でAbsを入れろとか、157で底はeだとか言ってるのに自分ではまったく修正してない
174:名無しさん@そうだ選挙にいこう
08/12/10 00:03:32
>>173
君ほんとに有効数字知ってるの?
175:名無しさん@そうだ選挙にいこう
08/12/10 00:07:04
>>140が一番シンプル
これをWorkSheetFunctionで呼び出せばいいんでね?
176:名無しさん@そうだ選挙にいこう
08/12/10 00:11:34
もう解決したみたいだから有効数字はNGワードでいいよね
177:名無しさん@そうだ選挙にいこう
08/12/10 00:11:56
>>175
例えば1と入れた時1.000にならないんだけど。
178:名無しさん@そうだ選挙にいこう
08/12/10 00:13:37
くだらない話してないで
おまえらもう寝ろよ。
179:名無しさん@そうだ選挙にいこう
08/12/10 00:24:32
何卒よろしくお願い致します。
をNGにすればいいのに・・・
ヘルプ見ないし調べないしエラーが発生するたびにしつこく連投してくるし
前スレからずーっと張り付いてるやつじゃないの
180:名無しさん@そうだ選挙にいこう
08/12/10 00:40:24
プロファイリング
中学校の理科の先生。40代。女性。
181:名無しさん@そうだ選挙にいこう
08/12/10 00:56:03
>>177
文字列にするか書式にするか
182:名無しさん@そうだ選挙にいこう
08/12/10 05:48:04
>>180
学生と思ってた。
183:名無しさん@そうだ選挙にいこう
08/12/10 07:08:30
>>20
有効数字は、指定するモンじゃなく、
体系の中で、決まるもの。
従って、具体的な例がないと、
有効数字は、求められない。
184:名無しさん@そうだ選挙にいこう
08/12/10 07:17:29
>>183
1行目から4行目までまったく意味がわからない。
185:名無しさん@そうだ選挙にいこう
08/12/10 10:49:50
Excel2003において、見積書の明細(罫線と見出しだけの入っている表)を必要時に簡単に挿入したいのですが
CAD等である「ブロック挿入」のように、内容を固定させてすぐに組み込めるようにする方法はありませんでしょうか?
現状だと出来上がった見積書の明細の途中の部分に後から挿入する際、非常にめんどいです・・・
186:名無しさん@そうだ選挙にいこう
08/12/10 10:58:20
CADとか使ったことないから「ブロック挿入」は知らんが
明細を「コピー」して「コピーしたセルの挿入」をするのとは何か違うのか?
187:名無しさん@そうだ選挙にいこう
08/12/10 11:17:30
表の行数を増やしたいってこと?
行単位でのコピペや挿入は簡単にできるけど、もっと簡単にやりたいならマクロを登録だな
188:名無しさん@そうだ選挙にいこう
08/12/10 11:58:45
>>185
まず何を何に対して、どのようにしたいのかを
大方の人に理解できるように
説明してください。
189:名無しさん@そうだ選挙にいこう
08/12/10 12:54:27
>>183
知らない世界に首突っ込むな
ピントの外れた坊やは、おとなしくしてろ
190:名無しさん@そうだ選挙にいこう
08/12/10 14:36:59
>>185
テンプレ100回嫁
191:名無しさん@そうだ選挙にいこう
08/12/10 18:44:38
セルを選択して、セルの右下にカーソル?を宛てて、
下方向などに、びーっと伸ばす動作の事を何と呼ぶのですか?
ドラッグ?
数式などをコピーしたいときに、びーっと伸ばす動作です。
192:名無しさん@そうだ選挙にいこう
08/12/10 18:52:48
>>191
オートフィル
193:名無しさん@そうだ選挙にいこう
08/12/10 19:27:31
価格表を作っています。
2社で安い方を赤字にしたいのですが、どの関数を使えばいいのでしょうか?
A列 B列 C列
商品1 価格 価格
商品2 価格 価格
というような表です。
OS WindowsXP
Excelのバージョン Excel2002
VBAが使えるか いいえ
VBAでの回答 否
検索ワード
Excel 価格 比較表
194:名無しさん@そうだ選挙にいこう
08/12/10 19:36:12
>>193
関数というか条件付き書式だね
195:名無しさん@そうだ選挙にいこう
08/12/10 19:52:42
すみません、どなたかお願いします。
生徒のテストの点数一覧表を作っています。
それで、子供たちの取った点数の内で、満点の9割より低い点数の子のセルに、塗りつぶしで色が着くよう設定したいのです。
IF関数で、=IF(子供の点数セル<(満点のセル*0.9),子供の点数を塗りつぶし,子供の点数セルそのまま)
という感じで、数式はなんとかうまくいったのですが、"真"の部分、塗りつぶしの命令?の入力がよくわかりません。
私の説明が下手かもしれませんが、どなたかお願いします。
196:名無しさん@そうだ選挙にいこう
08/12/10 19:58:04
条件付き書式
197:名無しさん@そうだ選挙にいこう
08/12/10 20:08:19
>>194
ありがとうございます。
やってみたんですがうまく反応してくれません。
数式が =B2=MIN($B2,$C2)
とやってみました。
2つの値で小さい方を赤字にという指示はどうすればいいのでしょうか?
198:名無しさん@そうだ選挙にいこう
08/12/10 20:08:23
>>196さん
ありがとうございます。
ちょっと試してみました、条件付き書式のほうが簡単そうですね!想像してた一覧表が作れそうです、頑張ってみます。
本当にありがとうございました(^-^)v
199:名無しさん@そうだ選挙にいこう
08/12/10 20:27:16
>>197
試さないで書いちゃうけど2つ値で比較するだけなら
B2=B2<C2
C2=B2>C2
で良くない?
200:名無しさん@そうだ選挙にいこう
08/12/10 20:31:55
>>197です。
お騒がせしました!
なんとか無事出来ました。
:を,にしてしまっていたので直したら反応してくれました!
本当にありがとうございました(´;ω;`)
>>199さん
ありがとうございます!
試してみます!
簡単なやり方があったんですね。
無知なもので恥ずかしいです。
201:名無しさん@そうだ選挙にいこう
08/12/10 20:41:08
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 エクセル ヒストグラム N/A
#N/Aを含むデータを入力範囲としたヒストグラムを作りたいのですが、どうすれば良いのでしょうか?
同じデータから平均や標準偏差は
=average(if(isna(E2:E1000),"",E2:E1000))
=STDEVP(if(isna(E2:E1000),"",E2:E1000))
↑を入力後、Ctrl キーと Shift キーを押しながら Enter キーを押すと出来たのですが、ヒストグラムでは入力範囲で受け付けてくれず、【入力した参照が正しくないか、また必要な参照が入力されていません。】と表示されます。
よろしくお願いします。
202:191
08/12/10 20:43:29
>>192 ありがとうございました。
203:201
08/12/10 20:44:29
読んでみたら分かりにくいところがあったので追記します。
入力範囲で受け付けてくれずとは、平均や標準偏差だと{}(半角の?)が式の両側に出るのですが、それが出ないことです。
204:名無しさん@そうだ選挙にいこう
08/12/10 22:06:17
B列とC列で小さい方に条件付き書式を適用する
=B2=MIN($B2,$C2)
205:名無しさん@そうだ選挙にいこう
08/12/10 22:07:35
>>203
配列数式は使える関数と使えない関数がある。使えるかどうかはやってみないとわからない。
206:名無しさん@そうだ選挙にいこう
08/12/10 22:51:51
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
A1・・・A1001にx軸の値が
B1・・・B1001にy軸の値が入っているとします。
このデータをグラフ化したのちに、ガウシアン関数y=a+b*exp(-(x-c)^2/d^2)に対してフィッティングを行い、それぞれの定数を算出及び、その算出されたグラフを上に乗せるということをしたいのですが、
Excel VBAを使ってどのようにすれば良いのでしょうか?
また、ピークが1本ではなく2本ある場合Multipeak Gaussian fittingというものでそれぞれのピークに対してフィッティングすることもできるそうなのですが、できればその方法についても教えて頂けないでしょうか?
自分でひな形くらい作って質問したいところですが、全くどうやって作れば良いのか検討もつかないのでどなたかよろしくお願い致します。
207:名無しさん@そうだ選挙にいこう
08/12/10 23:14:20
>>206
無理
208:名無しさん@そうだ選挙にいこう
08/12/10 23:15:48
>>206
数学板行ってその関数についてよく聞いてきた方がいいと思う
フィッティングのうまく行った度合いとかをどう判断するかとかもさ
209:名無しさん@そうだ選挙にいこう
08/12/10 23:37:21
>>206
・・・
URLリンク(okwave.jp)
210:名無しさん@そうだ選挙にいこう
08/12/10 23:44:51
>>206
教えてGooの方の回答No.2ちゃんと読んだか?
いいこと書いてあるぞ
211:名無しさん@そうだ選挙にいこう
08/12/11 00:12:27
どれだけマルチしてんだよwwwwwww
212:名無しさん@そうだ選挙にいこう
08/12/11 01:00:42
質問します
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 オートフィルタ 関数
棒グラフを作ったのですが棒の数が多かったものですから
元データをオートフィルタで絞込みますと見やすいグラフになりました
さてここからが質問なのですが
オートフィルタで何を選んだのかをグラフに(タイトルの横あたりに)表示したいのです
またVBAはよくわかりませんので何か関数での解決はできないでしょうか
調べている時にSUBTOTALという関数が上手くオートフィルタの抽出に対応してくれそうだったのですが
これを使ってできますか?
りんご|青森|100円
みかん|愛媛|40円
りんご|長野|90円
なし|鳥取|120円
ぶどう|長野|200円
みかん|和歌山|60円
こんなのがたくさんある中からりんごを抽出してグラフを作った時に
「果物:りんご」みたいに表示させたいのです
213:名無しさん@そうだ選挙にいこう
08/12/11 03:40:38
そういう専用の機能があるのかもしれないけど・・・とりあえずマクロでなら出来そう・・・
sheet1のA列に果物の名称があってA列全体にオートフィルタが掛けてあるとして抽出条件を表示したいセルをD1としたとき
D1にツール→入力規則→リスト→元の値=$A:$Aと設定
VBAエディタを開いてsheet1の中に
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A1").AutoFilter Field:=1, Criteria1:=Range("D1").Value
End Sub
と入れれば一応望みのことは可能・・・
A1はオートフィルターのボタンが表示されているセルなのでフィルタの範囲を変えた場合はここを変更して
予想外の動きをしてしまうときはモジュールにして任意で実行をしてもいいし・・・
214:213
08/12/11 03:51:29
使うかどうかわからないけど一応マクロ修正してみた
Private Sub Worksheet_Change(ByVal Target As Range)
If targetcell = D1 Then
If Range("D1").Value="" Then
Selection.AutoFilter Field:=1
Else Range("A1").AutoFilter Field:=1, Criteria1:=Range("D1").Value
End If
End If
End Sub
215:名無しさん@そうだ選挙にいこう
08/12/11 10:03:09
○ B列に数値が入っている。
○ A列はB列を常に参照するようにしたい。(A1に「=B1」)
○ B列の任意のセルの数値を、同じ行の、C列に移したい。
この時、切り取って貼り付けをすると、この行のA列は、C列を参照してしまう。
ーーーーーーーーーーーー
A1に「=$B1」としてみても、「切り取って貼り付け」をすると、
A1は、[=$C1]となり、C列を参照してしまいます。
B列のセルの数値をC列に移す時に、切り取りでなく、コピーにして、
その後、B列の数値を削除すればよいのですが、
作業が2動作になります。もし、これより短い動作でする方法が
あったら知りたいのですが、ないですよね?
216:206
08/12/11 10:06:55
ありがとうございます。
数学版で聞いてみます。
217:名無しさん@そうだ選挙にいこう
08/12/11 10:17:47
>>215
=INDIRECT("B1")
218:名無しさん@そうだ選挙にいこう
08/12/11 10:20:42
>>215
少しかぶるけど
=$B1の代わりに
=INDIRECT("B1")か=OFFSET(A1,0,1)を使えば
カットアンドペーストで参照先が動くことはない
219:212
08/12/11 10:47:32
>>213-214
ありがとうございます
しかしうまくいきませんでした・・・
入力規則のリストから何を選んでも全データ行が非表示のように見えなくなってしまいます
当方マクロにはかなり疎いために操作を間違えているのかもしれません・・・
> VBAエディタを開いてsheet1の中に
とのことですがAlt+F11でVBAエディタを開いた時にデータ入力できそうな窓がなく
左側にあるツリー表示みたいなところのSheet1のところをダブルクリックしたのですが
そのマクロを貼り付ける場所はここで正しかったでしょうか?
またこのSheet1の各データはいわゆる単純な値ではなくて
よそのシート(データベース貼り付け用)から関数で引っ張ってきて
「りんご」や「青森」、「100円」と表示させているのですが
これがまずかったのでしょうか
(しかしコピーして値貼り付けにしても挙動は変わらずでした・・・)
220:名無しさん@そうだ選挙にいこう
08/12/11 11:20:13
>>212
フィルタオプションを使えば?
221:215
08/12/11 11:25:03
>>217-218
有難うございます!
A列は、A1を下方にドラッグして、数式を複製したいのですが、
INDIRECTではそれが出来なかったので、OFFSETを使う事にします。
222:名無しさん@そうだ選挙にいこう
08/12/11 11:26:21
>>219
これはひどいな・・・
突っ込みどころ満載にもほどがある
1回も動かさずに貼ったんじゃね?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$1" Then
If Range("D1").Value = "" Then
Selection.AutoFilter Field:=1
ChartObjects("グラフ 1").Chart.ChartTitle.Text = "価格"
Else
Range("A1").AutoFilter Field:=1, Criteria1:=Target.Value
ChartObjects("グラフ 1").Chart.ChartTitle.Text = "価格:" & Target
End If
End If
End Sub
バグ取りしてこんな感じでどうかと改造してみた
「グラフ 1」は実際のグラフ名に変えてくれ
ソース貼る場所はSheet1のところでOK
223:名無しさん@そうだ選挙にいこう
08/12/11 11:54:18
少し修整
= "価格:" & Target
↓
= "価格:" & Target.Value
224:215
08/12/11 11:59:29
お世話になっております。
さっきの続きなのですが、
行方向は、日付となっており、
条件付き書式で、日曜と土曜日の行だけ背景色を青色にしています。
さきほどのOFFSET関数で、
B1を切り取り、C1へ貼り付けしても、
A1はB1を参照することができましたが、
土曜か日曜の場合、B1の背景色がなくなってしまいます。
欲を言えば、切り取る動作をしても、背景色をそのままにしたいのですが、
方法はありますでしょうか。
やっぱり、セルを切り取ってしまうなら、書式も必ず切り取ってしまって、無理でしょうかね。
コピーしてから削除すれば、背景色がなくならないので、これでもよいのですが、
少しでも単純な作業でする方法があれば、それにしたいので。
225:名無しさん@そうだ選挙にいこう
08/12/11 13:06:24
なんでTargetを使わないでRange("D1")を使うんだろ。
226:212
08/12/11 13:15:00
>>220
フィルタオプションについて調べてみましたが・・・
たしかにできそうな気がしましたがこれはちょっと複雑すぎます
後出し情報で申し訳ないのですが完成後社員に配布するものですので
ここまで複雑なものはNGです・・・大変申し訳ありません
>>222-223
すみません、書き換えてみたのですが今度はエラーが出ます
実行時エラー'1004':
'ChartObjects'メソッドは失敗しました: '_Worksheet'オブジェクト
と表示され、デバッグボタンを押すと8行目の
ChartObjects("グラフ").Chart.ChartTitle.Text = "価格:" & Target.Value
が黄色く表示されます
マクロはさっぱりなので何がおかしいのかもわからず・・・
聞いてばかりですみませんがどこがおかしいのでしょうか
227:名無しさん@そうだ選挙にいこう
08/12/11 13:48:19
>>226
ChartObjects("グラフ")
↓
ChartObjects(1)
でもエラーになる?
これでいけるなら"グラフ"という名前が間違えてるんだろうが・・・
グラフが1つならこれでもいいかw
他にも自分で気になった部分を修整しとく
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D1")) Is Nothing Then Exit Sub
If Range("D1").Value = "" Then
Selection.AutoFilter Field:=1
ChartObjects(1).Chart.ChartTitle.Text = "価格"
Else
Range("A1").AutoFilter Field:=1, Criteria1:=Range("D1").Value
ChartObjects(1).Chart.ChartTitle.Text = "価格:" & Range("D1").Value
End If
End Sub
228:212
08/12/11 14:18:07
ダメですねまったく同じエラー文章と8行目が黄色です・・・
ぶっちゃけグラフのほうには後でセルのリンク表示ができるので
オートフィルタで選んだ言葉がD1なりE1なりに出てくるだけでいいのですが
あとやっぱり元データとなる表をVLOOKUPだとかで作り上げてるのも問題なのでしょうか・・・
229:名無しさん@そうだ選挙にいこう
08/12/11 14:23:22
>>228
グラフに出す必要はなかったのかw
ChartObjects~
を2行とも削れば解決
230:名無しさん@そうだ選挙にいこう
08/12/11 14:28:54
>>224
そこまで行くとマクロに頼るしかないな
例えばこんな感じに
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
For Each rg In Intersect(Target, Range("B:B")).Cells
If Not rg.FormatConditions() Is Nothing Then
rg.FormatConditions.Delete
End If
rg.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=OR(WEEKDAY($A$" & rg.Row & ")=1,WEEKDAY($A$" & rg.Row & ")=7)"
rg.FormatConditions(1).Interior.ColorIndex = 8
Next rg
End Sub
For Eachで分ける必要はなないかも知れんが念のため入れた
231:212
08/12/11 16:01:16
ChartObjects~を削ってもダメでしたが
なんとかマクロを使わずに作業列などの追加で自己解決いたしました
数々の人にご迷惑をかけ大変申し訳ありませんでした
232:名無しさん@そうだ選挙にいこう
08/12/11 16:56:46
いえいえ!
役にたってもらえてうれしいです(≧▽≦)
233:名無しさん@そうだ選挙にいこう
08/12/11 17:05:31
お前は答えてないだろうが!
234:名無しさん@そうだ選挙にいこう
08/12/11 17:26:47
Excelのソルバーのアルゴリズムについて教えて下さい。
これは変数にいろいろな値を代入することで、条件に合ったもっとも最適な値を探すというものですが、
これはモンテカルロを使っているのでしょうか?
詳細なアルゴリズムを教えて下さい。
よろしくお願い致します。
235:名無しさん@そうだ選挙にいこう
08/12/11 18:10:48
>>234
ソルバーについてヘルプで調べたのか?
調べたならここにくるはずはないわけだが・・・
236:名無しさん@そうだ選挙にいこう
08/12/11 19:05:10
エクセル2000
VBA勉強中
VBAでセルAD1(セル結合してます)をコピーして
他のエクセルファイルのセルBC1(セル結合してます)にペーストしたいのですが
セルの大きさが違うと言うエラーがでます
セルAD1の文だけコピーしてセルBCにペーストしたいのですが良い方法無いでしょうか?
解るかた教えてください、お願いします。
237:名無しさん@そうだ選挙にいこう
08/12/11 19:25:34
range("~").valueじゃなくてrange("~").mergearea.valueとすると結合セルを指定できるよ
238:名無しさん@そうだ選挙にいこう
08/12/11 19:31:55
~の部分はセルアドレス(A1とかB2とか)を入れるんだよ
239:名無しさん@そうだ選挙にいこう
08/12/11 19:35:52
>>235
はい、見てみました。
どこに書いてあるのでしょうか?
よろしくお願い致します。
240:名無しさん@そうだ選挙にいこう
08/12/11 20:30:37
>>235
私も教えて下さい。
どうやってるのか興味がありまして。
241:名無しさん@そうだ選挙にいこう
08/12/11 20:55:06
Excel2003の場合だけど
ヘルプを「ソルバー」で検索、「ソルバーについて」の項目を開くと使用しているアルゴリズムが書いてある
242:名無しさん@そうだ選挙にいこう
08/12/11 21:06:54
>>236
もしセルの内容だけコピーできればいいんならコピペじゃなくて普通に代入すればいい
値の代入だけなら結合されてても関係ない
Range("BC")=Workbooks("Book1").WorkSheets("Sheet1").Range("AD1")
243:名無しさん@そうだ選挙にいこう
08/12/11 21:47:22
>>241
Microsoft Excel のソルバー ツールでは、テキサス州オースティンのテキサス大学の Leon Lasdon 氏とクリーヴランド州立大学の Allan Waren 氏が開発した
GRG2 (Generalized Reduced Gradient) 非線形最適化コードが使用されています。
線形問題と整数問題では、Frontline Systems, Inc. の John Watson 氏と Dan Fylstra 氏が実装した、束縛変数を用いたシンプレックス法と分枝限定法が使用
されています。ソルバーが使用する内部解決プロセスの詳細については、以下の連絡先にお問い合わせください。
調べてみたのですが、非線形用と線形用と整数用の3種類があるということなのですか?
そしれぞれぞれのアルゴリズムが異なるということなのでしょうか?
それと最後の内部解決プロセスというのはいきなり出てきているのですが、
シンプレックス法と分枝限定法とどういう関係にあるのでしょうか?
よろしくお願い致します。
244:名無しさん@そうだ選挙にいこう
08/12/11 21:56:10
以下の連絡先ってのに問い合わせたほうが確かな答えが返ってくると思う
ここに居るのは自己満足で回答する奴だけだから
そういう画一的で自分を出せない回答は誰もしたがらない
245:名無しさん@そうだ選挙にいこう
08/12/12 06:05:27
したがらないっていうか「出来ない」だろうな。
数学板とかで聞いた方がいいと思う。
246:>>236
08/12/12 06:50:37
>>237>>238>>242
どうもありがとうございます、色々解決出来そうです。
247:名無しさん@そうだ選挙にいこう
08/12/12 07:18:00
SUMIFとか配列数式の時は威勢がいいくせにソルバーの話題には食いつき悪いなあ。
248:名無しさん@そうだ選挙にいこう
08/12/12 08:21:45
ここをなんだと思ってるんだw
雑談したいなら余所に行けと
249:名無しさん@そうだ選挙にいこう
08/12/12 10:53:54
じゃあ流れをぶった切って質問だ
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
棒グラフを作ったんだがひとつ表示に納得がいかない
実績と挙績とその進捗率の数字を使った集合縦棒とかいうシンプルなやつなんだが
進捗率の数字を挙績の棒のてっぺんに表示させたいんだ<挙績の値が普通に出せる位置に
もちろんひとつひとつドラッグで動かすことはできるんだが
できれば設定か何かで自動的にてっぺんに乗るようにしたいんだ
よろしく!
250:名無しさん@そうだ選挙にいこう
08/12/12 11:17:17
おれなんか3、4年前は配列数式の回答がしたくて自分で質問して答えてたw
251:名無しさん@そうだ選挙にいこう
08/12/12 11:38:18
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ(勉強中)
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel VBA 変数 利用 使い方
例えばですが、=COUNTIF(A1:A100)という式があります。
式を使って集計するにあたって、集計の度に範囲を変えたい。
今回は=COUNTIF(A1:A150)、次回は=COUNTIF(A1:A200)
この、Aの後ろの150や、200に変数を利用したい。
例えばB1セルに数値を入力し、その数値をAの後ろの数値に代入する、
というようなことがしたいのです。
VBやらCなら簡単なことだと思うのですが、ExcelにからむVBAとなったとたん
実現方法がわかりません。Cは配列ぐらいまでは勉強して、ポインタで頭が沸騰した
程度の知識なので、単純に知識不足かもしれませんが…。
もし実現可能ならご教授頂けますでしょうか。
これができればExcel活用の幅が広がるかなと思っております。
以上です。よろしくお願い致します。
252:名無しさん@そうだ選挙にいこう
08/12/12 12:12:49
>>251
関数でいいなら
=COUNTIF(INDIRECT("A1:A"&B1),"")
253:名無しさん@そうだ選挙にいこう
08/12/12 12:22:43
>>251
Sub a()
Dim i As String
i = Range("b1").Value
Range("A1").Formula = "=COUNTIF(a1:a" & i & ")"
End Sub
i = Range("b1").Valueの部分はinputboxなんかに変えたほうが使いやすいかもね
254:253
08/12/12 12:24:07
循環参照になってしまった
Range("A1").Formula =のA1の部分はテキトーに変えて使ってね
255:名無しさん@そうだ選挙にいこう
08/12/12 12:32:28
>>251
=COUNTIF(INDIRECT("A1:A"&B1),検索条件)
256:名無しさん@そうだ選挙にいこう
08/12/12 15:08:54
【1 OSの種類 .】 Window2000
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】関数 入れ子 短縮
ifのネストを短く書きたいと思っています。
例として、vlookupを使い、N/Aエラーが出たときは別のもの(あああ、という文字列とします)
を表示しようと思っています。
第四引数はFALSE固定です。
この条件のとき、
=vlookup(A1,A2:D10,2,0)
という式は
=if(iserror(vlookup(A1,A2:D10,2,0))=true,"あああ",vlookup(A1,A2:D10,2,0))
のように書けば目的どおりの動きをするのですが、
もう少し短くまとめる記述の仕方はないでしょうか?
257:名無しさん@そうだ選挙にいこう
08/12/12 15:13:08
とりあえずiserror(~~)のあとに「=true」はなくてもいい
258:名無しさん@そうだ選挙にいこう
08/12/12 15:16:53
sage忘れスマソ
ついでに誰か>>249に答えてくれないか
259:名無しさん@そうだ選挙にいこう
08/12/12 15:18:51
2007にアップしてIFERROR
260:名無しさん@そうだ選挙にいこう
08/12/12 15:38:02
使っていないセル(仮にB1)に
=vlookup(A1,A2:D10,2,0)
としてから
=if(iserror(B1),"あああ",B1)
とかやってみるのは?
261:名無しさん@そうだ選挙にいこう
08/12/12 15:41:24
A2:D10に名前を定義する
vlookupを作業列でやる
IFの条件と結果にVLOOKUPを入れるのはいやだ
条件見るのにVLOOKUP、結果返すのにVLOOKUPと負荷が2倍になると思ってるから
262:名無しさん@そうだ選挙にいこう
08/12/12 15:55:21
>>257
確かに!ありがとうございます。ずっと気づかず=TRUE入れてました
>>259
今のところ入れる予定はありませんが、あるとすごく便利そうですね
>>260-261
ありがとうございます。試してみます
>>261すごく同意見です。それに、式自体も非常に長くなるんですよね・・
263:251
08/12/12 17:25:15
皆様お答え頂きありがとうございました。
お答頂きました、関数を使用するINDIRECTをひとまず使用させて頂き、
やりたかった動作を実現できました。
しかし、ひとつ問題が発生しました。
=IF(INDIRECT($C$4&"○○店データ.csv!$P12")="","",IF(ISERROR(VLOOKUP(INDIRECT($C$4&"○○店データ.csv!$P12"),INDIRECT("旧"&$C$4&"○○店データ.csv!$A$1:$A$1800"),1,0)),"新規会員",
((VLOOKUP(INDIRECT($C$4&"○○店データ.csv!$P12"),INDIRECT("旧"&$C$4&"○○店データ.csv!$A$1:$A$1800"),1,0)))))
これだけでは非常にわかりにくく申し訳ないのですが、上記のようにINDIRECTを組み込み、
予定していた動作を実現させることができました。
これは、「○○店データ」というデータから「旧○○店データ」のデータを検索し、見つかればそのデータを表示、
見つからなければ「新規会員」と表示する式になっております。
○○店データの1行目のデータが旧○○店データのすべての中にないかどうか、次に
○○店データの2行目のデータが旧○○店データのすべての中にないかどうか、
対応づけてデータを表示させていきます。
どんな問題がおきたかといいますと、INDIRECTを用いファイル名を指定
できるようになったのはいいのですが、文字列として組み込まれたため、
INDIRECT($C$4&"A.csv!$P12")左記の$P12の部分がオートフィルで動作してくれません。
全ての行に手動で13、14、と変更すれば対処できますが、2000行程度あるので
とても厳しい作業になります。
何か良い対応方法はございますでしょうか。
以上です。よろしくお願い致します。
264:名無しさん@そうだ選挙にいこう
08/12/12 17:31:34
1つのシート上に2つのグラフを載せたいのですが、1つ目のグラフ(折れ線)を完成したあと2つ目のグラフ(円)を作ると何故か1つ目のに上書きされて消えてしまいます。どうやれば出来るのでしょうか?
265:名無しさん@そうだ選挙にいこう
08/12/12 17:41:14
>>263
INDIRECT($C$4&"A.csv!$P12")
↑が2行目にあるとして
INDIRECT($C$4&"A.csv!$P"&(ROW()+10))
とすればオートフィルでもいけるようにならなくもない
266:名無しさん@そうだ選挙にいこう
08/12/12 18:39:40
>>264
円グラフをドラッグ
267:名無しさん@そうだ選挙にいこう
08/12/12 18:45:49
>>258
設定でグラフ内に表示できるのは値とタイトルとラベルだけ。
VBA使え。
268:264
08/12/12 19:27:24
266さんありがとうございます(^^)
ドラッグで出来ました。
269:名無しさん@そうだ選挙にいこう
08/12/12 20:05:20
いえいえ!
お役にたててうれしいです(≧▽≦)
270:名無しさん@そうだ選挙にいこう
08/12/12 22:49:58
>>267
そ、そうなのか・・・
VBAは難しいから諦めるよ・・・ありがとう
271:名無しさん@そうだ選挙にいこう
08/12/12 23:24:15
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 excel スクロール
スクロールマウスを使っているのですが、ちょっと設定に苦労しています。
OSのマウス設定について、ブラウザに合わせるとエクセルのスクロールが早すぎます。
エクセルに合わせるとブラウザのスクロールが遅すぎます。
これを解決するうまい方法はありませんでしょうか?
272:名無しさん@そうだ選挙にいこう
08/12/12 23:37:22
vbvb
273:名無しさん@そうだ選挙にいこう
08/12/12 23:37:44
>>271
WindowsやOfficeの設定では無理なので何らかのフリーウェアを使う。
ソフト板へ。
274:名無しさん@そうだ選挙にいこう
08/12/12 23:38:08
>>273
ありがとうございました
275:名無しさん@そうだ選挙にいこう
08/12/13 01:30:09
ここのスレに常駐でしている人ってどういう人ですか?
フリーターか何かですか?
それともベンチャー立ち上げた若い兄ちゃんですか?
全く年齢層を読み取ることができないのですが・・・
276:名無しさん@そうだ選挙にいこう
08/12/13 02:13:14
自宅警備員(夜勤)です
277:名無しさん@そうだ選挙にいこう
08/12/13 03:05:47
テンプレ使わない質問には答えない
278:名無しさん@そうだ選挙にいこう
08/12/13 09:52:02
>>275
昼間でもネットで遊べる事務員(♂)
例え見つかっても「エクセルの勉強中です><」で済むからいいことづくしだぜ
実際に仕事にも役立ってるシナ
279:名無しさん@そうだ選挙にいこう
08/12/13 10:43:03
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 詳しくはないです
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 エクセル 背景色 4
入力した文字によって背景色を変えたくて色々調べていたら条件付き
書式で出来たのですが4つまででした。それで検索したら下記のリンク
にある VBA が見つかり実験してみたら B 列に文字を「田中」「阿部」
などと入れると文字色が変わるのを確認しました。
そこで質問なんですが、私の場合は文字色を変えるのではなく背景色を
変えたいと思ってます。それと B 列だけではなく E H K 列も同じように
背景色を変えたいです。この VBA をどのように変更したらそのような
事が出来るのでしょうか。
4色以上の条件付き書式
URLリンク(www4.ocn.ne.jp)
280:名無しさん@そうだ選挙にいこう
08/12/13 10:43:33
土曜日なのに仕事なの?
281:名無しさん@そうだ選挙にいこう
08/12/13 10:45:34
>>275
半年前に会社を辞めたニート
282:281
08/12/13 11:20:49
書き忘れ
>>279
RR.Font.ColorIndex → RR.Interior.ColorIndex
範囲には気をつけよう!
283:279
08/12/13 11:37:50
>>282
ありがとうございます。教えて貰った場所を書き換えたら文字色じゃなく背景色が
変わるのを確認しました。あと、これを E 列だけじゃなく E H K も同じように文字に
よって背景色を変えるようにするにはどうしたらいいでしょうか。
284:名無しさん@そうだ選挙にいこう
08/12/13 15:17:57
>>279
For Each…
こんな最悪ソースやめとけ
285:279
08/12/13 15:39:38
>>284
ソースの善し悪しは私には分からないのですが実現出来る例がありましたら
ぜひお教えください。
286:ほほう
08/12/13 19:40:49
>>284
横から割り込みで気は引けるが、
釣りか?
釣りでないなら、おまいがコードアップしてみwww
287:名無しさん@そうだ選挙にいこう
08/12/13 20:42:07
Range(Range("B1"), 以下略 )
↑
まあ、間違いじゃないけど……
おかしいと思わんか?
288:ほほう
08/12/13 21:18:31
そうゆう意味で!? orz
折れはFor each文を使ってることで何か言っているのかと思ったよorz
むしろ、この文の方が見る機会は少ないけど、この人(279)にとってもいいと思う。
>>279
Set LastCell = Range("B" & Rows.Count).End(xlUp)
For Each RR In Range(Range("B1"), LastCell)
範囲指定文の書き方をこの際、勉強して試してみるといい。
やりたいことは直ぐに出来、貴方なら、すぐそばにあるはず。
例えば、Range("E:E,H:H,K:K")
289:名無しさん@そうだ選挙にいこう
08/12/13 21:46:42
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
グラフの縦棒-集合棒グラフで、x軸一つに対して2種類のデータを並べたとき、
この2つのデータが同じくらいのオーダーであれば、同じy軸を共有すれば良いのですが、
1桁、2桁くらい離れていると同じ軸では見にくいため、軸を分けます。
すると2つの棒グラフは同じ位置に重なるため、小さい方が隠れてしまって極めて見づらいのですが、
これを位置をx軸方向に位置をずらして見やすくするにはどうしたら良いのでしょうか?
もちろんy軸の範囲を500~-500、500~-50みたいにずらしてやれば重ならないのですが、
どうしても見づらいため良い方法がありましたら教えて下さい。
よろしくお願い致します。
290:289
08/12/13 21:52:32
すいません、棒の重なりという項目がオプション画面に見つかりました。
でもこの値を-100とか+100にいじっても何も変化しないようなのですが、
棒の間隔のほうはちゃんと機能しているんですが・・・
291:名無しさん@そうだ選挙にいこう
08/12/13 21:53:57
こんばんは。
初歩的な質問かもしれませんが、
皆さんの広い心でカバー出来るものと存じます。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
Excelを使って表を作り、印刷プレビューで確認したのですが
表が左側に、よってしまいました。
表を中央に配置するにはどうすればよいでしょうか?
よろしくお願いします。
292:名無しさん@そうだ選挙にいこう
08/12/13 22:08:21
ページ設定の余白タブで水平・垂直の中央配置を有効にする
293:名無しさん@そうだ選挙にいこう
08/12/13 22:16:55
>>292さんありがとうございました。