1 :
名無しさん@そうだ選挙にいこう :
2009/07/04(土) 21:38:41 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総合相談所 83
http://pc11.2ch.net/test/read.cgi/bsoft/1244628763/
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━ ・1 現行スレ内で既出の質問が無いか、ページ内検索をしよう。(Ctrl+F) ・2 図やコードを書く場合、TABや連続する半角スペースは無視されるので注意 ・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。何レス使っても構いません。 ・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。 ・5 回答内容でわからない部分があっても、すぐに聞き返さずにヘルプやGoogleなどで検索しましょう。 ・6 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。 ここは技術的な質問のみで。 ・7 VBAはプログラム言語のVisualBasic(6以前)に近い処理が可能で Excelに関係ないことも出来ます。 Excelの操作に関係ない部分は、スレ違いなのでここで聞かずにVB言語やAPI、COMについて自分で勉強し、 どうしてもわからない部分はVBスレやAPIスレなどの該当スレで質問しましょう。 但し向こうはプログラマのスレなので、構文規則などの最低限の事は覚えてから質問しましょう。 ここみたいに丸投げはダメですよ。 ・8 うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。 例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。 その上で、どううまくいかないのかを具体的に書きましょう。 エラーが出るなら、何処でどういうエラーが出るのか、 想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。 ・9 マルチはダメ。一度マルチしたら、謝っても他のスレの質問を取り下げても回答は得られないと思ってください。 ・A テキストボックス(エディトボックス)、コンボボックス(ドロップダウンリスト)、リストボックス、コマンドボタン、 チェックボックス、オプションボタン(ラジオボタン)、スピンボタン、スクロールバー、等の質問をするときは、 ユーザーフォーム、コントロールオブジェクト、フォームオブジェクトのどれなのかを必ず書くこと。 ・B 書籍や解説サイトの紹介以来はスレ以外。ここは技術的な質問のみで。
★ルールを無視すると…
>>1-2 あたりのルールに従うか否かは自由だけど、従わないと以下のような不利益があるよ
★1.マルチをしてしまったら…
A.謝っても他での質問を取り下げても、以後その質問に対する回答は付かない物と思ってください。
それが嫌なら初めからマルチなんてしないように。
>>2 にマルチ禁止と書いてあり、
マルチの意味が分からなければ検索すれば出てくるので、「知らなかった」は通用しません。
★2.
>>1 ★4に従わず、必要な情報を出さないと…
A.自分の使用しているバージョンで使えない機能を答えられたり、VBA使えないとか使いたくないと書かないと
VBAでの解決OKで自分でコード書けるものと勝手に解釈されて、「VBAで出来るから自分でコード書いて」程度の
適当な回答を返されたりします。また、ここではVBAコード書けない人の丸投げ依頼を許可してますが
これはきちんとルールに従って質問、依頼した人のみの特権です。
★3.情報・条件を後出しすると…
A.後から出された情報は意図的に無視されたり、質問自体を放置されたりします。
>>1 ★4の必須情報はもちろんのこと、要望や条件、既に試したことなどは、
長文になってもいいので詳細かつ明確かつ具体的に書きましょう。
★VBAについて
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法) ▼環境・書式 ・ 列数を256列以上、行数を65'536行以上に増やす (Excel2007では16'384列、1'048'579行扱える) ・ Excel2003以前で条件付き書式を3つ以上設定する (文字色だけなら、入力規則でも3つ設定可能。それ以外はVBA) ・ 行の高さを0.25きざみ以下の単位で指定する ・ セル内の文字を○で囲む、一部のみ2段にする (オートシェイプ、オブジェクト) ・ オートフィルタで英字の大小文字を区別する (小文字 → 半角、大文字 → 全角、と使い分ける) ・ 祝日を判断する (作業セルに祝日を列挙、VBA) ・ 同一列内でセル(行)ごとに列幅を変える、同一行内でセル(列)ごとに列高を変える (セルの結合) ・ ヘッダー・フッターのページ番号の開始番号任意指定、ページ番号演算、同シート内で違ったものを指定など ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する ・ 罫線幅の自由指定 ・ 表示形式で「10/ 1」といった書式を指定し、日付が一桁の場合のみ日付の前にスペースを入れる (TEXT関数、VBA) ・ 書式設定の「折り返して全体を表示する」と「縮小して全体を表示する」を同時に使う (折り返しを有効にして、手動で文字サイズを調整) ▼操作 ・ ファイラーの右クリックメニューからの新規作成で、Excelで設定したシート数のブックを作る (任意のシート数のテンプレートを作成) ・ 複数シートを選択して入力規則やシートの保護を設定する (VBA) ・ オートコンプリート機能を、別列や離れたセルで動作させる (VBA) ・ 選択範囲から一部を除く、Ctrlを押しながらの複数選択で一部を取り消す (VBA) ・ 優先キーを3つ以上指定しての並べ替え (優先度の低い方から順に並べ替える) ・ 1セルを分割 (分割したいセル以外を結合)
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法) ▼数式・関数 ・ 表示形式以外の書式の取得設定、書式情報を条件とする数式 (ユーザー定義関数) ・ 関数式でセルの選択状態を取得する (VBA) ・ セルの値でパスを補完して、開いてないブックのセルを参照する (VBA) ・ 入力したセルに結果を返す (VBA) ・ 範囲を引数にしての文字列連結 (ユーザー定義関数) ・ 値の書き換え、値の保持 (VBA) ・ 複数の結果を抽出、不定な数の結果を返す (VBA、結果の最大数が解っていれば最大数以上の式を論理式で組む) ・ 空白のセルの部分を上詰め、左詰めなどで表示する (作業セルを使って別セルに詰めて表示なら可能、それ以外はVBA) ・ VLOOKUP,HLOOKUP,MATCH等の関数で、検索語を全半角両方にマッチさせる (ユーザー定義関数) ▼VBA ・ ExecuteExcel4Macroの参照で空セルと0値を区別する ・ セルの値や変数値で直接変数名を指定する (配列、コレクション) ・ VBのコントロール配列と同じような操作をしたい (イベント以外ならコントロール名を「同名+連番」にしてControls(名前 & インデックス)で処理、イベントはクラスでWithEvents) ▼ユーザーフォーム ・ フォーム上から変更したプロパティ値の保持 (シートや外部ファイルに書き出して、次回読み込む) ▼グラフ ・ 棒グラフでひとつだけ突出したデータがあった場合に波線を入れて位置を合わせる (オートシェイプなどで見た目だけそうなるように弄る、別アプリでグラフを作り、オブジェクトとして挿入) ┌┐ 〜〜 ||
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。 間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。 Excel2007についても未確認な項目が多いので変更点が有ればご指摘下さい。 また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。 ここに書かれてないからといって必ず出来るはずだなんて思わないように。 >▼環境・書式 > ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する 補足 2007ではページレイアウトビューの表示時に限り、幅・高さともcm単位で表示され、 指定も同じくcm単位でできる。 ただし大元がインチ系なのでなかなかピタリの値は出ない。1cm→0.98cmのように 近い値に勝手に丸められる。
7 :
名無しさん@そうだ選挙にいこう :2009/07/04(土) 22:12:58
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【5 検索キーワード 】 抽出 初めまして、質問なのですが、 A B C D 1 20 25 26 27 2 26 24 26 29 3 21 25 30 24 4 34 32 21 27 5 24 18 40 30 のようなデータがあり、 これの平均26.45に近い5個のデータに○をつけるには どうしたらいいでしょうか? 現在は平均は出せますが、○付けは図形描画コピペで(´・ω・) ス このタイプのデータ整理があと300件ほどあり、来週の月曜日が 怖くてしょうがありません。 どうか、よろしくお願いします。
>>7 ○ってどこに付けるの?数字の右?左?それとも数字を○で囲むの?
丸で囲むんなら図形を使わないと無理だし、それを自動でやるにはVBA使わないと無理。
>>9 おっしゃるとおり、数字を○で囲みたいです。VBAを使えばできるのですか?
>これの平均26.45 >○付けは図形描画コピペで(´・ω・) ス 意味がワカランので、俺はパス
>>7 平均って何の平均?
また同じ数字が六個あった場合はどうするの?
>>13 平均は単純にデータの平均です。上記の場合だと合計529/20(データの個数)で26.45になります。
同じ数値が6個あった場合は、6個とも数字を○で囲みたいです。
あ、全体の平均か失礼 近い数字って大小は関係なく絶対値が近いものでよいのかな?
>>7 B D F H
1 20 25 26 27
2 26 24 26 29
3 21 25 30 24
4 34 32 21 27
としてACEGに文字の○を入れるのはダメ?こっちならすぐにできるんだけどなぁ
>>17 全然かまわないです。よろしくお願いします。
>7 >このタイプのデータ整理があと300件ほどあり データが埋まっているセルの個数が300個ほど、ということですか? それとも、例にあがっているような5行×4列が1組として300組? 自分が行う場合の処理の手順としては、 1 別シートに平均との差(絶対値)をセル位置とともに出力(A列:差、B列:セル位置) (平均値はどこかのセルに求められているものと仮定) 2 1のデータを差で降順ソートして上位5件のセル位置を得る (同値5位が複数あったときは>14にあるように5件以上の場合もありうる) 3 図形描画で元シートの該当セルに○を描画 こんな感じでしょうか。自分はVBAで図形描画したことないので、セルに色付けして 手動で○をコピペするかな。
>>7 結局VBAでいいのかな。よかったら作る。無理なら俺には無理だ
>>19 5行4列、もしくは5行5列があと300組ほどです。
同じことの繰り返しで、ちょっと週末涙目でした。
>>20 VBAでいいです、というか是非ともお願いします。
条件付き書式でセル色を変えるならVBAなしでも行けそう。
23 :
19 :2009/07/04(土) 22:48:42
>7,19 あと300組・・・了解 データが収められているセル範囲は5行5列ということは、A1:E5でのべ300シート ということでいいのかな? それとも、1シートの中に5行5列の組がいくつもあるとか? シート数、ブック数、配置はシート間で同じなのかどうかを知らせてください。 配置状況がわかれば>17さんのやり方(列挿入して文字の"○"を書き込む)で作れると思うけど。 配置がバラバラだとプログラムの方が大変なので、きちんとしてもらうのがいいです。 あと、VBAはまったくの初心者ということですか?このスレにVBAマクロが書いてあるとして、 それを実際にエクセルのシートやモジュールに書き込んで実行させるところまでできますか?
>>23 1シート中にデータセル範囲は5行5列です。
データの配置はブック、シート間で同じです。
あと、VBAのほうは今モジュール挿入の方法をヘルプで調べている最中ですw
多少時間が掛かっても、手入力よりは早いかと思いますので、明日中にでも
勉強するよていです。
必ず五行五列ならワークシートで足りるよ っていうか300っていうのはそういう作業がそれだけあるって意味か?
>>25 必ず5行5列です。
>>26 300シート分の作業の意味です。あと、記録した生データも切り貼りしないといけないので・・・
>>27 切り貼りも巨大な表からの単純なコピペならVBAで一発でできるかもよ。
300枚のシートは1つのブックの中にあるの?
30 :
19 :2009/07/04(土) 23:34:51
プログラムでの方法は>29さんに先を越されたみたいなので、>26さんのワークシートだけで 「セルの色付け」をする方法を考えてみた。 元データがA1:E5で決まっているとの前提です。 1 平均を求める計算式 =AVERAGE(A1:E5) を E6セル に書き込む。 2 F1:J5までの範囲に平均との差を求める計算式を書き込む。 例:F1セルには =ABS(A1-$E$6) として、他のセルにはフィルコピーで。 3 K1:O5セルには 順位を求める計算式を書き込む。 例:K1セルには =RANK(F1,$F$1:$J$5,1) として、他のセルにはフィルコピーで。 4 A1:E5セルには 条件付書式 を設定する。 例:A1セルには =K1<6 として、書式にはセルの色づけ(薄目がいいです)。 これで、○をつけるべきセルに色付けできます。(当方はExcel2003で確認済み) いずれも絶対参照の$の有無には注意。 これを残りの約300シートに設定するのは大変とは思いますが、F1:O5セルの範囲は 範囲選択してコピーしたら複数シートを選択して1度の貼り付けでいいし、(E6も忘れずに) 条件付書式もA1:E5セルを選択して書式コピー後、複数シートを選択して1度A1セルをクリックするだけ。
>>28 切り貼りはレシートみたいな記録用紙の物理的な奴なので、PC上では無理です(泣)
>>29 おお、すごい!助かりました。ありがとうございます。
>>19 さんに先越されたw
自分は、多分要素としてはそれでいいような気がするな、○はいらんのでは。
色つけて○置くだけでも随分手間は省けると思うけど、
まあマクロ動かせるならそれが一番いいよなw
>>7 が今後、凄い奴だと思われてもっと面倒な作業を押し付けられないことを祈るw
33 :
7 :2009/07/04(土) 23:43:15
みなさんありがとうございます。本当に助かります。 あと、後学のためにもVBAで指定の箇所に○←図形オブジェクトを描く方法がありましたら、 教えていただきたいです。
34 :
名無しさん@そうだ選挙にいこう :2009/07/04(土) 23:45:32
Sub 平均探し() Dim h, i, j, k, l, m, n For i = 1 To Worksheets.Count Sheets(i).Activate For j = 1 To 5 For k = 1 To 5 h = h + Sheets(i).Cells(j, k) Next Next h = h / 25 m = 0 n = 1 For j = 1 To 5 l = 0 For k = 1 To 5 l = l + Sheets(i).Cells(k, j) Next If m = 0 Then m = l / 5 Else If Abs(h - m) > Abs(h - (l / 5)) Then n = j m = l / 5 End If End If Next Sheets(i).Shapes.AddShape(msoShapeOval, (n - 1) * 55 + 10, 1, 40, 67).Select Selection.ShapeRange.Fill.Visible = msoFalse Next End Sub
35 :
19 :2009/07/04(土) 23:46:02
ついでに老婆心ながら マクロ利用にしろ計算式+条件付書式の方法にしろ、元データは万一こわれてもいいように 必ずバックアップをとっておいてくださいね。(経験者は語る)
37 :
34 :2009/07/04(土) 23:58:39
すまん 忘れてくれ 縦5個の平均が全体の平均に近いとこに○すんのかとおもた
いよいよ明日
セルに丸を書くのではなく、オートシェーブの中ににテキストを 入れるとかしないと位置があわないよ。
40 :
7 :2009/07/05(日) 00:02:19
>>34 複数のシートのB列に○が書けました。内容がほとんど理解出来ないのが悲しいです。
>>35 ありがとうございます。気をつけたいと思います。
>>36 実はだいぶ昔に○に挑戦したことがあるのですが、同じセルに何個も○の上書きが精一杯で、
俺にマクロは向いていないとあきらめたことがあり、VBA恐怖症になっています。
>>31 ああ、ごめん
Q1に=J1を入れて、O〜Rをそれぞれ25行目までオートフィルしておくれ
なんか親切な人に泣けたわ ∧∧ ( =゚-゚)v キラッ☆
>>33 セルの幅、高さ、文字のサイズが初期状態の時、指定したセルの2桁の数字を○で囲む。
Sub aaa()
Set r = Range("A1")
h = r.Height
ActiveSheet.Shapes.AddShape(msoShapeOval, r.Left + r.Width - h - 2, r.Top + 1, h + 1, h + 1).Select
Selection.ShapeRange.Fill.Visible = msoFalse
End Sub
45 :
7 :2009/07/05(日) 01:46:14
>>44 激しく感謝いたします。なんとか、明日中に規定の書式に埋め込めるようにしたいです。
○消去は自動記録で、なんとかマクロ登録できショートカットキーで実行できてなんか嬉しいです。
そんで、月曜には「このマクロはワシが育てた!」と言うつもりです(というのは嘘ですw)
皆様夜遅くまで、親切に教えていただき、本当にありがとうございました。
>>45 丸の位置ずらすのか?
g(i) = Cells(i, i).RowHeight
r(i) = Cells(i, i).ColumnWidth * 7
ActiveSheet.Shapes.AddShape(msoShapeOval, retu + 5, gyo, 25, 12).Select
この三行で位置が変わるからテキトーにいじるといいと思うよ
.AddShapeの内容はぐぐるとすぐに出てくる
47 :
名無しさん@そうだ選挙にいこう :2009/07/05(日) 02:50:41
くだらない質問ですが教えてください
フォームのコンボボックスに値を初期時に入れておいて、選択させるようにしたいのですが
ttp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform05.html 上記のサイトを参考にしていますが何をどうやっても値がセットされません
教えてください
やり方としては
1、Excel画面上でデザインモードでコンボボックスをセットする
2、オブジェクト名はCombobox1
3、VBAを開いてthisworksheetに下記を入力する。もしくはconboboxがあるシート
Private Sub UserForm_Initialize()
With ComboBox2
.AddItem "りんご"
.AddItem "みかん"
End With
End Sub
4、一度閉じて再度開く
そうすると設定値がコンボボックスの中に出てくると思うのですが
何か間違っているところとかありますでしょうか?
>>47 いつのまにか
コンボボックス2になってる
49 :
名無しさん@そうだ選挙にいこう :2009/07/05(日) 03:11:20
>>48 すいませんコピペが間違っていました
いやcomboboxはComboBox1です
いろいろ試して同じシートに二つ作ったりしたので2のままになっていました
50 :
名無しさん@そうだ選挙にいこう :2009/07/05(日) 04:29:35
Excelでデータ解析するならいったんAccessに入れた方がいいの? みんなどうしてるの? 今はPerlでやってるんだけどいちいちcsvから読み込んでやってます
>>47 まず第一に違うのが、参考にしているサイトでは、ユーザーフォームでコンボボックスを使っているという事。
>>47 はワークシートで使っているようなので、参考サイトのコードそのままではうまくいかない。
最終的にやりたい事がよくわからないが、とりあえずこのコードをコンボボックスのあるシートモジュールに
貼り付ければ希望の動作はする。
Private Sub Worksheet_Activate()
With Me.Combobox1
.Clear
.AddItem "りんご"
.AddItem "みかん"
.ListIndex = 0
End With
End Sub
>>50 >Excelでデータ解析するならいったんAccessに入れた方がいいの?
意味がわからないな。
>>7 そもそもデータは縦に並べることだな。
別々のシートにわけるのもご法度。
ついでにいうと、数字をオートシェイプの○で囲んでマーキングというのもセンスの悪い発想だ。
54 :
名無しさん@そうだ選挙にいこう :2009/07/05(日) 10:18:56
EXCEL2007です。 あるセルに、全角で「2009」と入力した後で、 別のセルに、全角で「2」を入力すると、 その後に反転表示で「009」が表示されます。 ここで「2」だけを入力したい時は、 どういう操作をすれば良いのでしょうか? よろしくお願いします。
反転表示は Delete で消す。 私は、うっとおしいので オートコンプリートは切ってます。
>>53 そんなことはみんな分かってる上で回答してるわけで・・
その無駄なレスがナンセンス
ナンセンスってナウイな。
>そんなことはみんな分かってる上で回答してるわけで・・ さっきカキコしようとしたが、やめたのと全く同じ文章で吹いたww
>63 カレンダーを縦一列にしろ、 予定に○印付けるな、ってこと?
61 :
名無しさん@そうだ選挙にいこう :2009/07/05(日) 11:48:47
【1 OSの種類 .】 Windowsvista 【2 Excelのバージョン 】 Excel2007 A B C 1 12 3 15 このようなデータがあったとします。C1は、A1+B1=の数式で出してあります。(12+3=15) そして、C1のデータをコピーしたいんですが、コピーすると「数式」がコピーされてしまいます。 「数式」ではなく、「値」(この場合なら15)をコピーしたいんですが、そのような方法はありますか? すみません、教えてください。
>>61 コピーは普通にコピー。
貼り付けるときに形式を選択して貼り付けで値を選択して貼り付ければok.
>>50 質問が大雑把すぎ
そんなのデータの種類とか量とか解析の手順によって最適な方法なんて変わってくる
>>53 Excelの中だけで完結してるんならその通りだけど、
元のデータは何かの装置から紙に出力された物だって書いてあるじゃん。
だったらデータの並べ方もそれに合わせないと、よけいややこしくなるだろ。
入力ミスとか発見しにくくなるし。
65 :
61 :2009/07/05(日) 12:15:53
>>62 たいへんありがとうございます!できました!
>>56 >そんなことはみんな分かってる上で
むしろそんなことこそ指摘してやることこそが大事なんだ。
ここの回答者はバカ正直にVBAで平均求めて、オートシェイプで○つけて、それを300シート分繰り返して…とやってしまう。
そんなの何のためにExcel使ってんだよ。
67 :
44 :2009/07/05(日) 14:43:53
>>66 実務経験ある奴なら分かると思うけど、
こういう作業はアホな上司から押し付けられてるんだろうな、ってのが大体想像できるだろうよ
で、まず上司に「見た目は変わりますが内容は同じ
>>29 ではダメですか」と相談して
>>29 を使うか、
どうしてもダメというアホな上司なら>44を使えばいい
で、何か問題あったか?
68 :
54 :2009/07/05(日) 14:49:08
>>59 お前の場合知らんが、時間は一次元なので、カレンダーのデータも一次元で管理するのが自然な発想だ。
曜日別に並べるのは表示プログラムの仕事。
日本中いたるところで今日もセルにオートシェイプの○を重ねるお仕事を頑張ってるやつがいる。 そしてその作業をVBAで自動化できた!ものすごい効率化だバンザーイと大喜び。 こんなことでは日本に未来はない。
>>69 データの作成から管理できるんならそうだろうね
データ整理ってのは既存のデータ(自分の思い通りの形とは限らない)を整理することも多いけどね
元から表形式で与えられてるデータなんて山ほどある
>>70 そんなの日本に限った話じゃないから大丈夫
海外にもExcelのQ&A掲示板とかいっぱいあるけど、ここと大差ないレベルのとこが大半だよ
>>70 それを
>>7 に言っても仕方ないだろ?
>>7 がどうにかできる問題ではない。
もちろん俺らがここで「そんなデータの作り方はなってない」などと言ったところで仕方がない。
自分もアホな上司及びアホなデータと毎日格闘しているが、
効率が悪いのでこうしたい、と提案して受け入れられるものとそうでないものがある。
元々のデータの入力方法が悪いと思っても、それを入力しなおす手間よりは無理やりどうにかするほうがいいことも多い。
今回の件にしても、オートシェイプの○が必要な理由はわからないが、
自分なら条件付書式でセルに色を塗るということで代用できないかとは提案してみる。
元データが縦一列に並んでいたほうがいいかどうかはわからない。
1枚分が一目で見れることが大事なのかも知れないし、
カレンダーのように何か意味のある行列なのかも知れないからな。
頭ごなしに縦一列でないことを否定はできないな。
ExcelのデータはAccessのデータとは違う。
並び方にも意味があることが多い。
>>70 君がニートさんならちょっと黙ってて欲しい
IT系列なら当然問題外な問題だろうね、おめでとう
大企業でも自動化するシステムがあるだろう。なければ上に報告すればいい。俺が無料で二時間で組んだシステムだ。きっと君の手柄になる
まぁ、こういうのは中小・零細企業で問題になってる。それも顕在化されないため、解決しにくい問題にね
総務のババァの残業時間はこういう下らない事で費やされてるのさ
>69 だから表示の問題なんだよ。 それを元データをリニアにしろ、○で表示はセンス悪いと いうから話がややこしくなる。 エクセル様に処理していただくんだから おまいら一列に並べ、みたいな、
>>75 何が言いたいのかさっぱりわからん。
>>69 に賛成なのか反対なのかさえわからん。
>>73 >元データが縦一列に並んでいたほうがいいかどうかはわからない。
>1枚分が一目で見れることが大事なのかも知れないし、
>カレンダーのように何か意味のある行列なのかも知れないからな。
>頭ごなしに縦一列でないことを否定はできないな。
表形式のデータは多次元データを縮約して二次元に投影しただけのいわば影に過ぎない。
光の当て方次第で影の形は変わるのだよ。
久しぶりにgdgdですね(`・ω・´)
>>74 いつまでも中小零細レベルの回答するのはやめようってことだよ。
VBAで平均もとめて、マーキングのためにオートシェイプ並べるコード書いて、それを300シート分繰り返す。
そんな無駄なスキル身につける必要ない。
中小零細なら素直に上司にできませんと言えばいいんだ。
>>79 だからここで質問してるんだろう?
>>7 は分かる奴だ
本当にダメな奴は残業してせっせと楕円かいてるだろう
バイトならどっちでもいいと思うが、正社員ならちょっと助言
ただこれは上司の手柄にさせるべきだね
そして同期にそっと「今まで一日か゚仮の仕事を数分で出来るようになったよ」と言えば
上司の評価は大幅に下がり、自分がその立場に立てる
まぁ俺がやったことだけどな。出世したいならどうぞ。したくないならVBA使った後、一日中遊んでればいい
>>80 >だからここで質問してるんだろう?
中小零細レベルの回答をやめろと言っている。
質問が零細レベルなのは仕方が無い。
せめて回答だけでもまともなのをお願いしたい。
ひどいなこりゃw
>>81 え?だから先に
>>29 で割と普通の回答してるじゃないか
RANK関数使ってどうにでも応用できるようにしてるのに
これではダメなのか?w
俺はどっちかつーと
>>30 の案に賛成だな。
ただRANKの領域は作らないで下くらいでもいいと思う。
1 平均を求める計算式 =AVERAGE(A1:E5) を E6セル に書き込む。
2 F1:J5までの範囲に平均との差を求める計算式を書き込む。
例:F1セルには =ABS(A1-$E$6) として、他のセルにはフィルコピーで。
3 K1には F1:J5の5番目に小さい値を求める式=SMALL(F1:J5,5)を書き込む。
4 A1:E5セルには 条件付書式 を設定する。
例:A1セルには =F1<$K$1として、書式にはセルの色づけ(薄目がいいです)。
>>29 は見てないが多分同じような考え方?
自分の力で手に負えそうにない仕事なら最初から引き受けない方がいいよ
>>7 ていうか、引き受けるのは別に勝手だが、Excelスレなんてあてにしない方がいいぞ。
>84 SMALL関数って手がありましたね。 ところで、=F1<$K$1 には「=」が必要では? ちょうど5番目に小さい値と同じ場合に色が付かないような。
>>84 2までは同じで3にRANKだな
後はセルの色付けじゃなくて左にセルを挿入して"○"を付けてる
見た方が早い
>>85 単純作業だがだるい仕事なんだろ。まぁバイトだろう
インドカレーの店の前に七夕の短冊があって、ふと見たら「いんどにかえりたい」って書いてあって吹いた
89 :
84 :2009/07/05(日) 21:01:30
>>86 すまん、たしかにそうだ。
=が必要だね。
29とか44のマクロには、マクロウィルスが含まれてないですか? どうも2ちゃんで公開してるファイルは安心して開けない俺ガイル
昔はブラクラとかも多かったけど、最近ほとんど無いよ ウィルス張ると犯罪になるんだっけ?
>90 マクロウィルスが心配な場合は、「マクロを有効にしない」にしてブックを開き、 [alt]+[f11]でVBエディタ画面を表示させて中身を確認したらどうですか? フォームなどない場合はこれでいいと思うけど。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい(超初心者) 【4 VBAでの回答の可否】 可 文字を検索するとき、列が決まっていればオートフィルタで探せますが、 どの列に入ってるか分らないとき、Ctrl+Fで探してます。 これをマクロの自動記録でやったら、何も記録されていませんでした。 マクロではできないのでしょうか? ボタンを押すと窓が開いて、検索したい文字を入れると、その文字を含むセルへ カーソルを動かすようなものです。
>>81 で、お前さんのまともな回答とやらが
>>53 なわけか?
>>7 は月曜日に会社に行って
「こんな非効率なやり方はない。まずデータを縦一列に並べろ、話はそれからだ」とか言えと?
それとも、今までやってきた作業を全部白紙に戻して、
まず入力から縦一列になるようにやり直して…○を付けろと言われてるにもかかわらずそれにも逆らえと?
理想論を語るのは勝手だが現実はそんなに甘くない。
>>93 範囲を指定して検索する方法はこんな感じ
Set r = Worksheets("Sheet1").Range("A1:C5").Find("文字列")
変数rには見つかったセルの位置(Range)が入る
96 :
名無しさん@そうだ選挙にいこう :2009/07/05(日) 22:58:07
100×100マスを探す場合 sub 検索 a=inputbox("文字を入力すれ") for b = 1 to 100 for c = 1 to 100 if cells(b,c)=a then cells(b,c).activate exit sub next next end sub
>>94 私はそうしている。
ていうか基幹システムは普通そうなっているだろ?
98 :
名無しさん@そうだ選挙にいこう :2009/07/05(日) 23:47:38
泣けてくるごっこ遊びだな
祝!! 40000日!!!
俺は
>>53 の考え方に同意なんだが
>>7 の具体的な業務内容が不明なのに
基幹システムがどうのこうの言うのも大袈裟じゃないのかな。
>>56 みたいな下らない煽りにイラつくのは分るがもうちっと冷静になれんのか
101 :
7 :2009/07/06(月) 00:19:42
みなさん昨晩は夜遅くまで、親切に教えていただき、本当にありがとうございました。
結局、
>>44 氏のVBAを貼り付けさせていただき、なんとか書式完成できました。
(列がずれたりして、ちょっと涙目になったりもしましたが・・・)
今まで、他の板で質問したことがあるのですが、
良くて「ググレカス」、普通で「釣りか?」のような回答しかもらえたことがなく、
今回も恐る恐るだったのですが、親切にしていただき涙が出そうになりました。
これからは、ちょっとでも勉強していつかは質問に答えられるようになりたいと思いました。
本当にありがとうございました。
>>100 そうかすまん。
熱くなってたつもりはなかったのだが。
基幹システムは大げさな例として出したつもりはなくて、
標準的な当たり前のやり方という例のつもり。
>>100 そうかすまん。
熱くなってたつもりはなかったのだが。
基幹システムは大げさな例として出したつもりはなくて、
標準的な当たり前のやり方という例のつもり。
>>102 ちなみに聞きたいんだけど、
300枚に分かれてる紙の、5×5に出力されてるデータの、平均値に近い5個をそれぞれ抽出せよ、
というのが今回の目的だったわけだけど、
シートを分けないで、全部縦1列に並べたとして、このお題をどう解決するのがスマートなわけ?
******************** EXCELヲタ徘徊注意報 ******************** マニアの自己満足レスが 頻発しております。 相談者の方は警報が解除 されすまで今しばらくお待 ちいただくようお願いします。 ******************** EXCELヲタ徘徊注意報 ********************
5*5の数字に○付ける作業と基幹システム比べる事がアホってことに気づかないのかこいつはw
>>107 それを300シート分やるんだぞ。
それと基幹システムのことなんか過大評価してない?
【1 OSの種類 .】 WindowsVista SP2 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 セルB1に =COUNTIF(A1:A10,">0") という式があります。この A1:A10 の部分の 10 の部分を可変にして、別のセルから参照して来たいのですが、 どのように実現したものでしょうか? INDIRECTがいまいち違う気がします。文字列から範囲に変換できればいけそうな気がするのですが・・・。 何をやりたいかと申しますと、上記式以外に、 =COUNTIF(C1:C10,">0") というような式がたくさんありまして、1と10の部分だけを共通にして可変にしたいと考えています。 上記のように直接書いた場合だと1、10の範囲を変える場合は、いくつも修正しなくてはなりません・・・ それを簡略化したいということです。
>109 参照セルをB2セルとすると、=COUNTIF(A1:A10,">"&B2) &でつなぐところがミソ
111 :
110 :2009/07/06(月) 09:41:30
勘違いだった。見なかったことにしてくれ orz
112 :
109 :2009/07/06(月) 09:45:29
解決しました。
INDIRECTに文字列渡したら、ちゃんと範囲が返ってきました。勘違いしてました。
例:
=COUNTIF(INDIRECT("A" & B1 & ":A" & B2),">0")
にして、B1 に 1、B2 に 10 を入れたところ、
無事に
=COUNTIF(INDIRECT(A1:A10),">0")
と同じ結果がえられました。
最初、OFFSET駆使しようとしてたw
お騒がせしました。
ありがとうございました。
>>110 サンクス。あー、いや、そこの条件のところはなく、範囲を変えたかったのです。
>>31 >レシートみたいな記録用紙の物理的な奴
これって手書きじゃないよな?
手書きじゃないならまずはこれをエクセルが読めるようなデータか何かでもらえないか聞いてみる
機械が吐き出したデータを人間が入れなおすことほど無駄なことはない
質問です セルの塗りつぶしの色をコピーしたときに色もコピーしないように 自動的に設定する方法はありますか? 項目の名前を色分けしているのですが、コピー先まで色がついてくると ごちゃごちゃして見難いのです 印刷で塗りつぶし色を印刷しない方法や、コピーした後で右下に出るメニュー?で 「貼り付け先の書式に合わせる」方法は分かりますが、一手間かけずに 一発で出来ると楽なのです
>114
前スレにありました。
581 名前: 名無しさん@そうだ選挙にいこう 投稿日: 2009/06/23(火) 22:45:01
ショートカットの Ctrl + C と Ctrl + V でコピペできますが、
ショートカットで “値だけ貼り付け” ってできますか?
582 名前: 名無しさん@そうだ選挙にいこう 投稿日: 2009/06/23(火) 22:48:55
できまへん VBAでつくって登録しとけ
587 名前: 名無しさん@そうだ選挙にいこう 投稿日: 2009/06/23(火) 23:26:30
>>583-
>>584 まったくどいつもこいつも・・
それじゃコピーした該当セルだけでしか対応しねーだろが!
Sub 値の貼り付け()
Selection.PasteSpecial xlValues
Application.CutCopyMode = False
End Sub
591 名前: 名無しさん@そうだ選挙にいこう 投稿日: 2009/06/23(火) 23:38:16
>>587 なーるほど、
>>581 じゃないけどそれ頂きました。
Personal.xlsに登録してCtrl+Shift+Vに設定したらバッチリでした。
592 名前: 名無しさん@そうだ選挙にいこう 投稿日: 2009/06/23(火) 23:40:18
>>590 まず、どこかのセルをCtrl+Cでコピーしてからマクロ実行しなきゃエラーになるよ。
バイトとかどっから出てきたんだ
>>7 のキャラクタ設定勝手に作るなよw
自分が数万件のデータを扱う業務に精通した基幹系システムのエンジニアという設定する奴だから仕方ない ほっとけ
そろそろ雑談やめないか
このスレ全部印刷して上司に見せるのが一番いいと思う
>>118 たった数万件しか扱えないようなものは使えねーだろよ。
たぶん直接無駄と言うよりキレるぜ
想像してワロタw
124 :
93 :2009/07/06(月) 16:26:50
>93、124 >95さんのマクロは検索部分だけなので、検索結果をどうするかというところは自分で 書く必要があります。 試しに以下のマクロを標準モジュールに書いてみてください。 A2:P100のセル範囲内に適当にいろいろなデータを入力したうえで、 A1セルに検索したい内容を入力してから[alt]キー+[F8]キーを押してマクロ一覧から 検索 を選んで実行してみてください。該当セルを選択してくれます。 該当しないときは 該当なし というダイアログを表示します。 Sub 検索() Set r = Worksheets("Sheet1").Range("A2:P100").Find(Range("A1").Value) On Error GoTo ERROR_PROC r.Select Exit Sub ERROR_PROC: MsgBox ("該当なし") End Sub
126 :
93 :2009/07/06(月) 16:58:38
>>125 できました!
いろいろググって、InputBoxというのを探し当てたんですが、
どう使えばいいでしょうか?
真似て書いてみたものの、何を入れても該当なしになります。
Sub 検索2()
r = InputBox("文字列")
Set r = Worksheets("Sheet1").Range("A2:P100").Find("文字列")
On Error GoTo ERROR_PROC
r.Select
Exit Sub
ERROR_PROC:
MsgBox ("該当なし")
End Sub
127 :
125 :2009/07/06(月) 17:02:13
r はセルオブジェクトとして使います。 × r = InputBox("文字列") ○ MOJI = InputBox("検索文字を入力してください") × Set r = Worksheets("Sheet1").Range("A2:P100").Find("文字列") ○ Set r = Worksheets("Sheet1").Range("A2:P100").Find(MOJI)
128 :
125 :2009/07/06(月) 17:05:48
一応付け加えておくと このマクロでは次に該当するセルへの移動とか、上方向への検索はできません。 >93さんが最終的になにをしたいのか(マクロで作っているシステムの中に検索を含めるとか?) がわかればアドバイスできると思うけど。
129 :
93 :2009/07/06(月) 17:20:13
>>127 >>128 ありがd!
同じ文字なら探せるようになりました。
ただ、やりたいのは、オートフィルタの「〜を含む」って機能を
特定の列だけじゃなくてシート内の全部から探したいんです。
例えば"12345"とInputoboxに入れたら、M012345とか、
F123456が入ってるセルを選択したいんですが・・・
検索の人かw それ検索機能で済む話じゃないのw
131 :
93 :2009/07/06(月) 17:23:50
あ、ちょっと待って! Ctrl+Fで探せばいいだけ? 出直してきます・・・
132 :
125 :2009/07/06(月) 17:33:52
をいをい
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´・ω・) < 突っ込まれてショボーン… ____( つ旦O ∀ \__________ と_)_) ̄| ┷┳━  ̄ ̄ ̄..  ̄ ̄| ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ┻
基幹系システムエンジニアの俺が思うにこうだな Sub func1() s = InputBox("検索したい文字列を入れて下さい") With Application .SendKeys "^f" .SendKeys s .SendKeys "%i" .Application.SendKeys "^a" .OnTime Now() + TimeValue("00:00:02"), "func2" End With End Sub Sub func2() Application.SendKeys "{ESC}" End Sub
Excel2000と2003を使ってます。 仕事がなくて暇なので、エクセルでゲームとかできますか?
どもw
エクセル ゲーム でググればコード晒してるのが出てくるが中身さっぱりわからん
パックマンとかインベーダーゲームとか色々ある。 ぐぐれ。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【5 検索キーワード 】 抽出 初めまして、質問なのですが、 A B C D 1 1 25 26 27 2 24 26 29 3 25 30 24 2 1 32 21 27 2 18 40 30 3 44 32 12 のようなデータがあり、(左端はセルが3行ずつ結合されています) まず左端列の番号に一致して、さらにその番号の行のAの列の数字に一津するものの Cの番号を抽出するにはどうすればいいでしょうか。
>>140 結合セルの質問はしちゃいけないことになってます。
お引き取りください。
142 :
140 :2009/07/06(月) 19:46:24
質問と画像が合ってないw
>142 に準じてつくってみた。 左端列(A列)を指定するセルをF1、次の番号を指定するセルをG1としたうえで、 作業セルを2個(F2:G2)、答えを出すセルを1個(H2)としてます。 F2セルには =MATCH(F1,A1:A15,0) G2セルには =MATCH(G1,INDIRECT("B"&F2&":B"&F2+2),0) H2セルには =INDIRECT("D"&F2+G2-1) と計算式を入れるとうまくいくみたい。ただし、範囲外の数値を入れたら#N/Aと表示される。
Windowsvistahomebasic使ってます。Excelはインストールされているのでしょうか?マイクロソフトのハガキスタジオは入ってるんですが。 入っているならば立ち上げ方法を教えて下さい 初心者で申し訳ありません。教えてください。
>>113 仕事で使う機械はやたら古いものもあって、
今のPCにはつながらない場合も結構あるんですよ。
>>145 なんかエクセルファイルをダウソして開いて新規
>>145 デスクトップの空白部分で右クリック→新規作成を選んだときに
「Microsoft Office Excel 2007ブック」というのが出てきたらExcelは入ってる。
あとはスタートメニューの中を探せ。Vistaならスタートメニューに検索機能ついてるだろ。
今日、学校で太った女子部員が俺に手を出して 「ぶひ、ぶひ」っていうからお腹が空いたのかと思って おにぎりあげたら「部費、部費」の間違いだった
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000&2003 【3 VBAが使えるか .】 いいえ 【5 検索キーワード 並び替え すいません、初めて質問させていただきます。 初心者ですので宜しくお願いします。 やりたいことなんですが、たとえば・・・ 300÷20=15 や 200÷20=10 とか答えが1〜20になった場合は全て20で表示。 答えが21以上は全てそのままの数値で表示(例)21→21 22→22 小数点切り上げのROUNDUPとかなんかを応用して・・・と思って 本読みながら色々試したんですけど私には無理でした。。 すいませんが教えてください!
>>150 計算には使えないが表示だけでよければ表示形式使え。
[>20]G/標準;[>0]"20";G/標準
20.5は20.5、0.5は20になる。
これで都合が悪ければ手直ししろ。
153 :
150 :2009/07/07(火) 17:19:27
>>151 さん
すいません、IFが分からないくらいの初心者です(汗
IFとは?
>>152 さん
計算の答えの表示(変換)には使える。ってことでしょうか?
例えばD9が20以下なら20、20以上ならその数なら =IF(D9>20,D9,20)
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 複数条件に一致 こんばんわ 複数の条件に一致する文字列を表示させたいのですが、 その条件にDMIN関数を含んでいます。 LOOKUP関数などを使ってやってみましたが上手くいきませんでした。 A B C 1 アジ 100 ウミ 2 イワシ 120 ウミ 3 イワシ 110 カワ 4 メダカ 200 ヤマ 5 アジ 110 カワ というようなリストがあり、イワシのうちBが最小値となる行のC列の文字列を表示したいのです。
DMIN関数を使ってAの各項目のB最小値のリストは以下のような感じで作ってありますが、 A B 1 アジ 100 (B列は値ではなく関数のまま) 2 イワシ 110 3 メダカ 200 そのリストにCの列を追加して以下のようなリストにしたいのです。 A B C 1 アジ 100 ウミ 2 イワシ 110 カワ 3 メダカ 200 ヤマ アドバイスよろしくお願いします。
>>155 AとCだけのリストを作って
ソートして重複排除して
AでLOOKUP
sub 魚() dim a,b,c,d c = 530000 a = inputbox("魚種を入力すれ") for b = 1 to 100 if cells(b,1)=a and cells(b,2)<c then c = cells(b,2) d = cells(b,3) end if next msgbox d & "だな" end sub
>150 IFもわからない初心者ということなので、わかりやすく説明する。 >300÷20=15 や >200÷20=10 などの計算式が設定されているセルの計算式はそのままに、表示(見た目) だけ変更するのが>152さんの方法。 表示形式の設定方法は、変更したいセルを選択した状態で[Ctrl]+[1]もしくはメニュー→書式→セル 分類の枠の中の一番下「ユーザー設定」をクリックして、種類(T)の直下の入力欄(標準/Gと表示されて いるところ)に>152さんの書いている通りに入力して[OK]をクリック。 計算式そのものを工夫するのが>154さんの方法。 ただし、>154の方法は、「計算式が設定されているセル」がD9と仮定して、別の場所にあらためて 結果を表示する場合なので、例えばD10セルに表示させたいならD10セルに>154の計算式を書き込む。 ただし、>154の計算式だと計算結果がゼロやマイナスのときも 20 って表示されるので念のため。 元々の計算式を変更して、別のセルじゃなく同じセルに結果(=表示も)を出すのがこれから説明する 第3の方法。 元々の計算式を仮に =SUM(D1:D8) だったとします。 これを、=IF(SUM(D1:D8)>20,SUM(D1:D8),20) に変更する訳です。(計算式のあるセルは変えず、計算式 そのものを変更すること)元々の計算式が簡単ならいいけど、複雑なら中身をまちがえないようにすること。 この方法も>154の計算式と同様に元々の計算結果がゼロやマイナスのときも 20 になります。 >152さんの 計算には使えないが表示だけでよければ っていうのは、理解できますか? わからなければレスください。
正しくはこれだな =IF(OR(D9>20,D9 <=0),D9,20)
>>157 >>158 早速ありがとうございます。
>>157 こちらの方が確実に上手くいきそうですね
ただ出来れば参照元に合わせて更新するようにしたいので
>>158 マクロはほとんど使ったことが無いですが
がんばってやってみます。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 B列を「小数点以下の桁数を2」にしておき、 B1セルに95.12、A3セルに10400、B3セルに=A3/B1のとき、109.34になります。 B3セルをコピーし、C3へ値を貼り付けると109.3356になります。 B3セルをコピーしてC3へ値を貼り付けたとき、109.34にすることは出来ますか?
>>162 コピーして張り付けるときに右クリック、形式を選択して貼り付け
値と数値の書式を選択して張り付ける
若しくは
B3=ROUND(A3/B1,2)
>>162 別の角度から言えばC3セルの書式設定も「小数点以下の桁数を2」にすればいい。
165 :
164 :2009/07/07(火) 21:03:46
もうすこし細かいこと言うと書式設定「小数点以下の桁数を2」の場合は 小数点以下の桁数2以降の桁がそのまま生きていますが、ROUND関数の場合は 桁の設定したらそれ以降の桁はぶった切る感じになります。 ケースバイケースで使い分けて下さい。
166 :
162 :2009/07/07(火) 21:49:49
>>163-165 ありがとうございます。
ROUNDでうまくいきそうです。
円をドルに変えたとき、合計すると0.01合わなかったので
質問させてもらいました。
ctrl+Fをセルに埋め込む事って出来ないの? イメージはブラウザの右上の検索ウインドみたいな感じ。 もうctrl+F押すのもめんどくさくて。
特定のセルがチェンジされたらマクロが発動するイベントを作る
>167 出来る。 んがお前の態度が気に入らない(AA略
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002(OfficeXP) Range("B2:D4")の範囲で罫線があったとき、B5に文字を入れるとセルの右側に罫線が引かれてしまいます。 いちいち消すのが面倒なのですが、なにか解決方法がありますか?
あ、違った。 誤 B5に文字を入れるとセルの右側に罫線が引かれてしまいます 正 E2に文字を入れるとセルの右側に罫線が引かれてしまいます
満喫の2007で確かめたけどそんな現象なかったぜ
>170 >文字を入れると これでセルの右側に罫線が引かれますか? 「B2:D4の範囲内のセルのどれかをコピーすると」ではありませんか? 自分はExcel2003なので確認のしようがありませんが、文字入力と罫線設定は別もの、 単純にコピー&ペーストだと書式もコピーするからありうると思う。 (そのために「形式を選択して貼り付け」の操作が用意されている)
>>173 コピーじゃなくて、単純に文字を入れると右側に罫線が引かれます。
今わかったのは、罫線だけだとその症状が出ません。
Range("B2:D4")の範囲に文字が入った状態で、かつ、罫線がある条件で出ます。
>>174 満喫の2007で確かめたけどそんなことなかったぜ!
>>170 ツール→オプション→オートコンプリートのチェックを外す でとりあえず
罫線つかなくなったけど。
条件付き書式とかじゃないですか?
>>176 一端罫線を消去→上書き保存→B2:D4に罫線描画→E2に文字入力
でやってみて
181 :
177 :2009/07/08(水) 00:16:21
ツール→オプション→編集タブ→オートコンプリートのチェックを外す ↑これ抜けてた
182 :
173 :2009/07/08(水) 00:17:39
>170、176 ほんとだ。excel2003でも同じようになった。いろいろテストしてみる。
同じ罫線が連続するから親切機能が働いちゃうんだよ 途中に太いの入れれ
>>177 Excelのバージョンは何ですか?
ツール→オプション→編集→オートコンプリートを使用する のチェックは外しましたが、変わりません。
>>178 条件付き書式は使用していません。
>>179 変わりません。
185 :
173 :2009/07/08(水) 00:21:02
オートコンプリートって罫線も対象になってたんですか。ひとつ勉強になった。
186 :
名無しさん@そうだ選挙にいこう :2009/07/08(水) 00:21:49
漏れも。
188 :
177 :2009/07/08(水) 00:24:21
>>188 了解!
普段は表を作ってから罫線を引いていますが、枠外にコメントを書くときに
出た症状なので質問しました。
夜中なのに付き合ってくださったみなさん、ありがとうございました。
幅0の列を挟んで書き込んでもおkなはず
191 :
173 :2009/07/08(水) 00:38:01
いろんなパターンでやってみたら、罫線引いてる範囲の横1行分のセルが埋まると 右隣セルに文字入力したときに「小さな親切:大きなお世話」で罫線が発生する。 今回の例の場合、横3列なのでどこか1個のセルでもデータがなければ大丈夫。 縦方向ではこうならない・・・と書こうとしたら、変なことがおきた。 縦3行分では罫線の発生はなかった。4行分でも罫線発生せず。 ところが、縦5行分埋めたら6行目(元々罫線なし)の左右両側に罫線発生。 何なの、これ。(Excel2003にて)
満喫の2007でもなった
ためしにやってみた 1*3でその書式が同じ場合、横にどんどん書式がオートコンプリートの如くコピーされていく 背景色、フォントまでコピーされる。条件つき書式も。 予め設定されていれば伝染しない。 書式を空セルからコピーした後、内容をクリアして入力すれば伝染してしまう。 表のサイズがどんどんでかくなっていく人向け・・の機能か? 邪魔だな
195 :
150 :2009/07/08(水) 09:23:10
>>154 さん
ありがとうございました!
返事おそくなりましたが、ちゃんと表示できました!
ありがとうございました。
196 :
新規 :2009/07/08(水) 14:59:54
質問させてください vbscriptからExcelを操作してますが Obj.Range("E3").Validation.Add 3, , , "=INDIRECT(A1)" と書くと、実行時にエラーが出てしまいます。 "=INDIRECT(A1)"を、"=INDIRECT(""A1"")" と書くと、実行できますが、作成されたセルには 「=INDIRECT("A1")」となり、値参照になってしまうんです。 vbscriptからはセルの参照設定は出来ないのでしょうか 「=INDIRECT(A1)」と指定されたセルを作りたいのです。
2003で一つのセルに複数の数字を入力して どれかが一致したら表示するような関数は組めるでしょうか
>197 もっと具体的に説明してください。 また、ひとつのセルに複数の数字を入れなきゃならない事情とは? 「複数の」とは ,でつなげるということ? 「どれかが一致したら」とはひとつのセルの中に入れた複数の数字同士が一致したらということ?
200 :
199 :2009/07/08(水) 15:36:02
一緒じゃなかった。上で紹介したページの objXL.Cells(row + i, 5).FormulaR1C1 = _ "=R" & (row + i) & "C3 * R" & (row + i) & "C4" のような書き方したらいいんじゃないですか。
201 :
名無しさん@そうだ選挙にいこう :2009/07/08(水) 15:50:50
Excel 2003 を Windows Vista で使ってます。郵便局で使う払込取扱票を真似て枠線や 文字を位置あわせをしながらつくりました。これを使って実際の払込取扱票に印刷する場合、 用紙にあらかじめ印刷してある枠線や文字を印刷しないようにしたいのですがどのようにしたら いいのでしょうか。枠線と文字は青色で作ったので青色だけ印刷されないようにとかいう設定 があるのでしょうか。
オートシェイプの書式設定のダイアログを表示させ、 「プロパティ」のタブに切り替えると、 オブジェクトを印刷する という項目にチェックが入っているので、チェックを外す。 印刷プレビューを見たら ほら消えてるでしょ。
203 :
202 :2009/07/08(水) 15:58:50
続き テキストボックスの場合はテキストボックスそのものを選択した状態(中のテキストの 編集状態:縦棒カーソルが見えてる状態ではダメ)でテキストボックスの書式設定の 画面を表示させ、プロパティのタブ〜以下同文。
204 :
196 :2009/07/08(水) 16:04:11
>200 早々にありがとうございます。 「FormulaR1C1」を使うときはご教授いただいた書き方で大丈夫でした しかし、 「Validation.Add 3, , , "=INDIRECT(A1)"」 と、セルをリストにしたときの「入力規制」への指定では 出来ないみたいでした。 Excelでいう「データの入力規制」の「元の値」への指定です。
計算式じゃなくて入力規則でしたか。早とちりすまん。 vbscript excel xlValidateCustom でぐぐってるけど、よくわからない。 詳しい人、よろしく。
206 :
196,204 :2009/07/08(水) 16:23:01
>205 いえいえ、Excelも2chも初心者なので 色々言葉足らずで申し訳ありません。 ご丁寧にありがとうございます。 私もいろいろぐぐっていますが VBAでは出来るみたいなんですが・・
>>196 セルA1に入力されている文字と同じ名前の名前付きセル範囲が存在してないとエラーになんじゃないかなそれは
208 :
202 :2009/07/08(水) 17:08:04
>>202 自己レスですがファイル→ページ設定→シート→印刷→「簡易印刷」にチェックで罫線が出力
されなくなる事はいろいろ調べてわかりました。後はセルの青色の文字を表示はされるが印刷
されない状態にもっていきたいです。
>>208 無理
青い文字部分消した印刷用のシート作って、そこに入力用のシートのセルを参照するような数式入れれば済む話じゃないのかいな
210 :
名無しさん@そうだ選挙にいこう :2009/07/08(水) 17:13:49
>>209 なるほど。印刷用のシートを作って印刷時はそれを使うようにするのですね。
211 :
202 :2009/07/08(水) 17:17:13
>208 セルの場合は オブジェクトを印刷する(のチェックを外す)ような設定はないみたい。 画面上だけ表示して、印刷はしたくない場合は テキストボックス で表現するしかない でしょう。 その方法がいやだ、というんなら、プリンタから青色カートリッジを取り外すとか。 ※名前欄の番号は、自分が書き込んだレス番号をつけないと。これじゃ自作自演だよ。
212 :
196 :2009/07/08(水) 17:18:06
>207 お返事ありがとうございます。 いいえ、存在します。 Obj.Range("E3").Validation.Add 3, , , "INDIRECT(""A1"")" と書いて出来上がったファイルを直接開いて 入力規制「=INDIRECT("A1")」のダブルクォートを手作業でとると 動くのです。
213 :
名無しさん@そうだ選挙にいこう :2009/07/08(水) 17:22:18
>>211 名前欄番号の件、単なる間違いです。テキストボックスを作る方法で試してみます。
それなら作るのは面倒でも使うのは楽みたいですので。ありがとうございます。
>>212 じゃあわからん。少なくとも下のコードでは普通に動いてるよ
dim xlApp
set xlApp = createobject("Excel.Application")
xlApp.visible = true
set wb = xlApp.WorkBooks.Add
set ws = wb.worksheets(1)
ws.range("A1").value = "はんい"
ws.range("B1:B3").value = xlApp.worksheetfunction.transpose(Array("A","B","C"))
wb.names.add "はんい", "=Sheet1!R1C2:R3C2"
ws.range("C1").Validation.Add 3, , , "=INDIRECT(A1)"
215 :
196 :2009/07/08(水) 18:38:06
>>214 教えていただいたコードを自分の環境で動かしたら
正常に動きました!
自分のソースとの違いは、範囲指定を範囲名で行なっている点です。
つまり参照元もリストなんです。
もう少し試行錯誤してみます。
VBAについて質問です。 グラフのプロットエリアの位置・サイズ指定の方法は、Excel 2007で変更になったのでしょうか? PlotArea.Top = 数字 PlotArea.Left = 数字 PlotArea.width = 数字 PlotArea.Height = 数字 のようにすると 2003だと上手くいくのですが、 2007だと'Top'メソッドは失敗しました.'plotArea'オブジェクト というようなエラーが出ます。どなたか、ご教授下さい。
【1 OSの種類 .】 Windows XP(SP3) 【2 Excelのバージョン 】 Excel 2003(SP3) 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 ピボットテーブル グループ化 上半期 下半期 ピボットテーブルで、 金額 年 売上日 2008年 2009年 得意先 4月 5月 6月 7月 8月 9月 上半期計 10月 11月 12月 1月 2月 3月 下半期計 総計 い商店 1 1 1 1 1 1 6 2 2 2 2 2 2 12 18 ろ商店 2 2 2 2 2 2 12 2 2 2 2 2 2 12 24 は商店 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 総計 3 3 3 3 3 3 18 4 4 4 4 4 6 26 44 のように通常の年、月のグループ化に「上半期」「下半期」を入れた グループ化、または同等な集計をしたいのですが、可能でしょうか。
>217 元データに、「上半期」「下半期」の列を足せばいい。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 拠点別集計.xls シート名"MENU" A B C D 1 2 3 4 20090417.xls 5 20090521.xls 6 20090623.xls 7 8 9 拠点別集計.xlsのSheets"MENU"に、D列の4行目からブック名が書かれています。 変数Mが"4月"ならD4セルの20090417.xlsを開いて、その中のSheets"4月"〜Sheets"9月"を 拠点別集計.xlsのSheets"MENU"の右隣りにシートコピーします。 変数Mが"5月"ならD4セルの20090417.xlsを開いて、その中のSheets"4月"と、 D5セルの20090521.xlsを開いて、その中のSheets"5月"〜Sheets"9月"を拠点別集計.xlsの Sheets"MENU"の右隣りにシートコピーします。 変数Mが"6月"ならD4セルの20090417.xlsを開いて、その中のSheets"4月"と、 D5セルの20090521.xlsを開いて、その中のSheets"5月"と、D6セルの20090623.xlsを開いて、 その中のSheets"6月"〜Sheets"9月"を拠点別集計.xlsのSheets"MENU"の右隣りにシートコピーします。 7月以降も同様に各ブックを開いて、シートのコピーをして行きますが、SelectでMを分岐し、 上記に書いたままをマクロで書いてみようと思ったものの、無駄に長くなってしまいます。 効率よい書き方があればアドバイスください。
ブックを分けない、はナシ?
222 :
220 :2009/07/09(木) 00:18:56
>>221 「販売見込み」を「販売実績」にし、更に昨年との値差を集計しなおすため、
このようなややこしいことをしなければなりません。
つまり、20090417.xlsの"4月"と20090521.xlsの"4月"は別ものなので、
ブックを統一することはできません。
【1 OSの種類 .】 Windows2000 【2 Excelのバージョン 】 Excel97 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 不一致 重複 一致 A列に「お客様番号(絶対に重複しない固有の番号)」がズラリと並んでおり B列以降はなんやかやと住所やらのデータが並んでいます。 シート1には昨日終了時点のデータが残してあり、シート2に本日終了時点のデータがあります。 (順番はメチャクチャになります。) 「A列で、シート2にあって、シート1にない番号」が「今日の入庫」と判定しています。 この判定の方法なんですが、シート2のX列に下記の式を入れて下までコピーして 当日入庫を判定しています。 =IF(ISNA(VLOOKUP(A2,Sheet1!A:A,1,0))=TRUE,"当日入庫","") データが2000行くらいだった頃は良かったのですが、あれよあれよと30000行を越えてしまい 判定に3分くらいかかるようになってしまいました。 =if(countif(Sheet1!A:A,A2)=0,"当日入庫","") という式に変えてみたらますます遅くなりました。 こういった「シート2に有ってシート1に無い」を比較的高速で判定できる式というと どのようなものが考えられますでしょうか?
>220 ブックの名前変えたら? 20090417でなく、「2009年4月分」あるいは「4月」、「0904」とか。 無駄にややこしくなってる気がする。 でいて、実行できてるなら多少長くてもかまわないと思う。
>>223 matchが早いと聞いたことあるけど、もうそこまでいくとPC買い換えた方がいいかも
後はCTRL+Fの検索とか、試してみては
vlookupはかなり遅い
アキバ行けば中古のpen4の2Gが5000円で売ってるよ
226 :
220 :2009/07/09(木) 00:29:38
>>224 ブックの名前を変えても、ややこしさは変わらないと思いますが?
開くブック名 = Worksheets("MENU").Cells(M, 4).Value でいいのでは?
227 :
名無しさん@そうだ選挙にいこう :2009/07/09(木) 00:35:09
意味も無くブック名を変えろとか、PCを買い換えろとか 今宵の先生はレベルが低いねwwwww
PC買い換えろとはいってないよ 時期的に検討してもいいぐらいの期間は経っている 10年近く使えばPC内部も劣化するし、色々な意味でPCを買い換えるという事は視野に入れておいていいと思う とりあえずvlookupの式をmatchに変えて満足ならソレでいいかもしれないけど
句読点くらいは、シッカリ打てるようになってくれ。 小学生か?
句読点が無いと読めないとか、朝鮮人?
>>227 突っ込むところはそこじゃないw
「シート2に有ってシート1に無い」を比較的高速で判定できる式 に対する答えが
“CTRL+Fの検索”というところだ。
句読点が打てない人は、バカっぽく見える。 実際バカなんだろうけどw
>>230 朝鮮半島に句読点ってあるの?
句読点の起源は韓国ニダーって言いそうでもあるけど
235 :
名無しさん@そうだ選挙にいこう :2009/07/09(木) 01:02:15
さぁ。盛り上がってま、いりますた!
>>234 読点の使いどころは時代によって大きく変わる
昔は存在すらしなかった
ちなみに読点を多用する人は弱気な人が多い
そんなに必死になるなよw 覚えたての日本語を使ってみたい気持ちがワカランでもないo
vlookupはデータが万を超えるとほんと遅くなる。 ただWin2000でExcel97ってさすがにPCもしょぼいんだろ? うちのC2DのVista + Excel2007で シートA 約4万データ シートB 約1万データ でBのデータがAに含まれるかをvlookupでやると15秒ぐらいかかる matchにしても変わらないね。 VBAの方がExcelの関数より遅いと思うから、PC買い替えなどを しない限り確かに速度アップは無理と思う。
>>222 >(略)
>このようなややこしいことをしなければなりません。
>つまり(略)
>ブックを統一することはできません。
決め付けんなって。
データがカスだから苦労するんだ。
カスブックを捨てろ。
どういう流れだ
>>223 データベースソフトを使ってみてはどう?
3万件のデータ結合、抽出くらいなら一瞬で終わると思うよ。
246 :
223 :2009/07/09(木) 08:07:49
色々とご返答ありがとうございます。
皆様ご指摘のとおり、PC自体が旧式です。
ためしにmatchを当ててみましたがイマイチ変わりませんでした・・・。
>>244 アクセスの不一致クエリだと確かに若干早いのですが、
普段の作業はエクセル上で行っているので
作業都度アクセスに合う形に直して・・・といった作業を考えると
作業時間はあまり変わらなくなってしまいます。
vlookup等のような汎用性の高い式でなく
不一致を抽出するのに特化した少し処理の早い数式や仕組みがあれば・・・と思ったのですが。
vlookupはダメ!matchを使え。 とか言ってるやつの話は聞いても無駄です。
なんだ? 我慢できずにとうとう基地外がわいてきたかw
>>223 自体が釣りの質問だろうねぇ。
朝鮮人とか一人で騒いでたんじゃねーのか?
>>246 一日に一回の処理だったら、ワークシート関数使わないでマクロの方がいいんじゃないかな
実際vlookupよりmatch+indexの方が早くなる傾向はあるんじゃなかったか?
>>223 みたいに一行だと同じだけど、範囲(列)が広くなるとvlookup関数は計算する量が大きくなるとか
>>223 速度は分からないけど、条件付書式と組み合わせてみるのもいいかもしれない
=VLOOKUP(A2,Sheet1!A:A,1,0)
がエラー値だったらセルに色付けするとか
後は無難にVBAか
Sub a()
gyo2 = Sheets("sheet2").Range("A65536").End(xlUp).Row
For i = 1 To gyo2
Set FoundCell = Range("sheet1!A:A").Find(What:=Cells(i, 1))
If FoundCell Is Nothing Then
Cells(i, 24) = "当日入荷"
Else
Cells(i, 24) = ""
End If
Next
End Sub
252 :
196 :2009/07/09(木) 12:07:07
昨日からお世話になっております。 vbscriptのみ で Excelのテンプレートを作成したいのですが 行き詰っており、質問が2つあります。 初心者で申し訳ありませんが、どなたかご教授お願いいたします。 @入力規制のリストボックス作成で失敗する ----- with ws.Range("A1").Validation .Delete .Add 3, , , wb.Names("HOGE") .IgnoreBlank = false end with with ws.Range("C1").Validation .Delete .Add 3, , , "=INDIRECT(A1)" .IgnoreBlank = false end with ------ 「Add 3, , , "=INDIRECT(A1)"」 で実行時エラーがでます。 >214 昨日214さんに教えていただいたコードは 自分の環境でも動きました。 違いは"A1"も,自分の場合はリストであるということでした。 "A1"は作成時はどの項目も選択されないので、 もしかしたらそれが原因なのかもしれません。 リスト作成時にある項目を選択する方法はありますか?
253 :
196 :2009/07/09(木) 12:08:33
AVLOOKUPの「範囲」で文字列指定 VLOOKUPの第二引数に、 範囲名称を加工して入力したいのですが 下記の式では落ちちゃいます。 VLOOKUP文字列が指定できないのでしょうか? ------ VLOOKUP(A1,SUBSTITUTE(INDIRECT("C3"),"hoge1","hoge2"),2,FALSE)),"err","succes") ------
254 :
196 :2009/07/09(木) 12:10:24
すみません、253の式はミスです。 正しくは↓です ------ VLOOKUP(A1,SUBSTITUTE(INDIRECT("C3"),"hoge1","hoge2"),2,FALSE) ------
>>252 名前がないと止まるっていってんじゃん。バカ?
必ず存在する名前かセル番地入れておいて、設定後に消さばいいんじゃね?
'セルA1は絶対存在するからとりあえず入れとく
ws.range("A1").value = "A1"
'それ指定
ws.range("C1").Validation.Add 3, , , "=INDIRECT(A1)"
'消す
ws.range("A1").clear
vlookupも同じミスしてんじゃね?検証する気も起きないけど
>>223 どちらのシートにも3万件以上あって3分で終わってるなら十分早いと思うんだが・・・
これ以上を望むのならそのファイルに入力するためのフォームとか組んで
入力時に判定するようにしたほうが良くないか?
258 :
257 :2009/07/09(木) 13:50:29
>>251 がFind使ってるの見て考え直してみた
>>223 はvlookup使ってやってるようなのでシート1はソート済みのはず
もしそうならこれなら早いはず
Sub 当日入庫()
Dim var2A, var2X
Dim lngMax1 As Long, lngMax2 As Long, i As Long, j As Long, lngFind As Long
Dim rngRet As Range
lngMax1 = Sheet1.Cells(65536, 1).End(xlUp).Row
lngMax2 = Sheet2.Cells(65536, 1).End(xlUp).Row
'A列をVariantに入れる
var2A = Range(Sheet2.Cells(1, 1), Sheet2.Cells(lngMax2, 1))
'結果用のVariantを初期化
ReDim var2X(1 To lngMax2, 1 To 1)
lngFind = 1
For i = 1 To lngMax2
Application.StatusBar = var2A(i, 1) '←進行状況を見るため
Set rngRet = Range(Sheet1.Cells(1, 1), Sheet1.Cells(lngMax2, 1)).Find(What:=var2A(i, 1), after:=Sheet1.Cells(lngFind, 1))
If rngRet Is Nothing Then
var2X(i, 1) = "当日入庫"
Else
lngFind = rngRet.Row
End If
Set rngRet = Nothing
Next i
Application.StatusBar = False
'結果(Variant)をX列に入れる
Range(Sheet2.Cells(1, 24), Sheet2.Cells(lngMax2, 24)) = var2X
End Sub
259 :
257 :2009/07/09(木) 13:54:32
いろいろ試してるときに作った変数の宣言とか残ってたorz
釣り質問にまだやってたのかよ。 そんなもん両方3万件でもいまどきのパソコンは1秒もかからん。
261 :
196 :2009/07/09(木) 14:02:25
>256 バカですみません。 @が解決しました。本当にありがとうございました。 でもvlookupの件は違うようです。
配列に流しこんでソートをだな
>>262 そう考えなかったわけじゃないが面倒なので省きたかった
それにシート2のデータにまったく連続性がなかったら意味がないなw
>>258 vlookpの最後の引数が0なら並んでなくてもいいぞ
>>223 なんてソートしてLOOKUPで一瞬だよな。
FindメソッドとかVLOOKUPでFALSE検索やMATCHの検索の型0を使うやつは何も分っとらん。
Excell2002です。説明しにくいんですが 商品名・(仕入の)数量・単価・金額のリストがあって ピボットテーブルで、 「商品・合計数量・単価・合計金額」 と作表したいのですが、 ピボットテーブルの左側に「商品・合計数量・単価」を入れると、 仮に単価1,000とすると、 商品の仕入が3回あって数量が3・5・5の合計13のとき 「商品・13個・単価1,000・金額13,000」 という行になって欲しいのですが 「商品・3個・単価1,000・金額3,000 商品・5個・単価1,000・金額10,000」 となってしまいます。 「商品・5個」の部分で10個分の金額が出てしまい不都合なのですが どうすればいいでしょうか。
268 :
名無しさん@そうだ選挙にいこう :2009/07/09(木) 16:35:39
>>223 みたいな問題は
ハッシュテーブルを使って処理するのが一番速い。
>>268 うんにゃ、3万対1万ならそおうとも言えない。
Dictionaryなんかここ数年まともなコード見たことナス。
何年たっても上達しないやつが書いてるから仕方がねーな。
>>269 アルゴリズムの優劣と個人のプログラミング技術の優劣の話は別物だと思うが・・・
>>269 Dictionaryって使ったことないけど
>>223 に適用できるなら「まともなコード」とやらを書いてみてくれないか?
まーた嘘つくんじゃないよ。 まともじゃないコードさんざん書いてるくせにw
>>271 非難したいだけの奴にそんなこと言っても無駄
もっと良い方法がある、自分ならもっと上手くできるってことを臭わせるだけで
実際には具体的な指摘も見本となるコードを書くことも出来ないんだからw
>>272 >>271 宛だよな?
Dictionaryって今ググってみたんだが
これだと3万回Addしないといけないみたいだから
これじゃたぶん遅くなるな
それと「まともじゃないコード」ってどんなの?
はいはいそう思ってなさい。
と、「実際は違う」的なふいんきを臭わせるだけで 具体的な話は一切しないw
>>274 そこらへんで見るDictionaryのほとんど。
盲愚やサロンへ逝ってみればいやでも目に入る。
>>269 の1行目と2,3行目の関連がよく分らん・・・
いい例でも悪い例でもいいから書けよ めんどうなら悪い例とやらのURL教えてくれ
こんなで Set f = Application.WorksheetFunction [A1:A5] = f.Transpose(Array("A", "B", "C", "D", "E")) [B1:B3] = f.Transpose(Array("G", "A", "C")) A1:E1のリストに無いB1:B3の値を求めるコード 早く書いてくれ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 excel マクロ 警告 表示しない 2003 大量のExcelファイルを開きつつ行う作業があるのですが、 すべてのファイルに無駄なマクロの残骸が入っているようです。 セキュリティを「最高」「高」でも、 「マクロは無効になっています」という旨のメッセージが出るのが鬱陶しいです。 ファイルを開く際に警告メッセージを出さずに、 マクロを無効にして開く方法はないでしょうか。 「中」では有効無効の選択が出てしまい、 「低」では勝手に有効になるのでそれも万が一ということを考えると避けたいです。 よろしくお願いします。
いいから早く書けよ269 その素晴らしいコードとやらを
>267 商品1件につき1行は無理だったけど、一番近い形としてこういうのはどうですか? 1 商品と単価を「行」にドラッグする 2 数量と金額を「データ」にドラッグする
285 :
名無しさん@そうだ選挙にいこう :2009/07/09(木) 18:43:44
【1 OSの種類 .】 WindowsXP Pro SP3 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 A1からT2000までのセルに記載された製品情報があり、 その範囲にあるC列に型名が記載されています このC列の型名情報を元にA1からT2000までの情報に フィルタを掛けたいのですが、特定の複数のセル、例えばU1からU10まで に型名を打ち込んだら、C列の情報に一致するものだけをフィルタリング して表示する、という関数はありますか?
だから自作自演の質問はいらねーんだよ はやくしろよ269
>>285 作業列に一致したかどうかを示す式を入れてオートフィルタが一番簡単だと思う
WindowsXP(home)sp3 Excel2003ですが、エクセルを使い始めてしばらくすると CPU使用率100%になってまして、どのプロセスが使っているんだろうとみたら EXCEL.EXEが95%前後使ってました。 不思議なことに、エクセルは起動していてブックをすべて閉じていても状況は 変わりません。ネット接続の有無も関係ありません。 エクセルを終了して再度エクセルを起動したところ、何の操作をしなくても 約12秒後からCPU使用率が(全体で)100%になってしまいます。 一体これはなんでしょうか? ※OfficeUpdateはしてません。これからやってみます。
>>287 それでもいいけどたぶんフィルタオプション使った回答書きたかったんじゃないかな彼は
269早くしろよまじで 不一致クエリ相当の処理書けよ
>>288 まずは変なマクロが走ってないかチェック。
もちろんウィルスチェッカーは常駐してるよな?
まさかと思うけどメモリが足りてないなんてことはないか?
もうそのへんにしよけよ どうせろくなプログラムも書けやしないんだからw こんだけ煽られて反骨心のあるやつならとっくに書いてる
293 :
288 :2009/07/09(木) 19:46:48
>291 エクセルだけ起動していて、何もブックが開いていないときのマクロの実行状況の 確認方法ってありますか? ウィルスチェッカーというか、NTTのフレッツ光で接続してるので、「セキュリティ 対策ツール(実体はトレンドマイクロのウィルスバスター)」をインストールしてます。 メモリは1Gバイトです。
>294 XLStartフォルダが2個(\ProgramFilesの下と\Documents and Settingsの下)ありましたが、 その中には何もありませんでした。 割れ物ではありません。バイオノートtypeFに最初からインストールされてたものです。 >295 みてみましたが、フリーズではない(エクセルの操作はできるし、それ以外のアプリも ストレスなく動いている)ので状況は少し違うかな、と思います。
297 :
220 :2009/07/09(木) 20:40:50
>>242 決め付けるもなにも、私がつくったファイルじゃないので変えられません。
データがカスなのは認めます。
詳細は書けませんが、中身は物凄い複雑です。
コピーした文字列 例えばH21. 7. 9 をセルにペーストする際に H21.7.9と置換かトリムしてペーストさせたいのですが 何か良い方法はないでしょうか? 宜しくお願い致します。
>>297 >>251 のマクロは試してもらえました?
かなり早くなると思いますよ。不満店があれば言ってもらえればまた直しますんで
>>298 =SUBSTITUTE(A1," ","")
で空白がとれるからこれをコピーして値で貼り付け
じゃなきゃ素直に置換かな
>>299 ペーストする時に文字列判定して置換したいのです
って無茶ですよね・・・
一段階踏むしかないかな
>>297 うそつけ。
その制約を受け入れているのはおまえ自身だよ。
>「販売見込み」を「販売実績」にし、更に昨年との値差を集計しなおすため、
>このようなややこしいことをしなければなりません。
>つまり、20090417.xlsの"4月"と20090521.xlsの"4月"は別ものなので、
>ブックを統一することはできません。
グラフを作成する際、横軸データが[0.1,1,10]という様にバラバラになっている場合に 目盛りを[1,2,3〜10]と表示したいのですが、どのようにしたら良いでしょうか? プロットする点が ・ ・ ・ ・ となる様にしたいんです 初歩的な質問なのかも知れませんがお願いします
303 :
220 :2009/07/09(木) 22:07:00
>>301 じゃ、嘘つきだと思ってください。
マトモに答えるつもりがないなら、レスしなくて結構。
あなたも社会人になれば、しがらみを知ることになるでしょう。
ピボットテーブルを使えば解決するものばかりだな
>302 状況を質問テンプレートを使ってもっと詳しく。 レス番号>1からの注意事項を読みましょう。
>>305 すいません
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 excel グラフ 目盛
(excelの使い方という様なサイトも色々回りました)
グラフにプロットしたい点が
(0.123,1.23),(3.45,5.6),(10,6)
という風にバラバラなんです
これを正しい尺度で作図したいと思っています
今の私の知識では点を均等にプロットする方法(0.123〜3.45と3.45〜10の距離が同じ)しか知りません
色々調べましたが、このような例の載っているサイトが見つからず質問しました
307 :
306 :2009/07/09(木) 22:41:01
ちなみに横軸がひずみ、縦軸が応力です
308 :
305 :2009/07/09(木) 22:45:29
>302 グラフの種類は何? >306 のデータで散布図を書いたら縦軸は0〜7(目盛りは1きざみ)、 横軸は0〜15(目盛りは2きざみ)で書けたよ。
309 :
305 :2009/07/09(木) 22:47:54
>308 をちょっと訂正 横軸の目盛りはグラフサイズで変化する。当初は15までだったけどサイズを変えていたら 12までになった。きざみ具合はサイズによって異なる。
310 :
306 :2009/07/09(木) 22:53:47
>>306 散布図を使え
グラフの範囲は自由に変更できる
目盛りの間隔も等間隔という条件で自由に変更できる
散布図でも気に入らないなら別のソフトを使うかオートシェイプ
312 :
305 :2009/07/09(木) 23:04:11
>306 散布図以外で>310のようなグラフは書けないと思うんだけど・・・ グラフの種類を何で書こうとしたのか>310でも回答なし。
313 :
223 :2009/07/09(木) 23:06:22
>>299 色々ありがとうございます。
マクロをためしてみたんですが、VLookとほとんど変わりませんでした・・・。
やっぱり不一致判定ってエクセルは苦手なんでしょうかね・・・。
>>266 で書かれている「ソートしてLOOKUPで一瞬」という意味、
どなたかわかる方おられますか?
314 :
306 :2009/07/09(木) 23:11:00
>>312 回答忘れてすいませんでした
折れ線グラフで書いて滑らかにするやつを使おうとしてました
本当に初心者で申し訳ありません
お答えありがとうございます
315 :
305 :2009/07/09(木) 23:47:32
>314 折れ線グラフ・・・・無謀でしたね。 例えば、学校(学級単位でもいいけど)で、生徒の身長と体重のデータから 相関図をつくるとか、関数(Y=aX^2+bとかの)のグラフを書くとか 縦軸・横軸とも数値であるものは散布図ですよ。
>>313 VBAのForの直前に
Application.ScreenUpdating = False
Nextの直後に
Application.ScreenUpdating = True
を入れたら早くなるかも。
ExcelのVBAで遅くなる原因にデータの描画に時間が掛かる
というケースがあって、大量のデータをVBAで書き込むときに
このおまじないコードで描画をやめて最後に描画させると
高速化する。ただし、計算の途中なにもしていないように見える
ので、不安になるがあせらないこと。
>>316 いまさらそこから?
そんな基本的なことどうでもいいからアルゴリズムの話をしろや。
上のほうでハッシュとか出てるでしょ?読んでるの?
さっき簡単なSQL作って試してみたら一瞬で終わった。
SELECT * FROM TABLE1 LEFT OUTER JOIN TABLE2 ON COLUMN1=COLUMN2
この1行で完成。
エンターキー押した瞬間に結果出たぞ。
>>304 だよな。
>>223 関連でDictionaryのへたくそオタクどもがファビョってるが、ピボットの複数のワークシート範囲で表示形式を[=1]"当日入庫";""とでもすりゃいいもんな。
そもそも
>>223 のお客様番号がどんなものか分らんことには始まらないよな。
本当に番号ならハッシュ使うやつは馬鹿だしな。
F00001とかM12345とかの文字列にしてもSheet1の番号のリストと当日の番号のリストの数が数万対数千でもハッシュ使うやつは馬鹿。
>>320 そうだったか、見落としすまん。
ピボットは2007からじゃないとつらいかもね。
今30000アイテム程度らしいから、あとちょっとでパンク?
書きもれ。 あとちょっとでパンクはExcel2003を使った場合ね。
>>321 ここの質問はだいたいピボットテーブルで解決だな。
アイテム数の制限さえなければほんとに便利。
私は普段2000を使っててアイテム数制限あるけど、実用上めったに不便は感じないな。
>>313 >「ソートしてLOOKUPで一瞬」という意味、
>どなたかわかる方おられますか?
元データがソート済であると仮定するアルゴリスムのほうが一般に高速ということだろう。
わざわざLOOKUPを使わなくてもVLOOKUPで条件にTRUEを指定してやれば同じ。
VLOOKUPを否定するやつ多いが意味がわからん。
ソートしてLOOKUP試してみたが一瞬とは感じなかった。
どちらかといえば遅くて我慢できなかった。
vlookupはだめだ。index+matchを使えという迷信も多いね。
326 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 07:55:55
にわか知識かじったバカどもが必死だなあこりゃ 赤面するのは何年後になるのかわからないレベルの低さというのが悲しいな
=LOOKUP(C1,A$2:A$10000)これをわざわざ=VLOOKUP(C1,A$2:A$10000,1,TRUE)とするやつはヴァカだな。
jsk
>>328 わざわざ無駄に長くことを趣味にしてるやつはいるからねぇ。
数式は知らんが、VBAなんて昔は書いたコードの量によって貰うお金がちがうなんてこともあった品
それでSelectだらけの汚いコード書いてウマー
レベルの低さにくらくらしてきた。 引数が多いからムダとか何言ってるんだろ。
おれも332にクラクラしてきたぜw
範囲の1列目をわざわざ取得してるんだからjsk無駄だよなぁ。 レベルのお高い人はそう感じないらしいなw
実際、ソートしてlookupは速いのかよ。 一瞬で結果でるのか?
一瞬と書いたのは俺じゃねーが、Sheet1が3万行、Sheet2に1万行でlookupで約0.25秒だな。 一瞬と言えるか微妙だが0.25秒はSheet1をいじった時だけだから、まぁいいんじゃね?
うーん、真正のレベルのお高い人を発見。 Range("A:A!")をRange("A:A").Columns(1)って書くのはレベル高いよな。 斜め上の人はさすがだなw
びっくりして!までつけちゃったよw
>>335 lookup関数は元々ソートされていることが前提で計算する関数だったはず
どこから速度が出るという話が出てきたか見当もつかん
都市伝説か何かか?
>>337 速度なんてマシン環境によって全然違ってくるのにLOOKUPの結果だけいきなり出されても。
元のやり方でも時間測ってそれと比較しないと意味ないだろ・・・
あとピボット厨の人もピボットだとどれぐらい早くなるのか数字を出して欲しいな。
342 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 11:20:40
【1 OSの種類 .】 WindowsXP Pro SP3 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 すみません。 何かの自演と勘違いされてスルーされてしまったよう ですので再度ご質問させて頂きます A1からT2000までのセルに記載された製品情報があり、 その範囲にあるC列に型名が記載されています このA1-T1000をデータベースとします
343 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 11:21:47
C列の型名情報を元にA1からT2000までの情報に フィルタを掛けたいのですが、特定の複数のセル、例えばU1からU10まで に型名を打ち込んだら、C列の情報に一致するものだけをフィルタリング して表示する、という方法はありますか? 関数をいくつか試しましたが、「抽出結果を別のセルに表示」ではなく 「データベース」を最新情報にするために、データベースを編集できるような フィルタで無いと意味が無く、その様な方法を探しています ご教示お願い致します
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 質問です。 下記のような文字列があったとして… 愛知県名古屋市名東区 愛知県名古屋市北区 名古屋市北区 愛知県名古屋市守山区 名古屋市昭和区 この文字列の中から『○○区』だけをピックアップしたいです。 ご回答よろしくお願いいたします。
>344 置換で "愛知県名古屋市"→"" "名古屋市"→""
>>342-343 自演とか騒ぎだす病人はいつもいるからねぇ。
しかし回答はすでに貰ってるよな?
たった2000行と10行なら
>>287 で十分じゃないのかい?
その程度のデータならMATCHなりCOUNTIFでも動くはずだが。
作業列に=ISNUMBER(MATCH(C2,U$1:U$10,0))とでもしてTRUEをフィルタリングするだけだ。
>>345 ご回答ありがとうございます。
説明不足で申し訳ありませんが、「愛知県名古屋市」、「名古屋市」以外にも大量の文字列があります。
(例:「東京都港区」、「大阪府大阪市北区」など)
私の予想で申し訳ないのですが、『任意の文字列の中より「区」より手前の○文字目を表示』
という感じなのではと思っております。
改めてよろしくお願いいたします。
名古屋って愛知県なんだよなと懐かしい気分 で、ソート云々はなんなんだ
Dictionaryもなんなんだろうな
>>347 それは、文字数とか使える文字とかに規則がないから、簡単な式で一発でやるのは無理。
一覧表を用意して、それと一致するかどうか調べるしかない。
政令指定都市の数なんてたかが知れてるし、ネットを探せば区名の一覧ぐらいすぐ見つかる。
「市」と「区」の間の文字を取り出す、みたいな方法が使えるかどうかは
一覧表があればわかるんだけど、
今はOKでも将来使えなくなる可能性があるからオススメはできない。
そこをあえて =MID(A1,FIND("市",A1)+1,FIND("区",A1)-FIND("市",A1))
何かの間違いで市川市や市原市が政令指定都市になったら破綻するな
一覧表を引く方法だってメンテナンスが必要って意味では大差ない それよりも、区名を取り出したあと何がしたいのか、目的がわかれば もっといい方法があるかもよ?
名古屋市は名古屋県だと言ったやつ二人知ってる
連想配列を定義 定義文字は直記述でもシートの一覧データからの取得でも
昔は本当に名古屋県があったから、バカか年寄りかどっちかだな
配列でもなんでもいいけど、データソートかけてカウントして、結果が1のデータを抜き出すのはどうだろうか
エクセルファンクラブはどうしちゃったの? 知っている人いたらkwsk
>223ね シート1とシート2の番号を配列に連続して流し込む ソート データが終わるまでループ i=1 データn=n+1を満たす間ループ i=i+1 ループ i=1なら番号を取得 ループ 取得した番号はユニークなはずなので、全探索よりは早いと思う
>>360 言われてみるとなるほどだな。
頭いい人っているもんだなあ。
>>282 多少怪しい挙動もありましたが(なぜか途中で止まる、デスクトップ表示でブラクラ状態にw)
このマクロでなんとか処理できました。ありがとうございました。
>>351 ありがとうございます
100点のご回答です
度々すいません これだと『名東区』と表示されてしまいます これを更に『名東』だけにしたいのです 贅沢言って申し訳ありませんが何卒よろしくお願いいたします
>>364 試してないけどこうかな
=MID(A1,FIND("市",A1)+1,FIND("区",A1)-FIND("市",A1)-1)
>>363 「市」や「区」が無いとエラーになると思うが・・
ほとんど処理できるならいいのか
とりあえず回答
=SUBSTITUTE(MID(A1,FIND("市",A1)+1,FIND("区",A1)-FIND("市",A1)),"区","")
368 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 15:52:47
A列 商品名 B列 仕入先 C列 仕入価格(E列日付) D列 販売価格(E日付) E列 仕入日 F列 仕入価格(H列日付) G列 販売価格(H列日付) H列 仕入日 という商品名に対し仕入れ日と仕入れ/販売価格を 3列セットで増やしながら管理しています とある生モノを扱っているので、仕入れ、販売価格が仕入れ日により結構違うので、このような管理方法になっています そこで仕入れ日を指定したセルに入れれば、その日に仕入れた商品名(全部)と個々の仕入れ価格、販売価格を全DATAから検索して表示してくれる機能は ないでしょうか?
オートフィル そこでマッチでーす
>>368 俺ピボット厨じゃないですけどこれはピボットテーブル使えば簡単だな
>>368 そんな機能はない
同じ意味のデータ(仕入日)が複数列にまたがっていて、しかも列数が不定だから、一発で求めるのは無理
作業シートを使って段階的に抽出していくことになるが、オレならVBA使う
254/3=84回仕入れしたら会社終了?
悪いことは言わん。 商品名と仕入先の重複を許して、仕入日は1行に1つにしなさい。 そうすれば整理も分類も検索も一発でできるようになるから。
>368 VBAマクロでしか実現できないと思う。 Excelのバージョン、データシート名(シートは1枚?)を回答されたし。 っていうか、こういうのはエクセルよりもアクセスの方が管理しやすいんじゃないかな。 それか、 A列 商品名 B列 仕入先 C列 仕入価格(E列日付) D列 販売価格(E日付) E列 仕入日 の5項目で固定(列を増やさない)にするとフィルタで用が足りるんじゃない?
>373 Excel2007は16384列までOKです。なので(16,384-2)÷3=5,460回まで大丈夫!
378 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 16:44:56
WindowsXPsp1,EXCEL2003です。 約1ケ月前から、EXCELファイルを開こうとすると、 Windowsインストール画面が表示され、EXCELのインストール処理が始まり、 「必要なインストールファイルSKU033.CABが見つかりませんでした」の メッセージが表示されます(ファイルは開けない)。 EXCELそのものを起動しようとして、EXCEL2003のショートカットを クリックしても、同じ現象になります。 EXCEL2003はインストールされていて、以前は使えてました。 WORD2003は正常に立ち上がります。 原因と対策を教えて下さい。 よろしくお願いします。
380 :
379 :2009/07/10(金) 16:57:31
381 :
368 :2009/07/10(金) 17:52:14
沢山の回答ありがとうございました 自分もこの管理を始めたのが最近で、 信じられないかもしれませんが、つい最近まで 経理のおばちゃんがこれを鉛筆とノートで管理してたんです Aという商品が売りにでて、\500とします \500がまず定価(一応あります)に比べて安いか高いか、 前年の同時期とは? 過去の最安値はいくらで、その時 の日付はいつだったか? 少し前までは仕入れに合わせてこちらの売値を調整していた様ですが 最近は売れ残りも激しく、仕入れ値が売価に対して適性と判断した
382 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 17:55:50
モノに関してのみ、適正な数量を仕入れ出来る様にしたいです また、客先からも「いついつにこの値段で売ってくれたんだから、\○にして欲しい」という要求もあって、それが本当かどうか、またそのとき仕入価格に対して利益率いくらでやったの? という事が管理、検索できる様なシステムを作りたいです おぼちゃんはこれを毎日12時ぐらいまで手作業で残業代も無しでやってます SHEET は1枚で管理してます アクセスは全く使えないです というかデータベース事作り直しても良いので、なにか良い方法があれば ご教示願えないでしょうか?
>>382 だから、
>>374 >>375 で立て続けに同じ内容の回答が来てるでしょ?
列は増やしちゃだめ。
ところでエクセルのバージョンは?商品は何種類?仕入先は何件?
VBAは使える?
385 :
375 :2009/07/10(金) 18:17:09
>368 >381 >382 >374さんや自分が書いたように商品名〜仕入日まで固定で1行がベストです。あとは>384さんが付加した 項目は必要に応じてということで。 行数は増えます。全部で商品名が50種類あって、毎週全種類の商品を2回ずつ仕入れると毎週100行ずつ 増えます。 しかし、商品名で絞れば(フィルタ機能)、日付毎の仕入価格、販売価格は一覧できるし、さらに 仕入価格での並べ替え(ソート機能)も組み合わせればやりたいことはできると思います。 データを入力する際、商品名、仕入れ先をその都度(毎日のように?)入れるのは大変かもしれませんが、 「データの入力規則」機能でリストを指定しておけば、▼をクリックして選ぶだけ、ということも可能です。 入力間違いもありません。 アクセスを使わなくても、「おばちゃんが一人で」管理している程度ならエクセルで十分と思いますよ。
>>381 >>375 のエクセルのバージョン答えてないよね?
シート名はどうでもいいけどバージョンは分からないと困ることがある
仕入販売の記録と商品別のデータは分けて管理するといいと思うんだが
例えば
仕入
仕入日、商品名、仕入先、仕入価格、数量
販売
販売日、商品名、販売先、販売価格、数量
商品
商品名、定価、(その他商品の情報)
といった感じに分ける
仕入販売の記録は月別や年別にシートを分ける
それと販売日とか在庫の管理をしてないけど
生ものだから「仕入日=販売日」なのかな?
商品マスタを別につくるのはいいとしても、月別、年別にシートを分けるのはお勧めしない 単に集計がめんどうになるだけ
実は1日1万件のデータを処理できる、ものすごいおばちゃんだったりして とりあえず、月に何件ぐらいのペースで仕入れデータが増えるかによって Excelでも十分かAccessが必要かがかわってくるから
どっちにしても、そのおばちゃんがやめたら会社終了じゃん すげーな
390 :
386 :2009/07/10(金) 18:40:43
>>387 年別に分けたほうがいいと思ったのは10年くらいで1シート埋まってしまうからだ
そこまで使い込むことを考えないなら別にいらない
>>368 もし色んな方と仕事の進め方を手分けして取り決め出来るのでしたらエクセルよりも
アクセスとかのデータベースでの管理をやった方がいいような気がするんですが。
392 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 18:49:51
質問させて頂きます。あるアプリが、データをCSVに出す機能があります。 Excel2007が自動で起動しますが、年月を示すデータ(「09/07」の形式)が、 「9月7日」と表示されてしまいます。これを「2009/07」と表示させる為には どうすれば良いですか?入力時の問題ではありません。
>>392 セルの書式設定での話でしたらユーザー定義でyyyy/mmと入力すれば解決すると思うよ。
394 :
378 :2009/07/10(金) 19:02:19
>>379 ,380
レスありがとうございます。
結局、EXCELをアンインストール、インストールすれば良い
という事でしょうか?
>392 Excelを自動起動させずに、手動起動させてから読み込んでも自動的に日付と見なしてしまうので、 読み込んでから作業列を使って当該項目を変換するしかないと思う。 例えば、A列が問題の項目の列、X列を作業列にすると仮定して A2のセル(2009/9/7となっている)を変換対象とするX2セルの計算式は =DATE(2000+MONTH(A2),DAY(A2),1) となります。これにより、X2セルの内容は 2009/7/1 となります。 X2セルを下にフィルコピーしてからX2:X最終データ行 をA2:A最終データ行まで 「値だけコピペ」した後、セルの書式設定で yyyy/mm にしたらどうですか?
396 :
393 :2009/07/10(金) 19:12:39
間違えた mm/dd です。
397 :
393 :2009/07/10(金) 19:15:03
ごめん yyyy/mm でよかったか。orz
398 :
379 :2009/07/10(金) 19:19:16
>394 OfficeのCD−ROMはありますよね? まずはネットに紹介されてたように、「インストールしてるけどSKU033.CABがないよ」っていう 画面で、OfficeのCDをセットしてみたらどうですか? たぶん画面のどこかにインストール元 を指定するボタンとか[参照]ボタンとかあるはず。 どうしてもわからなければアンインストール・インストールってことになると思うけど、それは 最終手段だし、プロダクトキーが必要になるかもしれないので事前に確認しましょう。
もしかしてC:\msocacheを消してない? これ消すとOfficeが起動できなくなったり再インストールの画面が出たりアイコンが化けたりするから注意な。
A1に7月と入力し、B1に=Left(A1,1)と入れたとき、7は数字なの?文字なの?
文字やろ
403 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 21:10:39
数字だよ
404 :
394 :2009/07/10(金) 21:11:14
>>398 レスありがとうございます。
そもそも、インストールのプロセスに入る事自体がおかしいので
アンインストール、インストールしたいと思います。
405 :
名無しさん@そうだ選挙にいこう :2009/07/10(金) 21:12:50
Dim A1 As String. B1 As String A1 = "7月" B1 = Left(A1, 1) Dim A1 As String. B1 As Integer A1 = "7月" B1 = Left(A1, 1)
>401 left関数は文字列関数なので結果は文字ですね。 たとえばA1セルに数字を入れて、B1セルに =A1&"" としただけでも文字になる。
(・3・) エェー!
>>399 残念だね。シート2にあってシート1にないものは
>>360 じゃ無理じゃね?
二次元配列にするとか工夫すれば出来ないことはないけどな。
ピボットで複数の範囲で集計して、どっかにコピーしてからシート1のデータが空白になてるものを
オートフィルターが簡単。
>>392 です。
>>397 通常有効ですが、データが既に変わってしまってます。
>>395 法則修正でやはり手作業入りますか。でもよい方法ですね。
皆様レス有難うございます。
401の例で、B1は文字の7のハズ。でもC1に=B1+1にすると、8になる。 これってエクセルのバグ?
>412 B2に '7 と入れて、C2セルに =B2+1 って入れても 8 になりますよ。 バグというよりも親切機能では?
非明示的な型変換 親切機能だ
(・3・) エェー!
>368のとこの「経理のおばちゃん」まだ仕事してるかな?
>>415 ごめん、ボルジョアの名前を落とすだけなら発言しないでください
俺も元ボルジョアなんです。ちょっと悲しいです
本当に、お願いします
>>414 親切じゃない
VBAは「そういう機能」なんだ
∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< Perlモナー ( ) \_____ | | | (__)_)
>410 >シート2にあってシート1にないものは 質問からは読み取れないけど、想定しとくべきだな これで動く? dim i as long dim i2 as long dim n as long dim n2 as long dim Hai() as string n = sheets("シート1").Cells(Rows.Count,1).End(xlUp).row n2 = sheets("シート2").Cells(Rows.Count,1).End(xlUp).row redim Hai(n + n2 ,1) as string ' シート1のデータを取得しつつ、行番号を登録 for i = 0 to n - 1 Hai(i,0) = sheets("シート1").cells(i,1) Hai(i,0) =i + 1 next for i = n + n2 - 1 Hai(i,0) = sheets("シート2").cells(i,1) Hai(i,0) =i + 1 next ' Hai = 領域 のほうが多分早いけど
Hai(i,0) =i + 1 これ↓ね Hai(i,1) =i + 1 ' 続き ソート データが終わるまでループ i = 1 i2 = 1 データi2=i2 + 1を満たす間ループ i=i + 1 ループ i=1で、かつHai(i,1)<=nなら番号を取得 ループ
422 :
223 :2009/07/11(土) 13:01:53
おまいが書いたのを試してやるから、「ループ」なんて書かずに マクロを書いてくださいです、、
423 :
名無しさん@そうだ選挙にいこう :2009/07/11(土) 15:01:12
表の選択範囲を一行追加するプログラムを始めて作ったのですが美味くいきません、、、 実行時エラー '9' インデックスが有効範囲にありません。 と出ます。 誰かタシケテ。。。 Sub 一行追加() Worksheets("sheet2").Names _ .Add Name:="資産推移表", RefersTo:="sheet2!a1:h53" Worksheets("sheet2").Range("資産推移").Select With Selection .Offset(1, 0) _ .Resize(.Rows.Count + 1, .Columns.Count) _ .Select End With End Sub
>>423 電話からのレスだから宛にならんけど
・名前は「資産推移表」?「資産推移」?
・最初のOffsetは不要
・リサイズした範囲を改行せずSelect
あたりかな?
Range("資産推移")w
>>423 何行目ででる?
sheet2というシートがない、なんてことはないよね
427 :
424 :2009/07/11(土) 15:14:41
あっよくみたら改行してるだけで続いてるのか これだから電話は・・・・
767 名前:ひよこ名無しさん[] 投稿日:2009/07/11(土) 15:11:49 ID:QpFAayZv 表の選択範囲を一行追加するプログラムを始めて作ったのですが美味くいきません、、、 実行時エラー '9' インデックスが有効範囲にありません。 と出ます。 Sheet2が資産推移というシート名だった場合なんて設定すればこのエラーでないのでしょうか教えてください。。。 誰かタシケテ。。。 Sub 一行追加() Worksheets("sheet2").Names _ .Add Name:="資産推移表", RefersTo:="sheet2!a1:h53" Worksheets("sheet2").Range("資産推移").Select With Selection .Offset(1, 0) _ .Resize(.Rows.Count + 1, .Columns.Count) _ .Select End With End Sub 771 名前:ひよこ名無しさん[] 投稿日:2009/07/11(土) 15:14:19 ID:QpFAayZv おい、回答まだか。
430 :
名無しさん@そうだ選挙にいこう :2009/07/11(土) 15:19:01
>>426 とりあえず、1行目で出ます。
VBAのプロジェクトウィンドウを見ると、
Sheet2 (資産推移)というシートがあるのですが、この場合
Sheet2ではこのシートを選択したことにはならないのでしょうか?
>>430 Worksheets(2).
Worksheets("資産推移").
のどちらかを使う。2にダブルコーテーションはつけちゃダメよ
Worksheets("sheet2").
はsheet2という名前のシートが無いと使えない
マルチか、氏ね
433 :
名無しさん@そうだ選挙にいこう :2009/07/11(土) 15:41:48
レスありがとうございます。皆々様の暖かいアドバイスのお陰で大分改善できたのですが、 また、重大なエラーが出てしまい難儀して、ここにやってまいりました。 2行目で 実行時エラー 1004 アプリケーション定義またはオブジェクト定義エラーです というのが出ます。 Sub 一行追加() Worksheets(2).Names _ .Add Name:="資産推移表", RefersTo:="2!a1:h53" Worksheets(2).Range("資産推移表").Select With Selection .Offset(1, 0) _ .Resize(.Rows.Count + 1, .Columns.Count) _ .Select End With End Sub どうしたらいいでしょうか、、、
まるちぷる たいたんぱーっ!
>>169 即レスthx!
ヒントだけでも教えて下さい。
マルチ指摘するなら元のURL貼れよ馬鹿 質問だけあって終了じゃここの住民からすると気持ち悪いだろ
439 :
名無しさん@そうだ選挙にいこう :2009/07/11(土) 18:33:21
うるせーチンカス そんな義理ねーわ
441 :
433 :2009/07/11(土) 18:43:11
┌─┐ |も.| |う | │来│ │ね│ │え .| │よ .| バカ ゴルァ │ !!.│ └─┤ プンプン ヽ(`Д´)ノ ヽ(`Д´)ノ (`Д´)ノ ( `Д) | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U 〜 〜  ̄◎ ̄ . ̄◎ ̄  ̄◎ ̄ ◎−>┘◎
俺が勝手に向こうに貼りましたが、何か?
2chでは投稿者の同一性なんて確認しようが無いから この手で荒らそうと思えばいくらでも荒らせるな
確かに向こうのほうが時間遅いっちゃそうだな
で
Excel2007の新機能の重複の削除のバグ治ったの? 昨日VistaのSP2をインストールしたら重複しないものまで削除するバグがでなくなってるが。 下のような重複しないデータでも以前は削除されるものがあった。 a1 a2 a3 a4 a5 . . . . a99999 a100000
447 :
名無しさん@そうだ選挙にいこう :2009/07/13(月) 12:37:08
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 Alt+D データ フィルター Altキー使いの者なんですが、どういうわけかいつのまにか Alt+Dが効かなくなり、フィルタの解除などする際に困っています。 以前のようなつもりで Alt+D > F > S とやると、 Alt+F>S(=上書き保存) となり、慌てることがしばしば。 Alt+Dのあとで一旦「↓」を押せば「データ(D)」のリストに入れますが その一手間が非常にうざいです。 以前はちゃんと使えてたと思うんですが。
448 :
447 :2009/07/13(月) 12:39:15
すみません、1箇所訂正です。 【1 OSの種類 .】 WindowsXP SP3
>447 最初の Alt+D ってひょっとして [alt]キーを押しながら[D]を押す ってしてませんか? 正しくは、[alt]キー、[D]キー と順番に押すものですよ。 ※[Ctrl]キーの場合は [Ctrl]を押しながら です。 [alt]キーを押した時点で、メニューバーの ファイル(F) の部分が選択(ただしプルダウンではない) ついで[D]を押せば データ(D) のプルダウンメニューが現れ ・・・・というようになるはず。 自分の環境も同じですが、[alt]、[D]、[F]、[S]と順番に押して正常に操作できています。
>447 他のアプリのショートカットと重複とか? >449 同時に押しても同じでしょ?
451 :
名無しさん@そうだ選挙にいこう :2009/07/13(月) 14:02:07
>>449-450 レス、ありがとうございます。
>449
ためしにAltだけ押してやってみましたが結果は同じでした。
いつもAlt+○は同時に押していますが、ちゃんと作動するようです(この件以外は)。
>450
他のソフトを全て終了させてやってみましたが結果は同じでした。
メニューバーのうち、「データ(D)」だけがこの反応で
(一応、反転まではするのですが、プルダウンリスト出ず)、
ほかの機能ではプルダウンリストまで普通に表示されます。
メニューの中に(&D)がもう一個どこかにあるんでしょ
453 :
名無しさん@そうだ選挙にいこう :2009/07/13(月) 14:23:17
>>452 わかりました!
ツールバーの条件付書式がDでした。
カスタマイズするときは要注意ですね。
助かりました。ありがとうございます!
>>453 ∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
Excel2000ですが、コメントの書式を変えられますか? ググったら、Windowsの設定を買えないとダメぽみたいですが、 裏ワザ的なことを知ってたら教えてくりん。
x 買えないと o 変えないと
>455 フォント、サイズ、書体(太字、イタリック、下線)、文字の色、コメント欄の色 は変更できるはず。(自分は2003なので2000とは違うかも)
>>457 どうやんの?
(Windowsの設定以外で)
あ、コメントの書式を変えるというか、デフォルトに設定したいのねん。
460 :
457 :2009/07/14(火) 08:47:25
>455 自分もデフォルトの書式の変更方法は知らない。
461 :
名無しさん@そうだ選挙にいこう :2009/07/14(火) 10:01:31
行挿入で書式や入力規則はコピーされますが、数式がコピーされません。 そこで1列目の値入力時点(Changeイベント)で数式をコピーするマクロを作成 したのですが、今度はUndo(元に戻す)が出来なくなる事に気付いた。 Undoを生かす為には、数式のコピーを関数等(マクロ以外)で実現すれば良い と思うのですが、何か方法がありますでしょうか?
>>461 質問の意味がよくわかんない。
「挿入」メニューの「行」だと、挿入されるのは空白だし、
「コピーしたセルの挿入」「切り取ったセルの挿入」だと、
数式もちゃんと挿入される。
何をどうやって挿入したいの?
464 :
461 :2009/07/14(火) 11:21:10
>>462 説明不足でした、オートフィルタを使うデータシートなので、
行を追加/挿入するのに、挿入コマンド1回の操作で数式も含めて
コピーする方法が無いかなぁと考えた次第です。
>>464 途中に挿入じゃなくて最下行に追加してくという形なら
Excelの親切機能が働いて勝手に数式コピーしてくれるんだけどな。
(
>>170 からの流れも参考に)
466 :
461 :2009/07/14(火) 13:58:48
>>465 ありがとうございます。
最下行への追加で書式と数式のコピーを確認できました。
最下行選択で挿入とやれば入力規則もコピー出来ます。
# 数行のデータでテストしていたからダメだったのですね...
467 :
466 :2009/07/14(火) 15:54:11
最下行への追加時のコピーですが、 =ROW()やMACH関数等の数式はコピーしてくれな様です。 何かやり方間違っているのかな?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 入力規則 元データ更新を反映 Excel2007で入力規則でリストを使用しています。 もともと「りんご」をリストで選択していたとして リストの元データの「りんご」を「めろん」に更新したら リストで「りんご」を選択していた部分を「めろん」に自動的に更新できないのでしょうか? やはり手動で「りんご」を「めろん」に置換する方法しかないのでしょうか? どうかご教示をお願いいたします。
入力規則のリストで、元データとリンクしているのは あくまでもリスト([▼]押して出てくる奴)であって 入力規則を設定したセルの値ではないから VBA使わない限り自動更新はできない
ありがとうございました。
CTRL+Hで置換すればいっぱつだけどね
472 :
名無しさん@そうだ選挙にいこう :2009/07/14(火) 18:41:47
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 オートフィルタ 単位 印刷 Selection.AutoFilter Field:=1, Criteria1:="1000000" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Selection.AutoFilter Field:=1, Criteria1:="1011010" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Selection.AutoFilter Field:=1, Criteria1:="2010203" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Selection.AutoFilter Field:=1, Criteria1:="4100502" ・・・以降延々と続く 自分がいつも行っている作業のマクロを記録してみたら 上記のようになりました。 A列(コードが入力されている)でフィルタをかけ、 フィルタの結果単位で全てを印刷をしています。 Criteria1:=" "というのが抽出条件となる文字列だとわかったのですが 実際にはA列に「1000000」〜「9999999」の文字がランダムにあり、 途方にくれています。 どのように抽出条件を設定すればよろしいでしょうか、 ご教示よろしくお願い致します。 なお、コードは必ず7桁で、取り合えず印刷さえできれば良いです。 (改ページなど細かい印刷設定は不要)
>>472 改ページが不要なら、A列でコード順に並びかえて印刷すればいいんじゃないの
>472 >475さんに補足。 1 A列のコード毎にページ替えが必要と思われるので、この機能が必要ならばVBAコードを 考えますよ。(下記2〜4のことも考慮して) 2 並べ替えと印刷を行った後にデータの並びを元に戻すための列が必要。 3 並べ替え(ソート)キーがA列だけだと、ひょっとするとオートフィルタを使ったときと コードが同じ場合に並びが変わるかもしれないので、上記2で設ける列をソートキーに 加えることで並びが変わるおそれはなくなる。 4 印刷後のデータを元の並びに戻すのとあわせて、改ページの解除も忘れずに。
477 :
472 :2009/07/14(火) 19:59:12
>>475 さん
コード単位で印刷する必要があり、その為にフィルタを使って印刷していました。
改ページ設定が不要というのは1コード内で設定が不要という意味です、
すみません。
>>476 さん
ありがとうございます。
考えて頂けると助かります。(毎日100コード位印刷することになりそうなので・・・)
補足させてもらうと、コード自体はランダムですが、既に1コードごとにまとまっています。
(例:A2〜A100が「1000000」、A101〜A150が「2010101」・・・)
なので、フィルタ単位で印刷というより、A列のコードが変わる度に
改ページ設定をするVBAコードを考えて頂いた方が良い気がしてきました。
もちろん、476さんが提案して下さったものでも構いません。
よろしくお願いします。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】いいえ 【4 VBAでの回答の可否】 否 こんばんわ、質問です。 今顧客番号で重複があるかどうかを調べるにはどうしたらよいでしょうか? B列の番号を使い、A列に重複するものは省いてB列のみ存在する番号を探したいです。 よろしくおねがいします。excel初心者ですすいません
VLOOKUPでフラグたてる
これこそVBAでやるべき
>>478 C1=MATCH(B1,A:A,0)
C2以降下までオートフィル
んでC列でオートフィルタかけて#N/Aだけ抽出すればBのみの数字を絞り込める
482 :
476 :2009/07/14(火) 20:40:55
>472,477 印刷対象のブックは毎回、新たに発生するんですか? 自動化したい処理というのは「A列のコードが変化するたびに改ページ指定を行う」 ただそれだけ? 印刷後の改ページのクリアもいらない? それでいいのであれば、このマクロを専用のブック("プログラムブック.xls")に入れておいて、 処理対象のブックとプログラムブックを同時に開き、処理対象ブックをアクティブにした状態で マクロを実行する、という手順でいけそうですね。しばらく待ってもらえますか。
>>481 おぉ・・・できたかんじです。
データが会社にしかないので実際見てみないとわからないですが
明日やってみます。両方4000件くらいあるのですが、#N/Aだけをどっかの列に
抜き出しとかはできますか?
484 :
472 :2009/07/14(火) 21:08:01
>482 印刷対象のブックは毎回新たに発生します。 印刷後、ブックは破棄してしまうので(完全に印刷用)改ページのクリアもいりません。 実は実際にマクロを実行したことがないので、 後半の記述がちょっと理解できませんでしたが 作って頂けましたら自分で調べて実行したいと思います。
>>478 >>223 で盛り上がったがgdgdになった。
A列とB列のデータ量で回答もかわる。
ほんの少しならCOUNTIFやMATCHの0検索で十分だ。
>472,484 「後半の記述」について説明します。 一般に、VBAマクロは処理対象のブックに書き込んで動かしますが、処理対象ブック(データ)と VBAマクロを記録しているブックは別々でもできます。 このスレに書き込まれたマクロを実際にExcelに記録して動かすまでの手順の説明は長くなりそう なので、できれば職場で詳しい人に聞いてもらうとありがたいです。もしくは、そこらへんの手順を 画面入りで解説したサイトをご存じの方、よろしく。
>>483 抜き出し、がよくわからない。消すってことでいいのかな
C列全体選択してコピー、値で保存
置換で#N/Aを空白に置き換えればいいかもしれない
後者だけでもいけるかもしれない
>>483 読んでなかった。
4000件ならMATCHの0検索で十分だな。
抜き出しも
>>481 が書いてるじゃん。
まさか関数でやろうってんじゃないだろうな?
>>488 すいませんでした。
件数が大量にあったので#N/AとBだけにある数字をどこかに並べられたらな
と思ったのですが。
オートフィルタの使い方がちょっとわからなかったので
何打これで上の質問をしてしまいましたごめんなさい
>>463 試したけど、新規ブックでは使えたのに、既存のブックだと
なぜかエラー続出で使えませんですた。
新規ブックでも、使い勝手はイマイチ・・・
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000、2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 シートが20〜30枚くらいあるファイルで、各シートの同じ位置の数値の合計を求めるとき、 VBAを使わずに簡単に集計するにはどうすればいいですか? 集計するシートを仮にSheet0にし、A1セルに=Sheet1!F100、A2セルに=Sheet2!F100と書き、 オートフィルしても連続しなかったので、他に方法があれば教えてください。
・シートをグループ化してSUM ・串刺し演算 ・統合
493 :
491 :2009/07/15(水) 00:03:33
>>492 お、できた!
ありがとうございます。
エクセルを使って5年くらい経ちましたが、串刺し演算なんて初めて知りましたw
>>493 串刺し演算とセルの結合は覚えないほうがよい機能です。
10年使ってるが初めて聞いたw 串刺しってなんだ?
△串刺し演算とセルの結合は覚えないほうがよい機能です。 ○串刺し演算とセルの結合は半端に覚えないほうがよい機能です。 ◎串刺し演算とセルの結合はきちんと覚えたほうがよい機能です。 これらは半端に覚えると、余計な問題の種になる。 正しく使いこなせてれば大丈夫だけどね。
でもDQNは結合セルをよく使うよなぁ。 結合セルの問題を自分で解決出来ないやつは使うべきではないと思うな。 質問しても嫌がられるだけだ。
同様にsumifとcountifも使うべきではない。 問題を自分で解決できないやつが多いからな。
出たなピボット厨w どっちかつーとお前の意見には賛成だけどな。
>>497 職場で、コピペできないんだけどとか質問してくるやつは結合してるに決まっているから、最初から相手にしないようにしている。
画面を見るまでもない。
>>498 式が1個なら使ってもいいんだよ。
複数になると無駄だけどな。
それからお前ピボットとVLOOKUPさえ覚えればいいとかいうDQNじゃねーだろな?
> 結合セルの問題を自分で解決出来ないやつ ってのが半端にしか使えない奴ってことだろ 結合のメリットデメリットや特性を理解していれば 問題は解決できるはずだから
コピペできないのは結合のせいなんで結合をやめろというと、できない理由を説明し始めるが意味不明なんで聞かないことにしている。 最後はなぜか逆恨みまでされて、もういいよなんて捨て台詞はかれて。 最初から相手にしないに限るな。
>>501 ピボットとVLOOKUPだけでなんでもできるよ。
君はExcelで何がやりたいの?
そのために必要な機能は何?
>>501 複数だと無駄になるとか意味がわからない。
問題が解決できれば無駄ではない。
>>505 たとえばA列に沢山の品目があって各品目のB列の合計を出すのに重複しない品目を求めてSUMIFなんて無駄だってわかる?
分らなければ見込みがないなぁ。
>498 ついでにSUMPRODUCTも混ぜておいてくれ。 後のことも考えて作業列使っとけ。
>>504 「VBAで」なら解るが、ピボットとVLOOKUPじゃたいしたことは出来ない
クロス集計とリスト検索くらいしかやらないならピボットとVLOOKUPだけでいいかもしれないが
Excelはクロス集計ソフトではなく、汎用的な表ソフトであり計算ソフトであるわけだからな
つーかクロス集計しかやらないなら、もちっと柔軟でマシなソフト使うわw
>>507 SUMPRODUCT好きには6ナノはいないと思うが、ピボットなら作業列は要らないこと多いじゃん。
なんせ数式なんて使わないんだから。
おバカな俺にピボットテーブルとVLOOKUPの便利な使い方教えてくれない? VLOOKUPをどういうとき使うか思いつかん。
SUMPRODUCTも式が1個なら全然問題ない。 フィルコピーする奴はバカだけどな。 配列数式も同じ。
>>512 違いが分からなければウイザード使っておけと思う。
今から覚えるなら柔軟なmatch+index使っておけと思う。
lookup?イラネ(゚听)
VLOOKUPよりMATCH+INDEXのが指定できるセル範囲が広い この違いは大きい
515 :
510 :2009/07/15(水) 10:40:36
トンクス。 なんだ俺の勘違いか。ピボットテーブルとVLOOKUPを組み合わせるのかと思ったよ。
機械語覚えとけばパソコンのソフト上の問題は全部完結するから機械語覚えとけばいいよ
>>513 VLOOKUPイラネなら分るが、LOOKUPは使い道は結構あるよ。
たとえば
>>478 だが、A列のA2:A10000が昇順にソートされてて、B列のデータがA列にあるかないかを判定するにはINDEXとMATCH使うよりLOOKUPがずっと簡単だよ。
下なら軽さはどれもほとんど同じだが、どれが簡単か一目瞭然だ。
=IF(B2<A$2,"無し",IF(B2<>LOOKUP(B2,A$2:A$10000),"無し","有り"))
=IF(B2<A$2,"無し",IF(B2<>VLOOKUP(B2,A$2:A$10000,1,TRUE),"無し","有り"))
=IF(B2<A$2,"無し",IF(B2<>INDEX(A$2:A$10000,MATCH(B2,A$2:A$1000,1)),"無し","有り"))
ちなみに使えない駄目な式
=IF(ISNA(MATCH(B2,A$2:A$10000,0),"無し","有り")
=IF(COUNTIF(A$2:A$10000,B2),"有り","無し")
常識は取り消すかな? 知らないやつが爆発するといけないから。
俺も517程度で自慢したいとは思ってねーよ。 アホかまったく。
俺も常識レベルの話だとは思うが、わざわざ LOOKUPに適した例を上げて「どうよ?」ってどうよ? ご丁寧に駄目な式まで用意する点はヲタだと思うがw あと、>512よりは>513の意見を支持する。 まぁ最後の1行は余分だけどな。
僻み根性のやつはホット計
質問したいことがあったけど 昼間っから2ちゃんねるで遊んでるひきこもりに聞いても無駄なのでやめました
俺仕事中のリーマンだよ 仕事無いよ
とひきこもりの525が申しておりますw
vlookupで済むならvlookup使うなあ ひとつで済む関数あるのに、わざわざ関数組み合わせるのは読みにくいでなあ
重複の判定も、使い捨ての関数使うよりはフィルタオプション使うなあ 比較するリスト出来上がってるみたいだし、即時性が要求される処理でもないのに関数使うのはアホくさいでなあ 好みの問題か
何がなんでもvlookup使われても困るんだよなー
>>529 同感。実際その場面に自分が立てばどちらが早くて正確かの判断はできるだろう
ブックや仕事の内容によってどちらが有利か変わるんだから似たような機能を論争するのは不毛だと思う
⌒ __ 、__ノヽ___ ノ / ´ | | , . .── 、 ヽ い ど そ ( /\ / | | /: : : : : : : : : :f' ゚ヽ。 | い う ん `7 \ \ | |, ': : : ,ャ: : :/: : : : :ゝzソ:|ん だ な | \ \ Lj! 」! : : X {: : : ,': : ノ!、: l: : ,'|で っ 細 | \ヽ > /"|! Vレ乃ホ、__ .:;z≦)ハノ_./: ノ す て け | \ !! /:/弋ぅ′ ら...刈/7: :`! よ ぇ / \ |!7: :入 __ `¨x.i.F7': : : | こ | /: :/ 丶 _ー '_rノヽ): : : :ノ た | С彡 |: :.! /| /~| /( :/:::!: : : ヽ ぁ | ハ: { |::|,⌒K{:ヽ ヽ、| : : : : ) ( |::|^丶/Y /:ハ:リじ \: : :⌒⌒
Windows Vistaです。 Excel2003です。 マクロなんていじったことないのに、開くたびにマクロを有効にしますかと出ます。 なんでですか!!!!!!!!!!
>>533 マクロが入ってるんです
邪魔ならセキュリティ設定を変更しましょう
>>529 ん?普通フィルタオプションで関数使うだろ?
>>508 Excelでクロス集計できるのに、わざわざ別のソフトを使うのはなんで?
どんなメリットがあるの?
おすすめソフトは何?
>>509 誤解だな。
ピボットテーブルと作業列は相性いいよ。
クロス集計ソフトってなに?そんなの売ってるの?
>>508 プログラム作るんなら他にいくらでも選択肢があるのに、なんでExcelなんかでやってるの?
>>534 誰がマクロいれたんですか!
セキュリティ設定高めがいいです。
>>540 >>誰がマクロいれたんですか!
知るかw
542 :
名無しさん@そうだ選挙にいこう :2009/07/15(水) 22:29:41
Excel でy=x^2を微分して理論値と比較しろと言われたんですが・・・どうやるんですか??
数学の問題はスレ違い
>>542 Excelは微分できないよ。
でもx^2くらい自分で微分できるよね。
ピボットテーブルは集計するのが目的ではなく、ピボットそのものを使うのが目的な野郎が大杉www
>>545 考え杉
集計にはほとんどの場合ピボットが最善だからピボットを使うだけの話
547 :
名無しさん@そうだ選挙にいこう :2009/07/16(木) 01:00:40
で、このスレにいる先生は「ピボットが使えるデータを作れ」という。 ピボットが使えるよう考えられたデータなら、誰も苦労しないっつーのwww
>>547 ピボットが使えるようなデータ形式を考えることこそが仕事。
VBAで遊んでいないで仕事してよ。
>>547 苦労するのをやめようという発想はないの?
>>542 微分の意味を知っていればそんな質問にはならん
エクセルの問題以前だな
>>542 xを適当な刻み幅で変化させて(x,y)の座標をプロットしていくと
放物線に近い形の折れ線のグラフになるよね?
それとy=x^2の放物線を比較しろって話だと思うよ。
具体的にはxを適当な刻み幅で変化させた時に
各xでの折れ線の傾きと放物線の接線の傾きの差か比を求めていって
それをさらにグラフにでもしたらいいんじゃないかな
よくわかんねーけど
>>551 意味不明。
知らないことを無理に回答しようとしなくていいよ。
高卒だと分からんかもしれんが 大学の教養課程の情報処理の授業とかでありがちな課題だよね 昔だとFortranでプログラム組ませられたりしたけど 今ならExcelって事になるのかな
概念としてはランダムプロットで円面積を求めるのと同じなんじゃね
555 :
名無しさん@そうだ選挙にいこう :2009/07/16(木) 17:49:43
数学嫌いな俺からしたら微分という言葉を聞いただけで氏ねと思う。 答えたい数学バカはだまって答えだけ書くかスレ違いなんだから他いけと書けよ。 質問が変なら「勉強しろカス」でいい。
質問の内容がはっきりしないのは確かだが エスパーが答えてくれてるんだからそれでいいじゃねーか ずっと粘着してる奴は何なの? 反論があるなら少しは質問内容に関する事書けよ馬鹿
>554 円周率でわ?
なんだかんだいってもぐぐれとは言わないんだな。
理論値と比較っていうくらいだから、実際に微分しちゃいかんのだろう ランダムな2点を直線で結び、それを無数回繰り返すとか
>>560 君はExcel使う必要ない人なんだから絡んでこないでね。
パソコン一般板総合質問スレから誘導されてきました。 【1 OSの種類 .】 WindowsXP SP3 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Excelキー割当て、標準ショートカットキーの無効化 Ctrl+I でエクセルのカーソルをひとつ上のセルに移動させるVBを作ろうとしています。 PERSONAL.XLSは C:\Documents and Settings\Administrator\Application Data\Microsoft\Excel\XLSTART にあり、 VBA Project(PERSONAL.XLS) の標準モジュールで Option Explicit Public nRow As Long Public nCol As Long Sub auto_open() Application.OnKey "^I", "toUP" End Sub Sub toUP() nRow = ActiveCell.Row nCol = ActiveCell.Column If nRow > 1 Then Cells(nRow - 1, nCol).Select End If End Sub
>>560 普通はデータベースから取得するもんだと思うがね。
社長の会社はそういうの構築してないの?
零細なの?
>>564 VBA解りませんが"toUP"があやしい。
とチラシの裏に書いてみる。
>>566 構築してるよ。
CSVで吐き出されたのを、採算とか販売とかエロエロと。
そのCSVを加工するなら、いきなりピボットじゃなくてVBAで整えたりしないか?
0で始まるデータとか。
VBAで加工するなら、そのままVBAで集計まですればいいだろ?
わざわざデータを整えて、ピボットを使うのが目的な野郎がこのスレには大過ぎる。
>>565 俺は怪しいのは使ってるときのCAPSROCKの状態だと思うけど
それ以上に「なぜ矢印キーひとつで済む動作にショートカットの割り当てが必要か」が気になるw
>>568 俺のとこも変なソフトが吐き出すデータが正規化されて無いデータだった
俺はそれをVBAで整形してVBAでピボット使って集計してたよ
多分これが一番早いと思うんだけど、どうだろう
今は会社の売り上げも伸びて中小になれたので、1から構築しなおしてアクセス使ってますが
571 :
565 :2009/07/16(木) 23:06:57
>>567 "toUP"の名称がよくないってことでしょうか?
>>569 CAPSROCKはオンでもオフでも症状は一緒ですね…
ホームポジションから手を離さずに操作したいから矢印キーは使わないって人は少数派なのかな。
お前ら・・ 「CAPSlOCK」
>>571 キーボード操作苦手だからその需要は気付かなかった。結構需要あるのかもな。
念のため聞くけどExcel終了して立ち上げて(Auto_Openを走らせて)からやっても同じ症状?
>>572 いいじゃん岩でも、ってことないかすまんなー
x 大過ぎる o 大杉る
575 :
565 :2009/07/16(木) 23:19:49
しつれーしました。ROCKに何の疑問も抱かなかった。
>>573 同じですね。
>>570 なんでわざわざVBAで整えてピボットなんだよw
ピボットを使うのが目的な野郎がこのスレにはタタ過ぎる。
>>575 いつも携帯で見てるけど気になるからExcel立ち上げてやってみた。
OnKeyのなかの大文字Iを小文字iに変えてみそ。俺も勉強になった。
ちなみにマクロの中身は一行で書ける程度の中身だろ
if selection.row >1 then selection.offset(-1).select
578 :
565 :2009/07/16(木) 23:37:39
>>577 ワンライナー様ありがとうございます。問題は解決しました。
キー割当ての表示は大文字というのが自分の中で普通になってました。"^I"と"+^i"が同じみたいですね。
これでようやくエクセルのカスタマイズに取り組めます。
自分がテストに使ったコード書いちゃったけどエラーを減らすなら selectionはactivecellに置き変えた方がいいな まあ解決したならよかった
>>576 マクロの記録したらそれだけで完了するからなぁ。やれば分かるけどすげー楽だよ。
VBAに強力な集計機能欲しいところだけど、もしかして既にあるの?俺は知らないんだけど
>472 おそくなってしまいましたが、改頁処理だけ行うVBAマクロできました。 Option Explicit Dim cur_sheet As Excel.Worksheet, start_row As Long, sv_code As Variant Dim cur_row As Long Sub 改頁設定() Set cur_sheet = ActiveSheet If cur_sheet.Name = "Sheet0" Then MsgBox ("改頁処理を行うシートをアクティブにしてください") Exit Sub End If If MsgBox("改頁処理を始めますか?", vbOKCancel) = vbCancel Then Exit Sub End If start_row = 2 ' データの開始行位置 sv_code = cur_sheet.Cells(start_row, 1).Value cur_row = start_row + 1 Do While (cur_sheet.Cells(cur_row, 1).Value <> "") If cur_sheet.Cells(cur_row, 1).Value <> sv_code Then cur_sheet.Rows(cur_row & ":" & cur_row).Select ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell sv_code = cur_sheet.Cells(cur_row, 1).Value End If cur_row = cur_row + 1 Loop cur_sheet.Cells(start_row, 1).Select MsgBox ("改頁終了") End Sub
>581の続きです このプログラムをマクロブックの標準モジュールに書いてください。 マクロブックにはシートをひとつだけにして、シート名を"Sheet0"にしてください。 データブックの方はブック名は自由、シート名は"Sheet0"以外OKです。 >482にも書いたように、マクロを実行するときはまずプログラムブックを開き、次に処理対象の ブックを開いてデータのある方のシートをアクティブにしてから[Alt]を押しながら[F8]で マクロ一覧を開き、プログラムブック名.xls!改頁処理 を選んでから[実行]をクリックします。
>>576 正直いってピボット使うのが目的だ。
VBAでピボット作るのは無駄。
VBAを使うことが目的になってしまう。
>>568 社長自らVBAで販売の集計?
トウチャンカアチャン工場かな?
零細は大変だな。
>>568 0で始まるデータで困ったことなんかねーよ。
外部データ取り込む時に文字列選んでないだけじゃないの?
VBAの出番が一つ消えたな。
メーカーコードが01234とか、注文番号が09031201とかで、CSVを一旦テキスト化して 開かないとお節介機能で0が消されて困るときがあるけどな。
>正直いってピボット使うのが目的だ もうね(ry
データをマクロで整えて、ピボットで集計? 定型フォーマットなら、マクロ組んで使い回しができるじゃん? それとも、毎回集計方法が違うなら、仕事のやり方を 変えた方がいいと思うがな
>>588 定型フォーマットはデータベースから直接出力したらいいのに。
なんでわざわざVBA?
>>586 そんなの全然困ったことないが。
使い方おかしくないか?
>>588 定型集計業務を個人作成のVBAに頼るような仕事のやり方は変えたほうがいいと思うよ。
いくつか前のスレッドで、国別の輸出入収益を求める質問があったけど、VBA回答が大変みっともないことになってたの覚えてる? 輸出データがなくて輸入データがある場合の処理がもれてたりしてさんざんだったね。 ピボットテーブルなら作成者本人も、レポートを受けとった人も両方安心できる。 どんな集計したのか見ただけでわかるからね。
>>584 零細はマジで大変だよ。しかも相当変なことをしているという実感はもってらっしゃらない。
>>368 なんか見ればどれだけひどいか分かると思う
エクセルを購入しようと思いますが、どのバージョンがいいんでしょうか? windowsでお願いします
>>594 一番使われているのは2003ですが、今でも購入できるのは2007だけです
それ以外のバージョンは中古を探さなくてはなりません。
たとえば仕事を持ち帰りたいなら職場と同じバージョンにしないと困ることになります。
そうでなければ最新の2007で問題ないでしょう。
>>594 使いすいのは2003だけど2007の方が機能は上
2007のメニューバーを変更できるソフト(無料)を使えば似たよう感じになるらしい・・けどどこにあるかは知らない
もしくはopenofficeってソフトなら無料。OOoで検索かければ出てくる
2003が使いやすいってただのジジイかミニノート限定だろw ジジイどもは慣れてるから2003がいいだろうけど これから始める奴に勧めんなよ まだ自分中心にしか考えられないのかジジイのくせに
だからさ 誰がどういう目的で何を使うかなんて自由じゃん 俺はピボットなんて面倒だから触りたくないけど、だからってピボット使う人に敵愾心持つなんて無意味だし そもそもじゃあなんでエクセルやらVBAやら使うかって話になるんだけど、顔真っ赤にしてる人は機械語でマシン操作でもしてるのか?
またピボットの話ですか・・・_| ̄|○
この話題って100%ループするよね 宗教みたいなもんじゃないかな?神はいる!とかいない!とか VBA使いからすればVBAの方が早いんだろうし
自分はExcel上級者と勘違いしてる奴は新しいこと知ろうとしないからな ピボット使わないでクロス集計してるVBA使い(笑)は、目的地に行くのに車に乗らないで 車作ってから乗り込むようなもんだからな。しかもボロボロの穴だらけの車。はために明らかにアホなんだよ
>>602 クロス集計のみをVBAでやる奴は居ない、想像の中だけ所謂仮想敵
他の事やったついでに集計なりシート関数でも出来るような事するんだろ
ピボット厨は何でVBA毛嫌いするんだろうね。 世の中Excel2007持ってる人ばかりじゃないんだが。
do while FLAG = 0 SELECT case FLAG case 1 msgbox ”ピボット” FLAG = 2 case 2 msgbox ”VBA” FLAG = 1 case else FLAG = 0 end SELECT RES = RES + 1 IF RES = 1001 then exit do loop
ピボット使う奴はVBA嫌いなわけじゃない。もちろんVBAも使うさ VBAでピボット相当つうか未満の処理を書く奴がバカにしか見えないだけ ピボットテーブルを開始するVBAなら納得だけどな
つかなんで2007持ってるとか関係あんだ? 少なくとも2002位からはピボット普通に使えるぞ? お前もオートフィルタ使わないで、抽出条件に該当しないレコード行を 一行一行非表示にしてくアホ見たら、そいつアホだと思うだろ 同じこと
2007じゃなければピボットが使えないケースってたまにあるんだが。 おれなんか2000使ってた頃ピボット使うやつは零細企業レベルなんだろうなと思ってた。
ピボットテーブルの一番典型的な使い方の品目ごとの合計はVBAで1分、品目ごとの月別の合計なんて3分もあれば書けるしなぁ。 穴なんか開くわけないし。
2007はマクロの記録に欠陥があるからなあ。 2003までは普通にできてたことが記録されなくて、 Googleで調べて修正しないと使えるマクロにならない。
>>609 時間かかりすぎ。ピボットなら品目ごとの合計は10秒、月別にしても15秒もかからん。
データ範囲選択したらメニューからピボット選んで完了クリックしてアイテムをポンポンとドラッグ。
最後にフィールドの設定を「合計」に変えるだけ。
大企業がエクセルのピボットやVBAで集計作業とかするもんなの? やるとしても2ちゃんに頻繁に書き込みしてるような連中に それらを任せてるような企業は 社員教育を先にどうにかした方がいいよ
>>612 一番納得したけど問題なのは論点が違うことだな
>>611 だからピボットが使えないケースがあるんだよ。
お前97でもピボット使ってたんじゃねーの?
>>605 FLAGと称してBoolen型でない値を使うやつは
間違いなく素人。
>>614 ピボットが使えないデータはVBAで使えるデータに整形する。
それが正しいVBAの使い方だよ。
両方使えるならどっちがラクで早くて正確かなんてわかりきった話だ。
もしかしてピボット使えないわけ?
大企業の方がデータの蓄積あるから現場レベルではピボット使いまくりなのが普通なんだけど? また自称基幹系システムエンジニアの妄想かwwww
基幹系さんはデータの蓄積と分析がごっちゃになってる まあ仕方ないか。脳内基幹系だから
>>616 なんか分ってないなぁ。
じゃぁさたとえばExcel2003のピボットで50000行で35000種類の重複しないレコードを網羅してみろよ。
>617 >大企業の方が ワロスwww
******************** EXCELヲタ徘徊注意報 ******************** マニアの自己満足レスが 頻発しております。 相談者の方は警報が解除 されすまで今しばらくお待 ちいただくようお願いします。 ******************** EXCELヲタ徘徊注意報 ********************
自分でケツ拭けないからまたそれかw まーこんなもんだなここは
自分の考えに合わないものはすべてヲタで済ませるやつは幸せだ 長生きするぜw
自己紹介はいいから仕事しろよ あと半日で3連休だからそこで好きなだけぼくの好きなぶいびーえーでも書けよ
>>612 銀行に勤めてるけど、事務なら一切使わない。システムに全て組み込まれてる。
営業の場合は予算、予定を立てる時なんかは自分の顧客データをデータベースから引っ張ってきて、後で行削除したりする程度だね
もしかしたらピボットを使える人がいるかもしれないけど、使ってる人は見たこと無いな
IT関連の企業や、システム部は知らないけど使わないんじゃないかな。使うのかな?
機会があったら聞いてみるよ。
初歩的な質問ですみません。 excel2007でセル内に文字を入力すると、勝手にセルが広がってしまうんですが、 この機能を止めることってできますか? セル幅を固定して使いたいのです。
>>626 新規ブックは必ず自動で広がるモードになっている。
固定するにはシートの保護機能を応用して「列の書式設定」を禁止するか、
一度でも幅を手作業で再設定した列は自動で広がらなくなる。
ありがとう。 でも保護機能を使うと入力できなくならない。 で、解除して入力すると広がる。
Ctrl+aで全体を選択したまま、A列の幅を変えれば全部の列が変更されるからそうしてみては?
ただ
>>627 のことは知らないので適用されるかは分からないけど
630 :
名無しさん@そうだ選挙にいこう :2009/07/17(金) 16:21:44
excel2007です。 シートのコピーをしても、図形がコピーされません。 図形もコピーできるようにするにはどうしたらよいのでしょうか?
>>629 おお、できた。ありがとう。
なんでこんな機能にしたんだろ。
今月から会社のエクセルが2007に変わって、
イライラしまくりです。
>>631 2003の機能を単純に強化したものをだしてほしかったのはよく聞きます。まぁ開発者がアホなんでしょう
その他仕様についても慣れるしかないですね
三枚目のおうち木に囲まれてのどかだけど絶対虫だらけだよなぁ
誤爆ですすいません
前にこのスレでVBAで集計する人に「どんな集計してるんだ」って聞いたら ・2行で1レコード ・セルの色別集計 とかいう答えだった。気の毒でかける言葉がなかった。
しつけーんだよ!クソが!!!!!!!!!!!!!!!!!
まあVBAで集計するハメになる場合は、そもそものデータがクソ仕様の場合が多いからな。 データの作成から自分とこでやってりゃ問題ないが、そうでないことも多々あるし。
理想はマスターデータと印刷用フォームを分けることだが、これが兼用になってる中小、零細企業が多い。 だからVBAを使わないと集計ができない。 そもそもそんな知恵があれば最初からExcelなんか使わずにAccessを使ってる。 つまり「Excelを使う」と「データ構造がどうしようもない」は密接に関係があるわけだ。
>>612 >>625 君たちは電卓も使わないの?
そもそもExcelを使う必要ない職業の人は、この話題に参加しないでいいんじゃないの?
話が発散してややこしくなる。
>>638 データ構造がめちゃくちゃでも集計出来るのが
利点なんだろ
例え話をしよう。 ここに鶴亀算が得意な小学生がいる。 「この問題チョー得意。鶴を一羽ずつ増やしていって、ちょうどいいところが答えだよ。俺計算速いからクラスで一番早く解けるよ。5分もかからないよ。」 こいつがVBA厨だ。わかった?
VBA厨云々と馬鹿にしてるやつ思考能力はどのくらいある? たとえばExcel2003で60000行のデータでA列の品目が40000種類あるとき各品目毎のB列の合計出せる? もちろんピボットテーブルは使えない。 ピボット厨でもこれがVBAや一般機能で出来れば認めてやるよ。
VBAは簡単杉か。 dictionaryは無しだ。
>>643 そんな単純な集計VBAつかうまでもないな。関数で十分
>>637 >データの作成から自分とこでやってりゃ問題ない 下っ端は大変ですねwww
>>646 零細社長は自分で一から構築できるんだから、めぐまれてるね。
データはクソじゃないほうがいいだろう?
>>643 関数でつくってみたら再計算にたっぷり5分以上かかった
VBAだとどれくらいなの?
俺ならAccessでやるけど
>>643 おつむの足りない人がやりそうな方法だが、フィルタオプションで重複するレコードは無視するでリスト作ってSUMIFで約3分で計算出来た。
以前はよく固まったけど最近のパソコンは固まらないな。
パソコンが高性能になると馬鹿が増えるのは仕方がないな。
配列数式等の低レベル放射能をばらまくやつが現れるわけだw
Accessはスレ違い お帰り下さい(´・ω・`)
>>648 自分もSQL書くなあ。
VBA?滑稽だね。
ピボットテーブルのアイテム数は35000という制限があるけど、VBA厨は制限がなくなったらピボット使うのか?
>>647 643じゃないがVBAでもほとんど時間はかからんよ。
アルゴリズムの問題だと思うが、ソートして同じデータが続く間加算していくだけだからね。
Excelの一般機能でも出来るのでほとんど時間はかからない。
>>648 はまさか重複しないリストも関数で作ったんじゃないよな?
配列数式でやる斜め上を逝く人を知ってるが6万行では彼も無理だろうなぁ。
しっかし、おまいらホントに低俗なんだなwww 集計するのがそんなに楽しいか? 所詮、2流大学卒じゃ幹部職にはなれん罠www
厨卒ですが何か?
>>651 SQLでもお馬鹿なアルゴリズムを使った書き方とかある?
重複しないレコード作って各データの合計をExcelのSUMIFみたいに何度も内部で総当たり計算して合計するとか。
それともちょっと利口に
>>652 みたいにソートしてブレークするまで加算するんだろうか?
>>657 SQLは手続きを記述するんじゃないよ。
取得したいデータの定義を書くんだ。
厨卒にそんなこといってもわからんて
>>658 トンクス
取得したいデータの定義の内部アルゴリズムはどうなってるんだろうか?
>>643 がどのくらい時間がかかるかで推測出来そうだが。
>>657 そしてピボットテーブルも手続き的ではないという点でSQLと似ている。
集計方法の定義をウィザードで作成するんだよ。
>>660 「定義のアルゴリズム」というのはない。
私の言っていることを理解していないようだな。
定義されたものを求めるアルゴリズムはもちろん存在する。
一度SQL使ってみろ。VBA厨の書くゴミ集計プログラムなんぞバカバカしくなるぞ。
>>663 662氏ではないが、Accessで話で進めるとウィザードだけでできてしまうレベル。
作成から結果表示まで、ゆっくり作っても1分かかるかどうか。
結果表示だけなら、数秒ってところじゃないか。
>>664 トンクス。
試しにA列を全部ユニークにして、3万行と6万行の結果表示の時間を教えてくれない?
まさか6万行が3万行の4倍とかの時間じゃないですよね。
>>665 A列が全部ユニークなら集計する必要なかろう?
あほなのか?
>>666 あくまでも試しにやるんだよ。
6万行が3万行の2倍の時間ならまともな内部アルゴリズム、もし4倍ならあまりよろしくない内部アルゴリズムとか分るしね。
XPで2003なのですが、シート1とシート2を 一枚の紙にプリントアウトしたいのですが どの様にすれば良いのでしょうか?
プリンタドライバの設定で2up
>>638 正論だなぁ
エクセルにもテンプレートがあればいいのにね
そうすればもうちょっとは世の中全体がましだっただろうに
アクセスは金がかかるので導入は結構難しいんだよね
officeHOMEに標準装備ならまた違っただろうに
>>641 どんなめちゃくちゃなファイルでもある程度規則はあるんだけど、
規則自体がコロコロ変わったらかなり厳しい
>>646 子会社からデータ受け取る場合とかあるでしょ
IT系でも正規化知らないような連中はごまんといる
>>667 言いたいこと分る。
Excelの統合で試しに3000行と6000行と12000行で全部ユニークにして試すと
3000行 約3秒
6000行 約12秒
12000行 約48秒
統合はだいたいデータ量の2乗に比例するみたいね。
ピボットはきちんと比例するしずっと速い。
>>667 お前の希望通りのデータではないが、100種類の商品がある100万件のデータを商品別に集計させてみた。
一瞬で終わった。1秒もかからない。
>>672 まったく分ってないね。
たった100種類じゃ駄目なんだよ。
全部ユニークにした3万種類と6万種類でやってみてくれ。
>>671 予想はしてたけどやっぱりそうなるのか
アクセスでやれと言わんばかりの結果だな
>>674 いや統合がクソすぎるだけじゃね?
アクセス使えない人にはExcel2007でピボットって手もあるし。
>>667 30,000と60,000じゃよく解らなかったから300,000と600,000で試してみた。
300,000……約3秒
600,000……約6秒
ストップウォッチがなかったから、正確な時間はわからん。
クエリの展開時間って、どう計測すればいいんだ。
>>676 わしもやりかけてて,6万件が人間には測定不可能な速度だから
データ増やすのめんどくせえなと思って困ってたところだ。
ありがとう。
なんなんだろうね SQLより自作VBAの方が性能がいいとでもいうつもりか
679 :
472 :2009/07/18(土) 01:03:53
>>581 さん
こちらもお礼が遅くなりすみません。
会社にて早速試した所、希望通りの印刷を行うことができました。
マクロの実行手順まで丁寧に教えて下さり本当にありがとうございました。
助かりました。
これを期に、自分もマクロについて勉強したいなと思いました。
680 :
667 :2009/07/18(土) 01:09:53
>>671 トン
そうなりますか。統合は使えませんね。
>>676 やっぱりまともなアルゴリズムみたいですね。
>>678 そんな気はないよ。
性能ならおそらく2007のピボットには勝てないし。
>>673 かといってありえない状況設定のベンチマークとっても仕方ないだろう。
グループ別の集計するのに全部ユニークとは。
ま、とにかくVBAで集計なんぞシコシコ書いてる場合じゃないよ。
ユニーク、ユニークって、何が面白いのかサパーリわからん・・・ orz
>>681 2000のピボットに勝てるVBAだって世の中にどれほどあるか疑わしい。
>>684 2000のピボットははっきり言ってクソだよ。
10000アイテムも使えないだろ?
>>683 釣りなのかマジなのか…
大雑把に説明すると
日本語では「ユニーク」は個性的って意味だけど、本来は「他に同じ物がない」って意味。
「ユニークなデータ」ってのは「すべて内容が違うバラバラのデータ」ってこと。
それを集計するのにどれだけ時間がかかるかって話をしてる。
全部ユニークだとわかっている項目での集計を最適化してくれるシステムだったら、 データが1件でも1兆件でも処理時間0になっちゃうもんなあ。
>>685 そのクソにさえ劣っているという意見だよ。
>>638 どんなクソVBAでも65535アイテムまでは使える。
2000のピボットには勝てるよ。
>>689 どちらも件数に制限があるという点ではいっしょだよね。
65535アイテムなら十分な性能なの?
国別貿易収支を求める場合、アイテムは国の数程度が扱えればいい。
VBAの回答では実際に集計にもれがあったぞ。
>>689 君の反論は裏を返せば、2003や2007の使用を前提にすればVBAに価値はないということだね。
何言ってるか分らん ゴルフ見るわ。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 集計・抽出・レポート・ピボット 次のようなデータがあります。 テストX テストY テストZ 製品A 10 5 2 製品B - - 8 製品C - 4 - 製品D 5 - - 例えば、テストX、Zで抽出した場合、値のないCを抜いてBD間を詰めて別シートに レポートしてくれるようにするにはどうすればいいですか? <表示例> テストX テストZ A 10 2 B 3 8 D 5 -
694 :
693 :2009/07/18(土) 02:59:41
続きです。更に、 上記データをテストX〜テストZで個別レポートを作成します。 テストX テストY テストZ 製品A 10 5 2 テストZ 製品B 8 テストY 製品C 4 テストX 製品D 5 ↑ 製品Bに関してテストX、テストYを、製品Cに関してテストX、テストZを・・・・・ しなかったことをばれないようにレポート表示させたいんです。
>>693 >しなかったことをばれないようにレポート表示させたいんです。
なぜおまいの手抜き作業の片棒を担がなければならないのかと小一時間(ry
エクセル2002を使っています。ノートパソコンでOSはXPです。 「読取革命VER13」というソフトでPDF形式でまとめられてる表をエクセルへと 転写する作業を試みているんですが、一つのセルの中で改行されたものが上手く 転写されません。 セルの中に 1 2 と読取革命上では改行されていてそのように転送されるはずのものが 12 と改行されないまま一つのセルの中に転送されてしまいます。数字以外の文字や記号が 入っていたりするときちんと改行されて転送されるのですが、数字のときだけ 改行をしないまま転送しています。 読取革命上ではきちんとPDFからの画像データーは改行されているので、エクセルへと 転写する際に数字の場合に改行されなくなってしまうということが 起こるようです。 このことについて解決策をご存知の方はいらっしゃるでしょうか? わかりにくい文章で申し訳ありません。
>>691 VBAで集計しかしないと思っちゃってるのがクソ
>>694 手抜きしたいんならVBAがいい。
もれのある処理は得意だよ。
ピボットテーブルは間違った処理が苦手なんだ。ごめんね。
ピボットテーブルは間違った処理が苦手なのではない 間違ったというか不適切な構造のデータを柔軟に処理するのが苦手なのだ VBAはやり方次第で不適切な構造のデータを柔軟に漏れなく処理できるけどね 末永く使うならデータ構造見直した方がいいが、その場限りならVBAで切り抜ける方が低コストだったりする
>696 OCRソフト(読取革命)で改行を認識しているらしいのであれば、エクセルの方で 「セル内で改行する」を設定したら希望通りに表示してくれるのでは? 1 シート全体または必要な範囲を指定 2 [Ctrl]+[1]でセルの書式設定ダイアログを表示 3 「配置」タブの「折り返して全体を表示」にチェック の操作をしてみてください。
>>694 複数テストするときはXのテストは必ず実行してる?してたら↓で可能。してないなら使わない方がいい
10のデータがB2にあるとして、
E2=IF(COUNTA(B2:D2)=1,SUM(B2:D2),MAX(B2:D2))
後はE列をB列に値でコピー貼り付け
>>699 それにしてもVBAが有効な範囲がどんどん狭くなってきているね。
じりじり撤退しているようだ。
>>702 君、VBA使えないでしょ
使えるようになってから比べた方がいいと思うよ
単純な繰り返しと分岐で配列操作するだけのオモチャ発表しては、 「エクセル使うならVBA使えるようになっとけ!マジで。」の捨て台詞。 VBA厨はうざい。プログラム組めばできるのは分かってるんで、そんな回答はつまんないんだよ。
----------------------------------------------------------------------- ここまでテンプレ
706 :
693 :2009/07/18(土) 11:47:44
うーん、ソフト探してみます
VBAだろうが他言語だろうがExcelの一般機能だろうがアルゴリズムは不滅。 みんなにアルゴリズムの本格的な勉強しろとは言わないが、ほんの少しは考えたほうがいい。
で、板取りのアルゴリズムは考えたのか?
>>708 考えた結果、自作するのではなく、ピボットテーブルやSQLを使うことにした。
で、板取りのアルゴリズムはいつ完成するの?
板取りって何のこと? イタドリの塩モミなら食ったことあるぜ。
だからここまで俺の自演だって何回言わせんだksg
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 3行目をタイトル行でオートフィルタをつけて、ある条件で抽出したとき、 B列とF列の"空白でないデータの件数"をカウントするには どうすればいいですか?
SUBTOTAL
>>716 ありがd!!
ついでに、
「関数の挿入」をクリックしたら一覧にSUBTOTALがありませんでした。
何か設定が必要でしょうか?
>>700 ありがとうございます。文字を折り返すをチェックしても、そのセルだけが
折り返されないです。
どうやらこのPDF上で単位や記号と混じっていないセルが
その問題の部分だけなので、読取革命のOCRからエクセルへデーターを移行するときに
改行された数字の羅列ではなく、数値データーと認識されてしまうようです。
ただ、メモ帳などのファイルで改行された数字の羅列をセルにコピペするとそのまま
改行されてはいるんですが。
>>718 それはソフトの問題
そのソフトのスレか作った会社に聞くと良い
>>719 役人のたらい回し的レスだな。
ひとつの案として別シートに対象のシートをリンク表示させることで改行や折り返し
をリンクさせたシートで行うことで解決する場合もありますよ。
722 :
名無しさん@そうだ選挙にいこう :2009/07/18(土) 18:56:35
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 書式設定 10 20(青字) 30(青字) 20(赤字) 40(青字) のように数字が変化する時、 前のセルに比べ、 増加した時は青字、 減少した時は赤字に 色づけするにはどうすればいいでしょうか? よろしくお願いします。
>722 条件付書式で可能ですよ。
724 :
名無しさん@そうだ選挙にいこう :2009/07/18(土) 19:23:11
>>723 すみません。どのようにやれば良いのでしょうか?
試してみたのですができませんでした。
725 :
723 :2009/07/18(土) 19:48:46
>724 A1セルが先頭データで、条件付書式をA2セル以降に設定するものとします。 A2セルの 条件付書式の設定 のダイアログで、 1 条件1(1) の「セルの値が」を「数式が」に変更 2 数式を入力する欄に =A2>A1 と入力 3 [書式]ボタンをクリック →セルの書式設定 ダイアログが表示される 4 「フォント」タブの 色(C): で青色に設定して[OK]ボタンをクリック 5 [追加(A)>>]ボタンをクリック →条件2の欄が増える 6 条件2(2) の「セルの値が」を「数式が」に変更 7 数式を入力する欄に =A2<A1 と入力 8 [書式]ボタンをクリック →セルの書式設定 ダイアログが表示される 9 「フォント」タブの 色(C): で赤色に設定して[OK]ボタンをクリック 10 [OK]ボタンをクリック →A2セルの数字の色が(例題のとおりならば)青に変わったはず 11 書式のコピー・ペーストの要領でA3セル以下に「書式」をコピー これでできるはずです。
726 :
名無しさん@そうだ選挙にいこう :2009/07/18(土) 20:13:40
認証してくださいとかで編集できないんですが、 認証しないで使うにはどうすればいいですか
>>719 OCRソフト上ではエクセルへ転写させる直前の状態では改行されてるんですよね。
だからエクセルの方かとも思ったのですが、会社に効いてみることにします。
>>720 そういう方法もありますね。考えてみます。
【1 OSの種類 .】 Windows 2000 Pro 【2 Excelのバージョン 】 Excel 2000 【3 VBAが使えるか .】 勉強し始めたばかりです 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 excel マクロ 関数でエラーが発生した場合 / エラー処理 住所録で、A列に住所が入力されています。いわゆる第一住所と第二住所が、 スペース区切りで同じセルに入力されている状態です。 これをSplit関数でB列とC列に分けてコピーするようにfor nextなマクロを書いたのですが、 スペースのない(分割されていない)住所の行でエラー(ダイアログ表示:インデックスが有効範囲にありません。)に なってしまいます。スペースが無くてエラーになった行は、A列の内容をそのままB列にコピーして(C列は空でOK)、 次の行の処理を行って欲しいのですが、どのような処理を加えたら良いのでしょうか? For i = 2 To 10 str = Range("A" & i) strArray = Split(str, " ", 2) Range("B" & i).Value = strArray(0) Range("C" & i).Value = strArray(1) Next #今は、あらかじめA列の内容の末尾にスペースを加えて「必ずスペースがある」状態にしてから処理することで、 エラーにならないようにして処理→B列とC列のスペースを削除してます。
Range("C" & i).Value = strArray(1) ↓ If UBound(strArray) = 1 Then Cells(i, 3).Value = strArray(1)
>>730 関数だと
B1=LEFT(A1,FIND(" ",A1)-1)
C1=RIGHT(A1,LEN(A1)-FIND(" ",A1))
VBAだと
↓でいいんじゃないかなぁ。
エラー処理はエラーハンドラーでぐぐるといいけど、
これぐらいのコードではエラーが出ないようにコード書くほうがいいと思うよ
Sub a()
For i = 2 To 10
If InStr(1, Cells(i, 1), " ") <> 0 Then
Range("B" & i).Value = Left(Cells(i, 1), InStr(1, Cells(i, 1), " "))
Range("C" & i).Value = Right(Cells(i, 1), Len(Cells(i, 1)) - InStr(1, Cells(i, 1), " "))
Else
Range("B" & i).Value = Range("a" & i).Value
End If
Next
End Sub
同じセルの値を何度も取得せずに変数を使いましょう 同じ条件で関数を何度も使わずに変数を使いましょう
変数を使ってみた Sub a() For i = 2 To 10 c = Cells(i, 1) p = InStr(c, " ") If p = 0 Then p = InStr(c, " ") If p Then Range("B" & i) = Left(c, p - 1) Range("C" & i) = Mid(c, p + 1) Else Range("B" & i) = c End If Next End Sub
>>733 まぁ俺も思ったけどさ〜
10行のコードで最適化してもしゃーないでしょ
俺は入力が面倒だから短い方を選ぶ。別に最適化しようとは思ってない。遅くてもいいから短くする。 とりあえずRange("B" & i)はCells(i, 2)にしたい。
何度も長ったらしく書くより変数に入れた方が楽だわな。 可読性も上がるし。 まぁ中には不細工な方が見やすいという奴もいるけどな。
>>730 不細工だけどExcelらしく書くならこんなのも嫌いじゃない
sub ビール飲みながら暇つぶし()
with range("b2:b10")
.formular1c1="=if(iserror(find("" "",rc[-1])),rc[-1],left(rc[-1],find("" "",rc[-1])-1))"
.offset(,1).formular1c1="=trim(substitute(rc[-2],rc[-1],""""))"
.resize(,2)=.resize(,2).value
end with
end sub
しかし住所のなかにスペースがないことが保証されていて、 スペースが必ず区切りであるようにデータ作っているのかね、、、
自分ならこれくらい関数でやる
738だけどあのあとビール買い足しに行きながら「俺ならこんなときどうしてるかな?」と考えると
区切り位置ウィザードで一発で片付けてるな730さんも試してみれ
俺んとこもいろんなフォーマットのデータ混在してるから
いろんな機能使い倒してるよー
>>739 このスレはそういうExcelを渡されて何とか無難に加工しようと四苦八苦してる人間の集いだと思ってたが違うの?
ぜんぜん関係ない場所にあるスペースを考えるとなると、どうにもならんょね 県や市町村で区切ってあるなら住所データ組み込んで判定できるけども、番地とか枝番ついてるだろうし
>>742 むしろ必ず番地が付いてることを利用して区切るコード書けるだろ
力技にはなるけれど
だけど、いくら元データが頼りないからってそんな力技使わないといけないくらいなら
さすがに元データをなんとかしようとするだろ
変数が多くなってしまって、変数の使い回しをしてますが、何か問題がありますか? 今は難なく動いてます。 For i = 3 to 12 hogehoge next i For i = 1 to 6 hogehoge next i For i = 1 to 12 hogehoge next i j、k、l、mなども多様してて、糞マクロなのは十分承知の上なんですが・・・
>>744 > 今は難なく動いてます。
問題ないんじゃないの?
問題になるのは他の人がメンテしたときに理解できるかどうかと
カウンタの初期化が必要なループで初期化を忘れてないか
くらいの気がするからどっちも可能性なければいいんでは?
>>744 普通は問題ない。
ただ、i、j、kっていうのは慣例的にループカウンター(とくにFor文の)とされているから
ループカウンター以外で使いまわすのは、やめておいたほうがいい。
というよりも、意味合いが違うのならば、別の変数を用意してあげた方がいいね。
あとは型宣言をしておけば大丈夫だろう。
747 :
744 :2009/07/19(日) 22:56:50
>>745-746 レスありがとうございます。
型宣言について調べてみましたが、
Dim i As Integerとかでいいのでしょうか?
どこかのサイトで、
Dim i, j, k でいいと書かれてたので省略してました。
>>747 まぁ、そういうこと。
Dim i, j, kや型宣言を省略すると、たしかVariant型になったはず。
面倒くさいかもしれないが、それぞれにあった型を使った方がメモリ使用量を抑えられるし、
ヒューマンエラーを抑えられる。
variant型は便利なのだが、それだけに諸刃の剣。慣れるまでは極力使わない方がいいと思う。
>>747 > Dim i, j, k でいいと書かれてたので省略してました。
よくわからないうちはそれで充分
何も宣言しないよりはよほどエラーが少なくて済む
わかってきたら徐々に「as long」とか加えればいい。
750 :
744 :2009/07/19(日) 23:11:50
>>748 レスありがとうございます。
万年初心者なので、精進します。
751 :
744 :2009/07/19(日) 23:20:22
>>749 レスありがとうございます。
IntegerとLongの違いを調べてました。
私の使い方だとLongは必要なさそうです。
数字データ扱う場合俺はLongで宣言するなあ
念のためってだけだが、いざオーバーフローしたらめんどい
>>743 1丁目2番地3号市営第15アパート9999号室って描き方もあれば
1−2−3−9999(アパート名省略)ってのもあるし
↑のは空白一個で第1第2分けるだけだからそうでもないが
>>752 あっアパート名省略ってのがあるとさすがに・・・
まあ取り越し苦労だろ
データになるまでに何とかなってるって
てか何とかさせてないとまずい
すでにこのスレの話題ではなくなってるが
数字データは普通longで扱うわな
>>754 16bit機が主流だった頃にはintを使うメリットはあったのだろうが、
32bit機だとさすがに使う意味はすくないわな。
意図せぬデータであえてエラーを出す意味ではintegerもアリだと思うけどね (もちろん本来は別のエラー処理してるべきだけどたかがExcelマクロだし気軽に書きたい) まあ今回の質問者さんに関してならデータ型は適当でいいからとりあえず宣言してればいいんでない?
757 :
730 :2009/07/20(月) 00:53:28
今回は、自分的に理解しやすくて、現状に組み込みやすい
>>731 さんの方法で組みました。
スペースの有無にばかり注目してて、すでに配列があることには気づきませんでした。
>>732 そうですね。「エラー処理で回避は、想定される処理後の、最後の最後」と昔、教わりました。
>>736 すみません。マクロ記録のままで使ってます。
ループ処理するときは、Cellsに書き換えたほうが良いんでしたっけ?
>>739 申し訳ないです。今回の質問のために問題点を絞込みんで質問してしまいました。
指摘されているようなことは当然発生していますが、問題にならないように事前に加工しています。
区切りスペースも全角だったり半角だったり…そんなワケなので
>>730 の最後で書いたような力技も…w
>>752 住所はいろいろ悩みますね。部門名まで入ってないと届かない場合とか。
>>753 言われるように
スレ違いですし。最後になりましたが、いろいろありがとうございました。これからも精進します。
>>751 逆だろ?
君の使い方ならInteger型は必要ない
For i = 1 to 12 なら、Integerで、いぃんでねーの?
longの方がcpuが扱える自然な数だから、演算が速いというのは聞いたことがある。 なので仕様等で明示されていない限りは、intは必要ないと思うが。 第一intだとExcelの行全部が扱えないのが痛い。
今回程度の処理なら整数型でも長整数型でも倍精度浮動小数点型でもバリアント型でも 計測できるほどの時間の差はなかんべよ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 使ったことない 【4 VBAでの回答の可否】 否 Sheet1 A B C D 1 あ 月 火 水 2 い 木 金 土 3 う 日 月 火 4 え 水 木 金 5 お 土 日 月 これを空欄のSheet2に A B C D 1 う 2 あ 3 い 4 お 5 え と入力したら、その行が自動的に並びかれるようにしたいんですけどどうしたらいいでしょうか?
>>762 B1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,2)
C1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,3)
D1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,4)
後A1〜D1コピー、A2:D5選択し貼り付け
765 :
横から :2009/07/20(月) 09:03:22
>764 コピー範囲はB〜D列部分だけですよ。
766 :
764 :2009/07/20(月) 09:06:36
あ、そだったね。orz
767 :
762 :2009/07/20(月) 09:13:32
ありがとうございます、早いですね。
列が30ぐらいあって、
>>764 のB1〜D1を入れてから、
E1以降のはドラッグでコピーすればいいのかなって思ったんですけど、
ドラッグすると
E1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,2)
F1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,3)
G1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,4)
H1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,2)
I1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,3)
J1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,4)
と右端が連番ではなく繰り返しになってしまいます。
これはどうしたらいいんでしょう?
768 :
764 :2009/07/20(月) 09:18:07
VLOOKUPの括弧内の最後の数字を加算して下さい。 E1=VLOOKUP($A1,Sheet1!$A$1:$D$5,5) となります。
769 :
764 :2009/07/20(月) 09:33:19
30列全部変えるのが面倒でしたらシート2の頭1行増やしてその行に数字符って (B1=2,C1=3、・・・) B2 =VLOOKUP($A1,Sheet1!$A$1:$D$5,B$1) として縦横にコピペすれば楽ですが。
770 :
764 :2009/07/20(月) 09:35:33
また間違えた。 B2 =VLOOKUP($A2,Sheet1!$A$1:$D$5,B$1) です。orz
771 :
762 :2009/07/20(月) 09:37:39
地道に全部変えました・・・ で、またまた問題発生。 ぬりつぶしの色って反映されないんですね。
772 :
762 :2009/07/20(月) 09:46:25
調べたらマクロってのを使うのがわかったんだけど、 マクロは昨日時間かけて結局わからないまま終わってしまった。 関数使わないで、 ひたすら切り取って&挿入が早いのかな、めんどいけど。
>762 試してないからアレだけど、列に応じて増えていく部分、column()でいけそうな気がする。 (B1=2,C1=3、・・・)って眺めていて浮かんだ。
>771 ぬりつぶしは「書式」なので計算式では変更できません。 「条件付書式」ならば状況に応じて変更できますが、具体的にどういうことをしたいですか? 例えば1行おきに色分けするとか?
775 :
762 :2009/07/20(月) 10:25:34
しばらく、自分でやってみます。
776 :
762 :2009/07/20(月) 10:52:01
ぬりつぶしはなくても大丈夫そうだから、解決!
>>773 はできなかった、やり方あってるかわからないけど。
教えてくれたみんなありがとうございました。
B1 =VLOOKUP($A1,Sheet1!$A$1:$D$5,COLUMN()) そのままコピー&ペーストいけるね。
B1 =VLOOKUP($A1,Sheet1!$A$1:$AE$5,COLUMN())
ピボット厨が減ったら、今度はVLOOKUP厨ですか・・・www
厨厨うるせーな。 そういうくくりでしか(くくることでしか)物事考えられないのか? もっと自由度の高い発想でエクセル使おうよ。
確かにINDEX+MATCHはVLOOKUPより柔軟に検索できる。 でも検索を柔軟にしようという発想はそもそもデータが汚いから出てくるんだ。 データを正規化してしまえばVLOOKUPしか使わない。
VLOOKUPよりLOOKUPだという主張も最近見たけど、 どんなメリットを主張しているのかいまいちわからなかった。 勝手にしたら?と思った。
LOOKUPは検査範囲が昇順に並んでないと使えない ここは残念
エクセルは楽しいね ソリティアは10分で飽きるけど、エクセルなら1日中あそべる
遊べるからって仕事してる人の邪魔しちゃいけませんよ パズルやオナニーは一人で楽しんでね
おまいら遊んでないで早く大文字小文字混在たまに不要スペースありの検索キーで 縦にデータ(重複あり)横にフィールド名*時系列はみ出たら次シートのデータから 値をとってきて報告書にまとめる作業に戻るんだ
そういうのはVBAヲタの使えない部下にやらせる 残業代ぬきで
むしろピボット厨にやらすべきでは?w
バカデータばっかり作って部下に尻拭いさせてると 結果が自分に返ってくるぞ。
そのスレ時々上司キャラ出てくるけど、お前ら本当にそんな立場なの? VBA厨は本当は中学生なんじゃないの?
___ /_ノ ヽ、.\ ./(●) (●) \ あ〜ピボット厨の相手すんのだりーなぁ / (__人__) \ | ノ ノ | ヽ、 _`⌒'´ .._ / ____/⌒``ヽ ,,ー‐,, "⌒ヽ____ |____し'⌒/ . . /"⌒し′__|::| |____( /_______|::| |____/⌒ ヽ、 /______|::| |____しイ"i ゛` ,,/._______|::| l二二二二二二 l |二二二二二二二二l__:| | |::| | |::| し′ | |::| | |::| |_|;;| |_|;;| |_|;;| |_|;;|
中学生じゃないピポ
>>791 VBA厨の相手するのはだるくない。
とても楽しいぞ。
そもそもここはオナニースレだろ
VBAしかつかえないんだよ 要領悪いし仕事はできないしコミュニケーション力は皆無だが ひとが嫌がるめんどい集計だけはいっしょうけんめいやる あだなはエクセルくん
またピポ厨か お前もVBA使えるようになればいいピポよ
このスレに出てくるようなVBAならおれでも書ける ピボットかけるときVBAで整形すると便利だよ
で、ピボットって何が出来てどういう時に使うんだ? どっちが上とかいいから
このスレに書くために決まってんだろ! 100年ROMってろ!ヴぉけ!!!
799 :名無しさん@そうだ選挙にいこう :sage :2109/07/20(土) 19:15:16 ピボットについて質問したら「100年ROMってろ」と言われ今日で100年 お久しぶりです ピボットってなn
じゃーさ ピポットより使い方が限定されてて、しかしながら そのことをするには最速でできるツールをVBで作ってそれ崇拝しようぜ!
質問です 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003SP3 215.15 80 230.93 85 246.66 90 262.85 95 279.25 100 と言うデータから散布図でグラフを作り、多項式近似次数4で近似曲線を追加し、グラフに数式を表示すると y = 2E-07x^4 - 0.0002x^3 + 0.0576x^2 - 9.1672x + 594.14 という式が得られました 試しにxに元データの215.15を代入して計算してみてもyは80にならず-275とか全然違う数字になってしまうのですが 何が悪いのか解りませんでしょうか?
804 :
名無しさん@そうだ選挙にいこう :2009/07/20(月) 20:05:56
>>798 俺も同じ使い方してるぜ
どっちも便利なんだから両方の長所生かせばいいのにねぇ
VBAもピポもワークシート関数もできない奴のオナニー荒らしじゃね
>>803 提示されたデータから同じように数式を表示してみたら私の場合、
y=0.3122x+12.887
と表示しましたが。
807 :
名無しさん@そうだ選挙にいこう :2009/07/20(月) 20:18:14
>>802 こういうのを見てるとライブラリとか知らないんだなぁ、とは思うな
もう少しCとか勉強してみては?
ただその知識で十分通用する世界なんだろう
ある意味羨ましくもある
俺の職場だと、ピボットは初心者向けだから使えても自慢にならないけど VBAは自動記録くらいしかできない人が多いので俺は優越感に浸りながら使ってるよ。
>>808 別に自慢する必要なんかないって。
お前はピボット使うやつより生産性高いのか?
オオオ、オラはVBA厨なんかじゃないブビ
俺の職場だと、ソートは初心者向けだから使えても自慢にならないけど VBAは自動記録くらいしかできない人が多いので俺は優越感に浸りながら使ってるよ。
俺の職場だと、ExcelのVBAは初心者向けだから使えても自慢にならないけど Accessはブラウズくらいしかできない人が多いので俺は優越感に浸りながら使ってるよ。
>>806 4次の多項式近似を選ぶと
>>803 のようになる。おれも試してみた。
ほぼリニアだから1次式でよかったんだな
俺の職場だと、Accessは初心者向けだから使えても自慢にならないけど inaxは便器洗浄くらいしかできない人が多いので俺は優越感に浸りながら使ってるよ。
TOTO厨の工作が激しいスレですね
inaxは見た目がいいけどTOTOの方が使いやすいよね
>>809 計器から出力されたデータを解析するのにエクセルを使ってるから
ピボットの集計じゃだめなんだよね。
わざとエラーを出して、「ぷろぐらむおくみなおすのに3時間くらいかかります」とか言えば、
何の疑いもなく残業できるしwww
それはお前が無駄残業するやつってだけで誰も貶せてないピボ
819 :
803 :2009/07/20(月) 21:36:10
>>806 線形近似だとその式であってるはずです。
問題は多項式近似の方です。
>>813 このデータ自体は一次式で良いのですけど、なんで多項式にすると計算が合わないのかなぁと・・・
どなたか解りませんかね?
エクセル2003使用です。 行内に文字を入力する際 2行分を使って文字をおおきくしたいのですが 行より大きく表示した場合、文字が隠れてしまいます。 これは仕様ですか?
セルを結合するピボ
>>820 ・行全体大きくする→セルの高さを広げる
・一部の列だけ大きくする→セル結合
・表の中の一部分→セルに入れるよりテキストボックスのほうか何かと便利かも
>>821 ,822
これで前に進めます。ありがとうございました。
ごめん。VBAは自動記録しか出来ないわ
ブイバ って何?
ブイバ でググるピボ
「このブックにはほかのデータリンクが設定されています」 というメッセージが出たとき、どこのセルが対象となってるか調べるには どうすればいいですか?
なんで語尾にいろいろつけるんだよw
夏休みだからドグル 厨がわいたドグルよ
半日見てなかったらひでーなここは やたら低ラベルな発言が多いが基地外が一人で荒らしてるのか?
すいません連休でヒマだったのでずっと自演してましたもう寝ます
>827 "["で検索してみてください。
>>817 少なくとも社会人ではあるようだが、どうみても下っぱの行動だな。
俺も無駄残業やるわwwwwww 「ぴぼっとににゅうりょくするのに3時間くらいかかります」とか言えば、 何の疑いもなく残業できるしwww
確かに下っぱっぽいな
ここはお前達のようなしたっぱが来ていいところではない……失せろ!! この俺が食い止めている今のうちに……っ!
お前らがピボピボゆうから質問者がこねーじゃねーか
Excelテーマにした漫画誰か描いてくれねーかな 主人公がExcelを活用して敵と戦う 「ピボット皇子が倒された?惜しい奴を失ったのう・・・」 「いえ、奴は我らExcel四天王の中では一番の未熟者。次はこのVBA王子が」 みたいな
夏休み入ってからgdgdだなw
夏休みって何?おいしいの?
「くそ・・こうなったら・・必殺!クロス集計!!」 エクセル先生の次回作にご期待ください
このスレ終わったな ピボットスレに行くか
マイコン刑事という漫画をふと思い出した
ピボット好きなんだけど引き算が難しい。 苦肉の策で予算額を正、執行額を負の数にして残額だしたりしてる 集計フィールドや集計アイテムで数式を設定すればいいんだろうけど、 表が大きすぎるせいかエラーになるし。
裏六道の描くエクセルと聞いて
846 :
名無しさん@そうだ選挙にいこう :2009/07/21(火) 19:12:02
すみません 初歩的な質問なのですがお願いします。 関数なのですが 例えば =if(p10=0,"a","b") だとp10がもし 0 ならば a になるって式なんですが もし 0 ならば p20 を a にする って式は出来ない のでしょうか? =if(p10=0, p20"a" ,"b") ↑ この部分はどのように記入すればいいのでしょうか? 計算結果を任意の場所に出力する事は出来ないのでしょうか? よろしくお願いします。
>>864 p20に「=if(p10=0,"a","b") 」を入れる
p20に=if(p10=0,"a","b")を入力する
回答ありがとうございます。 やはり別の任意の場所には反映する事は出来ないみたいですね。
>>849 それがしたければVBAでWorksheet_Changeを使う
なるほど ありがとうございます。 早速調べてみます。
>>844 苦肉の策というか、正攻法、定石、常識の類いだろう。
そのアプローチで何の問題もない。
>>852 自分だけの資料ならまだしも 他人に見せるとなると見た目が悪い。
しょうがないので値だけコピーでふつうの表にして符号を反転してるけど。
>>853 計算用の作業列作って見せる時は非表示にしておけばいいのに。
ピボットに作業列なんてものはない 表示したものはすべて合計されてしまう 元の表は予算と執行が別の行だから作業列に残額は出せないし
>>855 ああ、レポートの方の話ね。
元データかと思った。
>>857 にレスをして遥かなる旅路へと羽ばたこう!
Excel2007で A列に 常に5桁で 00001 00002 00003 ・ ・ 99999 と連続して入力したいのですがどうすればよいでしょうか(´・ω・`)
sub aaa() for a = 100001 to 160000 b = mid(cstr(a),2,5) cells(a,1)=b next end sub うまくいくかわからん とりあえず99999まではいかないから60000まで
固まった(´・ω・`)
すまんこ escキーで止めてくれ こっちで Sub aaa() Dim b As String For a = 100001 To 160000 b = Mid(CStr(a), 2, 5) Cells.NumberFormatLocal = "@" Cells(a - 100000, 1) = b Next End Sub
たびたびすまん これで Sub aaa() Dim b As String For a = 100001 To 160000 b = Mid(CStr(a), 2, 5) Cells(a - 100000, 1).NumberFormatLocal = "@" Cells(a - 100000, 1) = b Next End Sub
>>864 画面の更新止めないならせめて
配列に溜めて1回で書き出そうぜ
バリ型10000以上の配列ってヤバくね
>>859 見た目が5桁でよければ
A1に1を入力
ホームタブ→編集→フィル→連続データ作成→範囲「列」→停止値「99999」
A列のセル書式に表示形式→ユーザー定義→00000
の方が早いかもな
こうじゃね? Sub aaa() Dim b As String Columns("A:A").NumberFormatLocal = "@" For a = 100001 To 160000 b = Mid(CStr(a), 2, 5) Cells(a - 100000, 1) = b Next End Sub
>>859-864 こんなものにわざわざVBA使うのかよ。
>>867 でもいいし、似たような方法ならA列の表示形式を文字列(@)にして、A1以下ならA1:A99999を選択して
1(なんでもいい)を打ってCtrl + Enterで全体に1を入力。
A2に00001と入力してからA2の右下隅にカーソルを持って行って+のフィルハンドルが現れたらダブルクリック。
表示形式が標準のままなら上の手順で00001の入力を'00001と頭にアポストロフィをつけるだけ。
VBAのお勉強ならVBAを否定しないけどな。
教えてほしいのだけど、どうして10001からループしているの? Formatだと遅いから? でもそれならRight使った方がMidよりは速そうだけど。
>866 2元ならやばくない ぶっちゃけありえなくもなくない シートに配列で流し込む動作は「マジでっ!?」ってくらい早い
こんなんピボットテーブルであーしてこーすれば一発だな
しかしまぁVBAの勉強でもなんだかね。 普通Format関数を使いそうなものだが。 0000の文字列と1〜99999をくっつけて右5文字でもいいけどな。
875 :
864 :2009/07/21(火) 22:20:21
配列って知らなかった・・
こんなこと俺ならvba使わんけど もしやっつけ作業で必要ならこうするかな? sub test() with range("A1:A99999") .formula="=text(row(),"00000")" .numberformat="@" .value=.value end with end sub ってかvbaスレじゃなくてこっちで話すならこんな感じの方が好み
COUNTIFを使って1000以上の値の数を数えるとき、検索条件で ">=1000" ではなく A1に1000を入れて ">=A1" とすると動かないのですが どのようにすればいいのでしょうか
>877 つ ">="&A1
ここでいいのかな 教えて下さい。 XPだとExcel2007は使えませんか?2003がいいの? どっちもベクターにないみたいなんだけど
>>880 どっちも積めるはず
2003は中古市場しか手に入らないけどな
積極的に2003にしたい理由がなければ普通に買える2007でいいんじゃね?
>>883 ホントに? いくらくらいすんの?
じゃあ家で仕事したりモス?練習のためにみんな買ってるの?!
>>884 tp://www.sofmap.com/search_result/exec/?keyword=OFFICE&styp=p_wsr
DSPのオフィスは33000円。
エクセル単品は見つからないが10000円は超えるだろう
俺は中古ノートについてきた奴使ってる。本体5000円でエクセルも付いてきた
中古はいいよ
金が無いなら
>>883 。一時期俺も使ってたけど使い勝手はほとんど変わらない
>>885 高っ!
いや実は就職のためにパソコン使えるようになろうと思って。
その中古の話もちっと教えて下さい。
あ〜でも出かけるのでレスは遅くなります
就職したいならそれぐらいの金はケチらないほうがいいよ どうせ後で返ってくる 中古は中古ショップ行ってエクセル(office)込みで安いの欲しいって言えば買えると思う それかトラブル多いけどヤフオクならもう少し安いかも
俺はパソコン買う時にOffice付きのやつを選んだ。 中古でもいいけどバージョンには気をつけろ。
ただいま バージョンですか?2003が安そうなんでそれにします。 ニコニコ動画でエクセルを調べているんですが、 なんか私の思ってたエクセルとは違うのかなあ
ニコのエクセルは本来の使い道からそれた曲芸みたいなものと思ってok 本来はめちゃくちゃ地味だよ バージョンは2003と2007を選ぶことになると思うけど、 使い勝手は結構違う 2007の見た目を2003風にするものはあるから2007ならとりあえず大丈夫
エクセルすげえ!らきすたとかアイマスできるんだな。 これは私でも覚えが早いかもしれない ところで無料のOpenOfficeも調べてみたんだけど、 互換性あるみたいだけどやっぱり劣りますか?
いや、それはVBAというエクセルの機能なんだが、少し勝手が違う物を覚える必要があってだな・・
セルドットによる疑似動画処理はエクセル本来の使い方じゃないしな DBMSを構築して制御するにはDBソフトのほうが優れてるし
>>891 ニコ動にあるムービーはExcelの間違った使い方。
動画を展開して静止画を取り出す方法とか
プログラミングの知識がかなり必要。
Excelだけをどれだけ勉強しても無理。
買ったにょ〜ん。 Office Personal Edition 2003 店員さんが奥から出してくれたw 超ラッキーww Word2003、Excel2003、Outlook2003、Office Home Style+が入ってる すっげCDキラキラしてるww なんかロビーの絵かなw カックイイ! あと できるExcel2003 とりあえず並べ替えて速くするをやってからインストールするよ Outlookはサンダーバードあるからいらないからカスタムインストールで Word2003、Excel2003だけ入れます。
よかったね、おめでとう これで君は任天堂の役員だ
SQL入れてぐーぐる、ACC入れてMSを目指すんず! で、ニコニコのエクセルってどれよ
sm6247551 sm586011
オートシェイプとかゲーム開発エクセルの手法じゃねえか 入門には参考にならんだろ 興味を持つきっかけにはなるかもだけど
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 以前、このスレで紹介されていたものを参考に書いたマクロでの質問です。 Sheet1のN列にあるデータがSheet2のA列にあるデータと合致したら、 Sheet1のW列に"K"を書くようにしています。 N = .Cells(i, 14).Text Set KP = Worksheets("Sheet2").UsedRange.Columns(1).Find(What:=N, _ LookIn:=xlValues, LookAt:=xlPart) If Not KP Is Nothing Then .Cells(i, 23) = "K" End If Set KP = Nothing これだと、完全に合致しないとダメぽなので、Sheet2のデータから始まるものを 分岐したいのですが、どう書けばいいでしょうか? N列のデータ A100 ←おk A1100 ←おk A100 ←おk B1000 ←ダメぽ B2100 ←ダメぽ C200 ←おk Sheet2のA列 A1 A11 B200 C20
なぜVBAスレにいかない? ここにも紙は降臨するけど、最近は確率低いぞ(`・ω・´)
>>901 N = .Cells(i, 14).Text & "*"
日本語がわかんない
えー、質問する人は、ピボットで集計できそうなのを考えてくださいね
>>901 関数でも簡単じゃねーの?
まずSheet2のA列を昇順にソートして見出しを除いた範囲に"範囲"と名前定義
以上の前準備を済ませてからO2の式を
=IF(ISNUMBER(FIND(LOOKUP(N2,範囲),N2)),"おK","ダメぽ")
で出来そうな感じだが。
これで正しければ同じ考え方でVBAでもできるけどな。
フィルタオプションの前方一致でも出来るけど見つからない場合前から総当たりだから遅い。
>>901 N列のデータ
for k = 1 to 最終行
A100 //(cells(k,13))に関して
for i = 1 to len("A100")
if "A"と完全一致 then cell~K
if "A1"と完全一致 then cell~K
〜leftでlen("A100")になるまで繰り返し
next
next
大体のコードは思いつくけど飲みすぎて吐きそう
また今度・・
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 エクセルをfc2ブログに載せるにはどうしたらいいでしょうか? webページで保存してアップロードをしたんですけど、 そのURLをクリックすると 「ご指定のファイルが見つかりませんでした」 になってしまいます。
909 :
ぱり :2009/07/23(木) 03:24:53
今週の金曜日までに提出なんです 授業全く出てなくて全くわかりません 心優しい方がいKらっしゃいましたらお願いしします U Excelを用いて重回帰 (説明変数が2個以上)分析を行い、結果についてコメントしなさい。 注意 @ データは15組以上 A 分析の目的、結果についてのコメント(係数の値の評価等)を書くこと B t検定で説明変数を外し、結果として単回帰となった場合はその旨を明示すること。
>>909 【審議中】
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
【お断りします】
ハ,,ハ .ハ,,ハ
ハ,,ハ( ゚ω゚ )( ゚ω゚ ) ハ,,ハ
( ゚ω゚ ).ハ,,ハ) (.ハ,,ハ)( ゚ω゚ )
| U ( ゚ω゚ )( ゚ω゚ ) .と ノ
u-u (l ) ( ノu-u
`u-u' `u-u'
>>909 ハ,,ハ ハ,,ハ
( ゚ω゚ )゚ω゚ )
/ \ \ 教育上お断りします
((⊂ ) ノ\つノ\つ))
(_⌒ヽ ⌒ヽ
ヽ ヘ } ヘ }
ε≡Ξ ノノ `Jノ `J
912 :
ぱり :2009/07/23(木) 03:57:47
お願いしますょー 私別に情報系じゃないんでとかいって明治の情コミですけど笑EXCELとか今期だけなんでホントおねがいします
913 :
名無しさん@そうだ選挙にいこう :2009/07/23(木) 07:07:56
>>912 てめーなんか単位落とせばいいんだよ、カスが。
914 :
906 :2009/07/23(木) 10:39:51
>>901 のN列のデータが前方アルファベットで後方数字なら
>>906 の式で問題ないが
N列が"A13A11"とかの文字列だと"おk"になってしまう。
このようなケースが考えられるのであれば下になる。
=IF(ISNUMBER(FIND(LOOKUP(N2,範囲),N2)),IF(FIND(LOOKUP(N2,範囲),N2)=1,"おk","ダメぽ"),"ダメぽ")
同じ計算を二度やってて無駄なので作業列使った方がいいけどな。
エラーを判断するとき、 セルC1=IF(ISNA(MATCH(省略),0,MATCH(省略)) と セルD1=MATCH(省略) セルC1=IF(ISNA(D1),0,D1) とではどっちを用いるのが良いでしょうか? 或いは他に良い方法があれば教えて下さい。
>>915 同じ計算を二度やらない後者がいいのは常識。
データが多いとき有るか無いかをMATCHの0検索でやるやつはあまり利口ではない。
COUNTIF使うやつよりは少しはマシかも知らんけどな。
データが多いときは範囲をソートしてLOOKUPが普通。
917 :
名無しさん@そうだ選挙にいこう :2009/07/23(木) 12:06:51
きのうExcel2003の勉強を始めたものです。 B2 B3 B4 B5に1〜4を入れてその+-*/をD2 D3 D4 D5に計算させることに成功しました。 これがあれば例えばB3の数字を変えるとDの値も自動で変化する、ってのがExcelなんですね ここのレベルって高いなあ なんか稚拙で申し訳ない。 いろいろ聞きたいことがあるんだが教えてください @自分で作れることは必須になるんだろうけど実際にはよいテンプレートを拾ってくるもの? A>7の質問レベルってどのくらい? B>7って力だめしっぽいんだけど仕事ってこういうことするの? C就職面接でExcelできますっ、って言えるのはどのくらいやればいい? 片手間でいいんでお願いします。
>>918 >>7 の質問の内容だけど、正直言ってExcelの機能や制限をきちんと理解してるとは思えない。
そういう意味では
>>7 自身のレベルはそれほど高くないとも言えるが、
やろうと思えば不可能ではないのと、そのとおりちゃんと作るには
ちょっとしたテクニックが必要になるので、知識として知っているだけなら、
これができてしまう人のレベルはそこそこ高いとも言える。
(実際にやるかどうかは別として)
仕事で必要かどうかは、上司がExcelのこをちゃんと理解していないと
こういう無茶なことをやらされる可能性はある。
そこで「そんなことやるべきではありません」と反抗できるやつは、
なかなかいないと思うんで、できないよりはできる方がいい。
>>918 テンプレートは請求書やFAXの送付状は拾ってきたけど
ほとんどは自分で作ったな
>>7 は変な仕事だから気にしなくてokだけど変な会社だとこういう作業が必要になる場合もある
4のエクセルできる、は難しいな。とりあえず値と数式の違いが分かっていないと厳しい
921 :
915 :2009/07/23(木) 14:49:36
>>916 もう1つ教えて下さい。
参照項目が複数ある場合、MATCHで行を求めておき、OFFSETまたはINDEX
で複数列を編集する場合でも、複数列の編集に各々LOOKUPを使用する
方が良いですか?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ どなたか教えてください。 ひとつのブックに、シートが50ほどあります。 それを全部印刷しなくてはなりません。 シートに通し番号はついていますが、飛び飛びになってます。 印刷もれのないようにしたいのですが シート名の一覧を印刷したりできませんか? 画面を見つつ、出力したものと照らし合わせつつ…という方法しか ないのでしょうか? それぞれのシートの内容はばらばらで、印刷設定もその都度変えなければ いけない状況です。 よろしくお願いします。
>922 VBAを使わずに一番簡単なのは ファイル-プロパティ で「ファイルの構成」タブの画面をコピー してエクセルのシートに貼り付けて・・・を繰り返してから印刷かな。 50シートだと一画面に収まらないので、ドラッグしながら数画面分貼り付けることになる。 画面のコピーは[alt]キーを押しながら[PrtSc]プリントスクリーンで、当該ダイアログだけコピーできる。 VBAを使う方法は誰か別の人が教えてくれるでしょう。
>>922 VBAで回答していいのかと思ったらダメなのか。
エラーも何も考えてないけどよければ↓どうぞ
Sub a()
For i = 1 To 100
Cells(i, 1) = Sheets(i).Name
Next
End Sub
925 :
922 :2009/07/23(木) 15:20:48
>923 ありがとうございます! ちょっと急ぎなので、この方法でやってみますね。 助かりました。
926 :
922 :2009/07/23(木) 15:22:11
>924 勉強不足ですみません… でも、ありがとう。
シートを全部印刷って、印刷ウィンドウの印刷範囲で「ブック全体」を選べばいいだけとか そういうレベルの話じゃないの? 個別の印刷設定は、一度でも印刷すればシートごとに違っててもちゃんと保存されたはず。
>>927 >シート名の一覧を印刷したりできませんか?
恐らく確認用かと
>>921 まずOFFSETは使っちゃいかんだろうよ。
ここはINDIRECTやらOFFSETやら平気で使うDQNが多杉だけどな。
大量データで複数列を参照する場合はLOOKUPじゃなくてMATCHの照合の型1を作行列で使う。
あとはもちろんINDEXと組み合わせるが、作業列はもう1列必要だ。
しかしお前分ってる上で質問してるんじゃないか?
分ってると思うけどMACTHの照合の型1だからソートした上で使うんだからな。
シートって全選択できなかったっけ とりあえず左下のシート矢印を一番左にして、右クリックするとシートの一覧がでる ctr押しながらシートを左クリックで複数選択できる
>>924 シートの選択ならばfor eachを使った方が洩れがなくなる
俺は使わないけど
ctrl+shift+pagedown で複数選択していけるぜ
>>924 って作業用のシート作ってアクティブにして動かさないといけないじゃないか
なんと言う地雷w
>>935 どこに入れたかが問題なんじゃなくいぞ
マクロ動かした時点でアクティブなシートにシート名書いちまうのが問題なんだろうがww
for〜 nextならば for i = 1 to Worksheets.count '処理 next などとするんだろうがfor each〜nextより汚いわな。
>>936 スマン、見落としてたぜ
本人も何も考えてないって言ってるし今回は許す
>922の質問者は>923の画面コピペでやってみると書いたので、セーフかな。 同じようなことをやろうとしてた人がセーブせずにVBAを試して今頃泣いてるかも。
>>921 VBAが少し出来る俺よりレベル高いよ
昨日はじめたとはとても思えない
>940 自分の馬鹿さ加減をアピールしなくても良いですよw
942 :
901 :2009/07/23(木) 20:32:15
901です。 レスをしてくださった方、ありがdございます。 すみませんが、急きょ出張となってしまったので、検証は帰ってきてからと させて頂きます。(たぶん、来週です)
>>921 が昨日始めたってどこに書いてる?
そこいらのVLOOKUPを使いよりかなり出来そうだが。
雑談スレ池
きたかチョウさん待ってたホイ
946 :
名無しさん@そうだ選挙にいこう :2009/07/23(木) 22:07:37
Excelの勉強を今から始めるつもりの者です。 調べたところ、2003と2007では操作の違いや互換性が問題になると知りました。 ただ、2003を未だに採用しているところも多いと聞きます。 今から始めるには、やはり2007で操作を覚えていくの良いでしょうか。
>>946 実務レベルではまだ2003が圧倒的。
でもやがてなくなるだろうし個人レベルだと2007率かなり高くなってる気がするし、
超特急で実務知識を!でなければ2007かな?
でもどっちで勉強してもひととおりの操作がわかればどっちでもつかえるはず。
表だった違いはそれぞれのメニューの場所くらいだし。
949 :
名無しさん@そうだ選挙にいこう :2009/07/23(木) 23:17:48
>>948 なるほど。
実務で即戦力を身につけるとすればやはり2003なのですね。
関連書籍も安くなっているようなので、2003で学んでいこうと思います。
ありがとうございます。
>>949 関連書籍まで買って勉強するならケチらず2007"にも"対応の奴を買ったほうが
いざ2007を差し出された時の対応力が違うぞ。
俺の会社は2000だけどな 2003で十分だと思う
Windows95が出た時もMS-DOSで十分っていうひとがたくさんいたよな
そうだけどな それにしても2007は変化し杉。 おじさんはついて逝けない
新しいバージョンがどんどんスタンダードになっていくというのに何が悲しくて 旧バージョンを購入しようとしているのだろう。
>>953 上の方で紹介されてたフリーウェア入れろや
Office2003だと、オフィスバーが無くなったからな・・・ Excel2003もお節介機能がウザい。 2000で十分。
一般事務ならoffice95でもまだ現役で使ってるぞ。OSは98だし
スタンダードになろうと必要の無いものは必要ないよ
>>955 OOoは少しクセがあるよ。
就職のために〜と言ってる本当の初心者にはあまり薦めないほうがいいかも
エクセル、ワードは中古で本体ごと買え一番安く付く
>一般事務ならoffice95でもまだ現役で使ってるぞ。OSは98だし 自慢できることではないな。 むしろ会社の資金繰りがうまくいってない印象がする。
資金繰りというより PCの更新に興味がないと思う
9X系はもうサポート切れてなかった?
切れてる
>>958 古いバージョン使ってる会社の方が安定した中堅企業のイメージあるけどなー 受け取り方も人それぞれだな。
以前からExcel使ってる会社の場合、バージョンアップのメリットあまりない気がするもの。
上の相談と別として書けば個人的には2003以前(できれば2000以降の方がマクロとかで互換性が)が好きだけど
2007でファイル形式を根本的に変えたところを見るとこの流れに乗れないとゆくゆく困るかも、という気はしてる。
特にvba厨としては今後の流れに要注意かも。(ピボット先生はまだまだ安泰かもね)
2000→2003は普通に便利になったから喜んでバージョンアップしたけど、 2007はもう方向性違うからな。。。
料理のレシピを何十か書きたくて、同じ様式で後から見やすくしたいんだけど 一つのファイルでシートを複数にするとか レシピと同じだけの数のファイルを作るかでなく 料理名をドロップダウンから選んでレシピを表示させる、なんてのはできるんでしょうか? できるなら参考になるURLとか教えて頂けるとありがたいです
それはファイルでなくブックでは?
と918の私が言ってみるw
オートフィルって便利だね。
3章の罫線まで一気にやったけど書式のコピーが難しいや
VLOOKUPに早く会いたいな。
>>919 >>920 ありがとうございました。
>>964 レシピ集って普通増えていくものでしょ
入力規則つかうとメンテたいへんかも(マクロ使えるなら簡単だけど)
目次のシート作ってハイパーリンク設定しとく方が何かと便利で簡単なような
ブック内だけでなくネットで見つけたレシピとかのリンクも混ぜられるし
>>967 リストの範囲(A:A)に名前をつければ追加されても使えるよ
969 :
921 :2009/07/24(金) 10:41:28
>>929 >>930 ありがとうございます。
作業列がもう1列必要というのは、Matchで取得した行の検索キーが一致
しているかどうかの判断用という事でしょうか?
この判断のやり方もIF関数以外で良い方法があれば教えて下さい。
OFFSET等は入力規則のリスト(やデータ領域)等の名前の範囲指定に多用
しています(他の良い方法を知らない)。
# VBA等は多少知っていますが、関数は殆ど知らないのでググってます
【1 OSの種類】 WindowsXP 【2 Excelのバージョン】 Excel2000 【3 VBAが使えるか】 いいえ 【5 検索キーワード】 複数条件 個数 SheetA A B C D 1 1 1 ? ? 2 1 2 ? ? 3 1 3 ? ? 4 2 1 ? ? 5 2 2 ? ? SheetB A B C 1 1 1 a 2 1 2 a 3 1 2 b 4 2 1 a 5 2 1 b 上記のようにSheetAとSheetBがあり、SheetAのA(n)とB(n)に ある値をSheetBのA列,B列から検索して、その中のaの個数と bの個数を、それぞれSheetAのC(n)とD(n)に表示させたいの ですが、その場合のC,Dの関数の書き方を教えてください。 よろしくおねがいします。
>>970 C D
1 0
1 1
0 0
1 1
0 0
になればいいってことかいな?
>971 例がちょっと悪かったかもしれませんが、結果はそうです。
>>972 シートAのC1=COUNTIF(Sheetb!D:D,A1&","&B1&"a")
シートAのD1=COUNTIF(Sheetb!D:D,A1&","&B1&"b")
シートBのD1=A1&","&B1&C1
全て下までオートフィルでいけると思う
974 :
横から :2009/07/24(金) 12:43:17
>971,972 自分はSUMPRODUCTを使ってみました。 シートAのC1セル=SUMPRODUCT((Sheet2!$A$1:$A$5=A1)*(Sheet2!$B$1:$B$5=B1)*(Sheet2!$C$1:$C$5="a")*1) シートAのD1セル=SUMPRODUCT((Sheet2!$A$1:$A$5=A1)*(Sheet2!$B$1:$B$5=B1)*(Sheet2!$C$1:$C$5="b")*1) 作業列はいらないけど、式がやたら長い。範囲を指定する必要があるみたい。A:Aみたいに列指定したら NUM!のエラーになった。
975 :
974 :2009/07/24(金) 12:48:24
>974に追加 C1とD1セルのコピーにオートフィルはできないみたいです。 それから、最後の"*1"は不要でした。*1がいるのは条件がひとつだけの場合だけだった。
>>973 ,974
ありがとうございます。両方とも希望する動作をしました。
ところで、
>>974 のSUMPRODUCTの最後の「*1」は、どういった意味があるのでしょうか?
試しに付けた場合と外した場合で、テストしましたが結果が変わりませんでした。
977 :
974 :2009/07/24(金) 12:57:41
>976 自分が参考にしている「エクセル関数1000技+α」(アスキーメディアワークス) に*1って使っているのがあったので入れてみました。 よく読んでみたら「条件が1つだけの場合は*1を追加する」とあり、 今回は条件が3個だったので外してみてもOKだったということです。
SUMPRODUCT なんかでは、EXCEL の小さな親切 大きなお世話機能を利用して、論理値 TRUE/FALSE に算術演算子を混ぜる事で自動キャストさせて 数値 1/0 として扱う為に 1を掛けたり0を足したりなんかします。
列幅の自動調整の ショートカットはありますか
>>979 列の端をダブルクリックすれば調節されます
982 :
名無しさん@そうだ選挙にいこう :2009/07/24(金) 17:35:57
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 セル 入力 マクロ 実行 ユーザーフォームにデータ入力→自動でセルにデータ入力→セルにデータが入ったらあるマクロを実行 が、したいです。セルにデータが入るところまでは出来ました。 誰か優しく教えて
>>982 call マクロ名
で別のマクロ呼び出せます
>>982 Excelは、セルに何かデータを入れるとWorksheet_Change( )というサブルーチンが
自動的に呼び出されるようになっているので、その中に好きなマクロを書くだけでしゅ。
985 :
名無しさん@そうだ選挙にいこう :2009/07/24(金) 18:21:32
このコード何かおかしいっすか? Private Sub commandbutton1_Click() Dim lRow As Long With Worksheets("実験") lRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A" & lRow + 1).Value = TextBox1.Value End With TextBox1.Value = "" TextBox1.SetFocus End Sub
lRow = Rows.Count.End(xlUp).Row
987 :
985 :2009/07/24(金) 18:52:11
別におかしくないと思うが 何か編なところあるのか?
へんだぜ(ごーん)
>>985 目的は達成できてると思うんでそのままでも別にいいと思うけど、
プログラムにこだわるなら、ほんのちょっと無駄な部分がある。
Private Sub commandbutton1_Click()
With TextBox1
Worksheets("実験").Cells(Rows.Count, 1).End(xlUp).Offset(1) = .Value
.Value = ""
.SetFocus
End With
End Sub
あくまでも重要なのは結果だから、こういうちょっとした違いにこだわる
このスレの住人のやってることは本末転倒なんだけどね。
強いて言えば、A列が空っぽでもA1を飛ばしてA2からデータが入ってくのが 気になると言えば気になるかな
あーそーだ モーダルいじるとフォーカス取得しないのは回避出来ないかね 仕様上しょうがないんだとは思うが
センセー TextBox1.Value = "" TextBox1.Value = vbNullString 厳密にはどっちがいいでつか? 俺は所詮長さ0の文字列を代入は出来ないと思うので後者だと思うんでつが。
うめ〜
>>969 そういうこと、分ってるじゃないかよ。
分ってるならわざわざ質問しなくていいんだよ。
ここは論理的思考を嫌う人たちが多いんだからへたに正しい論理的な手法を書くと
雑談スレへ逝けとかいうDQNもいたりするからさw
まぁ一致か不一致の判定には最低一つのIF関数は必要だろうな。
OFFSETを使った名前定義は入力規則のリストに使うのはかまわんが
数式で使っちゃ駄目だな。
数式で使う名前定義ならOFFSETじゃなくINDEXを使う。
OFFSET使った名前を式で使うといつも再計算して無駄だからな。
名前定義に限らんが。
>>995 型に厳密にこだわるならTextBox1.Text = ""
1000なら紙降臨\(^0^)/
┏┓┏━━┓┏━━┓┏━━┓ ``). ..┃┃┃┏┓┃┃┏┓┃┃┏┓┃ ▼〃ヾ ;;`)⌒ ..┃┃┃┗┛┃┃┗┛┃┃┗┛┃ ( *゚ー) ;;;⌒`)... ┗┛┗━━┛┗━━┛┗━━┛─□( ヽ┐U キコキコキコ ;;⌒`)⌒`).◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎−ミ┘◎
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。