1 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 19:12:43 ] Excelに関する質問は、ここで! ▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━ ★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やヘルプで検索してみてください。 ttp://www.google.co.jp/ 前スレ Excel総合相談所 82 pc11.2ch.net/test/read.cgi/bsoft/1241825062
2 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 19:13:35 ] ▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━ ・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 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 19:14:48 ] ★ルールを無視すると… >>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 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 19:16:18 ] ★ 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 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 19:17:16 ] ★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法) ▼数式・関数 ・ 表示形式以外の書式の取得設定、書式情報を条件とする数式 (ユーザー定義関数) ・ 関数式でセルの選択状態を取得する (VBA) ・ セルの値でパスを補完して、開いてないブックのセルを参照する (VBA) ・ 入力したセルに結果を返す (VBA) ・ 範囲を引数にしての文字列連結 (ユーザー定義関数) ・ 値の書き換え、値の保持 (VBA) ・ 複数の結果を抽出、不定な数の結果を返す (VBA、結果の最大数が解っていれば最大数以上の式を論理式で組む) ・ 空白のセルの部分を上詰め、左詰めなどで表示する (作業セルを使って別セルに詰めて表示なら可能、それ以外はVBA) ・ VLOOKUP,HLOOKUP,MATCH等の関数で、検索語を全半角両方にマッチさせる (ユーザー定義関数) ▼VBA ・ ExecuteExcel4Macroの参照で空セルと0値を区別する ・ セルの値や変数値で直接変数名を指定する (配列、コレクション) ・ VBのコントロール配列と同じような操作をしたい (イベント以外ならコントロール名を「同名+連番」にしてControls(名前 & インデックス)で処理、イベントはクラスでWithEvents) ▼ユーザーフォーム ・ フォーム上から変更したプロパティ値の保持 (シートや外部ファイルに書き出して、次回読み込む) ▼グラフ ・ 棒グラフでひとつだけ突出したデータがあった場合に波線を入れて位置を合わせる (オートシェイプなどで見た目だけそうなるように弄る、別アプリでグラフを作り、オブジェクトとして挿入) ┌┐ 〜〜 ||
6 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 19:18:07 ] 上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。 間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。 Excel2007についても未確認な項目が多いので変更点が有ればご指摘下さい。 また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。 ここに書かれてないからといって必ず出来るはずだなんて思わないように。 >▼環境・書式 > ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する 補足 2007ではページレイアウトビューの表示時に限り、幅・高さともcm単位で表示され、 指定も同じくcm単位でできる。 ただし大元がインチ系なのでなかなかピタリの値は出ない。1cm→0.98cmのように 近い値に勝手に丸められる。
7 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 19:23:34 ] 多数のブックを開いてシートを追加しながら集計し、R列の最下行+1に集計結果を書いています。 このとき、各シートをクリックしたらすぐに集計結果が確認できるよう 次のような荒業で見栄えを整えています。 Application.ScreenUpdating = True Range("R65536").End(xlUp).Offset(1, 5).Select 'シートのレイアウト(見栄え) Range("R65536").End(xlUp).Select 'カーソルを集計結果のポジションへ Application.ScreenUpdating = False これだと、当然ながら画面がチラチラするので改良したいのですが、 何か良い方法があるでしょうか?
8 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 19:38:16 ] >>7 msgboxとかのほうがいいんじゃないの 若しくは集計用のシートでも作って、そこにリンクさせるか
9 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 20:53:58 ] >>8 意味が分かりません。 msgboxなんか付けて週百回もOKをクリックしてたら、処理に10分くらい掛かると思います。 画面をチラチラさせずに、カーソルの位置とシートのレイアウトを統一したいんです。
10 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 20:54:56 ] × 週百回 ○ 数百回
11 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 21:19:29 ] いろいろ調べたのですがいい物が見あたらないので・・・ 【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 画像パス 画像を自動挿入 シート2に画像のアドレスを入力してゆきます。 シート1の指定した場所にシート2のアドレスを参照してその画像を適度な大きさに 変換して貼り付けて置くことは可能でしょうか? シート2のアドレスを変更するとその画像も自動的に変わるようにしたいです。 出来ればVBA無しでくめれば最高なのですが、教えていただけますでしょうか?
12 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 21:22:51 ] _
13 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 21:49:09 ] >>11 無理
14 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 21:51:36 ] >>7 ScreenUpdatingをfalseのまま処理すりゃいいじゃん
15 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 22:13:35 ] >>14 falseのまま処理したら、selectしても動きません。 やってみれば一目瞭然です。
16 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 22:37:26 ] 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 ちょっとだけ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 オートフィルタ コピー データをY列で並び替えてから、オートフィルタでB列とN列の空白セルを除きます。 Y列のトップ5(タイトル行を除いて上から5行)を選んで他のシートにコピーするとき、 空白があると5行がコピーできません。 Worksheets("HND").Range("A2:Y6").Copy _ Destination:=Worksheets("HVC").Range("A2") ググって探して真似てみたけど、どうしてもうまくいきません。 Worksheets("HND").Range("A2:Y6").SpecialCells(xlCellTypeVisible).Copy _ Destination:=Worksheets("HVC").Range("A2") どこを直せばいいの?(´Д⊂)ウワーン
17 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 22:54:12 ] >>15 Sub Macro1() Sheets("Sheet1").Select Application.ScreenUpdating = False Application.Goto Reference:=Range("R65536").End(xlUp).Offset(1, 5), Scroll:=True Range("R65536").End(xlUp).Select Sheets("Sheet2").Select Application.Goto Reference:=Range("R65536").End(xlUp).Offset(1, 5), Scroll:=True Range("R65536").End(xlUp).Select Application.ScreenUpdating = True End Sub 動くけど それとも何?selectしたら画面を動かしたいの?? それならRange("R65536").End(xlUp).Offset(1, 5).Select 'シートのレイアウト(見栄え) がいらん
18 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/10(水) 23:45:38 ] >>17 Scroll:使って、「ScreenUpdatingをfalseのまま処理」と書いておきながら「動くけど」はねーだろwww ま、いいや
19 名前:名無しさん@そうだ選挙にいこう [2009/06/11(木) 00:43:04 ] 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 少し 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 ハイパーリンク セルにハイパーリンクでFTPサイトをリンクしたのですがクリックすると 「インターネットサイトのレポートによると、リクエストしたアイテムが 見つかりませんでした。(HTTP/1.0 404)」となってしまいます。 IEのバージョンは7です。 ハイパーリンクではftpサイトに接続することはできないのでしょうか? アドレスは、ftp://xxx:yyy@ftpサイト て感じで設定しています。 よろしくお願いします。
20 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 02:08:30 ] >>19 IEにURLを入れると見れるけど、Excelのハイパーインクだとダメってこと?
21 名前:名無しさん@そうだ選挙にいこう [2009/06/11(木) 06:30:27 ] 【1 OSの種類 .】 Windows2000 【2 Excelのバージョン 】 ? 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】エクセル 印刷範囲 設定 A1にAと入ればB2:D10、Bと入ればB20:D30というように印刷範囲を変えたいです。 上記の検索でこのページを見つけ試しましたが、出来ませんでした。 xl-kobeya.seesaa.net/article/8843049.html 検索ワードにマクロを入れるとボタンを作る方法を見つけましたが、 ボタンではなく、特定のセルに入った文字列により変えたいです。 どうかご教示ください。
22 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 06:56:05 ] >>21 Aのとき Sub Macro1() ActiveSheet.PageSetup.PrintArea = "$B$" & (Asc(Cells(1, 1)) - 95) & ":$D$" & (Asc(Cells(1, 1)) - 86) End Sub >B2:D10、Bと入ればB20:D30 範囲間違ってない?どういう基準で範囲が変わるのかよく分からない 変えれそうなら(Asc(Cells(1, 1)) - 95) と (Asc(Cells(1, 1)) - 86)を (Asc(Cells(1, 1)) - 86)*2とかにかえて試行錯誤してみてください 無理ならレスください
23 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 09:24:11 ] >21 A1の値が"A"の場合とそうでない場合の2通りだけなら以下の手順でできます。3通り以上のときも 工夫すれば対応できると思う。(IndexとかMatchとか) B1セルに計算式 =IF(A1="A","範囲A","範囲B") を入れておく。 あとはxl-kobeya.seesaa.net/article/8843049.html のページを参考に B2:D10の範囲を 範囲A、B20:D30の範囲を 範囲B と名前を設定する。 メニューバーの[挿入(I)]-[名前(N)]-[定義(D)] から Print_Aria ←半角で大文字小文字間違えないように の参照範囲を =INDIRECT(Sheet1!$B$1) とする。 自分の環境はWindowsXp(sp3),Excel2003ですが、ちゃんとできました。 もし、うまくいかないときは、Excelを終了・起動してみてください。
24 名前:名無しさん@そうだ選挙にいこう [2009/06/11(木) 11:26:25 ] >>20 はい。そういうことです。 http://サイト だと IEのアドレスにコピーされて接続できるのですが、 ftp://ID:パス@ftpサイトだとIEすら起動しないのです。 ftp://ftpサイトでも同じです。 Excelの仕様ということであればどうしょうもないのですが、 設定等で回避できるようなら教えてください。
25 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 11:52:14 ] >>24 ftpサーバーが存在しない、セキュリティソフトがftpアクセスを弾いているなどの理由でアクセスできない とかいうことは無いですか
26 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 13:24:03 ] インターネットオプションは? FTPフォルダビューを有効にする
27 名前:名無しさん@そうだ選挙にいこう [2009/06/11(木) 14:23:31 ] >>25 ftpサイトのアドレスは、間違っておりません。 >>26 有効になってます。 IEでアドレスたたくときちんと表示されますし、、、 皆さんのPCでは、問題なくハイパーリンクでIEが起動してftpサイトに アクセスできるということですか。。。
28 名前:名無しさん@そうだ選挙にいこう [2009/06/11(木) 14:46:56 ] Excel2007を使ってます。 入力規則機能を使って ドロップダウンリストから選択して入力してもらうようにしてます そこで例えば、リストから○を選択すると背景が青 ×を選択すると背景が赤になるように設定できないものでしょうか?
29 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 15:14:47 ] >28 条件付書式を利用します。 当方はExcel2003のため、リボンメニューについてはわからないのであしからず。
30 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 15:25:49 ] >>29 ありがとうございます。
31 名前:名無しさん@そうだ選挙にいこう [2009/06/11(木) 15:34:47 ] エクセル2000使ってます 誤って上書き保存してしまった場合戻す方法教えてください。 お願いします
32 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 15:55:55 ] 上書きしちゃったらどうにもならないです スッパリあきらめたほうが早いです
33 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 16:10:40 ] >>32 ありがとうございます。
34 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 16:56:20 ] 【1 OSの種類 .】 WindowsXP Pro SP3 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい (まぁ少しは) 【4 VBAでの回答の可否】 否 WebからデータをExcelに貼りつけているのですが、これに関して質問です。 1 データを保存しようとする度に下記のメッセージが表示されます プライバシーに関する注意:このドキュメントには、マクロ、ActiveXコントロール、 XML拡張パックの情報、またはWebコンポーネントが含まれています。これらにはドキュ メント検査機能で削除することができない個人情報が含まれる場合があります。 出さないようにする方法はありますか? 2 table.yahoo.co.jp/t?s=USDJPY=X&g=d でコピーしている最中に関係ない下の方のテキストボックスまで貼りつけてしまった のですが、これって削除はどのようにすれば出来るのでしょうか? 貼りつけた範囲を含む所を選択して削除しても肝心のテキストボックスやリストボッ クスの部分は削除できませんでした。
35 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 17:41:29 ] >>34 1 Excelのオプション→セキュリティセンター→セキュリティセンターの設定→ドキュメント固有の設定 →チェックを外す 2 一番簡単な方法はそのシートを削除して新しいシートに貼り直す
36 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 19:07:59 ] >>35 1はでなくなりました。 2は、、、やはりそれが一番簡単なんでしょうね w ありがとうございました。
37 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 19:44:26 ] >>34 2番目 まずExcelのオプションで「複数オブジェクトの選択」コマンドをツールバーに登録。 そして「[開発]タブをリボンに表示する」もチェックしておく。 ここまでが準備。最初に1回やるだけでいい。 手順の1. 開発タブを開き、デザインモードをONにする。 手順の2. さっき登録した「複数オブジェクトの選択」アイコンをクリックすると選択モードになる。 「すべて選択」→「OK」→Deleteキー これで、テキストボックスなどの部品類が全部いっぺんに削除できる。
38 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 19:47:43 ] 2003までみたいに範囲ドラッグでコントロール選択ってのはできなくなったん?
39 名前:16 mailto:sage [2009/06/11(木) 20:15:38 ] 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 ちょっとだけ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 オートフィルタ コピー データをY列で並び替えてから、オートフィルタでB列とN列の空白セルを除きます。 Y列のトップ5(タイトル行を除いて上から5行)を選んで他のシートにコピーするとき、 空白があると5行がコピーできません。 Worksheets("HND").Range("A2:Y6").Copy _ Destination:=Worksheets("HVC").Range("A2") ググって探して真似てみたけど、どうしてもうまくいきません。 Worksheets("HND").Range("A2:Y6").SpecialCells(xlCellTypeVisible).Copy _ Destination:=Worksheets("HVC").Range("A2") どこを直せばいいの?
40 名前:34 mailto:sage [2009/06/11(木) 20:38:43 ] >>37 ありがとうございます。こんなやり方があるんですね。ビックリしました。 >>38 それで済んだら楽だったんですけどね w
41 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 20:53:37 ] >>39 分からん Selection.AutoFilter でオートフィルタ解除 若しくは Sub a() Range("d1").Formula = Range("c1").Formula End Sub みたいにするか
42 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 20:54:29 ] 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 関数 りんご 100円 みかん 120 バナナ 150 メロン 110 桃 130 1位 ??? ???円 2位 ??? ???円 3位 ??? ???円 これでX番目の「項目」と「値段」を自動的に表示させるには何の関数を (組み合わせて)使えばいいのでしょうか?LARGE関数は項目までは 抽出できないみたいですし・・・。宜しくお願い致します。
43 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 20:59:48 ] >>39 こんなんでどうだ? Sub 可視セルのみコピー() r = 6 While Range("HND!A2:A" & r).SpecialCells(xlVisible).Count < 5 r = r + 1 Wend Range("HND!A2:Y" & r).Copy Range("HVC!A2").PasteSpecial End Sub
44 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 21:07:14 ] 値段が同じくだものがなければLOOKUPで
45 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 21:15:49 ] >>42 「円」は必ず書式設定でセルに反映させること、「りんご」はA1に入ってる前提で、いきます C1=RANK(B1,$B$1:$B$5) C5までオートフィル A7=一位、A8二位A9三位 B7=INDEX($A$1:$A$5,MATCH(1,$C$1:$C$5,0),1) B8=INDEX($A$1:$A$5,MATCH(2,$C$1:$C$5,0),1) B9=INDEX($A$1:$A$5,MATCH(3,$C$1:$C$5,0),1) C7=VLOOKUP(B7,$A$1:$B$5,2,0) C9までオートフィル vlookup、RANKは覚えておいた方がいいかも 本当はindex+matchがいいんだけどやや扱いにくい
46 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 21:20:04 ] パソコン初心者ですが表計算の資格を取るためにパソコンを購入しようと思っています 最低Excel2007が使えればいいんですがどのメーカーさんのを買えば入ってますか? 全てに入っているものなんでしょうか?それともソフトのような物を購入するのでしょうか? パソコンの知識が全くないのでわかりません…
47 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 21:24:55 ] >>46 「Office入り」というのを選ぶとExcelとWordが入っている。 どこのメーカーでもOfficeあり、なし、両方用意してるから、Officeありのを選ぶこと。 あとは、まあどれを買っても同じ。好きな色で決めればいい。 ただ、あんまり安いのは動作が重いので仕事で使うにしろ勉強に使うにしろ能率が悪くなる。 目安としては、だいたい10万円でテレビ機能のないやつを買っとけばいい。
48 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 21:28:24 ] >>47 わかりました!ありがとうございました!
49 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 21:28:38 ] >>46 価格コムで調べればいくらでも出てくるだろ 大手メーカーのならだいたいOffice Personal 2007は入っているはず ノートならこんなのとか ttp://kakaku.com/spec/K0000030170/
50 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 21:41:05 ] >>45 うおお、ありがとうございます!ちょっとレッスンしてみます。 また何かありましたら宜しくお願い致します。m(_ _)m
51 名前:16=39 mailto:sage [2009/06/11(木) 21:42:55 ] >>43 ありがとうです。 Do Whileは使ったとこがあるけど、Wendは初めて見ました。 勉強します・・・ >>41 ありがとうです。 43さんのが、そのものズバリです。
52 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 22:40:02 ] エクセル関連の掲示板を見てると「selectするな」って書いてる人がいます。 マクロの自動記録するとselectばかりしてますが、selectしては いけない理由って何でしょうか?
53 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 22:46:47 ] >>52 1.速度的に不利、メンテナンス性も大きく損なわれる 2.コードの行数が少なくなる=マクロ全体の可読性が高まる
54 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 22:54:37 ] >>52 自動記録は最適化されてないから無駄が多い。 その中でも一番無駄な部分がいちいちSelectするところ。
55 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 23:09:03 ] >>53 速度を測ったこともあるんですが、2秒が3秒になったところで不利とも思えないし、 selectで改行した方が、視覚的に分りやすいのに? >>54 張り詰めて仕事をするより、無駄口を叩きながらの方がいいでそ? 無駄って、マイナス要因ばかりじゃないと思うんだけどね。
56 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/11(木) 23:35:37 ] >>55 2秒が3秒なら問題になることも少ないだろうが、 世の中には何時間もかかるマクロもあるんだぜ? 2時間が3時間じゃ無視するわけにいかん。
57 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 00:12:42 ] >>56 VBAで速度にこだわるのは滑稽。
58 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 01:22:25 ] 目的の処理を行うのにselectする必要ないのにselectされると見難いんだよ普通に オッサンがだらだら意味不明な前置きしてんのと一緒だな 簡潔に目的の処理を書けというのは当たり前すぎる
59 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 01:53:12 ] すいません、日数×時間=総時間を出したいのですが、 例えば3(日)×2.30(2時間30分)で"分"を60で繰り上げして=7.30という答えを導き出したいのですが、 この"分"の部分を60で繰り上げるにはどういう数式にしなければいけないんでしょうか? Excelのバージョンは2000です。
60 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 05:45:52 ] 時間の部分を2:30:00にすれば、答えが7:30:00になる。
61 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 05:50:04 ] 縦に 「りんご, ぶどう, もも, バナナ, もも, バナナ, もも, バナナ, ぶどう, ぶどう」 と並んでるのですが, 出現回数ランキングを「1位 バナナ 200回 2位 もも 180回 ・・・」のように作るにはどうすればいいでしょうか. 出現する項目の種類が多いので,COUNTIFを使ってはできないと思うのですが・・・ 関数だけでできればお願いします.
62 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 06:01:19 ] >>57 ハズレ 単体アプリケーションとしてVBアプリに速度を求めるのは滑稽だが VBAでは事情が違う VBAはあくまでも「Excelの操作の効率化」の為のモノだから 速度に拘るというか、速いにこしたことはないのは当然の摂理 アプリケーション製作用プログラム言語と アプリケーション操作用マクロ言語を同列で考えちゃいけないよ
63 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 06:39:16 ] >>62 意味不明
64 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 07:37:17 ] selectは絶対に悪だから使うな、というわけではない 俺もマクロの最後にA1セルを選択したりすることはある 特にコマンドボタンに登録したマクロだと、フォーカスがコマンドボタンに残るからね でも基本は>>53 の二行目だろうね 記録したマクロをそのまま使うなんてそうそうないことだし、 手を加える時にいらない処理はどんどん削る。また人によっては削る行為(最適化)自体に快感を伴う場合もあるんじゃないかな まーそうやって最適化してれば、後で手を加えるときに楽なんだよ。 教えられてそうするわけじゃない、学習した結果の行為
65 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 07:42:14 ] >>61 ピボットテーブル作って加工すれば?
66 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 07:52:36 ] >>64 速度の話じゃなくなってるね。
67 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 09:58:05 ] 【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Excel2007 テーブル リスト Excel2007でデータの管理をしようということになり、 2007から導入されたデータベース機能の「テーブル」を使おうと思っています。 現在、シートA、B、Cに、それぞれテーブルA、B、Cがあるのですが、 テーブルBのある列の入力規則にリストを使い、 そのリストのデータ元をテーブルAのある列にしたいと考えています。 そこで質問なのですが、 (1)別のテーブルのデータを元に、リストを作るのは可能でしょうか。 可能ならどのように指定すればいいのでしょうか。 (2)データベースのように、リストやセルに表示されるデータはデータ元の[列2]でも、 実際にデータとして入っているのはデータ元の[列1]である、というようなことは可能でしょうか。 名前を選んだらキーが入るというイメージです。 ※こちらはできたらやりたいのですが、できなければあきらめます。 以上、よろしくお願いします。
68 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 10:15:18 ] >>66 vbaで速度なんて気にしても仕方ないだろう よほど重い処理をしているなら、問題解決へのアプローチの仕方が間違っている
69 名前:59 mailto:sage [2009/06/12(金) 10:28:35 ] >>60 エラーが出て上手く行きませんでした。 試しに、:00をとって2:30にしてみた所、明治何年何月何日となってしまいました。 ちなみにこれはわかり難いですが、時計の何時ではなく、時間数です。 例えば、1時間30分を1.5時間と表す場合もありますが、この1.5時間を1時間30分に変更する方法でも良いです。
70 名前:60じゃないよ mailto:sage [2009/06/12(金) 11:48:29 ] >59、69 横レスですが、以下のことをやってみてください。 A1セルに 3 を入力(日数のつもり) B1セルに 7:30 を入力(時間の入力) ※7.30ではありません。 C1セルに計算式 =A1*B1 を入力 これだけでC1セルには 7:30 と表示されるはずですが。 >=7.30という答えを導き出したい どうしても小数点形式で表示したいということでしょうか? ○時間△分を表すのに ○.△ は不適と思いますが。
71 名前:59 mailto:sage [2009/06/12(金) 11:58:48 ] >>70 レスありがとうございます。 希望どうりの表示ができました。 ありがとうございました。
72 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 12:31:43 ] >>69 Excelでは24時間を1と置いて計算するようになっている。 つまり1時間は1/24で、1.5時間は(1/24)*1.5で求めることができる。 電卓で計算してみると 1時間=1/24≒0.0416667 この数字を掛けて書式で"h時間m分"にすれば「1.5」が「1時間30分」に変換できる。
73 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 13:57:41 ] >>63 まぁ理解できないからこそ>>57 みたいな発言が出てくるわけだから 言っても今の時点では意味不明なのは当然か
74 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 14:50:10 ] ExcelのVBAはその場しのぎの使い捨ての自分だけで使うプログラムを組むことが多いから VBAを作成してから結果を得るまでがいかに早く(速くではなく)出来るかが重要に思うな。 俺の場合は。 「速さ」にこだわる人はVBAプログラミングの請負みたいなのを職業としてやってるんだろうから それはそれで当然だと思う。 色んな場合を一緒くたにしてどうこう言うのが間違ってるよ。
75 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 14:52:54 ] やりたいようにやればいいじゃん しゅごキャラがついてるよ
76 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 16:18:11 ] >>57 だよな。 美しさを求めた方がいいわな。 で結局汚いコードはほとんど遅い。
77 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 16:28:45 ] ボールをとる とったものを投げる。 ボールを投げる
78 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 16:37:53 ] ある程度綺麗なコード、それこそselectを抜くだけでも勝手に速度も上がるよなぁ
79 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 16:43:16 ] お前らが会社辞めたりせずに最後まで自分で作ったものの 面倒見てくれさえすれば何でもいいですよ・・・ 変なこだわりがある自信過剰な人ほどいきなり会社辞めたりするんで困るんですよ・・・
80 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 17:42:54 ] 【1 OSの種類 .】 WindowsXPSP3 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 VBA Sum関数 自動入力 質問です。 作成した表のA1〜O1が見出し行でそれよりしたに行数が300行ほどあります。 で最下行にSum関数が入っているのですが、中間に行挿入した場合はSum関数 も範囲が延長されますが、見出し行の真下に挿入した場合はSum関数の先頭 アドレスが変わっちゃいます。 これをチェインジイベントマクロもしくは標準のモジュールのマクロはどの ようにすればいいのでしょうか?
81 名前:80 mailto:sage [2009/06/12(金) 17:58:44 ] すいません、追記です。 先頭行の真下だけでなく、Sum関数が入っている真上に行挿入した場合は 最終アドレスが変わります。 どちらのケースも対応させるようにしたいのですが。
82 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 18:35:17 ] 頭使えよ 余分に範囲指定してその中で挿入すればいいだろうが
83 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 18:45:59 ] >余分に範囲指定してその中で挿入 A2が関数の先頭ならSum(A1:A300)としておけばいいが・・ 最終行の範囲はどんすんのよw
84 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 19:04:09 ] データがA2:A300なら、A302に=SUM(A1:A301)と上下1行余分な式を入れれば良いだけだろ? 合計セルの前に空行が出来るが、計算上は全く支障無いし、見た目を整えたければ行の非表示も可能 またアウトライン使えば行の表示/非表示は1クリックで切り替えられる 301行にアウトライン設定して301行に行挿入すれば、アウトラインは302行に移って、式は=SUM(A1:A302)になる
85 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 19:11:22 ] >チェインジイベントマクロもしくは標準のモジュールのマクロ って言っているんだから・・ A列のみのサンプル(標準モジュールの例 Sub Sample() With Range("A2") .End(xlDown).Offset(1, 0).Formula = _ "=SUM($A$2:" & .End(xlDown).Address & ")" End With End Sub VBA使えるなら後は考えろ
86 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 21:37:51 ] INDIRECT関数を利用すると、範囲の片方は固定できます。 合計を求めるセルがB301として、当初の集計範囲がB2:B300だったとします。 B301セルの計算式を =SUM(INDIRECT("$B$2:$B"&ROW()-1)) としておけば、2行目に行挿入しても””で囲んだ部分は変わりません。 集計範囲のもう片方は合計行の1行上と指定してるので行の挿入・削除に応じて変化します。 マクロとかややこしいものを使わずにすむのでこれがいいかと思う。
87 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:02:09 ] 19です。ハイパーリンクは諦めました。 代わりに、BASP21とマクロでFTPサイトからフォルダ一覧とファイル一覧取得して目的のファイルダブルクリックでダウンロード出来るようになりました。 ありがとうございました。
88 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:02:42 ] 独り言ならチラシの裏にでも書いておけよ
89 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:08:37 ] 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 前スレ805の続きです。前回とはシート名が変わっています。 Sheet("DATA")の月ごとのデータを、Sheet("FS")に1Q、2Q、3Q、4Qでまとめることは 出来ましたが、新たに月ごとのデータもまとめることになりました。 レスをくださった方のマクロを元に書いてみたものの、うまく集計してくれません。 どこが間違ってるのでしょうか? ---Sheet("DATA")-------------------------------------------------------------- A B C D E F G H I J K L M N O P Q 商品名 4月 5月 6月 7月 8月 9月 10月 11月 12月 1月 2月 3月 A1 12 15 7 3 2 6 A1 3 5 2 4 9 11 A1 10 12 8 10 16 5 A2 3 0 5 1 3 0 A3 8 6 11 8 7 2 A3 0 3 7 0 1 1 --Sheet("FS")------------------------------------------------------------------ A B C D E F G H I J K L M N O P Q R 商品名 1Q 2Q 3Q 4Q 4月 5月 6月 7月 8月 9月 10月 11月 12月 1月 2月 3月 A1 74 66 A2 8 4 A3 35 19
90 名前:89 mailto:sage [2009/06/12(金) 22:10:39 ] Sub まとめ3() Dim i As Long, j As Long, k As Long Dim Rng(3) As Range Dim Rng1(3) As Range, Rng2(3) As Range, Rng3(3) As Range Worksheets("FS").Rows("2:65536").Delete Shift:=xlUp i = 3 j = 2 With Worksheets("DATA") Do While .Cells(i, 1).Value <> "" If .Cells(i, 1).Value <> .Cells(i - 1, 1).Value Then For k = 0 To 3 Set Rng(k) = .Cells(i, 3).Resize(1, 3).Offset(0, k * 4) Set Rng1(k) = .Cells(i, k * 3 + 7) Set Rng2(k) = .Cells(i, k * 3 + 8) Set Rng3(k) = .Cells(i, k * 3 + 9) Next Else For k = 0 To 3 Set Rng(k) = Union(Rng(k), .Cells(i, 3).Resize(1, 3).Offset(0, k * 4)) Set Rng1(k) = Union(Rng1(k), .Cells(i, 3).Offset(0, k * 3 + 7)) Set Rng2(k) = Union(Rng2(k), .Cells(i, 7).Offset(0, k * 3 + 8)) Set Rng3(k) = Union(Rng3(k), .Cells(i, 11).Offset(0, k * 3 + 9)) Next End If
91 名前:89 mailto:sage [2009/06/12(金) 22:11:33 ] If .Cells(i, 1).Value <> .Cells(i + 1, 1).Value Then Worksheets("FS").Cells(j, 1).Value = .Cells(i, 1).Value For k = 0 To 3 Worksheets("FS").Cells(j, k + 3).Value = WorksheetFunction.Sum(Rng(k)) Worksheets("FS").Cells(j, k * 3 + 7).Value = WorksheetFunction.Sum(Rng1(k)) Worksheets("FS").Cells(j, k * 3 + 8).Value = WorksheetFunction.Sum(Rng2(k)) Worksheets("FS").Cells(j, k * 3 + 9).Value = WorksheetFunction.Sum(Rng3(k)) Next j = j + 1 End If i = i + 1 Loop End With For k = 0 To 3 Set Rng(k) = Nothing Next Worksheets("FS").Select End Sub
92 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:15:59 ] >>67 2007持ってないんで2003以前の話なんだけど (1)名前の定義をする 2003以前なら範囲を選択→挿入→名前→定義 (2)表示される[列2]を元にINDEX関数で引っ張ってくるとかかなあ?
93 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:24:11 ] もの凄く初歩的な質問と思われますがお願いいたします。 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 「エクセル 数 順」「エクセル 複製」 左側に縦1列で上から順に1から数字をうった表を作りたいのですが 必要な数だけ1から順に数字を入力する方法を教えてください。 行数が足りなくなった際の複製方法もお願いします。 検索をかけてみましたが何をキーワードにすれば良いかも分からない状態です。 よろしくお願い致します。
94 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:26:00 ] 集計にVBAを使うのはバカだということで意見が一致しています
95 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:27:50 ] >>93 2003なら編集−フィル−連続データの作成 さがせば2007にも同じような機能はあるだろう
96 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:50:15 ] >>93 "1"を入力したセルの右下でマウスカーソルが十字キーみたくなったら その状態 で右クリックを押しつつ必要な数のセルを選択。 右クリックから指を離すと右下に四角っぽい図形(オートフィルオプション) がでてきますのでそこの▼をクリックし”連続データ”を選択する。
97 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:56:15 ] まあ A1+1を下にコピーすればいいんだけどね
98 名前:96 mailto:sage [2009/06/12(金) 22:57:48 ] >>95 会社:2007、俺:xpなんだけど2007って扱いづらいっす。 >>95 指摘の編集−フィルって便利なの、もしかしたら無いんじゃないかとおもう。 一応前スレにも載ってた方法をコピペ&加筆させてもらいました。
99 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 22:59:09 ] 10 2 5 8 9 4 3 など乱数が並んでる列に対し 5以上の数字の偏差(stdev)など使ってやりたいのですが 何か良い関数があれば教えて下さい。 実は数字じゃなくて時間でやりたいので応用が利くのがいいです。
100 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 23:04:41 ] >>99 C1に数値を入力 b1=a1>$c$1 下にオートフィルで偏差出すとか ちなみに計算上TRUEは1、FALSEは0でしょ利される
101 名前:96 mailto:sage [2009/06/12(金) 23:14:18 ] ちょっと訂正 ×:右クリック→○:左クリック
102 名前:93 mailto:sage [2009/06/12(金) 23:19:21 ] 出来ました!皆さんどうもありがとうございました!!
103 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/12(金) 23:48:55 ] >>92 回答ありがとうございます!試してみます。
104 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 00:25:56 ] >89 月毎の集計ならこういうオーソドックスなのはどうでしょうか? 四半期の小計は計算式にまかせているのと、FSシートのクリアは入れてません。 Option Explicit Dim Sh_I As Excel.Worksheet, Sh_O As Excel.Worksheet Dim Retu As Variant, Tate_I As Long, Tate_O As Long, i As Integer Dim Syokei(12) As Long, W_DATA As String Sub 集計() Call Init_proc Do While (W_DATA <> "") Tate_I = Tate_I + 1 If W_DATA = Sh_I.Cells(Tate_I, 1).Value Then For i = 1 To 12 Syokei(i) = Syokei(i) + Sh_I.Cells(Tate_I, Retu(i - 1)).Value Next i Else Sh_O.Cells(Tate_O, 1).Value = W_DATA For i = 1 To 12 Sh_O.Cells(Tate_O, i + 6).Value = Syokei(i) Syokei(i) = Sh_I.Cells(Tate_I, Retu(i - 1)).Value Next i W_DATA = Sh_I.Cells(Tate_I, 1).Value Tate_O = Tate_O + 1 End If Loop Set Sh_I = Nothing Set Sh_O = Nothing End Sub 続く
105 名前:104 mailto:sage [2009/06/13(土) 00:29:52 ] 続き Private Sub Init_proc() Set Sh_I = Worksheets("DATA") Set Sh_O = Worksheets("FS") Retu = Array(3, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17) Tate_I = 2 Tate_O = 2 W_DATA = Sh_I.Cells(Tate_I, 1).Value For i = 1 To 12 Syokei(i) = Sh_I.Cells(Tate_I, Retu(i - 1)).Value Next i End Sub 以上 当方、COBOLが長かったのと、UNION とかRESIZEとか初めて見たので、↑こういうやり方しかできません。 Retu = Array(3, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17)の行は、 DATAシートとFSシートの月の列の対応のためのもので、FSシートの方は+6するだけなので配列にしてません。 参考まで。
106 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 01:31:03 ] #VALUE! って参照不可能なんでしょうか? 例えば、 A B 1 マスクメロン 1000 2 夕張メロン #VALUE! 3 XXX とあって、セルXXXに=IF(B2="#VALUE!",B1,B2)みたいな#VALUE!を転用する 感じの式って打ち込めないんでしょうか?宜しくお願い致します。
107 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 01:32:38 ] >>106 =IF(ISERROR(B2),B1,B2)
108 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 01:48:52 ] >>107 ^ー^)ノシ Thanks so much !!
109 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 03:28:30 ] >>89 集計方法が変わるたびにプログラミングか。ご苦労なことだ。 そんな簡単なことできたって誰もほめてくれないぞ。 集計なんかできて当たり前で、集計結果をもとにどんな意思決定をするかが大切なんだ。
110 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 05:12:35 ] >>89 DATAシートとFSシートでは構成が違うのだから、Cellsの引数を変える必要がある。 具体的には、 >Set Rng1(k) = .Cells(i, k * 3 + 7) ↓ Set Rng1(k) = .Cells(i, k * 4 + 3) さらにその下のOffsetを使っている部分は全然ダメ >Set Rng1(k) = Union(Rng1(k), .Cells(i, 3).Offset(0, k * 3 + 7)) ↓ Rng1(k) = Union(Rng1(k), .Cells(i, k * 4 + 3)) もしくは Rng1(k) = Union(Rng1(k), .Cells(i, 3).Offset(0, k * 4)) Rng2とRng3は、上の3という数字をを4と5にそれぞれ変えればいい。 これでうまくいくはず。 いろいろつっこみどころ満載だが、とりあえず配列とOffsetについてはググるなりしておいたほうがいい。
111 名前:110 mailto:sage [2009/06/13(土) 05:15:03 ] Setが抜けてた・・・
112 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 08:12:56 ] >>89 >>94 がピボットテーブル使えと言ってるぞw Excel2000なんでアイテム数が足りるかどうか分らんが。
113 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 08:15:07 ] >>109 もピボット使えと言ってたか。
114 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 08:24:27 ] ついでにピボットテーブルのヒントだが、「複数のワークシート範囲」と「グループ化」で出来る。 4月〜6月を選択してグループ化、7月〜9月を選択してグループ化、以下同様。 4月を左端にもってくるには並び替えのユーザー設定リストを作ればいい。
115 名前:110 mailto:sage [2009/06/13(土) 09:52:30 ] >>89 は前スレでピボットは無しという条件を付けている 何故かはわからないがな・・・
116 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 09:58:20 ] >>115 何故かは簡単だ。 頭悪いんだよ。
117 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 12:37:19 ] >>116 ピボットに頭はいらないじゃん。 頭の悪い人ほどピボットを覚える必要がある。
118 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 12:40:12 ] >>117 ピボットぐらいはまず全員が使えるようになるべき 知名度が異常に低いの何とかして欲しい
119 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:15:20 ] Excelは何でもありだから逆にややこしくなる。 ピボットテーブル専用ソフトみたいなのがあるといいんだけどな。 並べ替えとフィルタとVLOOKUPあたりも使えた方がいいか。
120 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:19:08 ] 過去そういうソフトはいっぱいあったんじゃないかな で、これがしたい、あれがしたいとなって、マクロが実装されて(マイツールとか) マクロ書くのがめんどくさい!ってなって今の形になった、のかも
121 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:28:27 ] >>117 難しいこと知っていたって役に立たないなら無意味。
122 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:29:45 ] vba便利だよ マクロの記憶とif、forだけ覚えてればかなりの場面に対応できる
123 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:31:30 ] >>118 全員出来なくても、自分が作ってあとはマクロを登録したボタン押すだけにしといてもいいじゃん。 登録するマクロは範囲変更と更新だけで使えるな。 自分が操作するにはかまわないけどとか言い訳する奴結構いるが、何でVBAを併用しないのかと いつも思う。
124 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:31:42 ] >>122 じゃあ売上の多い順に並べ替えるプログラムを作ってください。
125 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:33:40 ] ピボットテーブルの認知度が低いのは名前のせいだよな クロス集計ウィザードみたいな名前にしとけばもうちょっと普通に使われてた。
126 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:36:24 ] >>125 同感。 SUM関数よりも先に覚えるべき機能だと思う。
127 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:38:31 ] >>121 ピボットなんて難しくないよ。 馬鹿でも使えるように作られた機能だからどんどん使うべき。
128 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:39:43 ] OOoじゃピボットテーブルはなんて名前だったっけ?
129 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:41:12 ] >>127 >>121 だけどピボットが難しいとは言ってないよ。 どんどん使うべきだよね。 何でもピボットでできてしまうのにVBAはいったい何に使うの? コンパイラでも作るの?
130 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:45:08 ] ピボットテーブル便利なんだけどさ、 複数人の人が行うルーチンワークに使うには 微妙に難しい面があるんだよな。 データ行を追加する場合にちょっと工夫が必要だとか 書式設定がらみとか
131 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:47:28 ] >>128 Calcならデータパイロット >>129 だからピボットを覚える気がない人にボタンを押してもらうときVBA使えばいいんだよ。 どんな馬鹿でもボタンは押せる。 ボタン押すのも嫌で関数でやるやつはウルトラヴァカ。
132 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:50:59 ] >>123 そういう意味じゃなくてエクセル使ってる人の中でもピボットの知名度は低いってことだよ マクロはVBA大好きっ子が自慢半分に使うから(昔の俺もそうでしたけど)有名になってる気がする ただピボット使わなくても関数で集計できるのでそうする人もいる 最悪集計を手作業でやる人もいるしね >>124 イヤだよ麺どくさい 並べ替え使うよ >>129 ファイルの整形とか、プリンタの変更とか、数式の結果を値にして貼り付けるとか あと「いくつあるか分からない」事態に対しても非常に強い
133 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:52:01 ] いいこと考えた。 「万能クロス集計」っていう名前でExcelのアドインを売れば儲かるんじゃね? 中ではピボットテーブルを起動してるだけ。
134 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:53:04 ] >>131 何でウルトラヴァカ? 俺様はSUMPRODUCTでサクッと出来ちゃうんでピボットテーブルなんてイラン。
135 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:56:17 ] >>134 SUMPRODUCTとかSUMIFとかは分類を列挙しないとだめでしょ。 新しい分類が増減する度に集計表をメンテしないといかん。
136 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 13:59:29 ] >>135 それも配列数式で出来るからピボットテーブルはイラン。
137 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 14:00:54 ] >>132 VBA使って自慢ってのも低レベル。 並べ替えにはVBA使わないってのはおもしろいな。
138 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 14:05:58 ] >>134 >>136 できるならいいよ。 君はそれ使ってなさい。
139 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 14:07:32 ] >>138 ネタだろ? 本気で書いてたら盲愚回答者なみのアフォだなw
140 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 14:31:11 ] >>137 だから昔のことだって 黒歴史なんだって あまりそこには触らないでほしいんだぜ
141 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 19:19:48 ] データ数多すぎてピボットの限界超えてるのかと思ったけど >>89 の表見るとそんなでもなさそうだね。
142 名前:名無しさん@そうだ選挙にいこう [2009/06/13(土) 19:19:52 ] 【1 OSの種類 .】 Windowsxp 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 最近エクセルの勉強を始めました。 日付の表示形式で 表示形式がdddだと表示結果はFri aaaだと表示結果は金 となるようですが、 何故aやdが使われてるんでしょうか。 このa,dにはどういう意味があるんでしょうか。
143 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 20:18:54 ] 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 できれば関数で 【5 検索キーワード 】 板取り 関数 Excelの関数で板取計算ができないかと考えています。 ROUNDDOWN関数を使用して自分なりに作ってみましたが 場合によっては以下の様な取り方も必要になってきます。 up2.viploader.net/pic2/src/viploaderf161057.gif やりたいことは 1 母材の縦横サイズを入力 2 部材の縦横サイズを入力 3 最適取り数を表示 です。宜しくお願いします。
144 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 20:35:30 ] >>143 一般的にこの手の問題は関数ではありません。 (x1, x2, x3, ... , xn)を決めたら自動的にf(x1, x2, x3, ... , xn)が求まるというわけではなく、 f(x1, x2, x3, ... , xn)が最大になるような(x1, x2, x3, ... , xn)を探す問題です。
145 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 20:50:58 ] >>142 YY : Year MM : Month DD : Day Aは知らん
146 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 20:54:26 ] >>142 www.excel.studio-kazu.jp/lib/e3g/e3g.html
147 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 21:15:34 ] >>144 ありがとうございます。 VBAは使えませんが、これから勉強しようと思います。 頭の中ではイメージは出来上がっているのですが、なかなか形にできなくて… 4パターンの取数計算をし、そこから1番大きい数を取り出す様なイメージなのですが合ってますかね? 具体的に例もあれば教えていただきたく
148 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 21:24:06 ] >>147 そうです。 考えられる全ての組合せを全て網羅して結果が最大となるものを選んでください。
149 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 22:37:11 ] ttp://www.vector.co.jp/soft/winnt/business/se431647.html でも使ったほうがいいかも フリーソフトってほとんどないね
150 名前:89 mailto:sage [2009/06/13(土) 23:22:52 ] >>104 ありがとうございます。 Syokei(i) = Sh_I.Cells(Tate_I, Retu(i - 1)).Value で、「実行時エラー13、型が一致しません」と エラーが出てしまいました。 Private Sub Init_proc() は、標準モジュールに書きましたが、書く場所が違ってたら 教えてください。 >>109 もちろん、集計は目的ではなく手段で使っています。 幼稚なマクロながら動いてたので、効率の良い書き方をご教示頂いたしだいです。 >>110-111 ありがとうございます。完成しました。 配列は初めてなので、これからもっと勉強します。 >>115 ホストコンピュータから出されたCSVを集計して、売れ筋商品とか今後の予測とか その他もろもろを解析した結果を報告書を印刷するまでをマクロ一括でやっているためです。 単に集計するだけなら、ピボットデーブルでいいのは分っています。 >>141 毎月データ量が3万〜4万件くらいあるようなので、ピボットテーブルを作るより マクロで一括処理の方を選んだしだいです。ピボットの限界って、どれくらいですか?
151 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 23:34:32 ] 板取りの汎用のソフトがあまりないのは ・第一に数学的にかなり難易度の高い問題であること ・工業的に大量生産する場合は最初に1回決めれば終わり ・材料と部品が現実的なサイズなら人間の直感のがよっぽど早くて確実 ・素材の特性や機械の都合で部品の向きが固定されることがある。この場合は単純な割り算 ・切り抜くたびに素材に歪みが出る場合は部品の間隔を空ける必要がある ・切断時の工具の通り道によるロスも千差万別
152 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 23:37:20 ] >>150 >ホストコンピュータから出されたCSVを集計して、売れ筋商品とか今後の予測とか >その他もろもろを解析した結果を報告書を印刷するまでをマクロ一括でやっているためです。 >単に集計するだけなら、ピボットデーブルでいいのは分っています。 売れ筋商品はどうやってみつけているの? 集計して売上の大きいものが売れ筋なんじゃないの? つまり集計するだけなんじゃないの?
153 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 23:37:56 ] >>150 流れを見ずにレスするけど Syokei(i) = Sh_I.Cells(Tate_I, Retu(i - 1)).Value で、「実行時エラー13、型が一致しません」 Syokei()はLong型だから、右辺で読み込んでいるセルの内容が数値じゃないってことだな。
154 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 23:39:07 ] >>152 自分で引用した部分をよく嫁 報告書の印刷までやってると書いてあるだろ
155 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 23:41:10 ] >>150 今後の予測なんて本当にVBAでやってるの? 配列も知らなかったのに。
156 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/13(土) 23:42:11 ] >>154 印刷をVBAでやりたいということ?
157 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:02:04 ] 【1 OSの種類 .】 Windows2000 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 割り算 あまり VBAのfornextループを使い、データの整形をしようとしています ループカウンタiが3の倍数のときに3、3の倍数+1の時は1、3の倍数+2の時は2を返したいのですが、 どうすればいいでしょうか? for i = 1 to 100 if 「iは3の倍数か、+1か+2かどうか」 then 'ここの間に処理 next だと思うのですがどうやればいいでしょうか
158 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:02:41 ] >>150 Private Sub Init_proc()の、 Tate_I = 2をTate_I = 3にすればいい。 これは>>104 が間違えたというよりもお前の説明不足。 DATAシートのデータが3行目から始まっているなんて>>89 からはわからない。
159 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:03:01 ] ぜんぶホストコンピュータでやればいいじゃん
160 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:04:07 ] >>150 集計をマクロを使ってピボットテーブルを作成するのはダメ? 別シート作ってやればシートが汚くなることも無いけどな 俺は会社でそうやってるけど
161 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:10:14 ] >>157 ((i - 1) Mod 3) + 1 これ、たまに忘れる
162 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:19:57 ] >>157 If i Mod 3 = 0 Then '3 ElseIf i Mod 3 = 1 Then '1 Else '2 End If こっちのがいいかも Select Case i Mod 3 Case 0 '3 Case 1 '1 Case 2 '2 End Select
163 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:21:45 ] >>161 >>162 ありがとうご゛ざいます selectcaseいいですね。使ったこと無いので使って見ます
164 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:25:09 ] >>150 2003以前のピボットテーブルは フィールドあたりの重複しないアイテムは32500まで。 データ量がそんなあるなら「アイテムが多すぎます」みたいなエラーが出るだろうね。
165 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:31:08 ] ピボットはファイルがでかくなるし、多くの人は嫌がるよな。 VBA使えるならその方がいいと思うけど。
166 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 00:39:47 ] ファイルがでかくなると言っても大した量じゃないと思うけど。まぁ重くなるのは避けたいところだけど 作成した後にコピーして別シートにはりつけ、ピボット削除をマクロにさせれば問題ないんじゃないかな
167 名前:89 ◆2LLK9dXXUc mailto:偽者対策でトリップつけておきます (sage [2009/06/14(日) 00:50:10 ] >>153 とりあえず動いたので、104さんのマクロは あとで検証してみます。 >>160 ピボットテーブルをつくる手間を掛けるなら、マクロで一括と・・・ >>164 2000だと辛いですね。2003で作ったマクロが動かないこともありますし。 いずれにしても、今回のはピボットテーブルでは実現が困難のようなので マクロでやります。 みなさん、ありがとうございました。
168 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 01:08:55 ] Exel2000はもうすぐサポートが切れるんじゃなかったか?
169 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 01:24:47 ] >>168 まあこれ以上>>89 の心配しても仕方がない。 また新しいレポート作らないといけなくなった時に泣きついてくる。 きっと。
170 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 01:25:31 ] 【1 OSの種類 .】 WindowsXP/VISTA 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可(できればVBAなしのほうが助かりますが、この機に勉強する気もあります) 【5 検索キーワード 】 EXCEL 並び替え 合計 相談させてください。 EXCEL初心者なのですが、仕事で作らなければいけない情報があって困ってます。 たとえば A列 B列 人名 経費 山田 1200 鈴木 3000 佐藤 2400 鈴木 1000 佐藤 8000 というエクセルデータがあったとして 佐藤 10400 鈴木 4000 山田 1200 というように、数字を合計させて、かつ、多い順に並べて表示させたいのです。 どのような仕組みにすればできるでしょうか? 教えていただけると幸いです、宜しくお願いします。
171 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 01:40:56 ] >>170 話題沸騰のピボットテーブル。 リストのどこかを選択→データ→ピボットテーブルとピボットグラフレポート→ 範囲がちゃんと選択されてるか確認→次へ→レイアウト→人名を行にドラッグ→ 経費をデータにドラッグ→OK→完了 ピボットテーブルができるので計列のデータのどこか選択して降順で並び替え
172 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 01:46:20 ] 人名順に並び替えしてデータ(D)→集計(B)で集計させてから経費列を降順というのも。
173 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 02:21:32 ] 人数がそんなに多くなければsumif使って集計すれば? 課内の交通費清算表なんかはこうやってるな。 あと、多い順にするには最後にソートする。
174 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 04:02:20 ] そこは今このスレで話題のVBAでだな
175 名前:名無しさん@そうだ選挙にいこう mailto:sage [2009/06/14(日) 07:37:31 ] >>164 ,>>167 Excel2000は8000ちょっとだよ。 だから俺は2000使ってた頃、ピボットテーブルつかうのはお子ちゃまだと思ってた。 2002からぐっと増えたから2000からは絶対に乗り換えた方がいいね。 あとピボットテーブルは一度作っておけば、範囲の変更(名前定義使えば不要だけど)と更新と 場合によっては集計方法の変更くらいをマクロで操作すればいいから、VBAだけでやりたいってのは言い訳にしかすぎない。 今回は30000行にたいしてユニークなアイテム数がどのくらいあるか知らんが、せいぜい数百種類なら絶対ピボットテーブル 使った方がいいな。