Excelに関する質問は、ここで!
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に
>>2-10 あたりの注意書きやQ&Aを必ず読むこと。
★4 質問テンプレ(雛形)は必須じゃないけど、
OSやExcelのバージョン、VBAの可否など(下記テンプレ1〜4の情報)は必須情報。
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
※【5】は、あなたがGoogleやヘルプで検索した際に使ったキーワードを書いてください。
まだ検索してないなら、質問の前にGoogleやヘルプで検索してみてください。
ttp://www.google.co.jp/ 前スレ
Excel総合相談所 69
http://pc11.2ch.net/test/read.cgi/bsoft/1211605143/
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━ ・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のように 近い値に勝手に丸められる。
________________________________
||
|| ━ 質問のしかた ━
||
|| ★1 質問するときは、環境や条件をキチンと書くこと。情報後出しはダメ。
|| ★2 要望は具体例や図を使って明確かつ具体的にしる。
|| ★3 質問前に
>>2-20 あたりの注意書きやQ&Aを必ず読むこと。
|| ★4 質問テンプレ(雛形)は必須ではないが、
|| OSやExcelのバージョン、VBAの可否などは必須情報。
||
|| ∧ ∧ 。
|| ( ,,゚Д゚)/ ジュウヨウ!! E[]ヨ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ つ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/  ̄ ̄ ̄ ./| ________________
| ̄ ̄ ̄ ̄| | |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|____|/|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ は〜〜〜〜い /
∧ ∧ ∧,,∧ ∧ ∧
( ,, ∧▲ ミ ∧ ∧ ( ∧ ∧
〜(_( ∧ ∧_( ∧ ∧_ミ・д・∧ ∧
@(_(,,・∀・)@ ( *)〜ミ_ ( ,,)
@(___ノ 〜(___ノ 〜(___ノ
エクセルの技術的な質問と関係ない議論・雑談は下記スレッドで。
【質問不可】Excel総合相談所スレの雑談・議論スレ2
http://pc11.2ch.net/test/read.cgi/bsoft/1151651536
おつ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 EXCEL 在庫管理 前のスレッドで質問した者です。 引き続きお願いします。 エクセルで在庫管理する方法を教えて下さい。 お客さんの倉庫5ヶ所に欠品を起こさないように商品を納入しないといけません。 対象となる商品点数は13種類です。 管理する期間は過去3ヶ月程度から1週間先の予定くらいまでを考えています。 各倉庫からの出荷情報は顧客のWebサイトから入手することができます。 今後、倉庫数、商品点数ともに変化する可能性があります。 商品ごと、倉庫ごとに基準在庫が決まっており、その数を割ったら商品を補充します。 ただ、人間の判断によって補充のタイミングや量は調整することがあります。 判断の材料として、在庫数量の時系列での変化が見えるようにしたいです。 商品は固定しておいて、各倉庫別に在庫の推移を見たり、倉庫は固定で商品全部の在庫 を見たりしたいです。 日付を固定して商品ごと倉庫ごとの在庫数量一覧も表示させたいです。 何かいい方法ありませんでしょうか。 よろしくお願いします。
>>9 エクセルはそーいうのには向いてない。アクセス覚えてそっち使え、まじで。
>>10 アクセスでできるがエクセルでできないのはなぜ?
アクセス固有のどういう機能を使うつもりなんだ?
>11を見てわからんなら諦めた方がいいよ
16 :
名無しさん@そうだ選挙にいこう :2008/06/09(月) 22:58:10
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 エクセル 文字列 検索 このスレにはいつも助けられています。 今回もなにとぞよろしくお願いします。 A列 B列 C列 D列 aba東京 東京 東京都港区… bcb千葉 千葉 千葉県… cab奈良 奈良 奈良県… B列にA列と同じ文字列があった場合、D列に 「1」と数字を入れたい場合、どのようにすれば 良いのでしょうか。 基礎的な事かもしれないですが…どうぞよろしくお願いします。
>>16 findとかsearchであるかないかを判定したらどうなん?
19 :
名無しさん@そうだ選挙にいこう :2008/06/09(月) 23:45:07
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel 2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 時刻 小数点 一秒以下の時間を入力して計算させたいのですが、どうしたらいいのでしょうか? ヘルプでは一秒までの方法しか見つかりませんでした
エクセル2007だと Ctrl+D で、上のセルをコピーができないのでしょうか。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 エクセル 文字 入力 ^ 質問ですが、セルに文字を入力しようとするとすでに ^ が入っているんですが、 どうやったらなくせるのでしょうか。 ある日から突然そうなったんですが直し方がわかりません。 よろしくお願いします。
22 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 00:00:55
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 名簿 同性 VBA 姓名のリストがあります。ここから苗字のみを抜き出したいのですが。。。 山田 太郎 → 「山田」を抽出 =IF(A1="","",LEFT(A1,FIND($AA$1,A1)-1)) *A1に 「山田 太郎」 AA1に「 」スペース このように現状は対応しているのですが、同性がいる場合(山田さんが同性 他の人は一人だけ) 山田 太郎 → 山田(太) 山田 次郎 → 山田(次) 米山田 太郎 → 米山田 としたいのです。常に30名程度のリストです。よい解決策をご教授願います。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 yeah 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 exe 捨てたい 前スレからの持ち越しです。 VBAでcsvファイルを読み込み、一部を書き換えて 保存するにはどうすればよのでしょうか。 180,65,N 179,62,N 174,57,A のようなデータがあるとした場合、二行目の 最後の要素”N”をAに書き変えたいのです。 要はcsvの中の一つの要素だけ書き換えたい のですが無理なんでしょうか。 なんかバイト数が同じだとどうとかGandamが どうとかよくわかりません><
24 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 00:05:42
>16 A列の内容 の一部に B列の内容 を含む場合に D列に1をセットする、という 考えでいいんですか? A列 B列 C列 D列 aba東京 東京 東京都港区… 1 bcb千葉 千葉県 千葉県… 空白 "bcb千葉"には"千葉県"は含まれない cab奈良 奈良 奈良県… 1 こういうことであれば Sub test() For tate = tate_strt To tate_end If Cells(tate, 1).Value Like "*" & Cells(tate, 2).Value & "*" Then Cells(tate, 4) = 1 Else Cells(tate, 4) = "" End If Next tate End Sub でいいかと思いますが。 tate_strt tate_end はデータの行範囲を指定してね。 Like演算子とB列の内容の前後に*をつけて判定するので、A列がaba東京都、 B列が東京でもD列は1になります。B列が空白の場合があるならばその場合の 処理を加えてみてください。
25 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 00:14:36
>22 リストをまず「姓名」列でソートしてからでないと無理では? 同一姓の別人がいるかどうかの判定やら、その場合に先に処理した同一姓の人に(名の1文字目)を 付加するとか、かなり複雑になりますね。 それから、30人程度の名簿の中に 「田中 一郎」と「田中 一夫」が存在するような場合は ないんですか?
26 :
22 :2008/06/10(火) 00:22:58
>>25 情報の不足申し訳ありませんでした。
リストは、「姓名」列にてソートした状態になっています。
>それから、30人程度の名簿の中に 「田中 一郎」と「田中 一夫」が存在するような場合は
>ないんですか?
このようなことも考えられます。ただ、確率的には少ないので、複雑な処理になるのであれば、手動で対応しようとも考えております。
27 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 00:32:13
A列:姓名 B列:姓だけ C列:名の1文字目だけ D列:求める内容 として考えてみます。 1回目のループでB列とC列を設定し、 2回目のループではB列で上下のセルに同一の内容(同一姓)の判定を行い、 同一姓がなければB列の内容を転記、 同一姓があるならばB列の内容+"("+C列の内容+")"を転記 D列の内容に同一のものがあるときは(見ればわかるので)、手作業で修正 という流れでいいでしょうか? 25で示したような場合 田中(一)がふたつ並ぶので マクロ実行後に手作業で修正するということです。
28 :
22 :2008/06/10(火) 00:41:25
>>27 まさしくその通りです。よろしくお願いします。
>>23 書き換える前と後で文字数が同じでなければ、全体を読み込んで全体を保存するしかない
>>19 1時間23分45.6789秒なら1:23:45.6789と入力すればいいだけ。そのまま普通に計算も出来る。
書式をいじらないと0.1秒の単位は表示されないけど。
>>12 できないわけじゃなくて、ソフトには向き、不向きというのがあってだな。
無駄な労力はかけたくないんだよ。
ペイントをワープロのかわりに使うのも不可能ではないけどやりたくない、そういう感じ。
>>31 返答ありがとうございます。
数式バーに勝手に入力されているという意味です。
36 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 01:24:14
>29 すごいですね。こちらはVBAでやってみました。 重複する部分がたくさんあるので手続きをまとめるといいんだろうけど、とりあえず。 Sub test() ' 1回目のループは省略します ' 2回目のループ For tate = tate_strt To tate_end Do If tate = tate_strt Then '先頭行 Else '以外ならばひとつ上のデータと比較 If Cells(tate, 2).Value = Cells(tate - 1, 2).Value Then Cells(tate, 4).Value = Cells(tate, 2).Value & "(" & Cells(tate, 3) & ")" Exit Do End If End If If tate = tate_end Then '最終行 If Cells(tate, 2).Value = Cells(tate - 1, 2).Value Then Cells(tate, 4).Value = Cells(tate, 2).Value & "(" & Cells(tate, 3) & ")" Else Cells(tate, 4).Value = Cells(tate, 2).Value End If Else '最終行以外ならばひとつ下のデータと比較 If Cells(tate, 2).Value = Cells(tate + 1, 2).Value Then Cells(tate, 4).Value = Cells(tate, 2).Value & "(" & Cells(tate, 3) & ")" Else Cells(tate, 4).Value = Cells(tate, 2).Value End If End If Loop While (0) Next tate End Sub
>>35 まだわからん。もうちょっと因果関係を詳しく書いて。
どういう順番でキーを押すと、どのキーを押した直後に「^」が入る、みたいな。
ただ、聞いたことのない症状だから回答できない可能性が高いけど。
38 :
22 :2008/06/10(火) 01:27:45
>>29 ありがとうございます。確認してみました。
D列はまさしく求めている値が出ました。が、名前だけを抜き出すC列がうまく処理できてないみたいで。。。
C列はどのようにしたのでしょうか?姓と名の間には半角スペース一つ開いています。
>>34 あまりうまくない例えだな。
アクセスで作るならどう作るつもり?
40 :
21 :2008/06/10(火) 01:35:16
>>37 たびたびすみません。
普通に立ち上げて、文字を入力しようとセルを選びます。
そうすると数式バーにすでに ^ が入っている、という感じです。
>>39 まず、リストにデータを追加したり削除したりするのがExcelだと面倒。
Accessだと削除すると空いた行を自動的に詰めてくれるし、追加すると自動的にソートしてくれる。
厳密には違うけど、そんなイメージで使える。
Excelだと作業用の列やシートを用意したり関数を書いたり、そういう処理をいちいち書かなきゃならない。
不可能じゃないけど無駄な労力だと思う。
>>42 それエクセルの全否定じゃないか。
在庫管理どころかあらゆることにエクセルは向いていないということか。
そこまで言うなら仕方がないが極論だと思うぞ。
44 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 01:44:00
>40 いくつか質問します。 新規のワークシートでそうなりますか? 特定のセルじゃなく、どのセルを選んでもそうなりますか? そのまま[Enter]を押したらセルに^が入力されますか? 新規ワークシートではA1セルが選択された状態ですが、数式バーには^が入ってますか? そしてA1セルには^が表示されてますか? セルを選択する方法には2種類ありますね。セルをクリックする方法とセル位置が表示されている 場所に直接セルのアドレスを入力する方法です。初期値のA1となっているのをB2にして それでも数式バーには^が表示されますか? すでに作成して保存してあるブックの、すでに何かデータ(計算式でも可)が入っている セルをクリックしても^に置き換わりますか?
>>40 セルになんか入力する時、たとえば
どこかセルをクリック→数式バーをクリック→内容をキーボードから入力→Enterで確定
って順番に操作することになると思うけど、
この場合、2番目の数式バーをクリックすると、その直後に数式バーに ^ が入るってこと?
で、それはBackSpaceキーを1回押せば普通に消せる?
>>43 ようするに「在庫」ってのはデータベースそのものでしょ。
量が常に変動し続ける場合はデータベースソフトを使った方が向いてるってこと。
行数、列数が固定されてる「表」であればExcelのが手軽。
それなら、Accessスレに誘導してあげれば良いじゃん
このスレッドには在庫管理できる回答者はいないという結論でいいかな。
>>43 Excelはもともと、データをどんどん追加するような使い方は想定されてなかった。
だから行数が65536しかなかったわけだ。
Excelでデータベースを作ったとして、何年も業務を続けてればあっというまにレコードは
6万を超えて破綻するわけだ。
2007で最大行数が増えたのは、そういう想定外の使い方をする人があまりにも多くて
MSが折れたと見るがどうだろう。
使う人次第
駄目な奴は何をやっても駄目
会社に泊まり込んで2chやってる俺も駄目人間だけどな
>>49 その結論でOK
在庫管理の件は終了です
52 :
21 :2008/06/10(火) 02:00:58
>>45 会社のPCなので細かくは今説明できません、すみません。
(間違ってしまうかもしれないので)
しっかり確認してきます。
>>50 個性的な説だなあ。
私はそうは思わない。
「俺なら出来る。やらないけどな」っていう、口だけのやつなら何人もいた。 やらないのはできないのと同じだってうちのばあちゃんが言ってた。
>>50 行数は65536もある。
65536行で十分な業務に対してはそんないいわけは通用しない。
アクセスにだって制限はあるのだから。
エクセルはそういうことに向いていない。
エクセルはもともとそういうことを想定していない。
なんでそんなこと勝手に決めるの?
>>23 暇に任してコード書いたよ
てか、こんなんテキストエディタでやれ
Dim rootFolder As String
Dim fileName As String
Dim fileNumber As Integer
Dim byteBuf() As Byte
Dim strBuf As String
Dim buffer1 As Variant
Dim buffer2 As Variant
Dim i As Long
rootFolder = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\"
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = rootFolder
.Filters.Add "CSVファイル", "*.csv"
If .Show = -1 Then
fileName = .SelectedItems(1)
Else
MsgBox "ファイルを取得できませんでした", vbExclamation, "エラー"
Exit Sub
End If
End With
つづく
57 :
56 :2008/06/10(火) 02:18:28
つづき fileNumber = FreeFile() ReDim byteBuf(FileLen(fileName) - 1) Open fileName For Binary Access Read Write As #fileNumber Get #fileNumber, , byteBuf strBuf = StrConv(byteBuf(), vbUnicode) buffer1 = Split(strBuf, vbCrLf) For i = LBound(buffer1) To UBound(buffer1) If buffer1(i) <> "" Then buffer2 = Split(buffer1(i), ",") If buffer2(UBound(buffer2)) = "N" Then buffer2(UBound(buffer2)) = "A" buffer1(i) = Join(buffer2, ",") End If End If Next i Put #fileNumber, 1, Join(buffer1, vbCrLf) Close #fileNumber
マリーアントワネット「AccessがだめならSQLサーバを使えばいいじゃない」 規模に合わせて使い分けろ。 能力もソフトの値段も違うし。 小さい事務所ならExcelで十分。 で、既製品があるのにわざわざ自分で作るのはどうして? 車輪の再発明はソフトの使い分け以前の問題だぞ。
>>58 再発明というほどのことではない。
標準的なエクセルの機能だけで数分で完成する。
こんなことで再発明を言い出したらエクセルそのものの存在価値すら疑わないといけない。
60 :
56 :2008/06/10(火) 02:33:16
>>58 そもそも規模の問題でできないという話なのか?
そうじゃなくてやり方がわからないんだろ。正直に言え。
正直言うとわからない
言い訳してすまなかった
>>61 はできるの?できるならやり方を教えて
お願いします
>>59 おまえバカだなぁ
エクセルは個人で小さい車輪を最発明して自己満足する道具だぞ
知らなかったのか?
>>59 数分てw
どんなに低機能でもそれはないわ。
新規ブックに「データベース.xls」って名前を付けて保存するだけ、みたいな
低レベルな冗談は禁止な。
>>62 ある日付における在庫数は
繰越数量+繰越日からある日付までの入庫数-繰越日からある日付までの出庫数
で求められる。
元のデータをこんな形式にしておく
日付 区分 商品 納入先 数量
6/1 繰越 AA 倉庫1 125
6/2 入庫 AA 倉庫1 200
6/2 出庫 AA 倉庫1 25
6/3 出庫 AA 倉庫1 50
ピボットテーブルで繰越、入庫、出庫の累計を計算する。
ピボットテーブルに集計アイテムを追加して
在庫=繰越+入庫-出庫
を求める。
これでできあがり。
Excelはね……宇宙なんだよ! すべての物がそこには詰まっている。 歴史も、夢も、絶望も…!
データをシートに直入力してピボットテーブルやグラフを手作業で作るだけってw 空のブックをデータベース.xlsで保存したのと変わらないじゃん。 まず子供の小遣い帳と会社の在庫管理の違いを勉強してこい。
>>69 やめろ。見苦しいぞ。
会社の在庫管理だって規模が違うだけでこうやってるんだ。
自分一人でやる仕事ならそれでもいいと思うよ。 ただ、会社だと不特定多数が閲覧したり入力したりする場合があるから、 それならもうちょっと手間をかけてやらないとなあ。 引き継ぎなんか、Excelを丸ごと教えることになっちゃうし。 (知識としてExcelぐらい知ってた方がいい、等の意見はお門違い) そのへんどうなんだろうね?>質問者
>>65 お見事。
累計でやるのか。頭いいな。
ひがんでるやつらはかっこわるいなあ。ピボットテーブル使えないなんて文盲だよ。もはや。
>>70 「規模が違うだけ」っていうけど、規模が違うからこそ考慮しなきゃいけないことはいくらでもある。
そういうのを机上の空論と言うんだ。
だからさぁ 何度も言ってるけど規模の大きいとこはExcelをデータベースがわりになんか使わないんだってば Excelでこと足りるってことはピボットテーブルで十分ってことなの
>>75 このスレの回答者はなかなかそれがわからないみたいだね。
エクセルでやるようなことはピボットテーブルでほとんど何でも解決するし、
ピボットテーブルで解決しないようなことはエクセルでするべき仕事じゃない。
仮定の話 1行1レコードとして1シート6万5千件 1年1シートとして1日170件、営業日だけなら1日250件 たとえ1000種類の商材を扱うとしても、すべての品目が毎日出入りするわけはない こんだけデータが入るんだから、小さな会社の在庫管理はExcelで十分
>>76 小さい会社はエクセルをワープロがわりに使います
悲しいけどこれ現実なのよね
>>71 不特定多数が閲覧、入力するからこそのピボットテーブルなんだけどな。
日付 区分 商品 納入先 数量
6/1 繰越 AA 倉庫1 125
6/2 入庫 AA 倉庫1 200
6/2 出庫 AA 倉庫1 25
6/3 出庫 AA 倉庫1 50
何の説明がいる?
ピボットテーブルがいいのは、データの形式そのものがビジネスルールを
表現しているところ。VBAではこうはいかない。
不特定多数がかかわる仕事は、誤消去とか入力ミスを防ぐ工夫が必要になってくるんよ うっかりさんはどこにでもいるから できるだけ生のデータが入ったシートは隠すとか本質的じゃない部分で手間がかかる
>>80 それはそうだけど、ピボットテーブルとは別の問題だよ。
在庫管理の件については質問者がやる気起こさない限り 誰もまともな解答付けられないと思われ 今までの情報じゃ頭悪い俺には無理。
作成方法に正解なんてありません ピボットテーブルでもVBAでも質問者が決めれば良い 何を言い争っているんだい
【1 OSの種類 .】 Windows2000 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 セル 最終 取得 開いていないブックから入力済の最終セル番地を調べたいです。 ググってみたのですが、開いたブックの最終セル取得方しか見つかりませんでした。 開いていないブックから入力済の最終セル番地を取得する方法があればご教示下さい。
85 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 12:49:56
調べたい対象のブックの最終番地を、そのブックの特定シートの特定セル位置に 書き込んでおけますか? 書き込めるのであれば、「可」です。 現在開いているブックの適当なセルの計算式に 他のブックの参照 を入れれば済みます。 下の例は、DドライブのFolderという名前のフォルダにあるsample.xlsのシート1のA1 セルの値を参照しています。 ='D:\Folder\[sample.xls]Sheet1'!$A$1
>>55 在庫管理の必要がない所からみればそうかもしれないが、
普通にデータベースとしてみれば、どう考えても少なすぎる
>>50 の説はかなりあたってると思う
あとaccsessはPro版(だっけ?高いほう)にしか付いてこないのもネックだよな
メーカーPCだとほとんど付いてこない
普通のデータベースを運用した事があるのかしらねえあの人
>>88 ど素人乙
何だ?普通のデータベースって。
「普通の数字」見たいなもんかww
「在庫管理」って言葉に萌える (;´Д`)ハァハァ
普通じゃないデータベースって正規化されてなかったりデータベース自体に関数が入ってたり するもののことじゃね? たまに年齢が入ってたりするのを見かけるが、あれはいただけない
いつからゴミ箱になったんだ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 average if 家計簿の中から月ごとに出費やらの平均を出したいです。 2007にはaverageifって関数があるらしいですが、これを2002で再現するにはどうしたらいいですか? 検索するとsumif/countifってのがよく出てきますが、セルには○月△日(○/△)と入れてるので countifじゃカウントできないです(countaifってのは無いみたいですし) countifで出来るように月と日を別のセルにするしかないのでしょうか
ありがとうございます month関数で月の数字を取り出した列を別に作って検索対象にしたら出来ました 別の列を作らずに式だけで処理するのは無理ですかね
>>86 何も全社のデータを処理しようというんじゃない。
一担当者の限られた業務をサポートできればいいだろう。Excelなんてそんなもんだよ。
数万件のデータは人間にとって十分に巨大だ。感性で扱える量じゃない。
理論に基づかないいい加減な手法で操作していたらたちまち破綻してしまうよ。
>>94 平均=合計/個数だから
=SUMIF( )/COUNTIF( )
みたいな感じで置き換えればいいんじゃないの?
>>82 すでにパーフェクトな解答が出ているのに今さら何を言ってるんだ?
>>96 作業列なしでも出来るが、SUMPRODUCT 使う奴はアフォとか池沼とかノータリンとか
言われるので、それを覚悟して使ってくれ。それと空白は1月だからね。
B列:データ、C列:日付、F1:集計する月
=SUMPRODUCT((MONTH(C2:C99)=F1)*B2:B99)/SUMPRODUCT((MONTH(C2:C99)=1)*1)
102 :
9 :2008/06/10(火) 20:01:16
在庫管理の質問をしたものです。 おかげさまでピボットテーブルを使う方法で解決いたしました。 今日、実際のデータを使っていろいろ試してみたところ、 必要なものがすべて表現できることがわかりました。 これから実務に使っていこうと思っています。 みなさんたくさんのアドバイスありがとうございました。
103 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 20:21:55
いいからお前は病院行ってこい
104 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 21:40:34
おまいら言い争いはやめておけ。 俺が飛んでもないプログラムを公開してやるから、落ち着いて見てくれ。 Dim 2ちゃんねら AS Long for A% = 1 to 2ちゃんねら IF レス=104 then MSGBOX("天才") ELSE MSGBOX("バカばかり") END IF NeXT A%
105 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 21:45:43
WindowsXP Excel2002 セルに49175.098と入力すると 49175.0979999999に変わるのは なぜなのか教えてください。
107 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 22:05:53
>>106 難しそうな話ですね。
よく読んでみます。
ありがとうございました。
108 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 22:10:14
末期的スレ
109 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 22:12:20
なあに。放っておけば自作自演のQ&Aで病人が地ならししてくれるさ
110 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 22:18:40
>>110 症状が分からんが、普通に印刷できた。
グラフを選択した状態で印刷してみてもだめか?
112 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 23:12:29
>>111 印刷プレビューだとなぜかちゃんと表示されているのに印刷出来ないんです・・・
>112 2007っぽいからちょっとやり方違うかもだけど、 グラフダブルクリック →プロパティ →オブジェクトを印刷する、にチェック入れる。 デフォルトはチェックが入ってる。
114 :
名無しさん@そうだ選挙にいこう :2008/06/10(火) 23:48:05
グラフダブルクリック してもプロパティ という項目は出てこないのですが
だから「飛んでもない」んだろ
変数名が数字から始まってる時点でビルドできません…
すみません。ググっても出来なくて。教えてください。 OS=XP エクセル2003 VBA:出来ません。 ひとつのファイルに200シートを作成して例えばすべてのシートのA1の部分に 1〜200の数字を入力したいです。 昨年はものの弾みで出来たのですが、完全にやり方を忘れてしまいました。 どうか、よろしくお願いします。
Sub VBA使わないと無理っす() For I = 1 To 200 Worksheets.Add AFTER:=Worksheets(I) ActiveSheet.Name = I ActiveSheet.Cells(1, 1) = I Next I End Sub
>119 シート名にも何らかの区別をしているだろうからそこから引っ張った方がよくね? 基本形はこれ。適当に応用しておくれ。 =MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)
>>120 今イチ美しくないな
Sub VBA使わないと無理っす2()
For I = 1 To 3
Worksheets(I).Cells(1, 1) = I
Next I
For I = 4 To 200
Worksheets.Add AFTER:=Worksheets(I - 1)
ActiveSheet.Name = "Sheet" & I
ActiveSheet.Cells(1, 1) = I
Next I
End Sub
>>121 200枚のシートをこれから作るのか、もう作ってあるのかが微妙に不明なんだよね
>>123 あ、先生。
エレガントな回答お願いしますよ。
先生なら3行で十分ですよね。
【1 OSの種類】 WindowsXP 【2 Excelのバージョン】 Excel 2003 【3 VBAが使えるか】 多少 【4 VBAでの回答の可否】 可 【5 検索キーワード】 WEBクエリ 最大 桁数 セル 等 webクエリでデータの取り込みですが 2182874298985 のような大きな数字があると取り込んだセルには 2.18287E+12 のようになってしまいます。 回避する方法はありますか? わかる方居ましたらお願いいたします。m(__)m
>>125 取り込む前でも後でもいいからセルの書式を変更する
せめてFor Each使ってほしいところだな。
しかし未だに「200枚のシートにVBAで数字を記入」などということをやってるやつがいるのか。
まだまだ啓蒙が必要だな。
>>119 本当にやりたいことは何?
在庫の管理?
売上の分析?
回収の管理?
検収の処理?
ゲーム作成?
For Eachは最初からシートが200枚ないと無理では。 初期状態(シート3枚)からスタートするならこれでいいと思うのだけれど。 もうちょっと簡単にできそうな気はするんだけど俺の知識じゃ無理だ。 先生、教えてください。
>>129 シートを生成してからFor Eachでいいんじゃない。
どうでもいいよ。こんなこと。
バカバカしい。
シート生成のループと値セットのループを並べるのか? 1つで済ませた方がよっぽどいいわな。 わからないからって逃げるのはよくないぞ。おまけに捨てゼリフ。最低のザコだな。
どうでもいいなら黙ってろよカス
>>131 >1つで済ませた方がよっぽどいいわな。
爆笑
おはようみんな 今日も1日がんばろー
>>131 さて。
「ループを1つで済ませた方がよっぽどいい」
のはなぜか。説明してもらおうか。
ケチつける奴って逆に自分がケチつけられるのが怖いからコード示したりしないんだよね
質問者は目的を達成してすでに見てないのに いつまでもグダグダ続けるのがこのスレの掟
>>137 >シートを生成してからFor Eachでいいんじゃない。
これでほぼコード示している。
だけどこんなやりとりほんとにつまんない。
200枚もシート作ってVBAで処理しないといけないなんて異常。
もっと前の段階で何か間違いが発生しているとしか思えない。
>>137 ううん、ちがうよ。
最初からスレを荒らすのが目的でExcelのことなんか何も知らないんだよ。
ここの住人は面白いほど釣れるからね。
おまいらいいかげん荒らしはスルーしろ。
なんでわざわざつまんないやりとりに参加してんのさ。頭おかしいんじゃないの?
典型的な構ってちゃん
啓蒙 あ、私が「けいもう」って言ったらみなさん笑ってくださいね。
本当におまいら釣られすぎだぞ スルー汁
ここの回答者の大半が無知だってことは在庫管理の件で証明されたじゃないか
ケチつける、ほぼ示す、これ啓蒙なんだって。すごいなー。さすが先生!大物ですね。将来が楽しみだ。
相談所の前に「総合」って付いてる意味がようやくわかってきました。
ここまでみんな俺の自演
質問者には「情報を小出しにするな」と言い 啓蒙の為に回答を小出しにするんですね、ご苦労様です
質問者が「200枚のシートを…」とか言い出した時点ですかさずツッコミいれないとなあ。 ここを疑問に思わず得意そうにVBAを披露するやつは回答者に向いてない。 しかも「ループを1つで済ませた方がよっぽどいい」とか意味不明なこと言って。
____ / \ / _ノ ヽ、_ \ / o゚⌒ ⌒゚o \ 今日もまた無知、無学な連中を啓蒙する仕事が始まるお | (__人__) | \ ` ⌒´ /
劣等感の高いやつは無闇にAAを貼る傾向がある。
マクロって元々何の略称ですか
質問の内容が分かりにくいと切れる癖に 自分の回答が理解されないと逆切れするんですね。わかります。
>>154 ミクロ(micro)とマクロ(macro)のマクロの方だったような気が
ミクロな命令いっぱいまとめてマクロみたいな、そんな感じだったかな?
だから、特に略してないんじゃねーかな
>>154 VBA厨やピボット厨のようなバランス感覚がない奴らに向けた言葉。
「マー何てクさい口してるんでしょうね」
"OK"なら緑色、"NG"なら赤色としたいのですが、 [書式][表示形式]のユーザ定義にどう書けばいいのでしょうか? いろいろ試してはいるのですが、うまくいかなくてorz
>>158 そこじゃなくて、
書式 → 条件付書式
を見てください。
次の値に等しい、ok で書式を緑色選択、までかいてやれよ 回答の小出しえうぜぇww
Excelのバージョンが書いてあったら詳しい手順を教えるのに…
荒れ模様に便乗して…
>>150 はテンプレに入れても良い名言
>>158 文字に色を付けたいのか、セル内の背景に色を付けたいのか、どっち?
あとExcelのバージョンも書いて。
ありがとうございます。 色を付けるのは背景です。 エクセルのバージョンは 2000/2003/2007のどれも使う可能性があります。 バージョンによる違いを示してくれるとありがたいです…
「条件付き書式」ってキーワードが分かれば後は自分でどうにでも調べられるだろ・・・ どんだけ他人任せなんだよ・・・
うん。他人任せだよ。それより俺が聞いてる相手は>164だから。 お願いします。
168 :
名無しさん@そうだ選挙にいこう :2008/06/11(水) 18:43:14
回答小出しして偉そうな割に返答がねーな
169 :
158 :2008/06/11(水) 19:11:43
自己解決。 解決方法はお前らみたいなゴミには教えない。 ググれカス!
よくやった。
かつて主に回答者だったが、知ったかぶり・勿体付けがあまりにむかつくので>167と>170を自演した 後悔してなくもないことは全く無い
173 :
名無しさん@そうだ選挙にいこう :2008/06/11(水) 22:49:32
おまいらシートを指定するときって、どうやってる? 俺はSheets("うんこ")とかで指定しているが、これだとAddしたシート名に 法則を持たせるために、名前を変更しないといけない。 インデックス番号を指定する場合、Sheets(1)とかでやれることは知っているが、 Addした時に自動的に降られるインデックス番号って法則性やら自分で指定したりできんの?
>>173 index番号はシートタブが一番左のものが1
だからindexが2のシートを一番左に持ってきたらそのシートのindexは1になる
【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Excel シフト表 ゲームセンターの店長をやっていて、バイトの勤務シフトを作成しています。 バイトは10人ほどおりまして、1日に早番と遅番の2交代で勤務してもらって います。 普段は2人でお店を見てもらっていますが、金曜日と土曜日の遅番は3人体制 にしています。 人によって遅番はできないとか、土日は無理とか、週5日以上絶対入りたいだ とか希望がありまして、なるべく希望通りになるように組んでいます。 毎回のことなんで大体はパターン化しているのですが、やれ子供の運動会だ、 大学の試験だとかでパターンが崩れてしまうと大変で、シフト組むのが苦痛で たまりません。こういうのってExcel使って自動的にぱっぱと作成できないもん なんですかね。 いいやり方を教えてください。 よろしくお願いします。
>>175 まず、すべての条件を箇条書きにする(コレ一番大事)
ひとつの条件を組み込んで正常に動作したら次の条件を組み込む
すべての条件をクリアしたら完成
当たり前のこと言ってんじゃねえって思うかもしれないけど、ホントにコレだけ
その過程でクリアできない条件が出てきたらここで質問するってのが、
メンテナンスまで考えた場合、最良の方法だと思う
塾の先生に教えてもらってきました。 Sub a() Const M = 200 'シート数 While Worksheets.Count < M Worksheets.Add after:=Worksheets(Worksheets.Count) Wend I = 1 For Each S In Worksheets S.Cells(1, 1) = I I = I + 1 If I > M Then Exit For Next S End Sub
Excelの仕様がよくわからないんだけどWorksheets(Worksheets.Count)が必ず存在するって保証はあるの? どのバージョンでもシートを削除した時、インデックスには欠番は生じずに前に詰められるの?
>>179 >保証はあるの?
ある
>欠番は生じずに前に詰められるの?
うん
181 :
175 :2008/06/12(木) 05:11:28
>>176 早速使ってみました。
ただ、条件に合うシフトを自動的に考えてくれるというものではないみたいですね。
これはこれで便利そうなのでもう少し練習してみます。
ありがとうございました。
>>177 今のところ思いつく条件はこれだけです。
もしかしてまだもれている条件があるかもしれません。なにしろ勝手な希望を
どんどん言ってきますので。
1.バイトの人数は10人程度(増減ありますが、9人から11人になるよう
に採用しています。)
2.早番(10:00-17:00)と遅番(17:00-24:00)がある。
3.早番と遅番を通しで入ることは無い。
4.基本的には2人体制。土日の遅番だけ3人体制。
5.できるだけたくさん入って稼ぎたいバイトや、週3日までに抑えたいバイ
トがいる。
6.早番ができないバイト、遅番ができないバイトがいる。
7.土日は入れないバイトがいる。逆に土日に入りたいバイトもいる。
8.「この日はぜひ入りたい」「この日はぜひ休みたい」という希望をできる
だけかなえてあげたい。
条件1と2は表のレイアウトで表現できています。
条件3〜5は入っている人数をExcelに計算させてチェックしています。
条件6と7は記憶に頼っています。こいつは夜しか入れなかったなとか、土日
希望だったなとか思い出しながらシフトを組んでいます。
条件8を考慮するのが大変で、あっちとこっちを入れ替えたりしながら、いつ
もいきあたりばったりで組んでいます。
182 :
175 :2008/06/12(木) 05:17:20
ごめんなさい。 条件4が間違っていました。 誤)4.基本的には2人体制。土日の遅番だけ3人体制。 正)4.基本的には2人体制。金土の遅番だけ3人体制。
183 :
名無しさん@そうだ選挙にいこう :2008/06/12(木) 09:10:53
>>173 オブジェクト名(CodeName)を使うのが一番安全じゃない?
>>181 NP完全じゃない?あまりコンピュータに向かない計算と聞く
例えば週三回希望の人が8の条件上、どうしても二回になったりで
どれだけ不満感が募るのかなんて
>>181 にしかわからないからね
更に来月でその分埋め合わせるから今月は我慢してくれとかになるとお手上げ
更に新人は覚えさせるために多めに入れようとかになると・・
それでもマクロでやるなら、人の許容範囲(最低日数)を設定して、
まずそれで埋めるようにする
後はあいたところを「働けるだけ働かせてほしい」という人で埋めるのがいいと思う
すべての条件が数式で表現可能なら、ソルバーでできそうな気がするんだが。
>178 回す回数が分っている時に While を使わない方がいい。 毎回 Sheets.Count するのも無駄だし。 For Each で回しながら、別にインデックス立てるのも バカっぽい。 塾を代えなさい。
1回見れば十分なプロパティをループの中に書いて何度も参照するのは効率悪いよな。 ループもWhileよりForのが少しパフォーマンスがいいから、工夫して置き換え可能ならForで書く。 Sub aaa() Const M = 200 'シート数 For I = Worksheets.Count To M - 1 Worksheets.Add after:=Worksheets(I) Next For I = 1 To M Worksheets(I).Cells(1, 1) = I Next End Sub
Excel2002です。よろしくお願いします。 @印刷プレビューなどで変更してしまった余白の値をデフォルトにもどすには どうすればよいですか? A作表中に手動で行の高さを変えてしまうと、 文字サイズに合わせて高さを自動変更しなくなりますが、 自動変更されるように戻すにはどうしたらよいですか?
>>189 2は1行目なら左端の1と2の間にカーソルをもっていってダブルクリック
1は知らないな。新規ブック立ち上げて、プレビュー画面にある設定で余白の値を控える
その後作成中の表の余白を値で入力すれば間違いないとは思うけど
>>189 2002、2003は余白の数値を自分でメモっておくしかない。2007だと簡単に戻せるんだけど。
幅や高さは境界線をダブルクリックすれば自動変更に戻る。
うあ、文章を書いてるうちにまったく同じ内容のレスが…
それだけ間違いないレスってことでいいんじゃないかな?
>>181 人間の希望ってファジーなものだから各人の希望を全部かなえる
シフトを自動で組むってのはかなり難しいんじゃないかなあ。
シフトの入力自体は人間がやって、それが各自の希望を満たすか
どうかを判定する式を入れておく辺りが妥当な落とし所だと思う。
ここの回答者たちは、在庫管理やシフト作成など実社会で必要とされる使い方を質問されると途端に答えにつまるね。 一方、書式設定とかVBAでオモチャを作ることには冗舌だ。 シフト作成だが結論から言うとExcelでやるのはやや無理がある。できることはできるが、1週間分くらいしかできない。
「やや無理がある。」で終わってればそれなりの意見だが 「できることはできるが、1週間分くらいしかできない。」が全く不明。
ここの回答者たちは、質問者が本当に必要としている回答を求められると途端に答えにつまるね。 一方、無関係な茶々を入れたり煽ったりすることには冗舌だ。 シフト作成だが、1週間分ができてそれ以上ができない理由というのを知りたい。 つーか、できるんなら1週間分でもいいから示してやれよ。 それだけでもけっこう助かるんじゃないの? 今の俺のレベルじゃここまで複雑なのは無理だ。
いずれの質問も解答は出尽くしてるだろ、
>>195 は何見てるんだよ。
199 :
名無しさん@そうだ選挙にいこう :2008/06/12(木) 14:00:06
質問も回答も伝わらなければ意味がないわな 何が見えてるんだか知らないけど素晴らしい目を持ってんだろうな
200 :
195 :2008/06/12(木) 14:03:04
週○日って条件があるんだから1週間の範囲でしか表作れないのは当たり前だろ。 1週間以上の表からどうやって日数をカウントするんだよ。
202 :
名無しさん@そうだ選挙にいこう :2008/06/12(木) 14:09:46
きもちわる
今のところ質問者はまともに質問してるし 回答者も質問の条件の範囲内で最善の回答してるよね。 文句言ってる人は具体的な数式が出てこないんで納得いかないのかなあ。
バイト1人が、ある日早番である状態を表す変数、ある日遅番である状態を表す変数を用意する。 バイトが11人いるなら1日分だけで22変数必要。9日分なら198変数だ。 これが限界だな。まあだいたい1週間だ。
>>205 それを5回再帰させれば1ヶ月分できるじゃん
配列使えば198変数だろうが、19800変数だろうが問題ないように思うが
207 :
206 :2008/06/12(木) 15:09:45
文句言っててもしょうがないから、VBA厨の面目躍如の為に書いてみるよ 手が遅いから1週間ぐらいかかるかも知れん上、叩き台程度の物しか出来んだろうが
>>195 だから無理があるから向いてないって君も言ってるじゃない
何が言いたいの?
ここでくまひげ先生の出番ですよ
>>208 Excelでは無理があるのには基本的に同意なんだがその理由があまりに情けない。
あまりコンピュータに向かないらしい
今月は我慢してくれとなるとお手上げ
さらに新人を多めになんてとんでもない
人間の希望はファジーだから←質問の条件はファジーじゃないだろ
質問の条件はファジーだろ シフトは16箇所あるが16箇所がぴったり埋まるわけではない どこかで妥協しなければならない その点を書いてないんだから無理
>>210 質問者はいくつかの例を挙げてるだけで、その条件さえ合えばいいってものでもないだろ。
「こうすれば一応は希望通りだが、これじゃAさんのシフトが少なすぎるな、もうちょっと増やすか・・」
とか色々人間が判断しなきゃ決められない部分が絶対出てくる。全部自動でなんて出来るわけがない。
「実社会で」云々言ってる奴の方が現実を知らないんじゃないのか?
VBAをぶん回して条件に合うシフトパターンをいくつか割り出して その中からユーザーに選ばせるってのがいいないでしょうか。 俺VBA出来ないんで誰か作って下さい。
本人がVBA覚えて、 自力解決が一番早そうですね。
【1 OSの種類 .】 Windowsxp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 関数 文字列 エクセル a1に数(3など)、b1にa1を反映させ、単位つきで表示させたい(3人、など)のですが、 この場合、 =CONCATENATE(a1,b1)、a1&"名"、ユーザー書式で0"名" とどれにするのが軽くなりますでしょうか? 純粋に重さ(PCへの負担の少なさ)だけで知りたいです。 他にも方法があればお願いします。
Excelで無理があると言っても結局Excelでやる他ないからな。 フリーソフトでこの手のは色々あるけど 本人の希望通りの物はないだろうから自作した方が早い。
>>215 どちらが重いかはすぐには答えられないが、関数や演算子で文字列に変換してしまうと、
その数字が別の計算に使えなくなってしまう。
よって書式で0名にするのをおすすめする。
再計算1億回の所要時間を測ってみた。 書式のユーザー定義 7549 ms 演算子&で結合 7383 ms 関数で結合 7493 ms 大差ないから書式でやっとけ。 つーか、この程度自分で調べろよ
>毎回のことなんで大体はパターン化しているのですが、やれ子供の運動会だ、 大学の試験だとかでパターンが崩れてしまうと大変で、シフト組むのが苦痛で たまりません。 →パターン通り組んでしまって、イレギュラーなのは後からチェンジする。 このパターンと10人全ての属性(早番遅番休日の可不可、日数の希望など) が分れば少しはエクセルで考えてみてもいいけど、質問のような雲を掴む様な 話では、店長さんの仕事を代わりにやってあげようという気にならない。 >195のいう、答えに詰まっている訳ではない。
やったらやったで調子に乗って追加要求が止まらないに一票。
>>211 なんで解が無いと決めつけてるんだよ。間抜け。
解は有る場合と無い場合があるだろ。
解が無い場合は条件を緩めてやるしかない。どの条件を緩めるかなんてのはこの問題を考える上でまったく関係ない。
解が有るなら有る。無いなら無いんだよ。全然ファジーじゃないよ。
>>210 Aさんのシフトが少なすぎるなら、条件が不足していたんだ。
条件を追加すればいい。単純な話じゃないか。
本当に考えたのか?
>>213 原始的だが問題の本質を捕らえたいい答えだ。
みんなもこんな風に考えられる人になりなさい。
VBAなどいくらできてもバカに真珠というものだ。
お、新しいことわざ。
n-p問題ってさ、人間が直感でやった方が早かったりするんだよね。 完璧ではないかもしれないけど無難な回答がすぐに出てくることが多い。
要望が多すぎて、条件に当てはめるのが難しい時は 出勤可能な全ての組合せを実行して、それぞれのケースで、 各人ごとの評価を行い(希望日より1日多いと-1点、少ない と-2点とか)得点が一番高い組合せを選ぶという力技が 良いと思う。 逆に、いつ出勤しても良いという人が多いときは 組合せがPCでも手に負えない程膨大なものになるから、 店長のいつものパターンでやった方が良い。
まず10人を7日間に割り当てる組み合わせは(10*9*8*7)^5*(10*9*8*7*6)^2通り。 再帰ループでシフトを埋めてって、条件に合わない物をどんどん刈り取っていく。 手詰まりになったらトラックバック。 このぐらいなら、今のマシンなら力業でもなんとかなりそうなレベルだ。 条件判断は要求のきつい物から順に並べると早い段階で刈り取りが進む。 ただ、ロジックをプログラムに組み込むと計算は速くなるけど汎用性が無くなるから、 作った本人にしかメンテができなくなる。 汎用性を持たせようとするとデータ構造を考えるのとコーディングがめちゃくちゃめんどくさくなる。 結論としては、ヒントだけ出して本人に作ってもらうのが一番。
>>228 やっとまともなやつが出てきたか。
このスレはバカしかいないのかと思った。
重複は除かないと。 (10*9*8*7)/(24/4)^5*(10*9*8*7*6)/(120/12)^2
231 :
名無しさん@そうだ選挙にいこう :2008/06/12(木) 21:18:47
累乗のカッコが無いね、ゴメン (10*9*8*7/24*4)^5*(10*9*8*7*6/120*12)^2
>>230-231 同じ人が毎日入る可能性もあるんだから、そんなに単純には重複は除けないと思うんだけど。
233 :
名無しさん@そうだ選挙にいこう :2008/06/12(木) 21:45:00
何この専門バカだらけの烏合の衆w 大事な事が何も見えちゃいない。
234 :
231 :2008/06/12(木) 21:52:09
>232 10人の内4人が出る組合せは、順序を区別すると 10*9*8*7 区別しないと 10*9*8*7/(4*3*2) 早番と遅番は区別するから 10*9*8*7/((4*3*2)/2*2) >233 3年ROMってね。
煽るだけのバカよりましだな
>>228 いや、そもそも1週間単位でシフトを組むって話では無かったと思う。
割り当てのロジックを自分で作るんなら、まずは1週間分やってみて そこから拡張していくのが無難ではないか。
>>234 7日を早番・遅番と分けるのでなくもっと単純に
1週間の中に14の枠があると考えればいいだけなんじゃ・・・
質問者の事なんてもはやどうでもよくなってるなw
賢い人がスパっと解決してくれるらしいので静観することにしました
>>239 わがままな要求を満たすシフトを考えるのは、人にとってもコンピューターにとっても面倒なんだよ。
質問者はコンピューターなら簡単かもしれないと考えたが、実際はそうではなかった。
たぶんこの調子じゃこのスレが埋まるまでには完成しない。
>>238 一人が2回入って、丸一日働くことが可能ならそれでもいいけど
243 :
名無しさん@そうだ選挙にいこう :2008/06/12(木) 22:10:15
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 わかりにくくて申し訳ありません。 下の表のようなものは、エクセルの作業フォームだと思ってください ABCDE...と縦の123は、セル番地です。 教えていただきたいのですが、A〜Iに値を入力して、JにはABCの平均値が KにはDEFの平均値が、LにはGHIの平均値が表示されるように、Jに関数式 =AVERAGE(A1:C1) 、 Kに、=AVERAGE(D1:F1) 、Lに、=AVERAGE(G1:I1)を それぞれ入力したのですが、KとLは正常に表示されるのですが、ABCから順に Iまで値を入力していくとJの部分の関数式のC1の部分が値を入力していくセル番地を 追ってしまい、最終的にI1となってしまいます。KとLは動かないのに なぜ、Jだけ動いてしまうのでしょうか? このような書き方では非常にわかりづらいかもしれませんが、もしわかる 人いたらよろしくお願いいたします。 *下の表のようなものはエクセル作業フォームです。 A B C D E F G H I J K L 1 2 1 3 2 3 2 1 3 1 2 2.5 2 2 3
>>242 続けて勤務する場合があるかどうか質問者は書いてないので不明。
不明な物は「可能性としては有り得る」と考えておいた方がいい。
続けて勤務することはないって書いてあるじゃん
>>245 あ、ごめん、書いてあった。最初のレスしか見て無かったわ。
でもどっちにしろこういうのは「週3回以上」とかと同等の「条件」として別のルーチンで処理した方がいいと思うんだけどね。
その方が本体のプログラムがシンプルになるし、汎用性も高くなる。
みんな在庫管理がよほどトラウマになったのか真剣に物事を考えるようになってきたな。 いい傾向だ。
>>243 なりません。
お前の式が何かおかしいんだろ。
てかバイトのシフトの話してんだ。空気嫁!
totoXていうサッカーくじのソフトがある 仕組みとしては同じものをつくればいいはず
14×11 (コマ数×人数) の配列を作ってフラグを立ててきゃいいんだな。 それとは別に、各コマに何人入ったか保持する整数型の配列と 各人が何コマ入ったかを保持する配列。 あとは二重ループでぐるぐる回して、サブルーチンで入れるかどうか判定。
>>243 何度やっても、正常に式が完成してしまう・・・
不思議だ
もう一度最初から書き直してみれば?(新規シートとかにテストで)
>>252 ソルバーだと1個解が見つかったらそこで終わっちゃうじゃん
256 :
243 :2008/06/12(木) 22:46:27
>>253 そうですか・・・おかしいですね・・
わかりました、もう一度やってみます。
でも・・できたら違う式で同じ様な結果を出すものか何かあったら
教えていただきたいのですが。ぜいたく言ってすいません・・・
無ければいいです。よろしくおねがいします。
1個で十分じゃん 本末転倒してるぞ
258 :
253 :2008/06/12(木) 22:51:42
>>256 単純に、
J1=(A1+B1+C1)/3
K1=(D1+E1+F1)/3
L1=(G1+H1+I1)/3
これでも平均はでるよ(関数じゃないけど)
なんだ 条件を満たすすべての組み合わせを出すんじゃないのか じゃ簡単じゃん ちょっとつくってくるわ 舞ってな
>>256 足し算して割るとかいくらでもあるだろうよ。
それに元の式もお前が間違ってるだけだ。
さっさと引っ込めやゴルァ!
>259 既にだれも必要としていない気がするが・・・ ♪ Å ♪ / \ ランタ タン ヽ(´Д`;)ノ ランタ タン ( へ) ランタ ランタ く タン
シフト表の件も何人かは正解に到達したようだな。
Excelでやるならソルバーを使うのが妥当だろう。
本業のかたわら自作でこれ以上のものを作れるやつはなかなかいないよ。
ソルバーは変数が200個以下しか扱えないという制限がある。
だからせいぜい1週間くらいしか計算できないわけなんだが、GLPKなどの線形
計画法のプログラムを使えば数ヶ月にわたるシフト作成も可能だろう。
試してみてはいかが。
>>175 問題がファジーだとか言っていたやつは反省しなさい。
>>262 >ソルバーは変数が200個以下しか扱えないという制限がある。
>だからせいぜい1週間くらいしか計算できないわけなんだが
分かってるようで分かって無いんだなあw
こういう自分は頭がいいと思ってる(けど違う)奴が一番たちが悪い
265 :
243 :2008/06/12(木) 23:17:35
>>258 ありがとうございます。
そうですね、そういうやり方もありましたね。
とりあえずいろいろ試してみます。ありがとうございました。
WinXP Excel2003
質問です。
なんで
>>262 のアホは能書き言ってるだけのクセにこんなに上から目線でエラそうなの?
解決法があったら教えて下さい。
>>266 残念ながら匿名掲示板では言った者勝ちなので、スルーしかないのが現状です。
ソルバーは確かにひとつの方法だが 質問者への答えとして本当に適切かどうかは微妙だな。 頭はいいんだろうけど頭でっかちというか何というか。
>>268 そもそも今回の問題は最適解が必ずあるとは限らないので、
その場合は店長判断で条件をゆるめて答えが出るまで繰り返すしかない。
271 :
名無しさん@そうだ選挙にいこう :2008/06/13(金) 01:42:06
エクセルのキーボードショートカットについて質問です。 現在選択されているセルは、そのままで画面表示上、画面の一番上にもっていきたいのですが、可能でしょうか? たとえば、C3を選択している状態で、C3が画面表示上一番上にもってくるという意味です。
>>271 デフォルトのショートカットではできないけどScrollLockを押してからカーソルキーの↓を押してみ
どうしても一発でやりたかったらマクロを作って自分でショートカットに登録
>>271 こういうマクロを登録
Sub カーソル行を画面最上部へ()
ActiveWindow.ScrollRow = Selection.Row
End Sub
>>274 あ、先生。夜勤ごくろうさまです。深夜の警備は大変ですよね。
>>274 お前は日の当たらない倉庫で在庫管理だけしとけよ
お前程度の能力では棚卸しが大変だろうけど
あれが大変ですね、これも大変ですね、と他人の心配してる場合じゃないよ。お前ら。 このスレ今さっき最初から読んでみたけど、まるで先生に反抗してる中学生だ。
278 :
名無しさん@そうだ選挙にいこう :2008/06/13(金) 10:22:58
知り合いから受けている相談なのですが、現在原因がつかめていないので 質問させてください。 ・Excel2000で、セルに計算式を埋め込んでいるブックを 開くと、たまに(毎回ではない)計算式の一部がズレる。 例えば =A1+SUM(B1:E1) となっているものが、何かのタイミングで =C1+SUM(D1:G1) になっていることがある。 こういう現象は聞いたことが無いし、毎回ならともかく「たまに」ということなので 何らかの不注意や操作ミス(挿入したとか)かと思うのですが、 経理かなにかで値を入力する以外の操作をしないブックだと言っており、 原因が思いつきません。 どなたか何か「これじゃないか?」って思い当たることがあればお教え下さい。 よろしくお願いします。
・挿入してる ・コピーしている ・知らない間にマクロを実行させている ・似た見た目の違うブックを開いていた ・気のせい、目の錯覚 のどれかだと思います
>>278 "ブックを開くと"っていうのが怪しい
お知り合いの方は、本当にそれだけの作業しかしていないんですかね
キャプチャソフトを立上げながら作業していれば、原因がつかめるかm(ry
>>278 「知り合いから」ってのがややこしいな。
毎回ずれてるのに気付いてない可能性もある。
ずれてたらどうするのか、対処方法も確認した方がいい。
まずは変なマクロが動いてないか、登録されてないか確認だな。
Ctrl+Shift+Zあたりが怪しい。
行や列の挿入をワンタッチでできるようにしてる人は多いからね。
Alt+F8で登録されてるマクロを確認してみ。
282 :
278 :2008/06/13(金) 14:04:13
ありがとうございます。 知り合いからの電話での相談ですが、経験上「本人が誤操作で変更してしまっていて気付かず保存」が 一番有力な説だと思うんですが、本人がそんなことは絶対してない!みたいに言うので 不具合的な要素でないか、まずは調べてみています。 まあ、多分マウスで色々触っているうちに気付かずだと思うんですけどねえ。 キャプチャは無理ですね。違う会社の経理のPCにそんなの仕掛けるわけにはいきませんしw 引き続き調べてみます。
>>282 パソコン関係の相談では、必ず「自分は何もやってない」と言うので、信用しないのが
暗黙のルールになっています。
原因がわかってからも「わざとじゃない」「そんな機能知らなかった」と必ず言うので、
心の準備をしておいてください。
シートを監視するマクロを仕掛ければ? 列がずれたら警告を出すか、どこかに日時を記録するような。 簡単に作れるよ。
285 :
名無しさん@そうだ選挙にいこう :2008/06/13(金) 14:33:10
【1 OSの種類 .】 WindowsXP,Vista 【2 Excelのバージョン 】 Excel2000,2002,2003,2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】visual-basic vba excel 型 お世話になります。 ExcelのVBAの整数計算について教えてください。 vbaというのは、visual-basicなのですよね? visual-basicは、整数型として、 Short:16bit Integer:32bit Long:64bit の型があることが、MSDNだとか、各所の解説サイトに示されていますが、 ExcelのVBAでは Integerは16bit、Longは32bitのようです。 8バイト整数や、4バイト符号無し整数を取り扱いたいのですが、不可能なのでしょうか。 よろしく御願いします。 4バイト符号無し整数に関しては、有効桁数が小さいので、doubleを用いて計算しているのですが、 8バイト整数を扱えずに困っています。 (doubleの有効桁数が、十数桁(10前半)しかなかった気がします。) Excelの本体のシートの方でも、10進数15桁程度で有効数字が切れるようで、 これがExcelの限界なのかとも思ったのですが…。
バイト型 (Byte) 1 バイト 0 〜 255 ブール型 (Boolean) 2 バイト 真 (True) または偽 (False) 整数型 (Integer) 2 バイト -32,768 〜 32,767 長整数型 (Long) 4 バイト -2,147,483,648 〜 2,147,483,647 単精度浮動小数点数型 (Single) 4 バイト -3.402823E38 〜 -1.401298E-45 (負の値)。 1.401298E-45 〜 3.402823E38 (正の値)。 倍精度浮動小数点数型 (Double) 8 バイト -1.79769313486231E308 〜 -4.94065645841247E-324 (負の値)。 4.94065645841247E-324 〜 1.79769313486232E308 (正の値)。 通貨型 (Currency) 8 バイト -922,337,203,685,477.5808 〜 922,337,203,685,477.5807 10 進型 (Decimal) 14 バイト 小数部分を持たない数値の場合、 -79,228,162,514,264,337,593,543,950,335 〜 79,228,162,514,264,337,593,543,950,335 の範囲の値をとります。 小数点以下 28 桁の数値の場合、 -7.9228162514264337593543950335 〜 7.9228162514264337593543950335 の範囲の値をとります。 絶対値の最小値は 0 を除いた場合、 0.0000000000000000000000000001 です。 日付型 (Date) 8 バイト 西暦 100 年 1 月 1 日〜西暦 9999 年 12 月 31 日 オブジェクト型 (Object) 4 バイト オブジェクトを参照するデータ型 文字列型 (String) (可変長) 10 バイト + 文字列の長さ 0 〜 2GB 文字列型 (固定長) 文字列の長さ 1 〜 2GB バリアント型 (Variant) (数値) 16 バイト 倍精度浮動小数点数型の範囲と同じ。 バリアント型 (Variant) (文字列) 22 バイト + 文字列の長さ 可変長の文字列型の範囲と同じ。 ユーザー定義型 通貨型か10進型かな?好きなほう選ぶといい ちなみにこれF1のヘルプで見れる
>>285 Visual BasicはVBです。VBAはVisual Basic for Applicationの略です。
たった1文字の違いですが、プログラミング言語としてはまったく別の物なので、
ちゃんと区別しないと話がややこしくなります。
MSDNなどの資料を見る時も、VBのところを見たのでは参考にならないことが多いです。
注意してくださいね。
doubleで駄目なら駄目だろうなあ つか、VBだといけるのかいなその計算
289 :
278 :2008/06/13(金) 15:47:24
>>284 関係のない会社の事務で使っているものにそんなもの仕掛けることできません。
一応開発技術はあるので自作は可能ですが、そういう監視とかが出来ないので
情報がないかを調べているのです。
相手に技術がないので技術的な説明が通らない・・・鬱陶しいです。
>>289 同じ形のシートが何十とあるブックで、その中から
その時その時でシートを選んで作業してるのかも。
シートを複製する時に何かのはずみで計算式を変えてしまい、
正しい計算式と誤りの計算式が混在したブックになってしまったとか。
(本人は各シートが別物という概念が無いため、「たまにズレる」という認識になる。)
>>289 何が何でも解決しなくちゃならない深刻な問題なのか、単なる友達との雑談の延長なのか、
まずはっきりしてくれ。
誤操作や誤認識じゃなければマクロだっつーの。
情報少なすぎ できること少なすぎ こんな状況じゃ解決は無理ぽ
>278 余所の会社の経理のPCなんかに いくら友達でも係らない方がいいよ。 おかしーなー。普通そんな事ないけどなー。 操作ミスしてないのならPC診てもらえば? ぐらいでいいんじゃないか?
294 :
名無しさん@そうだ選挙にいこう :2008/06/13(金) 17:04:13
>289 以前、職場で利用していた「計算式のリストを作成するプログラム」をアップするので参考にどうぞ。 これは調べたいブックとは別の新規ブックの標準モジュールに書いてください。 A1セルには出力開始行として 3 を設定しておいてください。 保存するときは 計算式.xls としてください。(プログラム中にブック名を指定済) 調べたいブックの方をアクティブにし、リストアップしたい範囲を指定してから[Alt]+[F8]でこのマクロを 実行すると、計算式.xlsのSheet1に3行目から「計算式のあるセルだけ」1セルあたり1行で ブック名、シート名、セル位置、式、値 を出力します。ただし、セルの結合は考慮してないのでご注意を。 正常な状態のときのリストをとっておき、「ずれてる」と感じたときにもう一度実行してみればいいです。 ブック名、シート名も見比べられます。 たぶん似たような表で勘違いしていると思うけど。 Option Explicit Dim book_name As String, sheet_name As String, Tate As Long Dim c As Excel.Range Sub 計算式() book_name = ActiveWorkbook.Name sheet_name = ActiveSheet.Name With Workbooks("計算式.xls").Worksheets("Sheet1") Tate = .Range("A1").Value For Each c In Selection If c.Formula Like "=*" Then .Cells(Tate, 1).Value = book_name .Cells(Tate, 2).Value = sheet_name .Cells(Tate, 3).Value = Replace(c.Address, "$", "") .Cells(Tate, 4).Value = "'" & c.Formula .Cells(Tate, 5).Value = c.Value Tate = Tate + 1 End If Next .Range("A1").Value = Tate .Activate End With End Sub
>>292 今朝最初の質問があったばかりなのに答える側せっかちすぎw
俺らニートと違って働いてる一般人は常時2ch見てるわけにもいかんだろw
ここまで見た感じ、「ダメモトで聞いてみるけど、まあ解決できればいいね」レベルの問題。
相変わらず返答できないけど野次は書くぜ!っていう役立たずが多いのな(笑)
自己紹介ウゼー
なんでみんな、仲良くしないの!
能無しは人を見下さないと生きて行けないから。 パソコンしか取り得が無いオタにはこういうスレはオアシスなんだろうね。←自己紹介乙。と先に言っとく
>>268 はなぜ正常に動作しないのか、だれかわかるひといないの?
早番だけ、バイト君3人にして目的セルをZ17に変更してすら動かん
前世紀に解決済みの問題に手がかりさえつかめぬVBA厨ども。 彼ら原始人が悩んでいる間に現代人はピボットやソルバーを使って次々に解決していくのだった。
いや してないしてない
>>268 を教えてください それができたら解決したと認めます
>>306 原始人はそれでも解決していないと言い張るからなあ。
こいつらには理屈が通用しない。教えてやっても何の得にもならん。
ヒントは
>>302 だ。もう少し考えてみろ。
それはもう試した
>>307 だからお前は日の当たらない倉庫で在庫管理だけしてろって
手順を1から箇条書きにして要件満たしてから勝ち誇れって何度言えば(ry
310 :
名無しさん@そうだ選挙にいこう :2008/06/13(金) 20:32:01
すいません、ウチの父親がさっきから 「今日になって急にエクセルの表の罫線が印刷できなくなった!!」って 大騒ぎしててうるさいんですが。 どこを直したらいいんでしょ?
>>310 罫線ってのが枠線のことなら
ページ設定 - シート - 印刷 - 枠線にチェック
自分で引いた罫線ならオレにはわかんね
プログラム板のVBAスレではどっちの手法がコンマ何秒早いだとか、マシン語 知ってるとすごいだとか、失笑ものの不毛な議論をしとる。
2007使ってるんですが、 セルの表示形式をユーザー定義するときの 構文(曜日→dddd etc)の一覧て ヘルプファイルのどこかにありますか? 探したけど見つからない…。
314 :
>>271 :2008/06/13(金) 22:37:44
>>313 ヘルプを表示形式で検索すればいい。
ちなみに曜日はaaaaね
>>311 どうもありがとうございました。
「枠線」やってみました。一応線は出るようになりました。
・・・しかしどうも、PCでなくプリンタ側に原因があったようです。
明日修理に持って行きます。では。
修理屋カワイソw いや、ぼったくりのチャンスか?
俺もそういうの経験ある。ちょうど罫線の位置のノズルが詰まって出にくくなってたんだよな。 クリーニング1回でいくらとれるかな?
そろそろけーもー先生の起きる時間です
啓蒙の蒙は呂蒙の蒙
321 :
313 :2008/06/14(土) 00:57:40
>>315 ありがd
でも検索したところ、
「Excel > ワークシートと Excel テーブルの基本 > 数値の書式設定 > 数値を日付や時刻として表示する」
に日付関係の書式は載ってたけど、
[]とか@とか他のが見つからないです。
ヘルプに載ってないのかな?
323 :
313 :2008/06/14(土) 01:23:41
>>322 オンラインヘルプを検索するように設定したら、
「Excel ホーム > ワークシートと Excel テーブルの基本 > 数値の書式設定 > ユーザー定義の表示形式を作成または削除する」
という項目が出てきて、そこに求める情報が載っていました!
仕事でインターネットに接続できないところに行くことがあるのですが、
オフラインヘルプを最新のものに更新することってできるのでしょうか?
>>323 残念ながら出来ない。
必要な部分を自力で保存したり印刷したりしていくしかない。
aaa
326 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 08:52:19
自筐体の日時に関わらず、ある日時がきたらマクロ動作できなくすることは できますか?退職後は使用出来ないようにしたいんだけど、自筐体の日時を 変更すれば使用出来る方法しか思い浮かばない。。
退職日にファイル消せばいいだろ
ファイル(システム)を暗号化。 鍵は自分しか知らない。 これでおk。
世の中に出回ってるマクロなど、大半はピボットテーブルで実現できる機能ばかり。 後任者は君が思っているほど困らないかもよ。 あいつ痛いやつだったな、になるのがオチ。
330 :
326 :2008/06/14(土) 09:57:42
331 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 12:29:41
注文データから必要な部品数を計算できないものでしょうか。 プラスチック押出成型工場で品質管理兼生産管理のようなことをやらされております。 ある顧客向けに 商品名ABCD18Gは 平型長さ1600灰色PVCを1本 平型長さ850緑色右用PVCを1本 平型長さ850緑色左用穴明け加工2ヶ所ありPVCを1本 商品名EFG20Aは 楔型長さ1800ホワイトPPを3本 楔型長さ1600ホワイトPPを2本 というように社内の組み立て場でセットしています。 このような商品がおよそ200種類あって、部品はその数倍あります。 注文を見て必要な部品を作ったり、作りおきを補充しています。 平型と楔型を色別に成型計画をたてて、それぞれの材料を発注したり、右用左用に加工する数を決めてます。 毎日図面を見ながらほとんどこれにかかりっきりなんでもっと楽にできる方法はないかなあと。 Windows2000 Excel2000 VBAはあまり難しいことはできません。 よろしくお願いします。
>331 少しだけexcelを勉強すれば簡単に出来る。
333 :
331 :2008/06/14(土) 12:47:37
>>332 ありがとうございます。
やっぱりVBAとか使わないと無理でしょうか。
334 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 13:12:45
>331 楔型長さ1800ホワイトPP と 楔型長さ1600ホワイトPP について、 サイズだけ異なる素材をまとめることができるのか、それとも別の 部品とみなすのか、こまかいところがわからないと項目の考え方が 変わってくると思います。 また、サイズ違いも厳密に別部品と見なすとして、個々に部品コード を割り振れますか? 商品名=商品コードであると仮定して A B C D −−−−−−−−−−−−−−−−−−−−−−− 1商品コード ABCD18G 数量 n −−−−−−−−−−−−−−−−−−−−−−− 2部品(1) xxxx001 −−−−−−−−−−−−−−−−−−−−−−− 3 −−−−−−−−−−−−−−−−−−−−−−− 4 −−−−−−−−−−−−−−−−−−−−−−−
335 :
334 :2008/06/14(土) 13:13:48
>334 作ってる途中で送信ボタンおしちゃった。無視してください。
どんまい
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel 2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】office2003 vba excel セルに1.83E-05と書かれておりそこをダブルクリックすると数値がでてきます。 1.83E-05というのはなにを示しているのでしょうか?? 初歩的すぎる質問ですがよろしくお願いします。
1.83×10のマイナス5乗 つまり0.0000183
339 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 14:07:55
>337 指数表示です。 1.83×10の−5乗の意味で、0.0000183のことです。 セルの書式設定が、 指数、小数点以下の桁数:2 になっているとこのように表示されます。
341 :
337 :2008/06/14(土) 14:16:11
>>338-339 迅速な回答ありがとうございます。
なるほど・・・。そうゆうことだったんですね。
丁寧にありがとうございました。
342 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 15:06:30
連番を作りたいとき 1 2 とセルに入力してからセルの端っこをドラッグすれば 1 2 3 ・・・・・・ と入力することが出来るということは知っているのですが、 これが1万行とか10万行とかに連番を作りたい場合、 もっとうまい方法はないのでしょうか? お願い致します。
編集−フィル−連続データの作成
さらに補足 列 − 停止値100000 とか
345 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 15:57:48
>>343 2007を使っているので
編集が有りません。
お願い致します。
2007はしらん
>>345 テンプレ未使用
書式不備のため受付に至っておりません。
再依頼の際は既存依頼スレッド欄にこのスレッドのurlを忘れずご記入ください。
>345 編集あるじゃん。どこに目が付いてんのよ。
349 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 16:41:49
あとから「2007なんです」が多いですねぃ
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel 2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】EXCEL グラフの結合 比較 二つのグラフを一つのグラフに結合して比較したのですが どのようにすればよいでしょうか?? 二つのグラフとも、x軸の値は別々のグラフです。 よろしくお願いします。
比較「したい」の?
353 :
331 :2008/06/14(土) 19:05:33
>>334 全部品にコードをつける覚悟はあります。
型別の生産数量
必要な材料
加工が必要なのは何個か
などが知りたいです。
注文には納期がありますので、納期別に必要な部品や材料がわかるとうれしいです。
>>340 ありがとうございます。今外出中ですので後で確認いたします。
354 :
351 :2008/06/14(土) 19:09:34
>>352 はい、そうです。
タイプみすでした・・・。すみません。
355 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 20:43:59
>353 340は見てませんが、 「商品」、「部品」、「材料」と「加工内容」に「型」まで登場しましたね。 それぞれの関係を明記してもらわないと考えようがないですね。 331の説明の段階では ・「商品」は数種の「部品」から構成される だけでしたが、353では ・「商品」は数種の「部品」から構成される ・「部品」は「材料」を「加工」する場合がある ・型(?) と複雑になってきました。 「納期」のことを別にしても以上のようなことを説明できますか? 331にあった ・平型長さ850緑色右用PVCを1本 ・平型長さ850緑色左用穴明け加工2ヶ所ありPVCを1本 でいえば、最初から別部品としてコードを割り振るのか、それとも 平型緑色右用PVC という「材料A」を 長さ850に加工 + 平型緑色左用PVC という「材料B」を 長さ850+穴明け加工2ヶ所 というふうに考えるのか、それとも 平型緑色PVC という「材料C」が右用にも左用にも加工できるのか など実務がわかりません。
357 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 20:56:55
>356 質問の方法は1〜3を守ってください。
358 :
名無しさん@そうだ選挙にいこう :2008/06/14(土) 22:02:40
>>356 5.の項目がないとこたえる気が失せる…
>>331 ピボットテーブルを使いなさい。
注文データそのままでは、部品の情報がないから、データを整形する必要がある。
どんな風に整形するかというとピボットテーブルが使えるように整形すればよい。この作業はVBAを使うしかないだろうな。
>>355 業務の詳細がわからなくても、この問題を考えることはできるぞ。
部品にいくつかの属性があって、部品別属性別納期別に集計するだけだ。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 excel 罫線 太さ powerpoint exceで作った表をpowerpointに 貼り付けると罫線が一部太くなってしまいます。 ・いろいろな形式で貼り付ける ・貼り付けた表をpowerpointで編集しなおす と試行錯誤したのですがうまくいきません。 拡張メタファイルとして貼り付けると一見うまくいくのですが、 スライドショーになるとまた太くなります。 仕様として諦めたほうがいいのでしょうか?
>>359 正直ピボットテーブル使わないやつは言うことがとんちんかんなんだよな。
手続きを省略する方法や代替手段ばかりを一生懸命探そうとする。
ピボットと同じ処理を自作するのは大変だからなあ。
VBAはなんでもできるというのは事実なんだけど、役に立つことやろうと思うと結局ピボットを自作することになる。
君、頼むから一遍ピボットテーブルを使った作例を見せてくれ。
>>363 ピボットテーブル使った作例と言われても困ってしまうよ。要はデータをグループ別に集計するだけだから。
考えるべきはどんなグループで集計するのかということ。それさえわかったらすでに完成しているのと同じだよ。
【1 OSの種類 .】 WindowsVISTA 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 フォント 変換 50音順の名簿を作っているのですが、例えばA列に名前、 B列に男女を区別するための数字(男は1、女は2)を入れたとします。 で、 別シートにおいて、 1:自動的に男の名前は黒、女の名前は赤にする方法 2:自動的に男女別に名簿が並び変えられる方法 が、 どうも分からないので、教えていただきたくお願いいたします。
>>366 「条件付き書式」や「ソート」「並べ替え」でもう一度検索してみてください。
前から思ってたけど、「検索キーワード」に書いてる内容って、ネタとしか思えないな
369 :
名無しさん@そうだ選挙にいこう :2008/06/15(日) 19:24:03
>366 わざわざ「別シートにおいて」とした理由は何ですか? ちょっと工夫すれば並べ替えする前の状態に戻せるので、別シートにする必要はないんですが。
分からないならすっこんでて下さい。
371 :
名無しさん@そうだ選挙にいこう :2008/06/15(日) 19:59:50
>>366 2が分らないようなら見込みがないから諦めた方がいいかもよ?
ソート(並び替え)とか知らなかったら別だが。
372 :
名無しさん@そうだ選挙にいこう :2008/06/15(日) 20:00:55
【1 OSの種類 .】 Windows xp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 sumproduct A B C −−−−−−−−−−−−−−−−−−−−−−− 1 項目A 項目B 金額 −−−−−−−−−−−−−−−−−−−−−−− 2 やさい きゅうり 100 −−−−−−−−−−−−−−−−−−−−−−− 3 にく 牛 200 −−−−−−−−−−−−−−−−−−−−−−− 4 やさい にんじん 120 −−−−−−−−−−−−−−−−−−−−−−− 例えば上記のような表があって、今後もこの下に表を記入し続けるとします。 で、項目Aが「やさい」で項目Bが「にんじん」の場合の合計金額を出すにはどうすればいいのでしょうか。 =sumproduct((A2:A4="やさい")*(B2:B4="にんじん")*C2:C4) とやればいいのかと思ったんですが、今後追記した場合の対応ができません。 どうすればいいのでしょうか。
範囲をA2:A4じゃなくA2:A5にして、追記はA5の前に挿入する形で行う
おいVBA厨の出番だぞ。 男女別に色を変えるプログラム。 男女別に並べ替えるプログラム。 さあ作れ。 実例を示して回答しような。
ピボット厨が哀れでしょうがない… なんでキレてるんだろうな…
次からテンプレはこれでいいじゃん。質問者に選ばせて、回答者は聞かれてないことには答えない。 【1 OSの種類 】 【2 Excelのバージョン .】 【3 VBAが使えるか 】 【4 VBAでの回答の可否 】 【5 ピボットが使えるか ....】 【6 ピボットでの回答の可否】 【7 検索キーワード .】
【8 職業・業務内容】 これも追加して欲しいな本気で
>>374 ピボットを使うべき所で使わないのと、
VBAを使うべきでないところで使うのと、
どっちが愚かかな?
>>366 B列でソートすれば男女別になります。
文字は最初から黒なので、男を黒くする処理は必要ありません。女だけを赤にすればいいのです。
A1をクリックして、メニューから書式→条件付き書式を開き、左端のプルダウンメニューで「数式が」を選び、
その右に「=B1=2」と入れます。
その下の「書式」ボタンを押して「色」を赤にして「OK」「OK」で閉じます。
A1をコピーし、A列全体を選択してから右クリック、形式を選択して貼り付け、書式、OK、これで完成。
それから、ふりがなが入ってない場合、自動的に五十音順に並べる方法はありませんので
必要があるなら必ずふりがなを入れてください。
補助的な機能はありますが完璧ではないので。
【9 ソートが使えるか】 【10 ソートでの回答の可否】 これも追加してくれ。
それを言い出すと11、12とどんどん追加されてしまうだろう 個人的には3と4の違いが良く分からない。4一本に絞ってしまえばいいのに
VBAが使えるかどうかもなくしちゃえばいいんだよ。
ここ低レベルだね
【11 煽り・啓蒙の可否】
>>383 同感。
在庫管理できない
ソルバー使えない
ピボットテーブル使えない
ソート使えない
何を今更…
387 :
名無しさん@そうだ選挙にいこう :2008/06/15(日) 22:07:49
ところでピボット厨は手作業でやってるの? VBAも併用?
ソルバーもピボットテーブルもVBAも元々の表計算ソフトに あとからゴテゴテ加えた機能でなんつーか気持ち悪いんだよね。 数式だけであらゆる問題を解決するのが真の漢。
>>387 もちろん、いつも
「こんなデータが処理できるかっ!正規化してから持ってこいっ!」
で逃げてます。
激しく同意。 ワークシート関数だけで処理できないような仕事は、本来、表計算ソフトでやるようなことじゃない。 色を付けるのもセルを結合するのも邪道。
>>387 正規化したり、親子関係のあるデータを展開するのにはVBAを使います。
要は適材適所です。
>>391 ちゃんと使い分けできるのは「厨」じゃないよ。それが正常。
>>390 私の場合はExcelを「表計算ソフト」というより、「ピボットテーブルが使える
ソフト」として使ってる。
表計算ソフトを使うのが目的じゃないからな。
ヒント:貧乏人はAccessが買えない
>>394 もちろんAccessも使っている。
ここはExcelのスレッドだからね。
ヒント:厨は適切な使い分けができない
398 :
366 :2008/06/15(日) 22:24:26
「ソート」、「並べ替え」は存じています。
それ関連で使い方が正しいかは分かりませんが、
「オートフィルタ」も使っています。
お尋ねしたかったのは、並べ替えの基となる情報(ふりがなや数字)
があれば、それを基に関数を使って「ソート」等のひと手間かけずに
勝手に並べ替えてあるデータが作成可能か、ということでした。
>>369 個人情報をひたすら並べた作業用シートとは別に、
様々な書類に対応したシートを別に幾つも作ってるのです。
その中で、男女別の名簿を作っておきたいな、と思いまして。
>>379 おお、こりゃすごい。条件付書式の中の「セルの値」のまんま
「=B2=2」をやってできねーと言ってました。
ありがとうございますありがとうございます。
でも、条件付書式ってシートまたいでは通用しないんですね。
ま、同じシートに数字持ってくればいいだけの話ですか。
VLOOKUPで男女を見分ける「1」と「2」を人数分拾ってみても、
結局それぞれの一番最初の人の名前がずらっと並んで
しまうだけだしなあ。上のセルの名前を反映させ、除外するような
関数を駆使すればできそうな気もしますが……難しいものですね。
今さらながら
>>340 の回答をダウンロードしてみたんだが、彼はよくわかって
いるな。これでいいんだよ。
ただ、「t部品発注」のシートで注文から部品cdの展開は手作業なんでここを
なんとかしないと実務では使えない。
Excelだとここが面倒だね。Accessでは簡単なんだけど。
>>398 そもそもピボットテーブルの使い方を知ってれば
>>366 のような質問はしなかったとおもうよ
>>398 あのね、関数で並び変えとかやっちゃいかんのだよ。
関数で抽出とかもやってはいけない。
ソートとかをマクロで使え。
人に使わせるならマクロは必須。
出た!VBA厨
>>401 「やっちゃいかん」じゃなくて「私にはやり方が分かりません」だろ。
日本語は正確に書こうな。
もうこのスレ廃止しようぜ
>>402 ピボット厨だが、ユーザインタフェースを実現するためのVBAなら存在意義を認めている。
ピボット厨である私も
>>401 の
>あのね、関数で並び変えとかやっちゃいかんのだよ。
>関数で抽出とかもやってはいけない。
には同意する。
できてもするべきじゃないな。
また基地外関数使いが出てきたか? おまえよりよっぽど知ってるよ。 本当に分かってるやつは絶対使わねーっての。
うーむ、やはりピボットとVBAは避けられぬ道なのかな。 ヘタに関数使っても複雑化して重くなるだけですよねえ。 ピボットはなんとなっく分かりそうだが、VBAは何が何やら。 先を目指すなら必須なんでしょうけれども。
関数を求めてる質問者に>401のようなことを書くやつはカス! 知ってて答えたくないなら黙ってろってw 俺みたいに。
だから求めてるからって、なんでも求めに応じて答えちゃいかんっての。 駄目なものは駄目と言わないと。
これだけレスがあって、まともな回答がいくつあったことやら
なんでこの板は、毎度毎度殺伐としてくるのだ・・・ すべては、こんな中途半端なソフトを作ったMicrosoftが悪いのだな
>>410 それを判断するのは質問者。
お前、何様だと思ってるの?
関数でソート 関数で抽出 こんなのはまったくやるべきではない。 何の前提条件も無しに質問してくるやつは無知なだけだと判断するのが適切だろう。 そのまんまの関数で回答するやつ ソートやフィルタ使えと回答するやつ 両方いればいいんじゃないかな。
質問者に判断なんてできるわけがねーつうのに。
416 :
369 :2008/06/15(日) 23:13:15
>398 「別シートにする理由」をたずねた者です。元となるのが「個人情報をひたすら並べたシート」で、 結果がほしいのは「様々な書類に対応した複数のシート(必要な項目だけを所用の並び順にしたもの)」と いうことですね。 VBAでの回答は「否」ということであれば「難しい」と思います。 元シートから目的シートへ必要とする範囲をコピー・ペースト(値のみ)してからソートするという 手作業がどうしても必要です。(値コピーであれば目的シートにあらかじめ設定しておいた条件付書式は 書き変わらないため。) VBAを勉強してください。まずはマクロの自動記録から。
俺は関数で抽出とかよくやるよ? 自分でも配列数式の神様と思ってる。
>>415 お前だって経験してみてやめた方がいいと思ったんだろ?
そうじゃなければただの頭デッカチだな。
経験させればいいんだよ。
>>398 >VLOOKUPで男女を見分ける「1」と「2」を人数分拾ってみても、
元の表に「男の中で何番目か」「女の中で何番目か」を表示する列を設けとけばいいんだよ。
そうすれば別シートにVLOOKUPで一覧を抜き出せる。
>>412 それはあるな。
エクセルはバカを許容する懐の深いソフトだが、それは長所でもあり短所でもある。
関数でソート、抽出するやつ
セルを結合するやつ
エクセルで報告書書くやつ
カオスだわ。
>>419 それよりピボットつかったほうが明らかにラクだろ
>>418 経験はしたが、人に教わっての経験はしてねーな。
いやあ今日も啓蒙ですか、ありがたいことですなあ
>>416 ご丁寧にありがとうございました。
いやはや、やはりスマートにやるにはVBAが必要ですか。
時間があるときに、ちょこちょこHPを見ながら勉強していきます。
あのさー 本来のExcelの使い方と違う質問があるとすぐAccess使えとかWord使えとかいうアホがいるけど 世の中の多数の会社ではAccessを導入していないところや報告書をエクセルで提出するのが あたりまえになっている会社はいくらでもあるんだよ。 そういう現実を受け入れられないんだろうな、専門バカは。
>>423 お前、日本語不自由なのか?
「教わって」とか関係ねーw
経験させたらいいという啓蒙だw
>>426 うちの会社じゃエクセルでデータ作成すると上と同じという意味の〃を使う
やつがいっぱいいる。
俺は専門バカだからそんなことはしないけど。
>>426 私の場合はAccess使えとは言わないようにしている。
君の言うとおりAccess使えない環境の人も多いからね。
でもWordは使ってくれ。
報告書をExcelで書くやつは頭がおかしい。
それがあたりまえになっている会社は頭がおかしい会社。
>>427 だから関数での抽出とかを人に教わって使うようなやつは、やっちゃいかんって判断がつかないやつが多いんだよ。
>>430 すみません。質問者ではないんですが、Excelはあまり詳しくありません。
関数で抽出をしてはいけない理由を教えて下さい。
>>431 ロジックが無駄だから。
もっと楽にできる方法はいくらでもある。
>>432 431ではないのですがロジックが無駄だと何がいけないんですか?
あと関数を使わず抽出する方法を具体的に教えてほしいです。
私も仕事で
>>366 みたいな事によく使うものですから。
(現状では手作業で1つ1つコピペしてます)
カスはいい加減雑談スレに行け
>>366 名前定義を使えば別シートでも可能
まず、挿入−名前−定義で2つの名前定義を設定する。
名前:NAME
参照範囲: =Sheet1!$A:$A
名前:SEX
参照範囲: =Sheet1!$B:$B
別シートの名前列を選択して 元の色を青
条件付き書式で
数式が =INDEX(SEX,MATCH(A1,NAME,0))=2
色を赤
>>438 お前さんいつもなかなか趣味のいいサンプル書いてくるな。
関数で抽出は嫌いなんだが、ちょっとやられたって感じだ。
ソルバーのサンプルもあんたか?
441 :
439 :2008/06/16(月) 00:01:14
書き忘れた。 条件付き書式の数式の中で A1 はアクティブになってるセル番地にしてくれ。
そんな無駄なことなんでやるの? 名前定義使えばできることはみんな知ってるんだよ。 男を抽出したら男は男の色 女を抽出したら女の色にすりゃいいじゃん
443 :
438 :2008/06/16(月) 00:16:58
>>440 俺はソルバーの人とは別人で
>>388 の数式厨ですw
個人的にはピボットテーブルもVBAも便利に使ってますけど、
仕事(他人に使わせるもの)ではあまり使いたくないっつーのがあってね。
>>443 そうか。あれなら抽出結果の並べ替えもできるな。
こんな使い方しているんだったら納得だ。
このスレは 質問1:回答2:雑談50 の割合でできています
>>446 雑談を否定することはない。Excelの使い方に関する話題で盛り上がっている
んだったら雑談は歓迎する。
君の書き込みも雑談だよ。
あのー、男女合わせて12000人くらいで
>>438 の式はもう少し軽くなりませんか?
【1 OSの種類】 WindowsXP 【2 Excelのバージョン】 Excel2003 【3 VBAが使えるか】よくわからない・・・ 【4 VBAでの回答の可否】? 【5 検索キーワード】 あまりパソコンに詳しくない者なのですが、よろしくお願い致します。 ただいまエクセルを使い、売り上げの表のようなものを作っているのですが、 1番左側にある列の数字が「80」を超えた途端、金額を入力している欄に、 1000円以上の金額を入力し、エンターキーを押すと「####」と表記されてしまうのですが、 解決する方法はありますでしょうか? そのセルの部分はセルの書式設定で、通貨にしてあります。 また、文字サイズは11で、フォントはMS Pゴシックです。 よろしくお願い致します。
454 :
453 :2008/06/16(月) 02:27:36
あ、すまん。質問をよく読んでなかった。無視して。
>>452 とりあえず金額の入る列の幅を広げてみ。広げ方はわかる?
広げたら表示されました! しかし、 1番左の数字が 80以前 | \1.000| 80以降 | \1.000 | 上記のように、文字の設定は変わっていないのに、 数字の右側に半角スペースよりも狭いスペースがあいてしまいました。 表を見たときにそこから数字がずれてしまって、見た目がよくないのですが、 もし解決方法がおありでしたら、教えてください。 よろしくお願い致します。
>>456 書式を確認してみ。
スペースが勝手に入るセルは、書式が通貨じゃなくてユーザー定義か何かになってると思う。
いちいち確認するのが面倒なら、金額の列「全体」を選択して書式をもう一度通貨に設定しなおせばいい。
数値だったかな しかしそんなスペース、書式関係なくあわせてくれればいいのにね それとも分かりやすいようにわざと分けてるのかな?
>>438 なんや、ほんとネタみたいな数式の使い方だなw
釣りか?
460 :
369,416 :2008/06/16(月) 09:00:34
>450 「軽い」の意味がわかりませんが、計算式で解決しようとしたら、結果が必要なセルに計算式は欠かせません。 ただし、先頭行に正しく計算式が入れば下方向へのオートフィルでセル参照は自動的に調整してくれます。 これがVBAを使う方法になると、結果が必要なセルは単なる入れ物となります。必要な処理はプログラムに 行わせるわけです。プログラムの中で並べ替えの処理もできるので、スレbS38のサンプルブックの元データ シートでいえば男1、男2、・・、女1、女2、・・といった涙ぐましい努力(12000人分これをやれと いわれれば誰でもそう思うでしょ。)はいりません。 なお、スレbR66で「50音別の名簿を・・」とあるので、当然「ふりがな」の欄はあるんでしょうね。 漢字氏名の欄でふりがな別に並べ替えようとしたら、データ入力のときに十分注意しないとえらいことになります。
>>460 サンプルをよく見なされ。男1、男2、・・、の数字も数式で自動で入れてるよ。
まあ、この数式を使うアイデア自体が涙ぐましいとも言えるけど、
人数が増えても手間が増えるわけではない。待ち時間がほんのちょっと増えるだけ。
462 :
460 :2008/06/16(月) 09:19:57
>461 おお、ありがとう。 ソートしても式はくずれませんね。
463 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 09:32:00
こうしてカスどもの煽りによってカスばかりになった このスレの回答者レベルが下がっていくのであった。 めでたしめでたし。
465 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 11:10:12
【1 OSの種類 .】 XP 【2 Excelのバージョン 】 Excel2002 セルの内容が B2 = 4 C2 = 5 D2 = B2+C2 のような内容である時、D2に併せてコピー(Ctrl+C)すると「9」がコピーされますが 計算式 B2+C2 をショートカットキーでコピーする方法はないでしょうか? ※ツールバーの下の fx の小さな編集ウィンドウからコピーする事はできますが 複数のセルを一括してコピーする時に使えないので・・・
無いです F2を押して編集状態にするか、=$b$2+$C$2などのように絶対参照を使うと良いです
468 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 12:09:47
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 時間 時間の表示とそれを計算したいのですが、 @セルの書式設定で 『26:30』 と入力すると 表示が 『2:30』となり セルの中は 1900/1/1 2:30:00 となってしまうのを 26:30 にしたい A計算した時に 26:30 + 00:40 = 27:10 という結果を表示したいのですが可能でしょうか?
>>464 もう少し基本を勉強した方がいいね。
関数の使い方が論外。
471 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 12:32:47
啓蒙w
>>470 あまりいじめるなよ。
Mougなんかで回答してるやつらに比べりゃ上出来ってもんだろ?
あそこは配列数式でやる猛者がいるぞw
474 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 12:36:04
文句ばかりのカスどもはいい加減死ね!
みんなのこういうノリ、嫌いじゃない
そうでもないか
>>438 の表を借りると
=IF(COUNTIF(元データ!$B$1:$B$12000,"男")<ROW(B1),"",INDEX(元データ!$C$1:$C$12000,SMALL(IF(元データ!$B$1:$B$12000="男",ROW($E$1:$E$12000),""),ROW(B1))))
としてからCTRL+SHIFT+ENTER
479 :
477 :2008/06/16(月) 13:06:10
>>478 はぁ?
私はいつも真面目です。
作業列もいらないからいいと思うんですが。
それは一番悪い式なんだが...
481 :
477 :2008/06/16(月) 13:11:43
>>477 本当はすごくいい式だからこれからもばんばん使いなさい。
をいをい
>>438 はレスポンスを別とすれば特にトリッキーな事をしているわけでもなく
いたって単純明快、普通のやり方だね。
>>459 や
>>470 はもっと素晴らしい数式の使い方を知ってるらしいので
ここの住民の教育のために是非ご説明願いたい。
ていうか12000件の顧客や社員を扱うならさすがにAccess買えよって言いたい所だが・・・
485 :
468 :2008/06/16(月) 13:46:22
>>469 ありがとうございました。
>>468 の質問の中の
>セルの中は 1900/1/1 2:30:00 となってしまうのを 26:30 にしたい
というのは 1900/1/1 2:30:00 のままなのですが、これはどうにもならない
でしょうか?
486 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 13:59:09
また啓蒙か いい人生だな
馬鹿だから脊髄反射で「一番」悪い式とか書いちゃう 末期だなw 本気でそう思いこまないように気を付けてな 早目に病院行っておけよ
小学生が大金を見ると、なんでも「100万だ!」って言うのと同じか
489 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 14:26:29
>485
横から失礼
数式バーの中は 1900/1/1 2:30:00 で、セルに表示される内容は
26:30 になりませんか? セルの書式を469にあったように指定してますか?
数式バーの中が 1900/1/1 2:30:00 になるのはエクセルでの日付・
時刻の表し方による制限になります。↓はマイクロソフトサポート による説明です。
http://support.microsoft.com/kb/880979/ja このなかで
時刻は日付の一部として小数値で置き換えられる
とあります。つまり24時間になった時点で1になるので
23時間59分59秒(コンマ秒以下はどこまでかはわかりませんが)
までしか小数部では表現できません。が書式を設定することで24時間を超える表現が
可能ということです。
>>490 伝染病にかかったんだよ。
あの式のひどさが分らない重病患者はそっと見守ってあげなさい。
>>491 フィルタやピボットやVBA使えってのなら話は分かるが
「式がひどい」って事はもっといい式で作れるって事か?
だったらそれ示せよ。
いい加減にしろよ。
12000人もいたら、仮に半々だとして6000行もあの式書くんだぞ?
>>480 じゃなくても最悪だと思うが。
>>493 >仮に半々だとして6000行もあの式書くんだぞ?
お前全然分かってないだろ。もう一度
>>438 のファイルよく見てみろって。
分らないやつはいくら言ってもわからないんだから、それこそそっと見守ってりゃいいじゃん。 たいがいの人はフィルタオプション使うと思うけどな。
497 :
468 :2008/06/16(月) 14:55:40
>>489 何度もありがとうございます。
セルの表示は 26:30 と表示されていて、まったく問題ありません。
使用者がエクセルに疎い為、数式バーの中も同じようにできると
わかり易いかと思い質問させて頂きました。
1900/1/1 2:30:00 のほうで説明してみます。
ありがとうございました。
配列数式はよく知らないんで
>>477 が何やってるかよく分からんが
>>438 よりもっといい式がどんなものなのかは興味あるな。
さらに作業列を用意すればCOUNTIF使わないでも出来そうではあるが
あれより単純明快なものを作れと言わると悩むな。
>>496 フィルタオプションて言葉は今まで全然出てこなかったから
多分ほとんどの人は知らない機能なんじゃないかな。
>>498 ほとんどの人はフィルタオプション知ってるって。
お前知らないで数式で抽出してるんか?
>>499 別シートにゃフィルタオプションじゃ抽出できないだろ?
選択範囲内に抽出してからコピペするんか?
ほとんどの人が知ってるならもっと早い段階で指摘されてるって
502 :
499 :2008/06/16(月) 15:16:45
>>501 出てなかったか?
馬鹿らしくて書かなかっただけだろ?
>>500 抽出先のシート上からフィルタオプションを開始すりゃできる。
VBA厨、ピボ厨、数式厨に次いで今度はフィルタオプション厨の登場かw Excelって面白いな。
あと配列数式厨もいたな。 煽ってるわけじゃなくて、 Excelって同じ事を実現するにも色んなやり方があってマジで面白いと思うよ。
505 :
500 :2008/06/16(月) 15:27:37
>>502 知らなかった。やってみたら確かにできるな。
トンクス
だから素人はすっこんでろと(ry
>>60 ほんの少しスレを覗いていなかったのですが亀レスですが、ありがとうございました
508 :
507 :2008/06/16(月) 16:04:49
>>60 亀レスですが、ありがとうございました
と書いてから、これじゃ難だしなぁと思い
>>60 ほんの少しスレを覗いていなかったのですが久々に見たら
回答があってお礼を言おうとしたのですがどう見ても亀レスです
本当にありがとうございました
と書き直そうとしてなぜか途中送信されてしまった
509 :
507 :2008/06/16(月) 16:09:43
そうや前から気になってたんですけど、例えばB1のセルに文章打ってて「〜ですた。」 と書いてしまい、”す”と”た”の間に戻ろうとしてカーソルキーの左を押すと、 B1を確定して勝手にA1をアクティブにするじゃないですか。あれ死ぬほど辞めてほしい というかあの仕様で得する人間いるのか?もし居ても「Shift+カーソルキー」で 設定してくれよと思うのですが、設定でどうにか変更できないんですか?
>>509 本当にあれはどうにもならない
入力中にF2を押せば回避できるが、面倒だよな
でもこれしかないんだ
普通はExcelで長文をたくさん打ち込むような事はしないから カーソルキーでセル移動という現状の方式の方が楽な事が多い。
編集箇所を動かすショートカットキーは用意してほしかった
>>498 式でやるのがそもそも馬鹿げてるから、いい式なんてない。
どこかで計算は軽いけどgdgdした式を見たような覚えがあるが、そもそも数式でやるのはどんな方法だろうと無駄。
↑ブラクラ
ブラクラじゃないから安心して見るように
マジで固まった。今ウイルスチェック中。
518 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 18:57:25
きもちわるい
このスレオワタ\(^o^)/
しかし、良スレの相談所だったが、よくも、まぁ、ここまで墜ちたもんだwww
>>520 在庫管理さえできないやつが回答していたんだからもともと良スレでもなかったんだよ。
そもそも雑談が多すぎるから雑談スレを分離したのに、 その経緯を知らない新参がまた居座って雑談を始めるんだもんな。 おまけに当人は「有意義な議論」をしてるつもりだからタチが悪い。 結局雑談スレが出来る前と同じやん。
レベルを底上げするために啓蒙が必要だな
啓蒙も、スレの賑い
>>513 お前に聞いてるわけじゃなくて「あの式のひどさ」と書いてる奴に聞いてるんだよ。
526 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 20:02:15
ジジイが居坐ってりゃ水も淀むはずだわな はやく啓蒙してやれよ
今のところ実用レベルの質問に実用レベルの回答をしているのはピボット厨だけだな。
おおーっとここでピボット厨の自作自演(・∀・)!!
ぶっちゃけ
>>477 のまずさが分らん奴はExcelやめた方がいいんだが。
ピボット厨は「データを正規化して下さい。そうすれば後はピボットで自由自在です」 と言ってりゃいいんだから楽だな(笑)
>>514 の内容しっかりしてるじゃん
何でブラクラとか嘘書くの?
>>530 指摘されるまでは知らなかった概念のくせに。
啓蒙されてよかったな。
>>529 そりゃちと違うんでないかい?
まずさが分らずに使ってるやつは
だろ?
質問者の意図を汲み取ろうとせずとにかくピボットで済ませようとする ピボット厨は啓蒙にすらなってないよ。現実の仕事は試験問題とは違うんだよ。
実務なら多少式が雑でも平気で使うんだがな
536 :
529 :2008/06/16(月) 20:40:45
自分の言葉で説明出来ずにただまずいとしか 書けない小学生もこのスレには不要。
538 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 20:51:04
雑談で賑わってるところ申し訳ないのですが、 フィルタオプションの使い方は何となく分かりましたが、 元データを更新した時に抽出先も連動して更新されるようにするにはどうしたらいいのでしょうか?
>>534 簡単な方法があるのにわざわざ苦労するのはなぜ?
現実の仕事とかいうけど君たち在庫管理も部品管理もできなかったじゃない。
それにここの連中、線形計画法も知らないの。
びしっと線形計画法で鮮やかな解法見せてくれんかね
>>362 をもう一度書かせてもらう。
正直ピボットテーブル使わないやつは言うことがとんちんかんなんだよな。
手続きを省略する方法や代替手段ばかりを一生懸命探そうとする。
ピボットと同じ処理を自作するのは大変だからなあ。
VBAはなんでもできるというのは事実なんだけど、役に立つことやろうと思うと結局ピボットを自作することになる。
>>539 回答者は何人もいただろ。
一日中このスレに貼り付いてる癖に何見てきたんだよ。
>>543 確かに回答者は何人もいたけど回答できていなかったぞ。
>>544 質問が曖昧なままだと一般論的な、参考程度の回答しか出来ないんだよ。
お前はそれが分かってないから社会に出ろって言われてるんだよ。
>>545 出た。質問がファジー。
どの辺がファジーだったの?
547 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 21:14:03
正しい答えが出て無いと言いながら自分では正しい答えを出せないピボ厨 在庫管理もシフト表もピボ厨の管理外だから回答できないのか?
>>545 一般論的な回答ってこれのこと?
>正直言うとわからない
>言い訳してすまなかった
>「商品」、「部品」、「材料」と「加工内容」に「型」まで登場しましたね。
>それぞれの関係を明記してもらわないと考えようがないですね。
550 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 21:26:08
いくつか職場転々としてる俺だけど ピボットテーブル使ってる職場なんて皆無だぞ。 俺もピボットは便利だから啓蒙したいんだが どうすれば周りの人に納得して使ってもらえるの? 教えて下さいピボット厨さま。
>>550 先輩と上司を啓蒙するのは不可能なんで部下や後輩には啓蒙している。
使用を強制はしていない。
みんな当たり前のように使いこなしとるぞ。
>>529 ,
>>533 おれはひどさが分かっててて使う奴にまっ先に消えて欲しいよ。
使う奴というか、あほな式を教えるやつだがね。
ピボ厨のレスを見てると後輩を啓蒙出来るようなタイプには見えないんだがな。 働いてる事さえ怪しい。
>>553 だんだん人格攻撃くらいしかネタが無くなってきたようだな。
>>542 俺はピボットテーブルは今はよく使うが、昔は簡単にVBAで自作してたぞ?
あんなの全然大変じゃないよ。
Excel2000でははっきりいってデータ量によっては使い物にならないケースが多々あったからね。
2002はどうだか知らんが、2003はアイテム数にぐっと余裕ができてやっと心おきなく使えるようになった。
556 :
538 :2008/06/16(月) 21:43:32
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 データ抽出 自動更新
すみません、正しいフォーマットで質問しなおします。
だいたい
>>366 と似たような事をやって生徒名簿を作りたいのですが
フィルタオプションを使って抽出した表が、元の表を変更すると自動で変更されるようにするにはどうしたらいいでしょうか?
フィルタオプションが無理ならピボットテーブルとかソルバー?とかでもいいんですが、いずれにせよ利用者が特別操作しなくても元の表と抽出した表が自動で連動してくれると助かります。
>>555 理屈上はピボットテーブルでできることは全部VBAでできるさ。
これからもVBAを使い続ければいいじゃないか。
止めはしない。
>>555 ピボットはいいぞと言ってるだけにしか聞こえない。
心情的にはピボットの人を応援したいが いかんせん極論が多く具体性の無いレスばかりで スレを荒らす結果になってしまってるのが残念無念 俺ならもう少しまともにピボットの良さを啓蒙出来る自信あるんだがもう手遅れかな
>>560 今からでも遅くないぞ。まともな人間が出てきてくれれば、極論しか言わない厨は排除できる。
ピボ厨が言ってるのは極論とは言わないと思う。 質問に回答できているのはピボ厨だけだ。荒らしているのは残念だが。
>>559 「データの更新」をしないと元データの変更が反映されなくね?
これが質問者の言う「特別な操作」に含まれるかどうかはわからないけど。
ピボットテーブルの中身を全自動で更新したかったらVBAが必要だと思う。
しかしVBAは「否」だ。さあどうしよう。
回答者に理解できるように書けないのでは回答とは言わない。 テーブル作成の手順を懇切丁寧に教えるか、せめてリンクぐらい貼ってやれよ。
>>559 はただのアンチピボ厨だろ。
ピボットテーブルはこんな問題は解決できない。
将来ピボットテーブルがリアルタイムになったらうれしいね。
566 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 22:13:57
ワークシート関数だけで処理するメリットって、すべてのデータが連動して自動更新される点だよな やりすぎるとメンテ性が悪くなったり重くなったりするけど
>>564 わからないやつをからかうためにわざとぼやかして回答しているんだと思う。
俺はわかるからメチャうける。
>>550 Excelでピボットテーブルを使わない会社であっても基幹業務で使っている
データベースは正規化されたデータが格納されているだろう?
((注)第一正規化のことだからね。)
まともな会社じゃ大事な業務ではピボットテーブル的な発想で仕事をしているよ。
それをExcelでも実行するだけじゃないのかな。
そもそも入力と同時になんて質問する人を啓蒙しないとまずいんじゃないの? そういうことは無駄が多いからやるべきじゃないんだよね。 マクロをボタンにでも登録して、必要な時に抽出するのが妥当な線。 たとえばWEBなんかでもダウンロードするときはダウンロードのボタンなりリンクなりを押すだろ?
>>570 でもやっぱりリアルタイム性があるのとないのとでは素人の食いつきが違うのよ。
表計算ソフトがこんなに人気あるのもSUM関数でタテヨコの集計が一度に計算され
るのが受けているだけ。
572 :
538 :2008/06/16(月) 22:44:20
>>559 >>563 >>566 うちの職場ではVBAは原則禁止になってて使えないのです。
(私もVBAは難し過ぎてちょっと・・・)
手動での更新方法を使う人に教えればいいのでしょうけど
あり得ないぐらいパソコン音痴な人ばかりなんで、出来るだけ余計な操作はさせたくないのです。
>>438 のxlsファイルは試しました。これぐらいなら何とか私にも理解できて応用出来そうなんですが、
一番悪い方法と書いてる方もいるし、扱う人数が1000人近いのでちょっと難しいのかなと。
もう少し考えて、どの方法を選択するか、どこを妥協するかを決めたいと思います。
ありがとうございました。
>>572 「原則」禁止ってことなら少しぐらい使ってもよさそうだけどね。
それで仕事の能率が上がるんなら反対されないんじゃないかなあ。
576 :
名無しさん@そうだ選挙にいこう :2008/06/16(月) 23:23:22
VBA原則禁止 は 悪意のあるプログラム を排除するためじゃないだろうか。 計算式ではファイル削除とかできないから。 となると 438 のサンプルなど参考にして計算式だけで対応するしかないでしょうね。 366の質問者は12000人でこれをやろうとしています。これの1/12と考えれば 気が少しはラクになりませんか。
>>574 1 t生徒名簿シートを編集する
2 pvシートを表示して表の中のセルを選択する
3 世界の平和を祈る
4 表示されたピボットテーブルツールバーの[!]をクリックする
5 t生徒名簿シートを並び替えた表が表示される
>>531 >>514 の内容をじっくり読んでみたが、なんか説明があまり良くないねぇ。
その3の配列数式が悪い一番の理由が書いてないし、その2の作業列を使う方法の最後の方法なんかまったく意味不明なおかしなことやってるし。
普通に1から連番振って、その番号を完全一致検索すりゃいいじゃん。
+2って何なんだよwww
579 :
366 :2008/06/17(火) 07:18:00
なんか盛り上がっていらっしゃるようで。
私にとっては
>>438 さんのは目からウロコだった訳で、
スゲーと思わされたのですが、大人数には対応できない、と。
仮にVBAを使えばもっと簡単に軽く男女別に分けられる、
ということなのですよね。まあ、私は40人そこらなので
全く問題ないわけですが。
何方かお暇でしたらぽーんと素人でも扱えるVBA込みのブックを
作っていただけないでしょうか。それで雑談も決着するでしょうし。
今から作ってみるか
だめださすがに10分じゃ無理かw 夕方ぐらいには出すぜ
582 :
576 :2008/06/17(火) 08:28:28
>579 アレ?450の人(12000人云々)は366さんではなかったのですか?
>>582 だから回答者いじめだろ?
あの回答のまずいところはCOUNTIFつかってるとこだからね。
配列数式よりはましだが俺も下手だなぁと思ったもん。
>>571 素人の食い付きが良かろうと、クソみたいな方法を教えるやつはカス。
585 :
名無しさん@そうだ選挙にいこう :2008/06/17(火) 09:04:19
後だしで啓蒙(笑)
>>573 は使えないね。
だいたい行を挿入させるのがまずいし、それにピボットの使い方知らない人にも使えるようにしないと。
ってことは結局ユーザーインターフェースとしてのVBAが必須ってことになるわけだが。
>>579 A列に名前、B列に性別(男=1)が入っているとする
Sub a()
c = Application.WorksheetFunction.CountA(Range("A:A")) '人数
f = Application.WorksheetFunction.CountIf(Range("B:B"), 1) + 1
m = 1
For i = 1 To c
If Cells(i, 2) = 1 Then
Cells(m, 3) = Cells(i, 1)
m = m + 1
Else
Cells(f, 3) = Cells(i, 1)
Cells(f, 3).Font.Color = vbRed
f = f + 1
End If
Next i
End Sub
589 :
507 :2008/06/17(火) 11:32:28
>>60 すみません、各ソースの動きはトレースできたものの、
なぜこれで書き変えられるかがよくわかりません。
書き換え前と後で
ファイルサイズが同じになる → 一部を書き換えられる
ファイルサイズが → 全体を出力し直す
という認識だったのですが、バイナリモードで読み書きすると
その制約に捕らわれず外部ファイルの一部のみを書き換える事が
できる、ということなのでしょうか?
今は数キロバイトのファイルを読むだけなので問題ないのですが
将来、それが数メガになってネットワーク上にファイルがある場合
全体を出力し直すと遅延が発生しそうでそれを危惧しているのですが・・・
そういや、IMPROVE は、ピボットそのまんまの、 表計算ソフトだったな。
>>588 >>587 じゃないがコード見りゃやってること分るじゃん。
最初に書いてるようなデータになってりゃ動かないか?
俺は試してみたわけじゃないが、パッと見で動くと思うんだが。
C列が男(1)だったら1行目から詰めて書き込み、男じゃなかったら男の後ろに順番に書き込んでるな。
すまん、B列が男(1)だったらC列の1行目からだな。
>>586 >>573 は使えないには同感。いまいち何がやりたいのかわからない。
私はピボットテーブルを操作するためのUIをVBAで作る必要はないと考えてます。
マウスで操作するだけ、ウィザードに答えるだけの簡単操作。これの何が難しいのか理解できません。
Excelを使うのはプロです。コンピュータの専門家ではありませんが、それぞれの分野の専門家のはず。
これくらいのことできなくては。
つーかお前ら コードぐらい試してから書き込めw
私がUIにVBAを使う意義を感じるのは次のような例。 「売上データを入力する時に商品コードを入れると単価が自動的に記録される。」 VLOOKUPでできそうに思うかもしれませんが、単価のような変化しやすいデータは正規化しない方がいい場合が多いですから。
ボタンを押すと自動的に最終行のある列に日付と時間が記録されるってのは年寄りに評判よかったな
597 :
580 :2008/06/17(火) 14:14:23
生徒名簿なんてそんな頻繁に動きがあるわけでもないだろうから
応答性はそれ程重要じゃないと思う。
>>438 を12000件にして試したけど再計算に10秒程度待たされるだけだよ?
(PCのスペックによるだろうけど)
質問者は1000件程度でさらに少ない。
仮に数十秒待たされたとしても、年に数回更新する程度の表でそれが致命的な欠陥になるとは思えないなあ。
血管にしておかないと啓蒙する所が無くなるだろ 0.1秒の結果の違いもベストプラクティスとかいってオナネタにしちゃう 2世代は前のジジイなんだから仕方ない
そしてオナネタコードは1週間もすれば本人すらも理解できず また1から書き直しばっかするから非効率きわまり無い 本人はそれを自分ばかりがやらなくてはいけないと被害者意識全開 扱いにくい老害の置物の出来上がり
>>594 試さなくても何やってるかは見りゃ分るよ。
インデントさえしっかりついてれば人のコードを読むのは得意だからね。
なんか意味不明なヒガミ書き込みがあるね。
>>601 読んで動かしていじって初めて理解できる人の事なんか
全然考えて無いと言いたいのですね、わかります。
おまいらグダグダ文句言ってばかりいないで、サロンのあっぽーみたいにさらっと回答してみなよ。
情報システム部門みたいなのがある会社ならいいんだが ちょっとPCに詳しいって理由で一般社員が任されて作った中途半端なVBAは後々困る事が多いんだよな。 そいつが在籍してずっと面倒みてくれるんならいいが、オタクっぽい奴は引き継ぎもせず突然辞めたりするから困るw でもこういう掲示板で他の人のいろんなコードが見られるのは勉強になるんでこれはこれで有意義ですけどね。
>>600 自分の書いたコードを忘れるような奴なんていねーだろ?
プロなら全部の行にコメント入れるのが常識だからね。
>>605 分かる。0から作るほうがよっぽど楽な場合は多々あるよな
と言ってる俺がそのオタク君なんだけどね・・
>>607 おまえきもいな。
俺みたい!さぁ頼まれてから一ヶ月近くたったぞおぉお
もはや進捗すら聞かれなくなったぞぉぉ
やっぱり基礎を学んでからやるべきだったか
改修しすぎで既にスパゲッティワロタ
基礎なんかどうでもいいんだよ。 俺なんかインデントなんかいい加減だしセレクトしまくりでも本も出したし仕事もよく引き受けるぜ。 コードオタクなんか仕事にゃありつけんよ。
VLOOKUPがあれば何でもできるって人が前にいたが
>>438 か?
それを言うなら「INDEXとMATCHがあれば何でもできる」だろ
>>611 いや違うよ。INDEXとMATCHは不要とか言ってたからな。
613 :
名無しさん@そうだ選挙にいこう :2008/06/17(火) 15:52:09
【1 OSの種類 .】 WindowsXP SP2 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい(勉強中です) 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 MID セルA1に入力された十桁までの数値をセル(D1-M1)に、 一文字づつ右側から取り出したいと思います。 =IF(A1="","",RIGHT("0000000000"&A1,10)) という関数でセルD1-M1はMIDで取り出し 入力をしたみたのですが、正の数の場合は取り出しが可能なのですが 負の数(マイナス)の場合は取り出しができませんでした。 どういう方法ですれば宜しいでしょうか? 宜しくお願いします。
>>612 そういう極論言うのは多分ピボットの人じゃないかな。
>>614 そうかな?
Excel総合相談所 67
>>934 INDEXで何が実現できるか書けばいいじゃないか。
Excelで覚えなくていいもの
配列数式
INDEX
MATCH
SUMIF
DSUM
945 名無しさん@そうだ選挙にいこう sage New! 2008/05/06(火) 22:23:14
>>935 Excelで覚えなくていいもの VLOOKUP
947 名無しさん@そうだ選挙にいこう sage New! 2008/05/06(火) 22:30:40
>>945 VLOOKUPはデータに分類項目を付け加えるために使ってる。もちろん後で分類別に集計するためです。
もっと便利な手法があれば紹介してくれ。
やっぱ
>>438 っぽい
ピボ厨の人はAccessが使える簡易ソフトってイメージでExcel使ってるから
VLOOKUPとピボットがあれば何でも出来るって感じなんじゃないのか。
俺はAccessも使ってるからそういう気持はよく分かるよ。
VLOOKUPでテーブルをリレーションさせて、ピボットテーブルで集計するって感じなんだろうな。
>>616 >VLOOKUPはデータに分類項目を付け加えるために使ってる。もちろん後で分類別に集計するためです。
これはまさに、最終的にはピボットを作るんだがその下準備時としてVLOOKUPは必要って考え方だよ。
一方
>>438 はVLOOKUPで分類項目を付け加えてるんじゃなくて分類そのものを行ってる。
>>613 D1に
=IF(A1>=0,ROUNDDOWN(A1,-9)/1000000000,ROUNDDOWN(A1,-9)/1000000000*-1)
後はE1、F1と桁を減らしていけばいいかも
0と出るのが嫌なら、=if(and(A1>=1000000000,A1=<-1000000000,上の式,"")
みたいに入れ子にするとかで対応
>>613 マイナスをどういう形で取り出したいのか書いてないので無視
=IF(A1="","",RIGHT("0000000000"&ABS(A1),10))
>>604 某所を退去させられて、あちらで頑張ってるね。
>>619 すみません。
できれば、マイナスの場合は「−」「△」
(負の記号もMIDで取り出す?)を数値の前につけて
取り出したいです。
A1が-1000 だと △1000 または -1000
ご指南お願いします。
=IF(A1="","",IF(A1<=-1,"△" & RIGHT("0000000000"&ABS(A1),10),RIGHT("0000000000"&ABS(A1),10))) こうですね、わかります
>>623 だからマイナスをどういう形で取り出したいのかがわからんのだが
その-1000の場合はセルD1-M1にどう入ってほしいのよ
>>623 D1=ROUNDDOWN(A1,-9)/1000000000
E1以降は桁減らしで
627 :
626 :2008/06/17(火) 17:08:15
しまった桁減らすだけじゃダメだゴメン E1=MOD(10,ROUNDDOWN(A1,-8)/100000000) 以降10の桁を増やして100000000の桁を減らすと上手くいく気がする あと、もっと上手い式があるきがする
なんか元の式 =IF(A1="","",RIGHT("0000000000"&A1,10)) の0 10個をスペース10個に置き換えるだけでいいような気がしてきた
>>624-
>>628 有難うございます。
>>625 -1000
の場合、
D1〜H1は空欄になり、
I1に「-」または「△」がきまして
J1に1 K1〜M1は0 という風な取り出し方になります。
(一応10桁で固定してますので、マイナス表記が可能なのは10億未満??)
やっぱり
>>628 でいいんじゃん?
△使いたかったらSUBSTITUTEでどーぞ
>>613 D1=MID(RIGHT(" "&$A1,10),COLUMN()-3,1)
↑
ここは半角スペース9個な。
あとは好きなだけコピペ
>629 >…入力された…数値をセル(D1-M1)に一文字づつ右側から取り出… という意味は 一番右の一桁目がD1、次の二桁目がE1… と考えるのが普通だけど、左からなんだな。 それから、(D1-M1) という書き方はやめた方がいい。 10桁のマイナスにも対応できるよう、C1:M1 に =IF(LEN($A$1)<14-COLUMN(),"",LEFT(RIGHT($A$1,14-COLUMN())))
A1に1000 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 1 0 0 0 0 A1の値が-11000 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 - 1 1 0 0 0 0
最大桁数の時C列にマイナスの符号を入れるなら C1=LEFT(RIGHT(" "&$A1,14-COLUMN()),1) あとはM列までコピペでいける
おすえて >629で AA15に入力された値を行がちがう AF18 AG18・・・としたい場合はどうすんの?
>>636 AA15をAF18〜AO18までの10桁にするなら
AF18に=LEFT(RIGHT(" "&$AA15,42-COLUMN()),1)と入れてAGからAOまでコピー
>637どうもありがとうです ついでに>630さんのSUBSTITUTEはどういう形でMIDと組み合わせればいいんですか? -を△に置き換えるってことですよね?
>>638 基本は=SUBSTITUTE( 文字列 ,"-","△")で置き換えられる。
つまり、この場合は=SUBSTITUTE(LEFT(RIGHT(" "&$AA15,42-COLUMN()),1),"-","△")
>639 トンクス 勉強になりますた
便乗すいません。 RIGHT(" "&$AA15,42-COLUMN())のコラム関数の42の部分はどういう風に読み解けばいいんでしょうか?
めんどくさいことしてるね 0より小さければ△表示させればいいだけだろ
42-COLUMN() COLUMN()は列番号だから、AF列なら32 RIGHT(" "&$AA15,42-COLUMN()) ↓ RIGHT(" "&$AA15,10) になる
>>642 まったくだなw
>>639 は単純なことを複雑にして数式をセルに3行くらい折り返しでつっこむタイプ
TEXT(A1," 0000000000;△0000000000;")
=IF(A1="","",SUBSTITUTE(RIGHT(" "&A1,10),"-","△") )
=IF(A1<0,"△","")
ちゃんと質問文読めよおめーら
文字列として扱う方針でいくならIFで正負の判断させるよりSUBSTITUTEで置き換えの方が一貫性があっていいな まあどっちでもいいんだけど、あえて理由を付けるなら
このスレ、局所的な事がわかるだけで自分はできる人間と勘違いしているバカども多すぎw
局所的な事もわからないなら黙っていた方が恥をかかないで済みますよ^^
ああ、ケチだけつけて答えを書かないのは恥をかかない為ですね、失礼しました^^
だいたいどうしてもSUBSTITUTE使いたいにせよ
>>639 なんて
=SUBSTITUTE(""&AA15,"-","△")
でいいじゃん。なんでわざわざ小難しくしてるのか意味不明
まあ
>>639 は確かに意味不明だけどね。なんでそこでLEFT関数使うんだという。
そりゃ正負判定しろ、と言いたくなる。
ここは
>>646 と書くべき。半角スペースが詰まって表示されているのがアレだけど。
半角スペースがそもそもいらない ""でおk
IFもRIGHTもそもそもいらない =SUBSTITUTE(""&A1,"-","△") でおk
右詰に取り出す部分が抜けてるんだよお前ら
666 :
654 :2008/06/17(火) 22:44:30
>>664 それって実はどれも同じ質問。
623,629は質問者に対して色々と疑問を感じた回答者が質問したことに対する答えだね。
配列数式は?
668 :
654 :2008/06/17(火) 22:47:36
途中で送信しちゃった。
666なのに置き換えの事で無駄に盛り上がってるからついねw
さて、
>>613 =MID(TEXT($A1,REPT(" ",10-LEN($A1))&"0;△0"),COLUMN(A1),1)
右にフィルコピー
マイナスの時の符号は △ のところを自由に変えてくれ。
671 :
654 :2008/06/17(火) 22:54:33
ミスった^^;
>>613 =MID(REPT(" ",10-LEN($A1))&TEXT($A1,"0;△0"),COLUMN(A1),1)
右にフィルコピー
ご苦労さん
>>674 >>639 もちゃんと右詰めで1文字ずつ取り出す式になってるんだが…
複雑すぎて理解できないのかな?
合体してさらにパワーアップ =LEFT(RIGHT(TEXT($A1," 0; △0"),14-COLUMN()),1)
一見ネタに見えるけど意外と使える数式って好きだぜ
LEFT(RIGHT())ってMID()で置き換えられない? と思ってやってみたが、なぜかうまくいかない。 =MID(TEXT($A1,"??????????;△?????????"),COLUMN()-3,1) 添削プリーズ
681 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 00:01:12
エクセル初心者です。 下記の方程式のθの最小値を求めたいんですが、 どうすればいいんでしょうか? a{(SINθ−COSθ+2)/SINθ} excel2007を使ってます。 ちなみにVBAは何のことだか分からないです、、、
>>680 マイナスだと一文字目が△になるな
ifで0以下の場合↓のようにするとか
=MID(TEXT($A1,"??????????;△?????????"),COLUMN()-2,1)
685 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 00:32:45
>>683 そうなんですか、、、
有り難うございました。
686 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 00:36:31
>>684 有り難う御座います。
ですがあの数式、プラトーの問題の研究過程で出てきたやつなんで、
高校数学じゃ厳しいと思うんですよ。
688 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 00:46:12
>>687 そこはかなりよさそうですね。
使ってみます。
お世話になりました。
>>681 aは実数かな?
近似解でいいなら定義域を適切に制限してやれば、定義域内での最大値を
ソルバーで求めることができるよ。
690 :
689 :2008/06/18(水) 07:08:02
しまった。問題をしっかり読んでいなかった。 最小値でしかもθか。ごめん。 するとよくわからないなあ。いくら小さくてもいいんじゃないの?
おはよう
>681 質問をそのまんま読むと θの最小値は -∞
693 :
613 ◆9Ce54OonTI :2008/06/18(水) 10:02:05
皆たま、ありがとうございます。
>675さんのキャプ画像のような形になりますが、
一つ、疑問がありまして、フィルコピーができない場合は、該当のセルに一つ一つ
入力していく方法しかないでしょうか??
=MID(REPT(" ",10-LEN($A1))&TEXT($A1,"0;△0"),COLUMN(A1),1)
などを適用させたい場合等。
このような形です、
ttp://kissho.xii.jp/1/src/1jyou38532.jpg オレンジセルに入力された数値を黄色セルに抽出(分配)?します
694 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 11:18:25
【1 OSの種類】 WindowsXP SP3
【2 Excelのバージョン】 Excel 2003
【3 VBAが使えるか】 多少
【4 VBAでの回答の可否】
【5 検索キーワード】 外部データの取り込み クエリの編集 フリーズ
それまで出来ていたのに、ある日突然にエクセルで「外部データの取り込み」「クエリの編集」ができなくなりました
上記の項目を選ぶと反応せずタスクマネージャーから「手前に表示」をすると以下の画面でフリーズしています
http://www.77c.org/p.php?f=nk3978.jpg&c=758c ヘルプ→アプリケーションの自動修復
インストールCDからの再インストール/修復を試しましたが効果がありませんでした
対処法ありましたらご教授下さい
よろしくお願いします
VBAでcsvを読み書きするエクセルファイルを作っています。 外部ファイル(csv)を意識しないような作りにしているため ソースの中にパスを書き込んでいるのですが、将来的に ファイルのパス等が変わり、自分以外の誰かが修正する際に 容易に行えるようにしたいのですが、Defineのようなことは できるのでしょうか? つまり現状でファイルにアクセスする先々で Const FileName = "C:\Documents and Settings\金英日\デスクトップ\売上.csv" とソースの至る所に記載されているものが例えばDefineのように KIMUCHI = "C:\Documents and Settings\金英日\デスクトップ\売上.csv" Const FileName = KIMUCHI とできれば、修正すべきはKIMUCHIだけなので楽になるかな、と思った次第です。 もちろん、パスだろうとファイル名だろうと置換すればいいだけなんですけどね。 でも、何も分からない人にも 「ALT+F11でVBA開いて上から○行目のパス直してください」 と説明できると楽だと思いまして。
Excelは全く関係ないが代わりにConst、WSH SpecialFolders。
697 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 15:33:31
>695 696の回答がいいのか、悪いのかわかりませんが、自分はどこかのシートの所定のセルにパスを記入し、 マクロ実行時に当該セルの内容を読み込むようにしてます。マクロを編集禁止してもいいようにです。
698 :
695 :2008/06/18(水) 15:38:33
失礼しました…subの外、Option Explicitの下にでも書いておけば そのプロジェクトの中のどこでも使えるんですね… 先頭にpublicつけて書いた時にエラーが出たのでpublic変数以外は プロージャの外部で宣言できないのかと思い込んでました。
おぉ、放置されているかと思ったらレスが。ありがとうございます。
なるほど、Windows Scriptを使う方法やパスを書いてしまうという
方法がありましたか。んんーなるほどぉ!んんーなるほどぉ!
今回は
>>698 様のアイデアを採用させて頂きます。ありがとうございます。
700 :
700 :2008/06/18(水) 15:44:04
698=699=700=イケメンです。今後ともよろしくお願いします。
701 :
700 :2008/06/18(水) 17:50:09
先生!なんで俺がレスしたスレはもれなく流れが止まりますか?
>>693 5列間隔で規則的に並んでいるので、最初から計算式が4列飛びに対応できるよう作っておけば
いっぺんにコピペできるが、そういう式を考えるのと、一つ一つ入れていくのと、
どっちが楽かは微妙なラインだね。
703 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 19:40:35
【1 OSの種類 .】 Windowsvista 【2 Excelのバージョン 】 Excel2007 フィルタで抽出したデータを切り取りして別のエクセルファイルに貼り付けたら最初と最後の間のデータが ごっそり抜けてしまいました。上書き保存してしまったのですが 元に戻す方法ありませんか?教えてくださいお願いします。
>>697 に同意。誰かが使うって前提なら、それが一番わかりやすいと思う
>>693 その量ならBF→BEにオートフィル、数式バーの中身をコピペが一番早いと思う
>>703 2003に関していえば無いけど、多分2007も無いと思う
>>703 その操作でフィルタかけてたオリジナルのデータが消えるはずないんだが
フィルタを解除すれば元に戻るってオチ?
あ 切り取りって書いてあるな カットのことならペーストした先のデータと残ったデータを合わせれば復元できるはず
709 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 20:21:40
>>708 すみませんが、どういう手順でやればいいのでしょうか。
オートフィルタって切り取りだと中身はそのまま移動するだけだが、 コピーすると中身(非表示になった部分)は消えるな。この違いは知らなかった コピーしてから元データ削除してると戻らない 切り取りなら元の場所に戻せばいいだけ だな。
711 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 20:40:08
>>710 元に戻りました!
ありがとうございました!
本当にありがとうございました。
712 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 20:47:12
713 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 21:52:39
こんばんは。 お世話になります。 VBAの計算式で以下を実施できるものないでしょうか。 -------------------------------------------------- dim hoge as string hoge1 = "abc" hoge2 = "de1" の状態で、インクリメントするイメージで、 hoge1 の内容を、"abd" hoge2 の内容を、"cd2" のようにしたいです。 -------------------------------------------------- Dim hoge3 as string hoge3 = "100" hoge3 = hoge3 + 1 上記の場合は、"100"から、何型かはわかりませんが、暗黙のキャストで計算できるのですが、文字列が含まれた場合…。 自作で関数を作成するしかないでしょうか? よろしく御願いします。
>>713 vbaじゃないけど・・
A1にabcが入っててabdにしたい場合
=LEFT(A1,2)&CHAR(CODE(RIGHT(A1,1))+1)
A2にde1が入っててcd2
=CHAR(CODE(MID(A2,1,1))-1)&CHAR(CODE(MID(A2,2,1))-1)&CHAR(CODE(MID(A2,3,1))+1)
>713 もう少し落ち着いて考えればすぐ出来るんじゃね? どんな型を想定しているのか知らんので回答は控えるが。
>>713 文字数や9Zzをどうするか決めてくれなきゃ
回答はむりぽ。
>>714 いろんな意味でありえな〜いw
おいピボット厨!!
>>713 をピボットテーブルで実現させてくれよwww
なぁwww
718 :
713 :2008/06/18(水) 23:21:43
713です。 レスありがとうございます。 >714 に関しては、VBAのコード側で処理しないとだめなので採用できません。 しかし、こういった方法すら知らなかったため、非常に参考になりました。 ありがとうございます。 >715 確かに落ち着くべきでした。 714は気を利かせて、詳しく処理してくれましたが、 >hoge2 の内容を、"cd2" ではなく、 hoge2 の内容を、"de2" でした。 716が指摘くださったように、文字数の決定がなければ不可能でしょうか。 文字種類に関しては、 0-9のみのもの、 0-9およびa-zのもの、 アスキーコードの0x30〜0x7Eまでの範囲で自由なものと複数あります。 難易度の高いものは、あきらめて、0-9に制限しようと考えていました。 文字数は可変で、4文字もあれば、64文字もあったり。 ヒントをいただければ、何とか調べたいと思っていました。 文字数可変と、VBAで関数code()の処理結果を得るような処理は、どのような方法が考えられるでしょうか…。
>718 文字数は決定して無くても最終文字でいいならRIGHTで切出せる。 変換範囲はCODE化してBIN値として比較すれば出来る。
>>718 まず1文字だけ演算する関数を作り、あとは文字数の分だけ繰り返すってのが基本的なやり方。
文字列の長さを調べる関数はLEN()
1文字ずつに分割する関数はMID()
文字コードを調べる関数はASC()
文字コードから文字に変換する関数はCHR()
これらの組み合わせになる。
はっきり言って簡単にやる方法はないから、単純な計算と条件判断を何度も繰り返すような、
作るのがけっこう面倒なプログラムになると思う。
具体的なプログラムは、計算の法則をすべて省略せずに書いてもらわないと無理。
例をいくつか書かれただけじゃわからん。
文字セットとか演算子とかどうなってんの?
721 :
716 :2008/06/18(水) 23:35:07
>718 mytext = Right(Range("A1").Value, 1) If mytext <> "" Then Range("A2").Value = Chr(Asc(mytext) + 1) End If あとは応用してね。 多分、君なら説明はいらんでしょ。
パスワードをクラックするプログラムでも作りたいのかな?
723 :
名無しさん@そうだ選挙にいこう :2008/06/18(水) 23:37:52
>718 横レスで質問 桁繰り上がりはありますか? インクリメントにより、最終文字が 0→1、8→9、では9→? 同様に、a→b、y→z、ではz→? 変更があるのは常に最終文字だけですか?右から2番目の文字は変わりませんか? 繰り上がりがあれば、数字の9999999999+1→10000000000と いうように1桁ふえることは考えていますか?
繰り上がり考えるとn進数の計算する関数作った方が楽そうだよな ぐぐればサンプルいろいろあるんじゃね?
725 :
713=718 :2008/06/18(水) 23:52:27
713=718です。 自分の足りない文章に付き合っていただき感謝します。ありがとうございます。 >720 >はっきり言って簡単にやる方法はないから、単純な計算と条件判断を何度も繰り返すような、 >作るのがけっこう面倒なプログラムになると思う。 ありがとうございます。 自作の関数を作っておいて、いくつかの引数を設定した標準関数で出来ることを知ったときの絶望を味わいたくありませんでした。 教えていただいた関数を使って、自作してみようと思います。(ASC()の情報が非常に助かりました。) >721 応用させていただきます。 >722 説明難しいのですが、違います。シートの設定値を繰り返し出力するのですが、値を変更しつつ、というもので。 >723 桁上がりあるんです。難しそうであればあきらめるつもりでした。 forでまわして、桁上がりがある場合(9やz)に次の桁を…、めまいがします。 if分を使うと可能なのでしょうが、構造を考えるのが大変です。 9→0 z→aの場合と、z→0且9→aの場合と。 一桁増えた場合は、あふれた部分を削除です。 入力時の桁数を維持します。 とりあえず、手を動かしています。 また、よろしく御願いします。
726 :
723 :2008/06/19(木) 00:03:10
まさかとは思うけど、最終文字が数字(0〜9)の場合、9の次は0に戻り、 文字(a〜z)の場合、zの次はaに戻るとか、そういうのではないですよね? 0〜9、a〜zだけで構成されるとして1桁あたり36の場合がある36進法 とみなすと考えるんですよね? と書いたところでリロードしてみたら両方あり得るの? 繰り上がりはあるけど桁は増やさないということは、 9999999999+1→0000000000 にするという考えですな。 とにかく数字と同じで右端から考えていけばいい。 あと、0〜9、a〜zを要素36個の配列に用意したらなにかうかびませんか?
>>725 目安として、処理したい文字列が1万個以上あるなら、
0〜9、0〜z、0x30〜0x7eで、それぞれ別々の関数を書いた方がいい。
すべてに対応できる関数も不可能じゃないけど、おそらく計算速度がかなり遅くなる。
728 :
713=718 :2008/06/19(木) 00:41:48
>あと、0〜9、a〜zを要素36個の配列に用意したらなにかうかびませんか? 配列…。??? 一桁インクリメント結果のQUOTIOENTで桁上がり、MODで桁の値がわかりそう? 配列に値を入れるのはコードの中になりますか、やはり。 (const はできないようで…。) >目安として、処理したい文字列が1万個以上あるなら、 一万個越えてます。 関数複数作ります。ご指摘ありがとうございます。 見通し悪いですが、作ってみます。
文字を文字のままややこしい繰り返し処理をするんじゃなくて 文字を数値に変換する関数と数値を文字に変換する関数を作ってやればいいだけだよ
730 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 00:52:50
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 VBA 他のブック 参照 ファイル名 あるフォルダに aa-01-斉藤.xls aa-02-田中.xls … といったように aa-**(連番)-**(名前).xls といったファイルが複数あって それぞれの「入力用シート」というシートの A2〜A12 に データが入っています。 しかし、A2〜A12にすべてデータが入っているわけではなく、例えば aa-01-斉藤.xlsの A2には「バナナ」A3には「リンゴ」といったデータがありA4〜は空欄 aa-02-田中.xls にはA2には「卵」といったデータがあり A3〜は空欄です。 これらのデータを まとめ.xls といったファイル にまとめる。 例としては まとめ.xlsの 「集計シート」の B1に 「バナナ」 B2に 「リンゴ」 B3に 「卵」 ・・・ のように それぞれのブックのA2〜A12までの入力されたデータのみを抽出したいのです。 *データは上につめてありますので A2とA4にデータがあってA3が空欄ということは無いです。 *ファイルは50個程度あります。フォルダの移動はいくらでもできます。 *まとめるデータは aa-01 → aa-02 → といったように連番順にまとめたいです。 以上を実現する方法をご教授願います。
>>730 ファイルは増えたり減ったりする?
それともデータをまとめたいのは今回の1回限り?
>>730 空欄の部分は本当に何も入ってない?
実は見えてないけどスペースが入ってるとかない?
733 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 01:07:17
>>731 基本的には増やす一方のみです。連番で増やしていきます。あるタイミングで一括に見たいときに まとめ.xlsで確認するような使い方をします。
734 :
730 :2008/06/19(木) 01:08:35
>>733 ファイル名の連番は、重複したり飛んだり桁数が変わったりすることはない?
736 :
730 :2008/06/19(木) 01:15:41
>>735 重複や飛ぶことはありません。ファイルは100を超えることはまず無いので01〜99といった2桁の連番にしています。
>>736 これだけわかれば十分。ちょっと待ってて。
そこで啓蒙先生が↓
739 :
729 :2008/06/19(木) 01:35:02
>>713 繰り上がりの処理がいまいち不明なんでこれでいいのか自信が無いが、単純に
0123456789abcdefghijklmnopqrstuvwxyz
の36進数と考えた場合はこんな感じでどうぞ(汚いコードでスマソ)
hoge = "abc"
numberset = "0123456789abcdefghijklmnopqrstuvwxyz"
'文字列を数値に変換
n = 0
i = 1
While i <= Len(hoge)
n = n * Len(numberset)
n = n + InStr(numberset, Mid(hoge, i, 1)) - 1
i = i + 1
Wend
'1を足す
n = n + 1
'数値を文字列に変換
hoge = ""
While n > 0
i = n Mod Len(numberset)
hoge = Mid(numberset, i + 1, 1) + hoge
n = (n - i) / Len(numberset)
Wend
MsgBox (hoge)
740 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 02:03:35
糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ 糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ糞ジジ 死死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね 死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね死ね その老いたすがた気持ち悪すぎ その老いたすがた気持ち悪すぎ その老いたすがた気持ち悪すぎ その老いたすがた気持ち悪すぎ 死ぬとき このレスの事思い出してくれよ
>>730 遅くなった
Sub データをまとめる()
Dim DataFolder As String
Dim FileNameCounter As Integer
Dim SourceRow As Integer
Dim DestinationRow As Integer
Dim FullPath As String
Dim SourceFileName As String
Dim Work
Dim Matome As Workbook
DataFolder = "c:\excel-data\" '処理したいデータを一ヶ所に集めておく
If Right(DataFolder, 1) <> "\" Then DataFolder = DataFolder + "\"
'まとめ.xlsを開く。ない場合は作る。
Work = Dir(DataFolder & "まとめ.xls")
If Work = "" Then
Set Matome = Workbooks.Add
Matome.SaveAs Filename:=DataFolder & "まとめ"
Else
Workbooks.Open DataFolder & "まとめ.xls"
End If
FileNameCounter = 1
DestinationRow = 1
Do SourceFileName = Dir(DataFolder & "aa-" & Format(FileNameCounter, "00") & "*.xls") 'Excelのファイルを検索 If SourceFileName = "" Then ActiveWorkbook.Close SaveChanges:=True Exit Sub End If FullPath = DataFolder & SourceFileName 'データのコピー For i = 2 To 12 Work = ExecuteExcel4Macro("'" & DataFolder & "[" & SourceFileName & "]入力用シート'!R" & i & "C1") If Work = 0 Then Work = "" If Work = "" Then Exit For Cells(DestinationRow, 1) = Work DestinationRow = DestinationRow + 1 Next i FileNameCounter = FileNameCounter + 1 Loop End Sub
使ってない変数があるけど無視して。単なる消し忘れ。
ちょっとロジックに問題あり。 まとめたいデータの中に数値の0があるとうまく動かない。 修正が必要なら言って。
病気のやつがいるな 可哀想に
>>717 こういうの逆効果じゃね。
ピボ厨の口癖を思い出してみなよ。
>>713 ができることで何の意味がある?
「ピボットじゃゲーム作れないだろ」じゃピボ厨批判にならないんだよ残念ながら。
批判というよりネタなんだからスルー
また・・・か
覚えたてで何か作ってみたくて仕方ないんだね。 それでも結果がちゃんと出てればいいんだけど、バグが多いな… 要求された仕様も満たしてない。 俺なら普通にファイルを開いてコピペでデータを写すかな。 Ctrl+↓でデータの切れ目まで飛べばインデックスもループも不要だし1ファイル1回の処理で済む。 それより根本的なところでまた啓蒙君が嫌みを言いそうな仕事をExcelでやってるな。
啓蒙って剃毛に似てるよね
ゲーセンの店長です。 みなさんに教えていただいてソルバーがなんとか使えるようになりました。 考え方の基本がわかりましたので、今後は自分でいろいろ工夫してみます。 ご協力いただきありがとうございました。
こんどは…か
なんか眠くて仕事する気になれないんで作ってみた Sub aaaa() ChDir "C:\excel-data" 'データフォルダ指定 Workbooks.Open "まとめ.xls" 'まとめ先準備 Sheets("集計シート").Select Range("B1").Select N = Dir("aa-*.xls") 'ファイルを順に While N <> "" Workbooks.Open N '開いて Range("A2").Select Range(Selection, Selection.End(xlDown)).Copy 'コピ ActiveWorkbook.Close ActiveSheet.Paste 'ペ Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select N = Dir() '次 Wend ActiveWorkbook.Save ActiveWorkbook.Close 'まとめ保存閉じ End Sub
何度も走らせて遊んでたらまとめがおかしくなることに気付いた Workbooks.Open "まとめ.xls" 'まとめ先準備 Sheets("集計シート").Select Range("B:B").Clear '←これ追加 Range("B1").Select まあ、ほかにもツッコミどころ満載だとは思うが、あとは好きに直してくれ
csvに吐き出す際、行末ではなく行頭に出力する方法はないのでしょうか? もしくは、csvを検索する際、行末から読ませる方法はないでしょうか。 日毎に吐き出されるログをマクロに検索させるのですが、一万年二千年後には 一年で1レコードしか作成されなくても一万二千行を検索する必要があるので 年月に比例して処理が遅くなると思うのです。 行頭に新しいログが吐き出される形式、またはログの下から検索する形式 ならば、一億と二千年たっても見つかるまでの検索速度が同じになるのでは と思ったのですがどうでしょうか。
759 :
757 :2008/06/19(木) 14:56:35
八千年すぎた頃から「毎回降順にソートさせたらどうか」 とも思ったのですが、たった一行を先頭に持ってくるために 冗長すぎますよね?
>>759 ぶっちゃけ、8000年後のPCの性能なら8000行くらい余裕。
なので何も考えなくてよし。
ところで啓蒙君って何人いるんだ? 俺はドキュソ関数厨のみ叩いてるが。
762 :
757 :2008/06/19(木) 15:29:39
ふざけないでください。一億とかそういうのは比喩であり 私が言っているのは追記方式では最新のデータを探す際に 月日に比例して無駄な処理時間が長くなってしまう、 ということなんです。これを改善する方法が見つかれば 僕の地獄に音楽は絶えない。
つFileLen
764 :
757 :2008/06/19(木) 15:52:09
ファイルサイズを知ってどうしろと!?生き恥を晒せと!?
RDBを使えと
そんな嫌ならファイル分けて、百科事典みたいにあーさ行はAファイル、さーは行はBファイル、 まーわ、アルファベットはCファイル・・みたいに 入力にかかる時間は増大するけど><
767 :
757 :2008/06/19(木) 16:35:14
>>765 確かに数万レコードいくなら素直にRDBでしょうけどね。
>>766 そういうやり方は好きじゃないんです。
池沼っぽく言うと好きくないんです。
でもコーディングの手間はかかるものの、
ファイルを分ける事でユーザーサイドの
入力に何ら支障はないのではないですかね?
768 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 16:36:26
>757,762 最新のデータを検索したいのであれば、検索に必要なログだけのファイルと 検索対象でない過去ログにわければよろしい。 処理時間云々言うならばエクセルでなくC言語あたりで専用アプリを作るだけの話。 ログ処理だけならperlでも快速ですよ。
テキストファイルなら、普通にランダムアクセスすればいいんじゃね? open、seekあたりをヘルプで調べればサンプルそのまんまあるんじゃないかいな
基本的な質問かもしれないけど、折れ線グラフで2つの系列(線)が 交差するところだけをマーカーで表示するってのは可能?
エクセル2003でVBAの質問です D1〜AH1に1と入力し、その入力した列を塗りつぶすマクロを作ろうと思っています for~nextで回すつもりですが、どのように記述すればよろしいでしょうか? また、R1C1形式で行全体、列全体を表すにはどのように記述すればよろしいでしょうか?
自己解決しました ループ変数をoffsetと組み合わせればできました
773 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 18:11:48
何枚かに渡って表の項目を印刷するにはどうしたらいいのですか?違うとこで回答もらえませんでした。すみませんが、おわかりになる方いらしたら教えて下さい。
774 :
730 :2008/06/19(木) 18:23:34
>>741-742 ありがとうございます。サンプルを試して、動作・理解できたので、実際のファイル向けにアレンジして仕様通り動作しました。
>>754 さんのも後学のために試してみます。
ちなみに実際のファイルは、ソースファイルからいろんなデータを拾ってきます。ファイル操作の部分がまったくの素人なので参考になりました。
>>757 まずはパソコンのファイルシステムについて勉強してこい。
先頭に不定長のデータを追加する方法はない。無理にやろうとすると、
巨大なログの末尾まで検索するより効率が悪くなる。
とりあえず先頭から見ていくんじゃなくてファイルサイズの半分までシーク、
改行を探して1行だけ読み込み、目的の日時より前か後か判断して次は1/4シーク、
みたいな処理を再帰で書けば、どんなにファイルが巨大でも、
それほど処理時間は変わらなくなる。
あと、アクエリオンネタはほどほどにな。ふざけてるのかと思われて
まともな回答がもらえないぞ。
>773 印刷タイトルのことか? ファイル→ページ設定→シート→印刷タイトル
>>773 めんどくさがらずにもっと具体例をかけば?語彙がなさ杉。。。
あいまいすぎる質問だから答えがもらえないのでは?
便乗で申し訳ないが
>>771 R1C1形式で行全体、列全体を表すにはどのように記述すればよろしいでしょうか?
誰か教えてくれないか?探してみたけど出てこない
780 :
757 :2008/06/19(木) 19:34:29
>>775 閣下・・・心洗われました・・・ 死すまでお側を離れません
待ちに待った回答がきたのだ!
多くの試行錯誤の時間が無駄でなかった事の証のために!
再びの理想のコーディングをする為に、俺は屑成就の為に、
Excelスレよ!私は帰ってきた!!
スレチだったら申し訳ないんだけど、 WEEKDAY関数のヘルプの例で誤表記があるのは既出? (ちなみにEXCEL2003)
>>761 使っている手法は何でもいいんだけど、関数厨やVBA厨は考えの浅いやつが多い。
在庫管理しかり。
シフト作成しかり。
部品管理も。
どの問題でもまともな回答を示せなかった。
>>781 誤記はあちこちにある。気にスンナ
気になったらMSDNのサイトで最新の情報を見るといい。
>>779 書かなければ全体になる。
例えばRを指定せずに「C1」とだけ書くと、1列目全体という意味になる。
逆にCを指定せずに「R1」と書いた場合は1行目全体になる。
>>784 おお、ありがとう
A1形式と一緒なのね〜
>>730 なんか残業が終わらないんで気になってた部分をちょこっとだけ修正。
使い方としては、元データと同じフォルダに「まとめ.xls」をあらかじめ作っておくこと。
「集計シート」も作っておくこと。
データフォルダの部分は自分の環境に合わせて書き換えること。フルパスで書くこと。
あとはこのマクロを実行するだけ。
Sub aaaa()
ChDir "C:\excel-data" 'データフォルダ指定 ←ここを書き換える
Workbooks.Open "まとめ.xls" 'まとめ先準備
Sheets("集計シート").Select
Range("B:B").Clear
Range("B1").Select
N = Dir("aa-*.xls") 'ファイルを順に
While N <> ""
Workbooks.Open N '開いて
Sheets("入力用シート").Select
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Copy 'コピ
ActiveWorkbook.Close
ActiveSheet.Paste 'ペ
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
N = Dir() '次
Wend
ActiveWorkbook.Save 'まとめ保存閉じ
ActiveWorkbook.Close
End Sub
この「最終行の次」って部分、もうちょっと簡単に書けんもんかな。 2回Selectするのがなんか無駄っぽい。 Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select
Selection.End(xlDown).Offset(1, 0).Select
789 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 20:35:00
>>778 そうです。
全然項目が印字されません。
791 :
556 :2008/06/19(木) 20:48:50
質問ではないのですが、
>>556 の報告です。
まず
>>573 を参考に、自分でも色々とピボットの勉強してみました。
一つのデータを様々な角度から集計できるという点で便利な機能だなとは思ったのですが、
自分のやりたかったのは
1年1組、1年2組、・・・、野球部、サッカー部、・・・
のようにそれぞれ別のシートに抽出するという事だったので、1つのシートにずらっと表示されてしまうピボットではどうもうまくいかないようです。
結局、
>>598 のようなアドバイスもあったので関数を使った方法でやってみる事にしました。
相談に乗って下さった皆様、有難う御座いました。
>>791 集計結果のセルをダブルクリックしてみたのか?
794 :
556 :2008/06/19(木) 20:57:23
>>793 すみません。意味がよく分からないのですが・・・?
>>791 ばかだな 元データはひとつでもピボットテーブルを複数つくればいいじゃん
>>794 ピボットテーブルで作った集計表の値を何でもいいから選んでダブルクリックしてみろ。
797 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 21:03:57
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 Excel 含む if ... 質問させてください。 あるセルの内容が、隣のセルに含まれているかを確認したいです。 セルA1に"abcde" セルB1に"z1.abcde" このとき、セルC1に計算式 =IF(A1 = MID(B1,4,LEN(A1)),"OK","NG") を入れると、OKが戻ります。 こういった形で、MID(-,4-) のような式ではなく、『含まれているか・いないか』を確認したいのですが、 可能でしょうか? 方法を教えてください。
>797 つfind
find、search関数
=IF(A1=SUBSTITUTE(A1,B1,""),"NG","OK")
801 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 21:45:05
VBA教えてください。 Sub puroshija() Dim a As String a = "hoge" For i = 1 To 4 MsgBox a & i Next i End Sub 以上のコードを実行すると、メッセージボックスが出て、OKを押すまで処理が停止します。 これを、 OKを押さずにどんどん進めることは出来ないでしょうか?
MsgBoxの行を、消すかコメントアウトすればいい
>>801 VBAではMsgBoxのところで必ずボタンをクリックするまで止まることになっている。
止めたくない場合は別の所にメッセージを出すしかない。
ワークシートとかフォームとかイミディエイトウィンドウとか。
804 :
556 :2008/06/19(木) 22:00:18
>>795 なるほど、試してみましたが、そういう事も出来るんですね。
元の表1つにつきピボットテーブル1つと先入観を持っていました。
ただ、この場合それぞれのピボットテーブルで更新処理を行う必要がありますよね?
だとするとうちの職場だとやっぱり難しいんです。
>>796 やっと意味が分かりました。新しくシートが作られてそこに抽出されるんですね。
これは便利!でもこれ、データが更新された場合はどうするんですか?
ピボットテーブルと違って更新するボタンが見当たらないんですが・・・
>>801 プログラムの勉強してて途中経過を確認したいならイミディエイトウィンドウ使え
>>804 ほんとに試した? 元データが同じならピボットをひとつ更新すると他のピボットも自動的に更新される
Excelとは関係ないのかもしれないんですけど、サーバの共有フォルダに置いたファイルを 読み取り専用にして、マクロで読み書きするときだけ 読み取り属性解除→読み込み→読み取り属性設定→読み取り属性解除→書き込み→読み取り・・・ って処理を入れたら読み書きできるのに、読み取り属性が設定されないんですよ。 おかしいなぁと思って手動でファイルを読み取り専用にしたけどならなかったのですわ。 これってサーバの設定なんですかね?読み取り専用にできるのは知ってたけど 読み取り専用属性を付加できないような設定もあるんですかね?もしあった場合 マクロで無理矢理付与はできないんでしょうか。(Attributesじゃ無理でした)
808 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 22:28:47
776 777 778さん色々ありがとう!
>>804 考え方を変えてみたら?
こんなに簡単に抽出できるんだったら、元データと抽出シートが連動している必要性は低い。
抽出結果が必要になったらダブルクリック一発で作成。
不要になったらシートを削除。
810 :
名無しさん@そうだ選挙にいこう :2008/06/19(木) 22:52:41
unix系のシェルコマンドのuniqのようなことを行いたいのですが、 どうすればよいでしょうか。 aaa aaa bbb bbb bbb ccc ddd ddd から、 aaa bbb ccc ddd を得たいのですが。
オートフィルタ→フィルタオプション で重複データを除くとか コピーして別の場所に貼り付ければ非表示のデータを消すことも出来る
812 :
801 :2008/06/19(木) 23:02:41
>803 ありがとうございます。 msgboxでは出来ませんか。 フォームは使ったことないので、勉強が必要です。 Webの資料を参考にトライします。
813 :
810 :2008/06/19(木) 23:08:06
>811 >オートフィルタ→フィルタオプション この機能初めて知りました。 ありがとうございます! ところで、オートフィルタに関連して訊ねたいのですが、 ショートカットひとつで、オートフィルタの絞込みを解除する方法はないでしょうか。 フィルタをいちいち解除するのが非常に大変です。(自分はフィルタリングに気付かないことも多いです。)
Sub MACRO() AutoFilterMode = False End Sub 1.↑これをVBエディタ(Alt+F11)に貼り付ける。 2.ツール→マクロ→マクロ→オプション で、このマクロにショートカットキーを設定する
815 :
797 :2008/06/19(木) 23:15:41
797です。 レスありがとうございます。 =IF((FIND(A1,B1)>0),"ok","") という式を考えてみたのですが、検索結果が対象なしの場合、 #value!となってしまいます。これを回避するにはどうすればよいのでしょうか。 >800 ???
>>813 一発で解除するには自分でマクロ登録が必要。
Excel2003以前ならAltを押したまま、順にD、F、Fと押せば
フィルタの有無を比較的簡単に切り替えられる。
>>815 FINDは文字列が含まれてなかったときは0じゃなくてエラーになるから、
0より大きい、ではなく結果がエラーかどうか判定しなくちゃいけない。
エラーかどうかを調べるにはISERROR関数を使う。
=IF(ISERROR(FIND(A1,B1)),"ok","")
逆だった =IF(ISERROR(FIND(A1,B1)),"","ok")
819 :
556 :2008/06/19(木) 23:33:26
>>806 ピボットを作る時に「同じ元のデータから〜」に「はい」と答えたら同時に更新されるようになりました。
ただやっぱりピボットは色々と仕組みが難しいですね・・・
表の書式や表示項目も思い通りにはならないようですし。
>>809 1年1組,1年2組,・・・のようにシートを作らないって事ですか。
そうすると元データを更新したら
ピボットテーブルを更新→ダブルクリックして抽出シートを作る→閲覧や印刷→抽出シートを削除
という手順になると思うのですが、少々面倒ではありませんか?
数式でやれば目的のシートをいきなり閲覧、印刷すればいいだけなんですが、
そこまでしてピボットテーブルがいいという理由がよく分かりません・・・
複雑な分析や集計を行うならピボット便利なんでしょうけど、今回のような単純な事であまり難しい事をやると
私が異動になった時に残された人に迷惑かけてしまいそうなんで、
ピボットについて色々教えて下さった方には申し訳ないんですが、やはり関数を使ったやり方でいこうと思います。
ピボ厨にからまれて質問者困ってるなw
821 :
797 :2008/06/19(木) 23:48:21
>817=818 !!ありがとうございます!
クラス別に印刷するだけならオートフィルタで無問題。 元のシート一つでよい。 でも素人は関数使うほかないのかもね。
ピボット使って
>>809 みたいなしち面倒くさい事やるならオートフィルタの方が100万倍ましだな。
ピボ厨は目的と手段を完全に混同してる。
____ / \ / \ / (●) (●) \ | (トェェェェェェェェイ) | \ \ェェェェェ/ /
825 :
名無しさん@そうだ選挙にいこう :2008/06/20(金) 00:58:29
Y軸にまとめて3つのデータをのせるやり方がわかりません
>>813 ”すべて表示”コマンドメニューを
ツールバーに登録しなはれ。
ワンクリックで、絞り込み解除。
>>823 >>809 だが、個人的にはなんでこいつオートフィルタでやらねえの?と思ってる。
流れで抽出シートのことをくどくど説明してしまった。
>>819 何が単純か複雑かは人によって感性が違うかもしれないけど、
私は君のやってることのほうが複雑だと思うよ。
クラブやクラスの数が変更された時にシートをメンテしたくない。
>>828 それが手続き指向の限界だよね。
変化に弱い。
メンテしたくないからといって関数で抽出去るやつはカス シートタブをクリックしてシートごとに印刷するのも、オートフィルタのドロップダウンリストをクリックして印刷するのも手間はほとんど同じ
vbaで正規化をしてしまえばこんなこともおこらないのに
結局VBAなんだよな。
>>823 >>ピボ厨は目的と手段を完全に混同してる。
激同
生徒名簿っていわれても何から何を作成したいのか具体的には何もわからん こんなのからこんなのつくりたいんですけどーってサンプルを示してもらえれば どの方法が適切なのかわかりやすいのに
生徒名簿なんてVBAもピボットも使わないんじゃねーの?? そこにテストの点数などを打ち込んでいくとなったら話は別だけど
んだ。 単に分類や抽出するだけならオートフィルタか関数で十分。 今まで見た感じ必要なのは、クラス別に抽出して1クラス1ページで全クラスの名簿を印刷したいとかそんなん。 これはVBAの仕事だ。
ピボット厨は今回は素直に諦めた方がいいと思うんだが・・
ピボットで抽出シート作るの俺はすきだけどな。 便利だもん。
どうでもいいけどこのスレ、オートフィルタ嫌いだよね
オートフィルタは少し扱いにくい 少し上でも出ていたが、コピーすると非表示列が消滅、切り取ると非表示列ごと移動や、 それに非表示状態の場所にコピーしてくると真ん中が消えたりするし ただ正規化されたテーブルからあるものだけ取り出して印刷→解除、って程度なら使える
関数やVBAならユーザーは特別な知識を必要としないが ピボットやオートフィルタ、だと多少なりともユーザー側に知識(簡単な事なんだけどねえ)が必要だから職場のレベルによっては難しいんだろうな。
相談所で感想文を発表されてもねぇ〜
ピボットからシート抽出って俺も今まで知らなかった。便利な事が出来るもんだね。
でもこれって抽出したシートの書式(列幅とか罫線とか文字の大きさとか)はあらかじめ設定出来ないの?
お仕着せの書式にされるとなると使える場面は限られてくるなあ。
結果を見栄えよく印刷したいとなると
>>819 の
> ピボットテーブルを更新→ダブルクリックして抽出シートを作る→閲覧や印刷→抽出シートを削除
にさらにひと手間加わるわけだから。
できないぜ ひと手間かけてくれ
>>840 >ただ正規化されたテーブルからあるものだけ取り出して印刷→解除、って程度なら使える
それで十分じゃないか。
>>840 オートフィルタからコピペしてから印刷するんじゃなくて、オートフィルターがかかっているところを印刷するんだよ。
【1 OSの種類 .】 Windows98SE 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 エクセル "" ・・要は検索できませんでした ="" と入力されるセルを含む計算をすると、エラー値が返って来てしまいます。 0文字の文字列と認識されてしまっていると思うのです 全く何も入力していない状態なら0になるのですが・・ これをエラーにしない方法は無いものでしょうか? 元のワークシートは2シート構成で、シート1で計算後 数字が0を越える場合は数値を表示、0又はマイナスの場合は""というようにifで分岐させています そしてその合計欄に合計を表示できると思っていたのですが・・ VBAで結果が""のセルを消す(delete)のは出来れば最後の手段にしたいと思っています。 よろしくお願いします
>>848 ならないんだが
A1に=""とA2に=sum(a1)
>>850 なんと!そんな簡単なことがorz
A1=""、A2に=A1+1など四則演算入れてもどうにもならないので途方にくれていました
(元のデータは3行おきの変則データなので気づきませんでした)
これが仕事が捗りそうです。ありがとうございました
sumと+の内部処理は結構別物なのか そういう微妙な違いが書いてるサイトとか、ある?
ここにある
>>空白セル、論理値、文字列、エラー値は無視されます。詳細は、3 番目の使用例を参照してください。 おまえら ヘルプ嫁
>>853-854 お前らありがとうございます
しかしnullデータと=""の違いがわかんねぇ
=""が0文字の文字列なら未入力セルもそうなるんじゃないのか?
未入力ということは文字列でも数字でもないということだよ
nullデータ・・nullデータ ""・・0文字の文字列 そんなに難しいか?
858 :
851 :2008/06/20(金) 23:21:07
すいません・・848の続きです 3行に1行足したいのですが、その間に=""というデータが合って、これが四則演算では無理 →SUMを使えば解決、となったのですが、sumだと文字数制限に引っかかってしまいました。 (多い時は200個ぐらいになりますがエクセルとノートパッドを使って強引に式を作り上げてしまいました)、 そこでSUMPRODUCT関数を使おうと思い以下の式を作りました =SUMPRODUCT((MOD(ROW(A1:A9),3)=0)*(A1:A9)) ですが、範囲内に=""が入ってるとまたVALUEエラーになります。 3行ごとというのを捨て、 =SUMPRODUCT((A1:A9<>"")*(A1:A9)) や =SUMPRODUCT((A1:A9<>"""")*(A1:A9)) と、色々作ってみましたが、やはりエラーが出てしまいます・・ どのようにすれば=""が入った範囲内で3行おきの合計が出せるのでしょうか? VBAに頼りたいのですが、表自体非常に変則的で、挿入や削除、セルの結合が頻繁にされるので、 できるだけ避けたいのです 1から作るのも出来ない状態です(作りたいのは山々なんですが) 何かいい方法はありますでしょうか
作業列をつくって3行おきに1をいれる 1のある行を集計するSUMIFをつくればよし
>>859 わっwwww簡単に出来たwwwありがとう神様wwwwww
861 :
名無しさん@そうだ選挙にいこう :2008/06/20(金) 23:39:45
>858 848には、 数字が0を越える場合は数値を表示、0又はマイナスの場合は""というようにifで分岐 と書いていますね。0かマイナスの場合は 0 とすることはできないんですか? 計算対象範囲なのに値を文字列にするというのが腑に落ちません。0をセルに表示させたく なければ条件付書式の利用もできますよ。
書式のユーザー定義でも0を非表示に出来る
>>858 本当はVBAを使いたいのだが、シートが変則的だからできないだって?
ウソばっかり。
シートが複雑でVBAは使えません。 抽出したいのでピボットは使えません。 こんなやつが多いなあ。 わかりませんと書けばかわいいんだがな。
数字が0の時だけ非表示にするユーザー定義書式 G/標準;G/標準;"" あとは、IFで条件に合わない物を""じゃなくて0にするようにすれば、 見えなくなるだけで実際には数値としての0が入っているので、いろいろな式でエラーが出なくなる。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 少々 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 エクセル カレンダー 祝日 リスト 平日 A列に A1 5月1日 A2 5月2日 A3 5月7日 〜 7月31日 といったように 土日祝日を抜いた 週日 のリストが7月の終わりまであります。サンプルとして2008年の5月から7月のデータを具体例とします。 B1に 5 (5月を意味します) C1に 1 D1に 2 週の初め(C列)と終わり(D列) C2に 7 D2に 8 ・・・ B6に 6 C6に 2 D6に 6 ・・・ C10に 30 D10は空 B11に 7 C11に 1 D11に4 ・・・ C14に 22 D14に 25 (月曜日が休日の場合は火曜がC列) C15に28 D15に31 このような作業をしたいのです。よろしくお願いします。
>>861 出来ないんです・・
それは日ごとの成績で、その日に成績があれば別の場所でcount関数で1と出力されるのです
そしてその合計が別の表に飛んだり、半月分まとめられたりしてるので気軽に触れないんです
最悪な表だと言う事はわかってるんです。その制約の中で何とかできないかもがいてるんです
>>863 いや、本当
そもそも三行一組って時点で大概ですが、結合されてたり、その表の中に文字で注釈が書かれてあったり、
必ず詰めて入力するわけではなく、ある場所は3行一組分空けて入力する、等・・
使う人が見やすくなるためだけの制約があるんです
これでも信じてもらえないでしょうか。アップロードするわけには行かないのがとても残念です
868 :
867 :2008/06/21(土) 00:08:02
すいません その日に成績があれば→その日に0であれ数字が入ってしまうと でした。
869 :
名無しさん@そうだ選挙にいこう :2008/06/21(土) 00:18:25
【1 OSの種類 .】 Windows vista 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 エクセル office2003 軸 そろえる EXCELで作成した3つのグラフを縦に3つ並べ、プロットエリアの輪郭を そろえたいのですが、手動で少しずつ調整するのはとても面倒で ほかに良い方法はないでしょうか?? 質問が意味不明かもしれませんが よろしくお願いします。
「シート1」というシートに30個の楕円のオートシェイプがあって、 Selection.ShapeRange.Line.Visible = msoTrue Selection.ShapeRange.Line.Visible = msoFalse というマクロで表示・非表示を切り替えてます。 <実現したいこと> あるタイミングで表示されている楕円の数を数える →A1に表示されている楕円の数を記入 ということがしたいのです。 ちなみに エクセルでは 楕円 1 〜 楕円 30 という名前 VBAで操作する時は Oval 1 〜 Oval 30 という名前になっています。
>>867 >それは日ごとの成績で、その日に成績があれば別の場所でcount関数で1と出力されるのです
""でなく0を入れておいて、COUNTIFを使って数えればいいんじゃないかな
=COUNTIF(A1:Z1,">0")
873 :
866 :2008/06/21(土) 00:43:30
>>872 そのとおりですD2 は9です。
カレンダーの案を参考に自分でも考えてみます。
夜分にすいません。 【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 エクセル 関数 挿入 VBA 現在、Aセルに数値データを入力し(行数はデータ内容により日々変化します。)、Bセルに対応する関数(VLOOKUP)をあらかじめいれて、対応するデータが入るようにしているんですが これを VBAを使用して、Aセルにデータが入っていればその横のBセルにvlook関数を挿入するという事をしたいのですが具体的なコードを教えていただけると助かります。 よろしくお願いします。 ※VBA初心者ですがテンプレに従って可にしております。VBA自体の記載方法は理解できてますので申し訳ないですがよろしくお願いいたします。
>>874 Aセルって具体的には?
範囲とかない? A1からA10までとか?
>>866 1つだけ確認。
サンプルの範囲には含まれてないけど、8月1日は金曜だよね。
月の始まりが週の終わりと重なった場合はC列とD列、どっちに入るの?
これを考慮しとかないと正しいプログラムが作れない。
Sub aaa() If Range("a1").Value <> "" Then Range("b1").Formula = "=a1+a2" End If End Sub ミタラワカルトオモウケド、A1B1セル、数式は適宜変えてね
Sub aaa()
For i = 1 To 10
If Cells(i, 1).Value <> "" Then Cells(i, 2).Value = "VLOOKUP"
Next i
End Sub
>>874 ど素人ですが作ってみました。
879 :
866 :2008/06/21(土) 01:27:09
>>876 重なった場合はどちらに入れても大丈夫です。
作りやすい方でお願いします。
>>870 Sub 楕円の数を数える()
Dim C As Integer
Dim S As Object
C = 0
For Each S In ActiveSheet.Shapes
If Left(S.Name, 4) = "Oval" And S.Line.Visible = True Then C = C + 1
Next S
Range("A1").Value = C
End Sub
>>867 機能的、能力的には VBA > ワークシート関数
ワークシート関数でできることはVBAでも必ずできるし
文字数(式の長さ)の制限がずっと長いから
複雑な物ほどVBAに向いている。
また痛い奴が現れたな。同じVBA厨として恥ずかしいっす。
883 :
870 :2008/06/21(土) 01:38:28
>>880 動作確認できました。ありがとうございます。
>>870 Sub 楕円の数を数える()
Dim C As Integer '目的の楕円の数
Dim S As Shape '検査の対象
Dim N As String 'オートシェイプの名前
Dim V As Integer '名前の数値部分
For Each S In Sheets("シート1").Shapes
N = S.Name
V = Val(Right(N, Len(N) - 5))
If Left(N, 5) = "Oval " And V >= 1 And V <= 30 And S.Line.Visible = True Then C = C + 1
Next S
ActiveSheet.Range("A1").Value = C
End Sub
>>866 これでどう?
Sub カレンダーもどき()
a = 2 '次に日付けを取り出す行
b = 2 '次に日付けを入れる行
m1 = Month(Cells(1, 1)) '前の月
w1 = DatePart("ww", Cells(1, 1)) '前の週
d1 = Day(Cells(1, 1)) '前の日
Cells(1, 2) = m1 '1行目の月と日は無条件にセルに入れる
Cells(1, 3) = d1
While Cells(a, 1) <> ""
m = Month(Cells(a, 1)) '次の月
w = DatePart("ww", Cells(a, 1)) '次の週
d = Day(Cells(a, 1)) '次の日
If m <> m1 Then Cells(b, 2) = m '月が変わったらセルに新しい月を入れる
If w <> w1 Or m <> m1 Then '月か週が変わったらセルに日を入れて行を進める
If Cells(b - 1, 3) <> d1 Then Cells(b - 1, 4) = d1 '週の始まりと終わりが同じ日なら入れない
Cells(b, 3) = d
b = b + 1
End If
m1 = m 'データを順送り
w1 = w
d1 = d
a = a + 1
Wend
If Cells(b - 1, 3) <> d1 Then Cells(b - 1, 4) = d1 '最終データは無条件で処理
End Sub
>>878 セルに数式を入れたい時はValueじゃなくて
>>877 みたいにFormulaを使った方が間違いが起こりにくいよ。
Valueでも動くことは動くんだけどね。
>>881 その通りだよ。
VBAは使いたくないんだって言えばいいだけなのに、不規則だから使えませんなどとウソをつく。
VBAを使えと言うつもりはないんだけどね。個人的にもこんなケースでは使わない。だがウソは気分悪い。
ワークシート関数だけでもカレンダーできそうなんだけど、 なんか頭がこんがらがってきた
作業列に月と週を入れて週ごとのグループを作り、その中で最小と最大を求めればいいんだよね。 =MONTH(A1)&TEXT(WEEKNUM(A1),"00")
ピボット使える人はすごいね。俺はどうしても三歩以上歩いちゃうし。
>>881 >>887 出来るだけ避けたいというだけで、無理って訳ではないですよ。
>>867 のあらゆる条件をマクロ内に書き込む、
若しくはその時その時で変わるようなものならメッセージボックスでも出して入力すればいい。
でもその表のフォーマット自体すら変更されるので、そういった分岐自体も意味が無い、
若しくは間違った処理に繋がってしまい、更にメンテのことを考えるともはやVBAに頼らないほうが早いという可能性も出てくるんです
もちろん大前提としてそういう表が存在すること自体悪いのですが、その前提を変えられないという・・orz
初心者質問ですいませんがお願いします =IF(C2=1;B2;???) という式で???の所でセルを空白にしたい場合、 どのようにすればいいのでしょうか?
つ””
=IF(C2=1;B2;"セルを空白")
=IF(C1=1,b2,"") セミコロン「;」じゃなくてコンマだよ
VBAの質問なのですが、配列A(A(0)〜A(4))があるとして、それを改行コードで 区切りながら格納する場合sexy = Join(A,vbCrLf)のように記載すると思うのですが、 これを配列A(4)を含ませないためにはどうすれば良いのでしょうか? つまり、配列要素A(4)が不要なので切り捨てたいのです。
899 :
897 :2008/06/21(土) 13:35:03
>>898 あなたが神か?
どうみても知識人ウラヤマシスです
本当にありがとうございました
900 :
897 :2008/06/21(土) 14:20:39
だからなんで俺がレスすると流れ止まるん?
いやそもそも流れてないし
以前vlookupとmatch関数どちらがいいか・・という議論がなされてましたが、
すいません書き込んでしまいました match関数だとvlookupみたいに並べ替える必要も無いんですよね?
どっちも型による ヘルプ読め
>>904 ありがとうございます!
いままでずっと並べ替えてました
906 :
名無しさん@そうだ選挙にいこう :2008/06/21(土) 20:20:44
【1 OSの種類 .】 Windowsxp 【2 Excelのバージョン 】 Excel2000〜 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 .txt Print スペース カンマ CADで使うための座標をテキスト型で出力しようとしてます。 で、とりあえず一応は完成はしました。 変数xs(X軸始点),ys(Y軸始点),xe(X軸終点),ye(Y軸終点)MESOD(線を引く、とか座標を元に実行する命令) PROP(どんな線を書くのか?プロパティみたいなの) という6つを書き出します。(FNO1tってのがテキストファイル) For II = 0 To 10 'プロパティ領域ループ回数は定数でヨシ Print #FNO1, PROP1(II) Next II '座標を出力 For II = 1 To I 'Iには、データの行数が格納されている Print #FNO1, MESOD, XS(II), YS(II) Next II CSVやら空白区切りのソフトに対応させるため、「Printを使って」書いてます。 それで質問ですが、 Printの場合、「スペースの個数」とか指定できるって書いてあるけど、 具体的にどうやってコーディングすればいいのかな?
907 :
906 :2008/06/21(土) 20:25:31
上記のプログラムを実行すると、テキストファイルには、 ’変数PROPからの書き出し SOU,12 PEN,15 ’MESODと、座標値の書き出し MARK -14.34 21.33 MARK -13.34 24.33 ・ ・ ・ こんな感じになる。 で、CADソフトに読ませる時にはスペースの個数やら問題に なってしまう。 Print #FNO1, MESOD, XS(II), YS(II) @↑この部分をどう書けばいいんだろう? Aまた、任意の位置にカンマ入れたい場合は、 & "," & を入れればOKだよね?
>>906 PRINTは、出力したい値をコンマで区切るとスペースが空いてしまう。
Print #FNO1, MESOD, XS(II), YS(II)
↑ ↑
ここをまずセミコロンにする。そうすると隙間が空かずにぴったりくっつく。
Print #FNO1, MESOD; XS(II); YS(II)
スペースを決まった数だけ入れたいときは " " をはさむ。こんな感じ。
Print #FNO1, MESOD; " "; XS(II); " "; YS(II)
もう一つ注意するのは、数値を出力すると前後にスペースが自動的に入ること。
これを考慮しておかないと、スペースの数が思い通りにならない。
固定長のCSVを作りたいならFormatで桁数を揃えた方が早いよ。
ちなみに、コンマで区切った場合のスペースの数は、14桁ごとのソフトタブになる。 あと、メソッドのつづりはたぶんMETHOD 。
910 :
906 :2008/06/21(土) 21:33:57
>>908-909 すげー。ありがとう。助かった。
入出力はやったことないので超初心者。そんなアツイ関数があるとは。
MESODは俺的に書きやすい。つうか英語わからんので、いつも変数はローマ字系だぜ!
ところで、セミコロンなぞ使った事無かったが、
今回のケースだと、カンマを挿入したい場合、
Print #FNO1, MESOD; ","; XS(II); ","; YS(II)
でOKっすか?
MESODかわいいな
>>910 数値の前後にスペースが入るのは考慮してる?
それで出力するとこうなるよ。これでいいの?
MARK,-13.34_,_24.33_
(※ _ はスペースの意味)
スペースを完全になくしたかったら文字列にキャストすればいい。具体的には区切りのセミコロンを&にする。 Print #FNO1, MESOD & "," & XS(II) & "," & YS(II) これの出力はこうなる。 MARK,-13.34,24.33
914 :
913 :2008/06/21(土) 21:58:52
あと&で区切る時、プログラムの中で&の前後にスペースを入れるのを忘れないように Print #FNO1, MESOD & "," & XS(II) & "," & YS(II) ↑↑ ↑↑ ↑↑ ↑↑
915 :
906 :2008/06/21(土) 22:06:18
丁寧にありがとう。
>>914 のやり方に慣れているから、これで行きます。
固定長CSVでは無いので、とりあえずフォーマット関数は後々勉強しますわ。
A3のセルの内容が「買」かどうか判断して計算式を行いたいのですが、 下の文を考えたのですがIF文では出来ないのでしょうか?どなたか教えて頂ければ幸いです。 =IF(A3="買",=(B3-C3),=(B3+C3))
申し訳ありません、事故解決しましたでsづ。。 =IF(A3="買",B3-C3,B3+C3)
文章が・・・orz >申し訳ありません、事故解決しましたです。。
すみません、エクセル初心者なのですが、スレ違いだったら申し訳ありません。 どなたか意見を聞かせてください。 来月から事務職の仕事に就くことになりました。 未経験可で入れてもらえたのですが、そこでは集計系の関数を使用するらしいので仕事が始まる前に勉強していきたいと思うのですが SUM AVERAGE MAX MIN の他では、どんなものが使用されると思いますか? 一般的に、これ知っといた方がいいかも、知ってたら便利かもっていうのがあれば教えてください。 よろしくお願いします。
>>919 来月からなんだったら、こんなところで質問するよりも、
EXCELの本を一冊買って読破すべし。
基本はSUMだな
オートフィルは覚えたか?
後は四則演算、足し算だと=A1+A2
ってな感じで入力すれば合計が出せる
AVERAGEはあんまり使わないかな。会社によるだろうけど俺は使ったことが無い
IFは絶対に覚えておいた方がいい、後々役に立つ
後は値と文字列の違い、シリアル値の意味も知っておくといいと思う
ttp://www.relief.jp/itnote/ ここはオススメ。本業インストラクターの人のTIPSだ
それと検索サイト
ttp://www.google.com/ 後はこのスレ知っていればどうにかなると思うよ
D列で、A列が「買」かどうかをIF文で判断を行い、結果を表示しています。
そのD列の値を使って、C列-D列で引き算の結果をE列に表示しています。
A列が「買」の場合は正常にE列に結果が表示されるのですが、「買」以外の値が入っている場合は
41213等正常ではない値が入ってしまいます。IF文がらみの問題かなと思ったのですが、
色々試してみましたが解決出来ませんでした。。どなたか解決方法を教えていただければ幸いです。
参考までにファイルをうpさせていただきます。
http://www.dotup.org/uploda/www.dotup.org7954.zip.html
>>920 >>921 ありがとうございます。
本は会社に持って行くこともできるので、さっそく明日買ってきます。
オートフィルとIFですね。
リンク先もさっそく見てみます!
ありがとうございます。
924 :
922 :2008/06/22(日) 01:31:17
すいません、また自己解決になりそうです。。 書式設定でマイナスの符号を消していただけで内部ではマイナスとなっており、 その数値を-10-10のように計算し-20と表示され、さらに100倍していたためあのような数値となっていたようです。。 スレ汚し申し訳ありませんでした。考えて下さった方おりましたらありがとうございますm(_ _)m
>>924 なんだか大変そうだな 先が思いやられる
そうやって成長していくもんじゃねーのかい
デイトレードでもやってるんだろうな 会社の書類や宿題ではなさそうだなw
WindowsXP Excel2003 VBA使えません VBA回答可 合気道教室の名簿管理をしたいです。 名前の横に、 入門日 取得段級 取得日 道場移籍日 移籍元 移籍先 を入力しています。 会員さんが前回いつ昇級して今何級かを調べたいのですが、何かいい方法を教えて下さい。
>>929 ごめんなさい、重要なことですが書き忘れていました。。
ブックを最大化していても、タスクバーでは下の画像の1,2,3のように表示され、
それを選択で該当のブックに切り替えられるのですが、その場合も、
大元のExcelのウィンドウ内に1,2,3のファイルが表示されてしまいます。
例えば、1を左に移動すればその1に隠れていた下には2のウィンドウがあって、そうすれば大丈夫でね?と
思うかもしれませんが、1を移動すると大元が移動となってしまい、2も追随して移動してしまうので
上の2003のように別々に配置等することが出来ないようです。
http://www.dotup.org/uploda/www.dotup.org8227.png これは2007の仕様で別々のウィンドウにすることは無理なのでしょうか?
933 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 12:54:40
すみませんVBA初心者です、教えてください。 1.セルB4から下に数字の入っている分だけ選択する。 2.1で選択した範囲の数字に対して計算できるようにする。(変数?) 3.選択した範囲の数字で平均とか最大とか最小とか計算する。 以上のことをやりたいのですが、コードはどのように書けばよいでしょうか?
>>930 名前の横に書かれた取得段級と取得日を見ればいいだけでは?
合気道の世界で使われる専門用語もわからないのですが、「取得日」と「昇級の日」は別なのでしょうか?
一人につき「1段昇級日」「2段昇級日」とか複数行あるんでしょう。 メニューからオートフィルタ選んでみ。
>933 つマクロの記録
>>933 フィルタとSUBTOTAL()の組み合わせでおk
>>933 Sub Macro3()
Dim gouke As Long
Dim i As Long
Dim gyo As Long
gyo = Range("B65536").End(xlUp).Row
Range("B5").Select
For i = 1 To gyo - 4
gouke = gouke + Selection.Value
Selection.Offset(1, 0).Select
Next
MsgBox "合計は" & gouke & "です。"
End Sub
わざとfornextにした
これは使えるようになっておいたほうがいいよ、かなり応用が利く
>>931 うちのだとふつ〜に別々のブックが開くけども。
>>931 先にブックを開くんじゃなく、エクセルを立ち上げてみては?
それで無理なら、無理かな
941 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 13:25:53
>>936 マクロの記録というのは自動記録してそのコードを分析するんですよね。
これはいろいろ応用できそうなテクニックだ、ありがとうございます。
>>937 フィルタきのうというのもあるんですか。
便利そうな機能なので調べてみます、ありがとうございます。
>>938 コード教えていただいてありがとうございます。
範囲の選択の仕方勉強になります。
DOとLOOPで選択しようとしてたけど、うまく行ってなかった・・・
fornextで選択する方法覚えておきます。
>>938 無理矢理にFor Nextで合計を出すとしたらこうだろ。SelectとかOffsetとか無駄が多すぎ。
For i = 4 To Range("B" & Rows().Count).End(xlUp).Row
gouke = gouke + Cells(i, 2)
Next
そもそもこれではエラーが出るし平均や最小値や最大値を求めるのが面倒だし、
質問の内容からずれてると思うが。B4からって言ってんのにB5から始めてるし。
>>942 本当だ。全然違うな
かなりスマンかった
でも範囲自体はB5からだと思うけど
>>933 「VBA初心者です」ってのは単なる自己紹介?それとも、以下の処理をすべてVBAでやりたいってこと?
945 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 14:00:49
>>944 自己紹介もありますが、VBAで全部計算したいです。
B4にいれる数字の数は毎回異なるのでVBAで全部できるといいです。
>>942 簡単なコードでもできるんですね、ありがとうございます。
確かに、合計は計算できたのですが、平均とか最大、最小、計算難しくて出来ないです。
B4から数字の入っている範囲を選択して、
その範囲に対して平均とか最大とかいろいろ計算できるように簡単にする方法はないでしょうか?
>>945 例えばB4に3と入っていたら、B5〜B7の連続した3つのセルを選択して計算したいってこと?
なんでVBAでやるんだろ ふつうそういうのは関数ですませるだろ
948 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 14:05:36
Vista,Excel2007,VBA可です。 IFもしくはIFERRORで表示させた「""」(空白)セルをグラフにプロットしたとき、 「非表示および空白のセル」機能を使って補完させようとしても0扱いになるのは仕様ですか? NA()を表示させるようにするとグラフは期待通り補完されるのですが表の方が若干見苦しくなります。 またNA()セルを含む範囲をSUM()などで計算させようとするとエラーになるので困ってます。
949 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 14:06:34
>>946 はい、B4からB10に数字が入っていたとしたら、
B4からB10の平均出したりしたいです。
>>947 関数ではできたのですが、
入れる数字の長さが毎回違うので、
そのたびに関数の範囲を選択しなおさないといけないので、
VBAでできるとその手間が省けていいかなと思って・・・
>>949 いやいやいや、質問がブレてるぞ。
B4に入ってる数字も合計や平均に含めるのか、B4には「セルの数」が入ってるのか、どっち?
951 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 14:11:39
>>950 すみませんB4の数字も含めて計算です。
>>949 =SUM(B4:B10000)
=MAX(B4:B10000)
=AVERAGE(B4:B10000)
みたいなのじゃだめ?数字で埋まってなくても空欄は自動的に無視してくれるよ?
>>948 元の表とグラフ作成元の表を分ければいんじゃないの
>>952 =sum(B:B)
でいいんじゃね
そんなに重くなるような表でもなさそうだし
>>954 範囲にB1〜B3が含まれるのはまずいんじゃ…
VBAでやりたいというより、VBAでこういう場合はどうしたらいいですか? って質問じゃないのか? 表がどうとかいうよりVBA自体を覚えたいと言ってるように聞こえてきた そして俺は分からない
958 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 14:25:40
>>952 なるほど、
範囲をおもいっきり伸ばしておけば、計算できるんですね。
平均 =SUMIF(B4:B20,"<>0")/COUNTIF(B4:B20,"<>0")
最大 =MAX(B4:B20)
最小 =MIN(B4:B20)
標準偏差 =STDEV(B4:B20)
勝率 =COUNTIF(B4:B20,">0")/COUNTIF(B4:B20,"<>0")
PF =SUMIF(B4:B20,">0")/SUMIF(B4:B20,"<0")*-1
勝ち平均 =SUMIF(B4:B20,">0")/COUNTIF(B4:B20,">0")
負け平均 =SUMIF(B4:B20,"<0")/COUNTIF(B4:B20,"<0")
取引回数 =COUNTIF(B4:B20,"<>0")
この関数の範囲をB4:B2000にしても計算できました。
ありがとうございます。
平均 =SUMIF(B4:B20,"<>0")/COUNTIF(B4:B20,"<>0")
最大 =MAX(B4:B20)
最小 =MIN(B4:B20)
標準偏差 =STDEV(B4:B20)
勝率 =COUNTIF(B4:B20,">0")/COUNTIF(B4:B20,"<>0")
PF =SUMIF(B4:B20,">0")/SUMIF(B4:B20,"<0")*-1
勝ち平均 =SUMIF(B4:B20,">0")/COUNTIF(B4:B20,">0")
負け平均 =SUMIF(B4:B20,"<0")/COUNTIF(B4:B20,"<0")
取引回数 =COUNTIF(B4:B20,"<>0")
VBAで範囲の削除だけ作っておいて、
あとは数字を貼り付けるだけにしておけばOKかな。
Excelの機能じたいもまだ良く理解してなかったかも・・・
なんだか大変そうだな 先が思いやられる
>>934 >>935 合気道では級無しから始まって、5級、4級となり、1級の次が初段となります。
そこからは二段、三段と上がっていきます。
>>934 取得日と昇級、昇段の日は同じです。級や段を取得した日という意味です。
オートフィルターだと上手く選ぶことができませんでした。
VBAを使うとできますか?
よろしくお願いします。
962 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 18:01:22
>>961 名簿の構造が
>>930 の説明だけじゃはっきり分からないんで誰も答えられないんだと思う。
ある人が級や段を取得するたびに行を追加してるって事?
例えば同じ人が過去3回級や段を取得していたら、同じ人の行が3行あるの?
>>961 B1に取得段位、C1に取得級を数字だけで入れるとすると
A1に=B1+C1& IF(B1<>"","段","級")
か?
とにかくそのままでは使いにくいと思う
>>961 名前でフィルタかけるだけじゃん なんでこれでうまくいかないのかさっぱりわからん
965 :
名無しさん@そうだ選挙にいこう :2008/06/22(日) 22:26:33
「VBA初心者です」 「VBAは中級です」 ってレベルのテンプレ作ると良さそうだな。 範囲が広いので自分では中級のつもりでも実はへっぽことかも居そう。 配列、ステートメント系、条件式のネスト、サブ関数辺りが使いこなせて中級かな? 当然基本的なバグは除去できて。 つうか、みんなエラーが起きそうな箇所ではオンエラー使ってる? それとも一つづつつぶすように心がける?
そんな長いコードを書くこと自体ないんだけど
ワークシートの読み書きはエラーが起きないように作る。 On Errorを使うのはファイルの読み書きとかそのへん。
>>960 例として数人分の名簿を仮名でいいから作って。
それを見ないことには話が進まない。
969 :
930 :2008/06/23(月) 06:52:04
質問内容を読み返してみましたら、やりたいことをうまく表現できていませんでした。
あの内容では確かに
>>964 さんの指摘どおりですね。ごめんなさい。
本当にやりたいことをもう一度説明いたします。
前回のテストで段、級を取得した会員さんは今何段、何級なのかを一覧で確認したいのです。
データはこんなのです。
吉本 入門日 2007/3/2 5級 2008/3/21
原田 入門日 2006/10/20 5級 2007/3/16 東京第一 東京第二 2007/4/1 4級 2008/9/22
よろしくお願いします。
>>969 データの意味がよくわからんのだが。
まさかと思うけど、昇級するごとに横に延びてくの?こんな感じで。
原田 2006/10/20 5級 2007/3/16 4級 2008/9/22 3級 2009/3/22 2級 2009/9/22
仮にそうするとしても、5級はD列、4級はE列・・とそろえたほうがいいね。空白であっても 普通は更新するけど
>>969 えーと、「前回のテストに不合格、または不参加の人は除外して、合格した人の一覧が欲しい」ってこと?
>>969 Excelでデータ整理するなら、こういう風に並べてあれば、とても簡単に色んな事ができるようになるんだけども。
分類したり、条件に合う物だけを取り出したり。
A B C D E
1 名前 事由 日付 備考1 備考2
2 原田 入門. 2006/10/20
3 吉本 入門. 2007/3/2
4 原田 5級 2007/3/16
5 原田 移籍. 2007/4/1 東京第一 東京第二
6 吉本 5級 2008/3/21
7 原田 4級 2008/9/22
>>971 そういう一覧表も、データが正規化されていればすぐに作れる。
名前が主キーなのに毎回入力させるのか? ふざけた提案だなw
975 :
名無しさん@そうだ選挙にいこう :2008/06/23(月) 08:36:45
>>969 もしかして道場移籍日、移籍元、移籍先ってデータも移籍があるたびにその行に追加されてくのかな?
原田 入門日 2006/10/20 5級 2007/3/16 東京第一 東京第二 2007/4/1 4級 2008/9/22 東京第二 東京第三 2008/10/1
みたいな感じで。
回答者は道場経営の専門知識があるわけじゃないんで、その辺の情報を当たり前と考えずに漏らさず書いて欲しいな。
あと、そのデータは自分で考えて自分で打ち込んでるのか、それともどこかから送られてくるデータなのか。
つまり自分でデータの構造を変えてもいいのか変えられないのかって事。変えられないとちょっと面倒だね。
976 :
名無しさん@そうだ選挙にいこう :2008/06/23(月) 08:42:34
>>974 俺アンチピボ厨だけど、さすがにその指摘はお前が馬鹿すぎね?ていうか意味不明だし。
マスターとトランザクションの違い分かるか?
>>976 覚えた単語って使ってみたいよね♪
わかります。
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい(少々) 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 EXCEL 置換 ワイルドカード セル内の先頭にある半角スペースを消したいのですが 検索する文字列: * 置換後の文字列:* では対象が全て*になってしまいます。 「置換後の文字列」には何を指定するのでしょうか?
979 :
978 :2008/06/23(月) 12:11:17
sageてた・・・(汗 よろしくお願いします。
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 EXCEL ナンバーズ 予想 的中 マナ1%使用 ナンバーズの番号を的中させるマクロを作っているのですが 全然当たりません。的中精度を上げるにはどうすれば良いのでしょうか。
981 :
980 :2008/06/23(月) 12:52:45
自己解決しました。アカシックレコードからデータを取得する処理を なぜかコメントアウトしてました。修正したら100%的中になりました。
982 :
名無しさん@そうだ選挙にいこう :2008/06/23(月) 13:45:32
money.csv (MoneyFile) 田中,貸した,12000,未納 というデータを Open MoneyFile For Binary Access Read Write As intFF (中略) buf2 = Split(buf, ",") で読み込み、 ReDim Preserve buf2(3) として「未納」の配列要素を切り捨てた後で書きだしているのですが 思った通りのデータになっているものの「未納」の部分が消えません。 更新前のデータがそのまま残っている状態です。 つまり 田中,貸した,12000,未納 ↓ 田中,貸した,12000 としたいのですが、どうすれば良いのでしょうか。 バイナリアクセスでは、行のバッファを置き換える事はできないのでしょうか。
>>978 セル内に途中にも” "が有りますか?
なければ、単に" "で置換してください。
984 :
名無しさん@そうだ選挙にいこう :2008/06/23(月) 14:13:59
2007を使っています。 以前この掲示板でホームのところにあるフィルを使うことで いちいちドラッグしなくても、オートフィルすることが出来ることを教えてもらったのですが 数式をオートフィルするためにはどうしたら良いのでしょうか? 例えば =A1/3600 =A2/3600 ・・・ みたいに数式を並べたいのですが
PPは2003で作ったファイルを2007で開けなかったりするので 結構不便ですが Excelでは2007にしないとどういう不便がありますか?
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 セルA1,B1,C1のいずれかに「○」を入力すると、入力されたセル以外の 二つのセルに「×」が自動的に入るような関数はありますか? またはIF文でその動作をさせることはできますでしょうか? よろしくお願いします。
>>975 移籍についてはその通りです。
データは自分で打ち込んでいるので変更可能です。
>>973 のようにすべきでしょうか。
Office2007販売してるMSは頭おかしいよ… 2003までで慣れ親しんだメニューをガラッと変えやがってさ。 公式には「旧メニュー使いたい奴は2003使うといいよ」 とか言いながら販売してねーしふざけんなと。 仮にリボンがこの上なく使いやすいものだったとしても いきなり切り替えるのは横暴だよ。せめて2007には 両方のメニューを乗せ、移行期間を設けるべきだったと思う。 MSのOfficeじゃなかったら切り捨てられてもおかしくない 企業としてはとんでもない行動だったと思う。
エクセル関数で他のセルに値を入力する関数はありません。
>>986 2002だとVBAを使わないと無理
Excel2007なら条件付き書式でできる
992 :
986 :2008/06/23(月) 15:23:03
>>989 ,990
そうですか、ありがとうございました。
>>984 数式はドラッグしないと無理。
ただし左右どちらかの列にデータが入ってれば、ダブルクリックで同じ所まで数式で埋まる。
>>986 A1=if(or(B1="○",C1="○"),"×","")
B1=if(or(A1="○",C1="○"),"×","")
C1=if(or(A1="○",B1="○"),"×","")
でいけるだろ
新スレ立てられなかった
テンプレ使って誰か立てておくれ↓
Excelに関する質問は、ここで!
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に
>>2-10 あたりの注意書きやQ&Aを必ず読むこと。
★4 質問テンプレ(雛形)は必須じゃないけど、
OSやExcelのバージョン、VBAの可否など(下記テンプレ1〜4の情報)は必須情報。
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
※【5】は、あなたがGoogleやヘルプで検索した際に使ったキーワードを書いてください。
まだ検索してないなら、質問の前にGoogleやヘルプで検索してみてください。
ttp://www.google.co.jp/ 前スレ
Excel総合相談所 70
ttp://pc11.2ch.net/test/read.cgi/bsoft/1213013614/
>>978 途中や末尾にスペースがなければ単純にスペースをなにもなしに置換すればいい
埋め
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。