Excel総合相談所 87
at BSOFT
1: ◆Excel//q4U
09/09/27 21:52:39
▼━ 質問のしかた ━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に>>2-20あたりの注意書きや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総合相談所 86
スレリンク(bsoft板)
2: ◆Excel//q4U
09/09/27 21:53:39
▼━質問時の注意・決まり事━━━━━━━━━━
・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: ◆Excel//q4U
09/09/27 21:54:21
★ルールを無視すると…
>>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: ◆Excel//q4U
09/09/27 21:55:03
★ 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: ◆Excel//q4U
09/09/27 21:55:45
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)
▼数式・関数
・ 表示形式以外の書式の取得設定、書式情報を条件とする数式 (ユーザー定義関数)
・ 関数式でセルの選択状態を取得する (VBA)
・ セルの値でパスを補完して、開いてないブックのセルを参照する (VBA)
・ 入力したセルに結果を返す (VBA)
・ 範囲を引数にしての文字列連結 (ユーザー定義関数)
・ 値の書き換え、値の保持 (VBA)
・ 複数の結果を抽出、不定な数の結果を返す (VBA、結果の最大数が解っていれば最大数以上の式を論理式で組む)
・ 空白のセルの部分を上詰め、左詰めなどで表示する (作業セルを使って別セルに詰めて表示なら可能、それ以外はVBA)
・ VLOOKUP,HLOOKUP,MATCH等の関数で、検索語を全半角両方にマッチさせる (ユーザー定義関数)
▼VBA
・ ExecuteExcel4Macroの参照で空セルと0値を区別する
・ セルの値や変数値で直接変数名を指定する (配列、コレクション)
・ VBのコントロール配列と同じような操作をしたい
(イベント以外ならコントロール名を「同名+連番」にしてControls(名前 & インデックス)で処理、イベントはクラスでWithEvents)
▼ユーザーフォーム
・ フォーム上から変更したプロパティ値の保持 (シートや外部ファイルに書き出して、次回読み込む)
▼グラフ
・ 棒グラフでひとつだけ突出したデータがあった場合に波線を入れて位置を合わせる
(オートシェイプなどで見た目だけそうなるように弄る、別アプリでグラフを作り、オブジェクトとして挿入)
┌┐
〜〜
||
6: ◆Excel//q4U
09/09/27 21:56:26
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。
間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。
Excel2007についても未確認な項目が多いので変更点が有ればご指摘下さい。
また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。
ここに書かれてないからといって必ず出来るはずだなんて思わないように。
>▼環境・書式
> ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する
補足
2007ではページレイアウトビューの表示時に限り、幅・高さともcm単位で表示され、
指定も同じくcm単位でできる。
ただし大元がインチ系なのでなかなかピタリの値は出ない。1cm→0.98cmのように
近い値に勝手に丸められる。
以上でテンプレ終わり
7:名無しさん@そうだ選挙にいこう
09/09/27 22:19:40
>>1 おまえいいやつだな
8:名無しさん@そうだ選挙にいこう
09/09/28 02:32:00
>>1ー6
*-+。・+。-*。+。*
\ 。*゚
∩ *
(・ω・`)
。\ つ
* 丶 _⊃
+。 ∪ ☆
゚+。*。・+。-*。*゚
9:名無しさん@そうだ選挙にいこう
09/09/28 04:08:38
質問です。お願い致します。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 excel エンター ペーストされる
いつのまにかセルをコピーしている状態でエンターを押すと勝手にペーストされるようになってしまいました。
どこで設定を直せば良いのでしょうか?探してみたのですがちょっとわからなかったです。
10:名無しさん@そうだ選挙にいこう
09/09/28 10:17:41
>>9
それは仕様です
コピーしていると下に、「エンターを押すか・・」と説明でるっしょ
間違えてコピーしたときはESCオスと解除されるよ
11:名無しさん@そうだ選挙にいこう
09/09/28 20:55:51
入力規則リストに連動して、ほかのセルに自動入力ってできる?
12:9
09/09/28 21:42:37
>>10
ええーそうなんですが。今まで気づかなかった。
コピーして列の一番下のその次に書き込みたくてctr+下のあとリターンで次のセルに行きたいのだけど
リターンすると貼り付けられちゃってめっちゃふべんです。わかりにくくてごめんなさい。
13:名無しさん@そうだ選挙にいこう
09/09/28 22:05:44
>>12
それだったら、ctr+下のあともう一度↓を押すのが早い
14:9
09/09/28 22:15:56
ああああー確かにそうですね。気づきませんでした。
15:名無しさん@そうだ選挙にいこう
09/09/28 22:56:23
カワイイ
16:名無しさん@そうだ選挙にいこう
09/09/29 00:06:06
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
上から順に入力されている数字を上下逆の順にしたいのですが
何かいい方法ありませんか?
17:名無しさん@そうだ選挙にいこう
09/09/29 00:25:36
>>16
作業列に連番を入れて降順に並べ替え
行数固定ならワークシート関数
VBA
18:名無しさん@そうだ選挙にいこう
09/09/29 00:31:21
>>17
ありがとうございます!
19:名無しさん@そうだ選挙にいこう
09/09/29 00:42:13
前スレ980ですがDropButtonClickイベントを使ったら、
今度はコンボボックス1をドロップダウンした時にエラーが発生してしまいました。
ドロップダウンリストを非表示にした時のみ起こるイベントがあればいいと思うのですが、
調べても見つかりません…
他に方法はありますでしょうか?
↓前回の質問
>vbaの質問です。
>フォーム上にコンボボックスが2つある状態で、
>コンボボックス1でドロップダウンして値を選択すると、コンボボックス2がドロップダウン状態になるようにしたいのですが、
>下記のコードではドロップダウンしてくれませんでした。(コンボボックス1が既にドロップダウン状態のため?)
>何かいい方法はありますでしょうか?
>
>Private Sub Combobox1_Change()
>Combobox2.dropdown
>End Sub
20:名無しさん@そうだ選挙にいこう
09/09/29 06:54:08
>>16
降順・昇順それぞれ専用のボタンがあるよ。(Σ”オートSUM”とグラフウィザード
のボタンの間にあります。)
並び替えたい範囲を選択してそのボタン押せば即変わる。
つか、前スレでつい最近質問&回答あったばかりなんだが。
21:名無しさん@そうだ選挙にいこう
09/09/29 07:55:04
>>20
データを降順・昇順に並べるのではなく、単に上下逆転したい時はどうすればいいですか?
22:名無しさん@そうだ選挙にいこう
09/09/29 08:57:23
>21
バカ? を ?ガハ にしたいってこと?
23:名無しさん@そうだ選挙にいこう
09/09/29 10:27:14
>>19
URLリンク(www.red.oit-net.jp)
ないんじゃないかな
エラーは「VBA コンボボックス エラー」などでぐぐるといいかも
俺のところでは再現できなかった
URLリンク(74.125.153.132)
>>21
作業列、が分からないか
例えばA列を並び替えたいとき、B列に1、2、3・・とA列のはしまで入力
そしてAB列を選択した後B列を基準に降順で並び替えると、B列が3、2、1・・
となりそれに連動してA列も変わる
このB列を作業列という。公式な呼び方かどうかは知らんけど
24:名無しさん@そうだ選挙にいこう
09/09/29 11:03:49
>>19
確かにDropButtonClickでやってみたら
実行時エラー’-2147417848 (800101108)':
オートメーション エラーです。
起動されたオブジェクトはクライアントから切断されました。
て、エラーでたわ
それで、実際どういう動作をさせたいの?
2つ同時にドロップダウンリストを表示させたいんだったら
リストボックスを使ったほうがいいと思うよ
25:名無しさん@そうだ選挙にいこう
09/09/29 11:20:12
曲線のグラフを書きたいのですが
折れ線グラフでちょこちょこ書かないと無理でしょうか?
26:名無しさん@そうだ選挙にいこう
09/09/29 11:33:06
>25
点の集合でグラフを書くなら、散布図が便利です
27:名無しさん@そうだ選挙にいこう
09/09/29 11:53:04
>>25
それでもかなり面倒そうですね
ワードでも探してみます
ありがとうございます
28:名無しさん@そうだ選挙にいこう
09/09/29 12:52:07
>>22
> バカ? を ?ガハ にしたいってこと?
質問の内容はそういうことだろ。
つまり>>20がバカということ。
29:名無しさん@そうだ選挙にいこう
09/09/29 14:07:36
また恥かくからそういう言い方はやめておきなって
30:名無しさん@そうだ選挙にいこう
09/09/29 20:55:06
>>21
エスパーが回答するよ〜
「shift押しながらドラッグしたらどうなん?」
31:名無しさん@そうだ選挙にいこう
09/09/29 21:52:50
Office2000から2003になりました。
オートフィルしたり、コピペしたりすると小さなボックスが出てきてウザいんですが、
出さなくする方法を教えてください。
32:名無しさん@そうだ選挙にいこう
09/09/29 22:17:12
>>31
ツール>オプション>編集>[貼り付けオプションボタン]を表示するのチェックをはずす
手元に2003が無いのであやふやだが、これだったはず
33:19
09/09/29 23:22:28
>>23>>24
回答ありがとうございます
>それで、実際どういう動作をさせたいの?
>2つ同時にドロップダウンリストを表示させたいんだったら
>リストボックスを使ったほうがいいと思うよ
いえ、複数のコンボボックスに順番に値を入力していくのに、
1つ目に値を入力したら2つ目のドロップダウンリストを自動で開く
2つ目に値を入力したら3つ目のドロップダウンリストを自動で開く
…
としたかっただけなのですが、なぜかうまくいきませんでした。
諦めて手動で開くことにします。
34:名無しさん@そうだ選挙にいこう
09/09/30 00:21:43
>>33
どうもコンボボックスを繋げるとバグがおきやすいみたいだな
ボタンにするか、別のメソッド(動作)を試すといいかもしれない
35:名無しさん@そうだ選挙にいこう
09/09/30 00:30:22
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
【5 検索キーワード 】”違うシート 集計”、”Vlookup 集計”
こんばんは。早速質問させていただきます。
今、複数のシートにデータが入っています。
Sheet1 契約店リスト >>300件くらいのリスト。2列。契約店コードと契約店名。
Sheet2 商品受注表 >>1000件くらいのリスト。
>>受注月、受注日、契約店コード、契約店名(VlookupでSheet1から検索)、
>>オプションのありなし(1か0が入力されている)
Sheet3 集計表1 >>ピボットテーブル
まず、Sheet2の受注表は、毎日10件くらい増えます。
これを月末に、月ごと・契約店ごとに、受注個数・オプション契約個数の2つを集計します。
これは、ピボットテーブルでなんとか作りました。(Sheet3 )
お聞きしたいのは、こんなことです。
やりたいのは、Sheet1のリストには入っていてもまだ受注していない契約店の分も「0」として表示して、
全部の契約店の受注個数とオプション契約数を出したいのです。(0個のところは営業を強化したりしたいので)
出来れば、今作っているのと似たレイアウトで、月ごとにまとめられて、かつ今までの累計も見られるようなかたちで。
Sheet1とSheet2をうまく使ってこういうものをこしらえるには、どうすれば出来るでしょうか?
前の担当者は月末ごとに電卓をたたいていて、それが手間なのとミスしやすいなあと思ってExcelでやりたいのですが。
どうか教えてください。
36:名無しさん@そうだ選挙にいこう
09/09/30 00:37:44
>>35
ピボットテーブルだとSheet2にダミーデータを入れるしかないのではないか?
SQLだと外部結合というので実現できる。
AccessやSqliteを試してみてもおもしろいよ。
37:名無しさん@そうだ選挙にいこう
09/09/30 00:47:27
2003だと追加インストールが必要かもしれんけど、データのあるブックとは別のブックから「外部データの取り込み」で
Query起動して外部結合できんじゃねーかなそれは
38:35
09/09/30 01:03:44
早速ありがとうございます。
>>35さん
申し遅れていました。Sheet2は自動でデータが入るようになっているのです。
(受注システムからデータを読んでいるのだとか)
ですので、Sheet2はいじれないかと・・・
やはり、こういったものはAccessでしょうか。わたしを含め、課内はあまり
Accessに強いものがおらず、ついExcelでなんでもやってしまおうとしてしまいます。
外部結合というのを調べてみます。37さんもありがとうございました。
あす出社しましたら、追加インストールが必要かどうかを含め、まずは検討してみます。
ピボットテーブルをかじり始めたばかりなので、ピボットテーブルで出来るのかと思い
躍起になっておりました。やはり視野が狭いのはいけませんね。
39:名無しさん@そうだ選挙にいこう
09/09/30 03:16:53
>>38
「ちょっと重い」程度のことなら、余計なことはせずに
がまんして使った方がいいかもしれんぞ
新しいシステムを導入すると必ずトラブルが起こるの法則
40:名無しさん@そうだ選挙にいこう
09/09/30 04:05:37
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 簡単なものなら
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 "シート保護" "ロックされた範囲の選択 再起動"
シートを保護する際「ロックされたセル範囲の選択」チェックをオフにし、
ロックされたセルは選択出来ないよう設定したいのですが、エクセルを再起動するとシートの保護はされているのに
ロックされた範囲の選択は可能になってしまいます。
複数シートを使って何度も試してみたところ、時々ロックされた範囲を選択出来ないままの場合もありました。
どういうケースでそうなるのか再現は出来ませんでした。
解決方法をご存知でしたら、ご教授をお願い致します。
41:40
09/09/30 04:24:19
書き忘れた情報を追加します。ごめんなさい。
>>40の事象は、現在作成中の納品書請求書作成用のbookでのみ起こります。
新規でbookを作成した場合は再起動しても、ロックされたセルは選択出来ないままでした。
納品書請求書作成用のbookでも、新規でシートを追加した場合は大丈夫です。
シート保護のチェックは「ロックされていないセル範囲の選択」のみにチェックを入れています。
知らない間にどこかの設定を変えてしまったのでしょうか。
よろしくお願いします。
42:名無しさん@そうだ選挙にいこう
09/09/30 07:10:20
質問です。
sub k ()
for i= 1 to 30
〜〜〜〜〜〜
next i
for h=1 to 10
〜〜〜〜〜〜〜
next h
end sub
こうゆう構文ってなりたちますか??(〜〜〜〜はなんでもいいです。)
試してみたのですができませんでした。本にもこのようなものは書いていませんでした。
なにかやり方があるのか知りたくて質問してみました。
エクセル2003です。よろしくお願いします。
43:名無しさん@そうだ選挙にいこう
09/09/30 07:22:19
>>39
>「ちょっと重い」程度のことなら、余計なことはせずに
>がまんして使った方がいいかもしれんぞ
「ちょっと重い」なんて書いてあったか?
44:名無しさん@そうだ選挙にいこう
09/09/30 07:26:08
>>42
Option Explicit
Sub k()
Dim i, h
For i = 1 To 30
Cells(i, 1) = "ループ1の" & i & "かいめ"
Next i
For h = 1 To 10
Cells(h, 2) = "ループ2の" & h & "かいめ"
Next h
End Sub
できるよ
45:名無しさん@そうだ選挙にいこう
09/09/30 11:37:09
スレチなんだが、だれかVBA質問スレたてて下さい
46:名無しさん@そうだ選挙にいこう
09/09/30 14:29:16
Excel VBA質問スレ Part13
スレリンク(tech板)l50
47:名無しさん@そうだ選挙にいこう
09/09/30 16:58:19
>>46
ありがとうございます
48:名無しさん@そうだ選挙にいこう
09/09/30 18:51:16
>>44
ありがとうございました。
かなり作業が進みました。感謝です。
49:名無しさん@そうだ選挙にいこう
09/09/30 21:27:20
Excel 2007の使い方について質問です。
【内容】
Excel 2007のハイパーリンクで、外部プログラムを起動していますが、
この外部プログラムに引数を渡したいと思っています。その引数の指定方法を教えていただけないでしょうか?
**.exe *** ***
と、スペースで引数を指定すると、" "が"%20"に変換されてしまい、うまく指定できません。
スペースをうまく指定する方法を教えてください。
宜しくお願いします。
50:名無しさん@そうだ選挙にいこう
09/10/01 04:13:52
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 IF関数
作成したブックです。
URLリンク(www.dotup.org)
A2に文字があります。
B2からF2に日付があります。
G2のセルに、「もしB2からF2の日付の内一つでもTODAYなら、G2にA2を表示させる」
という事を行いたいです。
お手数ですがご回答よろしくお願いします。
51:50
09/10/01 04:52:03
お騒がせしました、自己解決しました。
52:名無しさん@そうだ選挙にいこう
09/10/01 04:55:43
>>50
"一つでも"ということなら
=IF(COUNTIF(B2:F2,TODAY())>=1,A2,"")
ただ実際範囲内で重複している日付は無さそうだから
=IF(COUNTIF(B2:F2,TODAY())=1,A2,"")
とやってもよさそうだけどね。
53:名無しさん@そうだ選挙にいこう
09/10/01 04:57:28
orz...
54:名無しさん@そうだ選挙にいこう
09/10/01 08:50:52
【1 OSの種類 .】 XP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 ある程度
【4 VBAでの回答の可否】 否
ピボットで商品の今年度と昨年度の集計を出しました。
その集計から前年比などを出すのですが
ピボットで集計したものを別のシートに貼り付けて計算式「今年-昨年」で
前年比をだしているのですが、ピボットのあるシート内でこういった計算はできませんでしょうか?
商品名 **
顧客 今年 前年
A 10 5
B 15 3
以下続く
上のものを別シートに貼り付けて
顧客 今年 前年 今年-前年←新しいシート・列にこの計算式を入れてる
A 10 5 5
B 15 3 12
複数商品を何度も何度もコピペしてるので、もう少し効率的にできれば…
と思いました。判りづらいところもあるかもしれませんが
何卒ご教示お願い致します。
55:名無しさん@そうだ選挙にいこう
09/10/01 09:06:03
>>54
できるよ。そのまま式をピボットテーブルの隣に書き足せばいい。
56:54
09/10/01 09:31:18
>55
ありがとうございます!
質問前に最初やってみたのですができなくて、今やり直してみたらできました!
なんでだろう…GETPIVOTDATAってなるから何か特別なことが必要なのかと思ってました。
57:名無しさん@そうだ選挙にいこう
09/10/01 12:43:42
>>56
前年比をピボットで計算させることもできるよ。
58:名無しさん@そうだ選挙にいこう
09/10/01 13:40:49
【1 OSの種類 .】 Windows XP Pro
【2 Excelのバージョン 】 Excel2003(出来れば2007でも使いたいです)
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可(貼り付けだけなら出来ます)
【5 検索キーワード 】 まだググってません
以前に印刷の際、指定したセルに連番を作りながら、印刷が出来るような下記のVBAを作って頂きました
Sub 連番印刷()
'
' 連番印刷 Macro
'
' Keyboard Shortcut: Ctrl+Shift+F
'
Dim i As Integer
For i = 1 To 4
Range("G12").NumberFormatLocal = "-00000"
Range("G12") = i
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
DoEvents
Next i
End Sub
59:58の続き
09/10/01 13:42:30
しかし桁数と***の都合で
連番をアルファベットと数字で構成した4桁で繰り上げるように変更したいのですが、書いて頂けますか?
文字の順番は数字→アルファベット(逆でもOKです)です
0→1→2→3→4→5→6→7→8→9→A→B→C→D→E→F→G→H→I→J→K→L→M→N→O→P→Q→R→S→T→U→V→W→X→Y→Z→0→1
という感じで
例
0001→0002→・・・0009→000A→000B→000C・・という感じで
36×36×36×36=1,679,616種類を作れないでしょうか?
できれば
アルファベットで「I」と「O」は数字の「0」と「1」と誤認識する可能性がありますので
極力省きたいと思いますので、32×32×32×32=1,048,576種類の連番を作成します
しかしまとめて100万枚印刷は出来ないので、開始番号と終了番号を指定して印刷が出来るようにしたいです
例
開始「0000」 終了「00FZ」で512枚・・という感じです
60:名無しさん@そうだ選挙にいこう
09/10/01 16:08:23
>58
Sub Macro1()
Dim myText As String
Dim i As Long
Dim myLength As Integer
Const myArray As String = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"
myLength = Len(myArray)
For i = 1 To 512
myText = Mid(myArray, Int(i / (myLength ^ 3)) + 1, 1)
myText = myText & Mid(myArray, Int(i / (myLength ^ 2)) + 1, 1)
myText = myText & Mid(myArray, Int(i / (myLength ^ 1)) + 1, 1)
myText = myText & Mid(myArray, i Mod myLength + 1, 1)
With Cells(i, 1)
.NumberFormatLocal = "@"
.Value = myText
End With
Next i
End Sub
61:名無しさん@そうだ選挙にいこう
09/10/01 17:51:48
【1 OSの種類 .】 Windows XP P
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 勉強中
【4 VBAでの回答の可否】 可 よろしくお願いします。
VBAで
= Application.WorksheetFunction.Average(Worksheets("sheet1").Range(Cells(1, 3), Cells(10, 3)))
のように average でC1からC10まで求めるやり方ははかりました、
A3、A6、A9、A12 「Cells(1,h*3)」 のような飛び飛びのセルを
average したいのですがどのようにすればよいですか?
教えてください。よろしくお願いします。
62:名無しさん@そうだ選挙にいこう
09/10/01 18:05:22
>61
= Application.WorksheetFunction.Average(Cells(3, 1), Cells(6, 1), Cells(9, 1), Cells(12, 1))
>「Cells(1,h*3)」 のような
無茶言うなよw
63:名無しさん@そうだ選挙にいこう
09/10/01 18:18:31
>>61
変数aとbを用意
fornextでstep3
a = a + cells(a,1)
b = b + 1
でa/b
もしかしたらコレクションを使えるかも知れないけど使え
いかも
64:名無しさん@そうだ選挙にいこう
09/10/01 18:44:17
初心者スレで荒らされたのでこちらでお願いいたします
使用OS XP
使用ソフトウェア excel2007
問題点 ピボットテーブルについて
範囲を指定して合計すると1行目がタイトル扱いになり
計算に加えてくれません。
1行目にタイトルを加えるのは複雑で大量になる為できません
オプション設定のどこを触ったらよいのでしょうか?
65:名無しさん@そうだ選挙にいこう
09/10/01 20:33:29
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 否
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 Excell 文字 置き換え
A1で計算した答えによって、文字の置き換えをしたいのですが、どうやればいいのかわからないです。
例えば、計算した答えが1だった場合は「りんご」、2だった場合は「バナナ」、3だった場合は…
というような表示をしたいのですが、関数でできるのでしょうか?
66:名無しさん@そうだ選挙にいこう
09/10/01 20:39:34
>65
A1セルには計算式があるんですよね?
では、りんごやバナナなどの文字はどのセルに表示したいんですか?
まさか「A1セルに」ではありませんよね?
67:名無しさん@そうだ選挙にいこう
09/10/01 20:44:07
>>65
=IF(A1=1,"りんご",IF(A1=2,"バナナ",IF(A1=3,"うんこ","ゲロ")))
68:65
09/10/01 20:44:53
>62
説明不足で申し訳ありません。
A1には計算式があり、答えは別のセル(A2とかA3)に表示させたいです。
69:66
09/10/01 20:57:20
>65,68
了解。それから計算結果は何通りくらいあるんですか? 3通りなら>67さんのやり方でいいと思うけど
数十通りとかなったら別のセル範囲に 値 と 表示したい文字列 のリストを作っておいてMATCHと
INDEXで表引きした方がいいと思う。
70:31
09/10/01 21:23:50
>>32
ありがd!!
できました。
71:65
09/10/01 21:44:29
>>67
ありがとうございます。IFを使えばよかったんですね。
数通りの場合はこちらを使用します。
>>69
計算結果は2通りから、最大30通りぐらいまであります。
計算結果が多い時はMATCHとINDEXで表引きをすればいいのですか。
使用した事ないので使い方はわからないですが、ググって調べてみます。
ご丁寧にありがとうございました。
72:名無しさん@そうだ選挙にいこう
09/10/01 23:50:13
>>56
EXCEL2003ではGETPIVOTDATAって関数が勝手に入る仕様になって、俺はちょっとうざいと感じた。
下記の方法で、普通の感覚の式が使えるようになるよ。
URLリンク(www11.plala.or.jp)
73:名無しさん@そうだ選挙にいこう
09/10/02 00:04:54
>>65
質問の意図どおりの関数としては
=CHOOSE(A1,"りんご","バナナ","イチゴ","スイカ")
っていうのもある。
まあ、外にテーブル付くって>>69さんのようにするのがいいと思うけど
74:名無しさん@そうだ選挙にいこう
09/10/02 08:52:56
【質問です】
EXCEL2003において、ワイルドカードが使える(使えない)代表的な関数一覧・・・ってどこかにありますか?
ぐぐったのですが、よく分からない・・・
もちろん、個別関数において「使える」「使えない」というのは調べられるのですが、一覧があると分かりやすい・・・と思って。
75:名無しさん@そうだ選挙にいこう
09/10/02 09:54:53
>>74
使いたい関数ごとに調べるほうが良いと思うよ
URLリンク(www.eurus.dti.ne.jp)
「ワイルドカードが使える」と書いてない限り、使えないと思ったほうが良いかも
76:名無しさん@そうだ選挙にいこう
09/10/02 11:06:18
質問です
エクセル2000から2007に変更したのですが、セルの塗りつぶしの
標準色セットが変わってしまっています
今までと同じ色で塗りつぶしたいのに、同じ色を探すだけで時間を取られます
2000と同じ標準色パレットを使用したいのですが、そのようなことはできますか?
77:名無しさん@そうだ選挙にいこう
09/10/02 11:59:47
>>76
こういうのがあるよ
URLリンク(fnya.cocolog-nifty.com)
78:58
09/10/02 12:42:24
>>60
回答ありがとうございます
1、実行してみましたが、A1から下に向かい連番がふれられていくだけです
前回のVBAの何処かに追加するのですか?
2、連番を入れるセルは何処でしていすれば良いでしょうか?
>For i = 1 To 512
ここが開始と終了ですね?
79:名無しさん@そうだ選挙にいこう
09/10/02 13:22:03
>>77
ありがとうございます
ちょっと操作感は違いますが、以前と同じ色を入力できるようになりました
他にも挿入した図形が印刷したらシャギシャギになってたり
2007って2000や2003との互換性があまりないのでしょうか・・・
80:名無しさん@そうだ選挙にいこう
09/10/02 13:28:16
>>79
ワードもエクセルも2007から内部構造が完全に変わった。xlsxファイルの拡張子をzipに変えてみるとわかるよ。
図形やグラフは互換性がとても低い。印刷するとずれたり大きさが変わったりする。
81:名無しさん@そうだ選挙にいこう
09/10/02 14:28:13
>>80
なるほど・・・厄介ですね
周りがまだ2000〜2003だらけなので、戻した方がよさそうですね
82:名無しさん@そうだ選挙にいこう
09/10/02 14:38:47
>78
それくらい応用してくれ。
83:名無しさん@そうだ選挙にいこう
09/10/02 17:47:48
>>58 >>78
暇だったから作ってみた
Option Explicit
Const cBase As String = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"
Dim BVCol As Collection
Sub 連番()
Dim lX As Long, lR As Long, lC As Long, st As Long, en As Long
Set BVCol = New Collection
For lX = 0 To Len(cBase)
BVCol.Add lX, Mid(cBase, lX + 1, 1)
Next lX
st = CValIndex("0000") ' 開始番号を「""」の中に記入
en = CValIndex("00FZ") ' 終了番号を「""」の中に記入
lR = 0
lC = 0
With Range("A1")
For lX = st To en
With .Offset(lR, lC)
.NumberFormatLocal = "@"
.Value = CTxtIndex(lX)
End With
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
DoEvents
lR = lR + 1 ' 行方向に書き込む場合、コメントブロック解除して
' lC = lC + 1 ' 列方向に書き込む場合、コメントブロック解除して
84:名無しさん@そうだ選挙にいこう
09/10/02 17:49:09
>>83 の続き
' lC = lC + 1 ' 列方向に書き込む場合、コメントブロック解除して
Next lX
End With
End Sub
' 引数[index]で指定した数値を、[BVCol]で定義した文字列に変換する
Private Function CTxtIndex(ByVal index As Long) As String
Dim lX As Long, vT As Variant, tTxt As String, cTmp As Collection
Set cTmp = New Collection
lX = index
Do
cTmp.Add lX Mod (BVCol.Count - 1)
lX = Fix(lX / (BVCol.Count - 1))
Loop Until lX <= 0
For Each vT In cTmp
tTxt = Mid(cBase, vT + 1, 1) & tTxt
Next vT
If Len(tTxt) > 4 Then
tTxt = Right(tTxt, 4)
Else
Do Until Len(tTxt) >= 4
tTxt = "0" & tTxt
Loop
End If
CTxtIndex = tTxt
85:名無しさん@そうだ選挙にいこう
09/10/02 17:50:08
>>84 の続き
End Function
' 引数[txt]で指定した文字列を、[BVCol]で定義した文字列で数値に変換する
Private Function CValIndex(ByVal txt As String) As Long
Dim lX As Long, lX2 As Long, lX3 As Long, stlX() As Long, stTmp As Long
ReDim stlX(1 To Len(txt))
txt = StrConv(txt, vbUpperCase)
For lX = 1 To Len(txt)
stlX(lX) = BVCol(Mid(txt, lX, 1))
Next lX
lX2 = UBound(stlX, 1) - 1
For lX = LBound(stlX, 1) To UBound(stlX, 1)
If lX2 < 1 Then
stTmp = stTmp + stlX(lX)
Else
stTmp = stTmp + (stlX(lX) * ((BVCol.Count - 1) ^ lX2))
End If
lX2 = lX2 - 1
Next lX
CValIndex = stTmp
End Function
86:名無しさん@そうだ選挙にいこう
09/10/02 17:53:49
>>83-85 のコードを
同じ標準モジュールに順番にコピペすればOKだから
87:58
09/10/02 19:26:08
>>82
すみません、コピペしかできません
>>82-85
ありがとうございました、明日試してみます
88:名無しさん@そうだ選挙にいこう
09/10/02 20:37:48
こんばんは。質問です。よろしくお願いします。
エクセル2003です。VBA
VBAで、
A1:A100 で "月" と表示のあるもの かつ
range(cells(10,h*3),cells(100,h*3)) で0より大きいものを
平均したいのですが、、、
sub k()
if If Range("A1:A100") = "月" Then
この先がわかりません。教えてください。お願いします。
”〜かつ〜”のVBAでの表現法がわかりません。
89:名無しさん@そうだ選挙にいこう
09/10/02 20:41:37
セルの中の文の特定の部分だけ塗りつぶしをかける方法はありませんか?
Excel2007です。
90:名無しさん@そうだ選挙にいこう
09/10/02 22:09:12
質問です、お願いします
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 文字列 自動で
商品の仕入れ履歴をエクセルで記録しています。
元々、なにかしらの準備をしておくことで
品目コードから、商品名を一つ右隣のセルに自動呼び出しすることは可能でしょうか?
(例) コード 商品名 一箱収容数
12512575 ○○○○ ▲▲▲
上の○と▲が自動で入力できるようなシートを作れれば嬉しいです。
91:名無しさん@そうだ選挙にいこう
09/10/02 22:10:00
会社で使ってるファイルですが、=VLOOKUP(N8, $A:$FI, 3) と書いてありました。
この $A:$FI は、どういう意味でしょうか?
A1:FI20 なら分るんですが・・・
92:名無しさん@そうだ選挙にいこう
09/10/02 22:21:58
>>91
A列からFI列を選択している。
おいらも行数が不定の場合はこうするよ
93:名無しさん@そうだ選挙にいこう
09/10/02 23:21:23
>88
VBA質問相談所にも似たよう質問してませんか?で、何か条件が増えたような。
セルひとつづつ条件をチェックしていくしかないと思うけど。
まず、処理対象のセル範囲があやふや。
A1:A100の条件があるかと思うとrange(cells(10,h*3),cells(100,h*3))ということで10:100の範囲になってるし。
hの値が1から始まるならC、F・・・IU列(255列目 h=85)まであるんですか?
VBA質問相談所の方(レスbP5)を見ると
>A3、A6、A9、A12 「Cells(1,h*3)」 のような飛び飛びのセルを average したい
ってあるけど。ひょっとして10列目〜100列目ってこと?
VBEで CELLS( まで入力したら行と列の順序がわかりますよ。
94:58
09/10/03 11:11:56
>>83
83・84・85の順番に張り付けて実行しましたが、A1から下に向かって連番が
振られていくだけで、印刷は出来ませんでした
95:名無しさん@そうだ選挙にいこう
09/10/03 11:15:06
こんにちは。
エクセル2007って安いお店でいくら位でかえますか?
96:83じゃないよ
09/10/03 11:19:42
>83の
' ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
の行は有効に('をはずす)してますよね?
97:58
09/10/03 11:38:59
>>96
レスありがとうございます
(' )を削除して実行した結果、印刷はするのですが
A1に連番の指定した値がでて印刷→A2に次の連番が出てきて印刷になってしまいます
・・は指定したセルにだけ、違った連番が現れる毎に印刷にしたいです
ちなみにセルを指定する場合は
>With Range("A1")
のA1を変更すればいいんですよね?
98:名無しさん@そうだ選挙にいこう
09/10/03 11:40:10
>>95
これぐらい
URLリンク(kakaku.com)
99:RK
09/10/03 11:46:41
【1 OSの種類 .】 Windows Vista
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 可
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel 入力規則 VBA
例えばマスタとしてSheet2のA2以降に番号,B2以降に氏,D2以降に単価がある時
Sheet1のB6に入力規則を設定して、そのリスト選択で
Sheet1のB6に氏,C6に名,D6に時給を表示させることはできますか?
関数ではなくVBAでお願いします。
100:96
09/10/03 12:29:42
>97
>83の
lR = lR + 1 ' 行方向に書き込む場合、コメントブロック解除して
をそのまま生かしているのなら、行方向にずれます。出力先固定ならば、コメント化すること。
出力セル位置(基準位置)の指定は >97 のとおりです。
101:58
09/10/03 12:39:45
>>96
コメント化とはどうすればよいですか?
102:名無しさん@そうだ選挙にいこう
09/10/03 12:41:45
>>101
'
103:名無しさん@そうだ選挙にいこう
09/10/03 12:49:01
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 可
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 ピボット ゼロ 非表示
ピボットテーブルで、値がゼロのものは項目ごと表示させない方法はありますか?
ピボットテーブルの上からフィルターは使用したくないので他の方法があれば教えてください。
104:名無しさん@そうだ選挙にいこう
09/10/03 13:23:02
>>103
少しだけ手作業してもいいなら、グループ化という方法がある。
まず、集計値でソートしておいて値ゼロを一ヶ所に集めて、
その項目を全部グループ化
そしてそのグループを非表示にする。
105:83です
09/10/03 14:00:50
>>58
テンプレの3・4見てなかったよゴメン
暇だから作るけど
してほしい動作をもう少し詳しく
>>58のコード通りなら
セルG12に番号を入れる→印刷、でいいのか?
それと、違った連番が現れる毎に印刷したいって
連番の範囲を指定するときに、重複する範囲を指定する場合があるってこと?
106:名無しさん@そうだ選挙にいこう
09/10/03 15:47:05
【1 OSの種類 .】 Windows XP Home
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 少々
【4 VBAでの回答の可否 】 可
【5 検索キーワード 】 任意の行数の挿入
下記VBA 「25行目から最初の上方向の空白行を選択」のつもり
Sub 空白行選択()
Const FirstRow = 25
Const LastRow = 2
Dim MyRow As Long
MyRow = FirstRow
Do Until Cells(MyRow, 2) = ""
MyRow = MyRow - 1
If MyRow < LastRow Then Exit Sub
Loop
Rows(MyRow & ":" & MyRow).Select
End Sub
ここまでは何とかできたのですが(合ってますよね?)
ここに、"25-(上記で検索した最初の空白行の行数)"の空白行をを挿入したいのですが、
どうすればいいのでしょう?
※上記で検索した最初の空白行の行数が 18であれば 25-18 = 7 行を挿入
よろしくお願いします。
107:離島のサンデーPG
09/10/03 17:23:09
>>106
とにかくデータ行の下に25行の空白行を設けたいってことであってるのかな?
108:106にあらず
09/10/03 17:57:29
横から失礼
>106さんがしたいのは、
25行目から上方向に検査を行い、最初に見つけた(B列の)空白セルのある行から25行目までに空白行を挿入したい
ということだと思います。
例えば、B25セルが空白だった場合は 25−25=0 で空白行の挿入は行われず、
B24セルが空白だった場合は 25−24=1 で1行挿入する という具合。
109:名無しさん@そうだ選挙にいこう
09/10/03 18:12:55
106です。
>>107さん 108さん ありがとうございます。
すいません。説明が言葉足らずでした。
シートには、2行目からN行目までデータが入力されています。
途中、不規則に空白行があります。
空白行から次の空白行までのデーターが、印刷時複数のシートに分割されないように
というのがそもそもの意図です。1シートのデーター入力行数が25です。
例 22行目 データー有り 23行目 空白行 24行目 データー有り
25行目 データー有り 26行目 データー有り 27行目 空白行
23行目(25行目から上方向の最初の空白行)に 25−23=2 行の空白行
を挿入することによって、1枚目のシートは22行目までデーター有り、23〜25
行目は空白行。2枚目のシートは(行挿入する前の)24行目から始まる。
意図したことは、上記のようなことです。よろしくお願いします。
110:108
09/10/03 18:31:46
>109
>印刷時複数のシートに分割されないように
複数のページに分割されないようにして ということですね。
改ページを設定する方法じゃダメ? 行挿入したら計算式に影響ありませんか?(計算式があるのか知らないけど)
111:名無しさん@そうだ選挙にいこう
09/10/03 18:45:06
106です。
>>108さん
「複数のシート」ではなく「複数のページ」でした。重ね重ねすいません。
「改ページを設定する」ってのは分かりませんです。そういう方法も
あるのでしょうか?
計算式の参照は行方向だけなので、行挿入しても問題ないと思います。
112:108
09/10/03 20:23:06
>111
手作業での改ページはわかりますね?(メニュー−挿入−改ページ)
マクロの自動記録をしてみたら、次のようなコードができました。
※12行目を選択して改ページしたときの内容です。(当方はExcel2003です)
Rows("12:12").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
Range("A12").Select
こういうこともできるということで。
113:離島のサンデーPG
09/10/03 20:23:29
>>106
連続データが30行(B2:B31まで)あったらどうすんのかな?
114:離島のサンデーPG
09/10/03 20:29:57
> 1シートのデーター入力行数が25です。
あ、ごめん。よく読んでナカッタヨ。
115:名無しさん@そうだ選挙にいこう
09/10/03 21:22:29
106です。
皆様 色々なコメント、ありがとうございます。私の質問自体に、誤りとあいまいな点がありました。
すいませんです。質問自体を訂正・整理して、もう一度UPします。
下記VBA 「25行目から最初の上方向の空白行を選択」のつもり
Sub 空白行選択()
Const FirstRow = 25
Const LastRow = 2
Dim MyRow As Long
MyRow = FirstRow
Do Until Cells(MyRow, 2) = ""
MyRow = MyRow - 1
If MyRow < LastRow Then Exit Sub
Loop
Rows(MyRow & ":" & MyRow).Select
End Sub
ここまでは何とかできたのですが(合ってますよね?)ここに、"25-(上記で検索した最初の空白行の行数)"
の空白行をを挿入したいのですが、 どうすればいいのでしょう?
※上記で検索した最初の空白行の行数が 18であれば 25-18 = 7 行を挿入
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4310日前に更新/146 KB
担当:undef