Excelに関する質問は、ここで!
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に
>>2-20 あたりの注意書きやQ&Aを必ず読むこと。
★4 質問テンプレ(雛形)は必須じゃないけど、
OSやExcelのバージョン、VBAの可否など(下記テンプレ1〜4の情報)は必須情報。
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
※【5】は、あなたがGoogleやヘルプで検索した際に使ったキーワードを書いてください。
まだ検索してないなら、質問の前にGoogleやヘルプで検索してみてください。
ttp://www.google.co.jp/ 前スレ
Excel総合相談所 82
http://pc11.2ch.net/test/read.cgi/bsoft/1241825062
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━ ・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のように 近い値に勝手に丸められる。
多数のブックを開いてシートを追加しながら集計し、R列の最下行+1に集計結果を書いています。 このとき、各シートをクリックしたらすぐに集計結果が確認できるよう 次のような荒業で見栄えを整えています。 Application.ScreenUpdating = True Range("R65536").End(xlUp).Offset(1, 5).Select 'シートのレイアウト(見栄え) Range("R65536").End(xlUp).Select 'カーソルを集計結果のポジションへ Application.ScreenUpdating = False これだと、当然ながら画面がチラチラするので改良したいのですが、 何か良い方法があるでしょうか?
>>7 msgboxとかのほうがいいんじゃないの
若しくは集計用のシートでも作って、そこにリンクさせるか
>>8 意味が分かりません。
msgboxなんか付けて週百回もOKをクリックしてたら、処理に10分くらい掛かると思います。
画面をチラチラさせずに、カーソルの位置とシートのレイアウトを統一したいんです。
× 週百回 ○ 数百回
いろいろ調べたのですがいい物が見あたらないので・・・ 【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 画像パス 画像を自動挿入 シート2に画像のアドレスを入力してゆきます。 シート1の指定した場所にシート2のアドレスを参照してその画像を適度な大きさに 変換して貼り付けて置くことは可能でしょうか? シート2のアドレスを変更するとその画像も自動的に変わるようにしたいです。 出来ればVBA無しでくめれば最高なのですが、教えていただけますでしょうか?
_
>>7 ScreenUpdatingをfalseのまま処理すりゃいいじゃん
>>14 falseのまま処理したら、selectしても動きません。
やってみれば一目瞭然です。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 ちょっとだけ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 オートフィルタ コピー データをY列で並び替えてから、オートフィルタでB列とN列の空白セルを除きます。 Y列のトップ5(タイトル行を除いて上から5行)を選んで他のシートにコピーするとき、 空白があると5行がコピーできません。 Worksheets("HND").Range("A2:Y6").Copy _ Destination:=Worksheets("HVC").Range("A2") ググって探して真似てみたけど、どうしてもうまくいきません。 Worksheets("HND").Range("A2:Y6").SpecialCells(xlCellTypeVisible).Copy _ Destination:=Worksheets("HVC").Range("A2") どこを直せばいいの?(´Д⊂)ウワーン
>>15 Sub Macro1()
Sheets("Sheet1").Select
Application.ScreenUpdating = False
Application.Goto Reference:=Range("R65536").End(xlUp).Offset(1, 5), Scroll:=True
Range("R65536").End(xlUp).Select
Sheets("Sheet2").Select
Application.Goto Reference:=Range("R65536").End(xlUp).Offset(1, 5), Scroll:=True
Range("R65536").End(xlUp).Select
Application.ScreenUpdating = True
End Sub
動くけど
それとも何?selectしたら画面を動かしたいの??
それならRange("R65536").End(xlUp).Offset(1, 5).Select 'シートのレイアウト(見栄え) がいらん
>>17 Scroll:使って、「ScreenUpdatingをfalseのまま処理」と書いておきながら「動くけど」はねーだろwww
ま、いいや
19 :
名無しさん@そうだ選挙にいこう :2009/06/11(木) 00:43:04
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 ハイパーリンク
セルにハイパーリンクでFTPサイトをリンクしたのですがクリックすると
「インターネットサイトのレポートによると、リクエストしたアイテムが
見つかりませんでした。(HTTP/1.0 404)」となってしまいます。
IEのバージョンは7です。
ハイパーリンクではftpサイトに接続することはできないのでしょうか?
アドレスは、
ftp://xxx:yyy@ftpサイト て感じで設定しています。
よろしくお願いします。
>>19 IEにURLを入れると見れるけど、Excelのハイパーインクだとダメってこと?
21 :
名無しさん@そうだ選挙にいこう :2009/06/11(木) 06:30:27
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 ?
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】エクセル 印刷範囲 設定
A1にAと入ればB2:D10、Bと入ればB20:D30というように印刷範囲を変えたいです。
上記の検索でこのページを見つけ試しましたが、出来ませんでした。
http://xl-kobeya.seesaa.net/article/8843049.html 検索ワードにマクロを入れるとボタンを作る方法を見つけましたが、
ボタンではなく、特定のセルに入った文字列により変えたいです。
どうかご教示ください。
>>21 Aのとき
Sub Macro1()
ActiveSheet.PageSetup.PrintArea = "$B$" & (Asc(Cells(1, 1)) - 95) & ":$D$" & (Asc(Cells(1, 1)) - 86)
End Sub
>B2:D10、Bと入ればB20:D30
範囲間違ってない?どういう基準で範囲が変わるのかよく分からない
変えれそうなら(Asc(Cells(1, 1)) - 95) と (Asc(Cells(1, 1)) - 86)を
(Asc(Cells(1, 1)) - 86)*2とかにかえて試行錯誤してみてください
無理ならレスください
>21
A1の値が"A"の場合とそうでない場合の2通りだけなら以下の手順でできます。3通り以上のときも
工夫すれば対応できると思う。(IndexとかMatchとか)
B1セルに計算式 =IF(A1="A","範囲A","範囲B") を入れておく。
あとは
http://xl-kobeya.seesaa.net/article/8843049.htmlのページを参考に B2:D10の範囲を 範囲A、B20:D30の範囲を 範囲B と名前を設定する。
メニューバーの[挿入(I)]-[名前(N)]-[定義(D)] から
Print_Aria ←半角で大文字小文字間違えないように
の参照範囲を =INDIRECT(Sheet1!$B$1) とする。
自分の環境はWindowsXp(sp3),Excel2003ですが、ちゃんとできました。
もし、うまくいかないときは、Excelを終了・起動してみてください。
24 :
名無しさん@そうだ選挙にいこう :2009/06/11(木) 11:26:25
>>24 ftpサーバーが存在しない、セキュリティソフトがftpアクセスを弾いているなどの理由でアクセスできない
とかいうことは無いですか
インターネットオプションは? FTPフォルダビューを有効にする
27 :
名無しさん@そうだ選挙にいこう :2009/06/11(木) 14:23:31
>>25 ftpサイトのアドレスは、間違っておりません。
>>26 有効になってます。
IEでアドレスたたくときちんと表示されますし、、、
皆さんのPCでは、問題なくハイパーリンクでIEが起動してftpサイトに
アクセスできるということですか。。。
28 :
名無しさん@そうだ選挙にいこう :2009/06/11(木) 14:46:56
Excel2007を使ってます。 入力規則機能を使って ドロップダウンリストから選択して入力してもらうようにしてます そこで例えば、リストから○を選択すると背景が青 ×を選択すると背景が赤になるように設定できないものでしょうか?
>28 条件付書式を利用します。 当方はExcel2003のため、リボンメニューについてはわからないのであしからず。
31 :
名無しさん@そうだ選挙にいこう :2009/06/11(木) 15:34:47
エクセル2000使ってます 誤って上書き保存してしまった場合戻す方法教えてください。 お願いします
上書きしちゃったらどうにもならないです スッパリあきらめたほうが早いです
【1 OSの種類 .】 WindowsXP Pro SP3
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 はい (まぁ少しは)
【4 VBAでの回答の可否】 否
WebからデータをExcelに貼りつけているのですが、これに関して質問です。
1 データを保存しようとする度に下記のメッセージが表示されます
プライバシーに関する注意:このドキュメントには、マクロ、ActiveXコントロール、
XML拡張パックの情報、またはWebコンポーネントが含まれています。これらにはドキュ
メント検査機能で削除することができない個人情報が含まれる場合があります。
出さないようにする方法はありますか?
2
http://table.yahoo.co.jp/t?s=USDJPY=X&g=d でコピーしている最中に関係ない下の方のテキストボックスまで貼りつけてしまった
のですが、これって削除はどのようにすれば出来るのでしょうか?
貼りつけた範囲を含む所を選択して削除しても肝心のテキストボックスやリストボッ
クスの部分は削除できませんでした。
>>34 1 Excelのオプション→セキュリティセンター→セキュリティセンターの設定→ドキュメント固有の設定
→チェックを外す
2 一番簡単な方法はそのシートを削除して新しいシートに貼り直す
>>35 1はでなくなりました。
2は、、、やはりそれが一番簡単なんでしょうね w
ありがとうございました。
>>34 2番目
まずExcelのオプションで「複数オブジェクトの選択」コマンドをツールバーに登録。
そして「[開発]タブをリボンに表示する」もチェックしておく。
ここまでが準備。最初に1回やるだけでいい。
手順の1. 開発タブを開き、デザインモードをONにする。
手順の2. さっき登録した「複数オブジェクトの選択」アイコンをクリックすると選択モードになる。
「すべて選択」→「OK」→Deleteキー
これで、テキストボックスなどの部品類が全部いっぺんに削除できる。
2003までみたいに範囲ドラッグでコントロール選択ってのはできなくなったん?
39 :
16 :2009/06/11(木) 20:15:38
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 ちょっとだけ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 オートフィルタ コピー データをY列で並び替えてから、オートフィルタでB列とN列の空白セルを除きます。 Y列のトップ5(タイトル行を除いて上から5行)を選んで他のシートにコピーするとき、 空白があると5行がコピーできません。 Worksheets("HND").Range("A2:Y6").Copy _ Destination:=Worksheets("HVC").Range("A2") ググって探して真似てみたけど、どうしてもうまくいきません。 Worksheets("HND").Range("A2:Y6").SpecialCells(xlCellTypeVisible).Copy _ Destination:=Worksheets("HVC").Range("A2") どこを直せばいいの?
40 :
34 :2009/06/11(木) 20:38:43
>>37 ありがとうございます。こんなやり方があるんですね。ビックリしました。
>>38 それで済んだら楽だったんですけどね w
>>39 分からん
Selection.AutoFilter
でオートフィルタ解除
若しくは
Sub a()
Range("d1").Formula = Range("c1").Formula
End Sub
みたいにするか
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 関数 りんご 100円 みかん 120 バナナ 150 メロン 110 桃 130 1位 ??? ???円 2位 ??? ???円 3位 ??? ???円 これでX番目の「項目」と「値段」を自動的に表示させるには何の関数を (組み合わせて)使えばいいのでしょうか?LARGE関数は項目までは 抽出できないみたいですし・・・。宜しくお願い致します。
>>39 こんなんでどうだ?
Sub 可視セルのみコピー()
r = 6
While Range("HND!A2:A" & r).SpecialCells(xlVisible).Count < 5
r = r + 1
Wend
Range("HND!A2:Y" & r).Copy
Range("HVC!A2").PasteSpecial
End Sub
値段が同じくだものがなければLOOKUPで
>>42 「円」は必ず書式設定でセルに反映させること、「りんご」はA1に入ってる前提で、いきます
C1=RANK(B1,$B$1:$B$5)
C5までオートフィル
A7=一位、A8二位A9三位
B7=INDEX($A$1:$A$5,MATCH(1,$C$1:$C$5,0),1)
B8=INDEX($A$1:$A$5,MATCH(2,$C$1:$C$5,0),1)
B9=INDEX($A$1:$A$5,MATCH(3,$C$1:$C$5,0),1)
C7=VLOOKUP(B7,$A$1:$B$5,2,0)
C9までオートフィル
vlookup、RANKは覚えておいた方がいいかも
本当はindex+matchがいいんだけどやや扱いにくい
パソコン初心者ですが表計算の資格を取るためにパソコンを購入しようと思っています 最低Excel2007が使えればいいんですがどのメーカーさんのを買えば入ってますか? 全てに入っているものなんでしょうか?それともソフトのような物を購入するのでしょうか? パソコンの知識が全くないのでわかりません…
>>46 「Office入り」というのを選ぶとExcelとWordが入っている。
どこのメーカーでもOfficeあり、なし、両方用意してるから、Officeありのを選ぶこと。
あとは、まあどれを買っても同じ。好きな色で決めればいい。
ただ、あんまり安いのは動作が重いので仕事で使うにしろ勉強に使うにしろ能率が悪くなる。
目安としては、だいたい10万円でテレビ機能のないやつを買っとけばいい。
>>45 うおお、ありがとうございます!ちょっとレッスンしてみます。
また何かありましたら宜しくお願い致します。m(_ _)m
>>43 ありがとうです。
Do Whileは使ったとこがあるけど、Wendは初めて見ました。
勉強します・・・
>>41 ありがとうです。
43さんのが、そのものズバリです。
エクセル関連の掲示板を見てると「selectするな」って書いてる人がいます。 マクロの自動記録するとselectばかりしてますが、selectしては いけない理由って何でしょうか?
>>52 1.速度的に不利、メンテナンス性も大きく損なわれる
2.コードの行数が少なくなる=マクロ全体の可読性が高まる
>>52 自動記録は最適化されてないから無駄が多い。
その中でも一番無駄な部分がいちいちSelectするところ。
>>53 速度を測ったこともあるんですが、2秒が3秒になったところで不利とも思えないし、
selectで改行した方が、視覚的に分りやすいのに?
>>54 張り詰めて仕事をするより、無駄口を叩きながらの方がいいでそ?
無駄って、マイナス要因ばかりじゃないと思うんだけどね。
>>55 2秒が3秒なら問題になることも少ないだろうが、
世の中には何時間もかかるマクロもあるんだぜ?
2時間が3時間じゃ無視するわけにいかん。
目的の処理を行うのにselectする必要ないのにselectされると見難いんだよ普通に オッサンがだらだら意味不明な前置きしてんのと一緒だな 簡潔に目的の処理を書けというのは当たり前すぎる
すいません、日数×時間=総時間を出したいのですが、 例えば3(日)×2.30(2時間30分)で"分"を60で繰り上げして=7.30という答えを導き出したいのですが、 この"分"の部分を60で繰り上げるにはどういう数式にしなければいけないんでしょうか? Excelのバージョンは2000です。
時間の部分を2:30:00にすれば、答えが7:30:00になる。
縦に 「りんご, ぶどう, もも, バナナ, もも, バナナ, もも, バナナ, ぶどう, ぶどう」 と並んでるのですが, 出現回数ランキングを「1位 バナナ 200回 2位 もも 180回 ・・・」のように作るにはどうすればいいでしょうか. 出現する項目の種類が多いので,COUNTIFを使ってはできないと思うのですが・・・ 関数だけでできればお願いします.
>>57 ハズレ
単体アプリケーションとしてVBアプリに速度を求めるのは滑稽だが
VBAでは事情が違う
VBAはあくまでも「Excelの操作の効率化」の為のモノだから
速度に拘るというか、速いにこしたことはないのは当然の摂理
アプリケーション製作用プログラム言語と
アプリケーション操作用マクロ言語を同列で考えちゃいけないよ
selectは絶対に悪だから使うな、というわけではない
俺もマクロの最後にA1セルを選択したりすることはある
特にコマンドボタンに登録したマクロだと、フォーカスがコマンドボタンに残るからね
でも基本は
>>53 の二行目だろうね
記録したマクロをそのまま使うなんてそうそうないことだし、
手を加える時にいらない処理はどんどん削る。また人によっては削る行為(最適化)自体に快感を伴う場合もあるんじゃないかな
まーそうやって最適化してれば、後で手を加えるときに楽なんだよ。
教えられてそうするわけじゃない、学習した結果の行為
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Excel2007 テーブル リスト Excel2007でデータの管理をしようということになり、 2007から導入されたデータベース機能の「テーブル」を使おうと思っています。 現在、シートA、B、Cに、それぞれテーブルA、B、Cがあるのですが、 テーブルBのある列の入力規則にリストを使い、 そのリストのデータ元をテーブルAのある列にしたいと考えています。 そこで質問なのですが、 (1)別のテーブルのデータを元に、リストを作るのは可能でしょうか。 可能ならどのように指定すればいいのでしょうか。 (2)データベースのように、リストやセルに表示されるデータはデータ元の[列2]でも、 実際にデータとして入っているのはデータ元の[列1]である、というようなことは可能でしょうか。 名前を選んだらキーが入るというイメージです。 ※こちらはできたらやりたいのですが、できなければあきらめます。 以上、よろしくお願いします。
>>66 vbaで速度なんて気にしても仕方ないだろう
よほど重い処理をしているなら、問題解決へのアプローチの仕方が間違っている
69 :
59 :2009/06/12(金) 10:28:35
>>60 エラーが出て上手く行きませんでした。
試しに、:00をとって2:30にしてみた所、明治何年何月何日となってしまいました。
ちなみにこれはわかり難いですが、時計の何時ではなく、時間数です。
例えば、1時間30分を1.5時間と表す場合もありますが、この1.5時間を1時間30分に変更する方法でも良いです。
>59、69 横レスですが、以下のことをやってみてください。 A1セルに 3 を入力(日数のつもり) B1セルに 7:30 を入力(時間の入力) ※7.30ではありません。 C1セルに計算式 =A1*B1 を入力 これだけでC1セルには 7:30 と表示されるはずですが。 >=7.30という答えを導き出したい どうしても小数点形式で表示したいということでしょうか? ○時間△分を表すのに ○.△ は不適と思いますが。
71 :
59 :2009/06/12(金) 11:58:48
>>70 レスありがとうございます。
希望どうりの表示ができました。
ありがとうございました。
>>69 Excelでは24時間を1と置いて計算するようになっている。
つまり1時間は1/24で、1.5時間は(1/24)*1.5で求めることができる。
電卓で計算してみると 1時間=1/24≒0.0416667
この数字を掛けて書式で"h時間m分"にすれば「1.5」が「1時間30分」に変換できる。
>>63 まぁ理解できないからこそ
>>57 みたいな発言が出てくるわけだから
言っても今の時点では意味不明なのは当然か
ExcelのVBAはその場しのぎの使い捨ての自分だけで使うプログラムを組むことが多いから VBAを作成してから結果を得るまでがいかに早く(速くではなく)出来るかが重要に思うな。 俺の場合は。 「速さ」にこだわる人はVBAプログラミングの請負みたいなのを職業としてやってるんだろうから それはそれで当然だと思う。 色んな場合を一緒くたにしてどうこう言うのが間違ってるよ。
やりたいようにやればいいじゃん しゅごキャラがついてるよ
>>57 だよな。
美しさを求めた方がいいわな。
で結局汚いコードはほとんど遅い。
ボールをとる とったものを投げる。 ボールを投げる
ある程度綺麗なコード、それこそselectを抜くだけでも勝手に速度も上がるよなぁ
お前らが会社辞めたりせずに最後まで自分で作ったものの 面倒見てくれさえすれば何でもいいですよ・・・ 変なこだわりがある自信過剰な人ほどいきなり会社辞めたりするんで困るんですよ・・・
【1 OSの種類 .】 WindowsXPSP3 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 VBA Sum関数 自動入力 質問です。 作成した表のA1〜O1が見出し行でそれよりしたに行数が300行ほどあります。 で最下行にSum関数が入っているのですが、中間に行挿入した場合はSum関数 も範囲が延長されますが、見出し行の真下に挿入した場合はSum関数の先頭 アドレスが変わっちゃいます。 これをチェインジイベントマクロもしくは標準のモジュールのマクロはどの ようにすればいいのでしょうか?
81 :
80 :2009/06/12(金) 17:58:44
すいません、追記です。 先頭行の真下だけでなく、Sum関数が入っている真上に行挿入した場合は 最終アドレスが変わります。 どちらのケースも対応させるようにしたいのですが。
頭使えよ 余分に範囲指定してその中で挿入すればいいだろうが
>余分に範囲指定してその中で挿入 A2が関数の先頭ならSum(A1:A300)としておけばいいが・・ 最終行の範囲はどんすんのよw
データがA2:A300なら、A302に=SUM(A1:A301)と上下1行余分な式を入れれば良いだけだろ? 合計セルの前に空行が出来るが、計算上は全く支障無いし、見た目を整えたければ行の非表示も可能 またアウトライン使えば行の表示/非表示は1クリックで切り替えられる 301行にアウトライン設定して301行に行挿入すれば、アウトラインは302行に移って、式は=SUM(A1:A302)になる
>チェインジイベントマクロもしくは標準のモジュールのマクロ って言っているんだから・・ A列のみのサンプル(標準モジュールの例 Sub Sample() With Range("A2") .End(xlDown).Offset(1, 0).Formula = _ "=SUM($A$2:" & .End(xlDown).Address & ")" End With End Sub VBA使えるなら後は考えろ
INDIRECT関数を利用すると、範囲の片方は固定できます。 合計を求めるセルがB301として、当初の集計範囲がB2:B300だったとします。 B301セルの計算式を =SUM(INDIRECT("$B$2:$B"&ROW()-1)) としておけば、2行目に行挿入しても””で囲んだ部分は変わりません。 集計範囲のもう片方は合計行の1行上と指定してるので行の挿入・削除に応じて変化します。 マクロとかややこしいものを使わずにすむのでこれがいいかと思う。
19です。ハイパーリンクは諦めました。 代わりに、BASP21とマクロでFTPサイトからフォルダ一覧とファイル一覧取得して目的のファイルダブルクリックでダウンロード出来るようになりました。 ありがとうございました。
独り言ならチラシの裏にでも書いておけよ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 前スレ805の続きです。前回とはシート名が変わっています。 Sheet("DATA")の月ごとのデータを、Sheet("FS")に1Q、2Q、3Q、4Qでまとめることは 出来ましたが、新たに月ごとのデータもまとめることになりました。 レスをくださった方のマクロを元に書いてみたものの、うまく集計してくれません。 どこが間違ってるのでしょうか? ---Sheet("DATA")-------------------------------------------------------------- A B C D E F G H I J K L M N O P Q 商品名 4月 5月 6月 7月 8月 9月 10月 11月 12月 1月 2月 3月 A1 12 15 7 3 2 6 A1 3 5 2 4 9 11 A1 10 12 8 10 16 5 A2 3 0 5 1 3 0 A3 8 6 11 8 7 2 A3 0 3 7 0 1 1 --Sheet("FS")------------------------------------------------------------------ A B C D E F G H I J K L M N O P Q R 商品名 1Q 2Q 3Q 4Q 4月 5月 6月 7月 8月 9月 10月 11月 12月 1月 2月 3月 A1 74 66 A2 8 4 A3 35 19
90 :
89 :2009/06/12(金) 22:10:39
Sub まとめ3() Dim i As Long, j As Long, k As Long Dim Rng(3) As Range Dim Rng1(3) As Range, Rng2(3) As Range, Rng3(3) As Range Worksheets("FS").Rows("2:65536").Delete Shift:=xlUp i = 3 j = 2 With Worksheets("DATA") Do While .Cells(i, 1).Value <> "" If .Cells(i, 1).Value <> .Cells(i - 1, 1).Value Then For k = 0 To 3 Set Rng(k) = .Cells(i, 3).Resize(1, 3).Offset(0, k * 4) Set Rng1(k) = .Cells(i, k * 3 + 7) Set Rng2(k) = .Cells(i, k * 3 + 8) Set Rng3(k) = .Cells(i, k * 3 + 9) Next Else For k = 0 To 3 Set Rng(k) = Union(Rng(k), .Cells(i, 3).Resize(1, 3).Offset(0, k * 4)) Set Rng1(k) = Union(Rng1(k), .Cells(i, 3).Offset(0, k * 3 + 7)) Set Rng2(k) = Union(Rng2(k), .Cells(i, 7).Offset(0, k * 3 + 8)) Set Rng3(k) = Union(Rng3(k), .Cells(i, 11).Offset(0, k * 3 + 9)) Next End If
91 :
89 :2009/06/12(金) 22:11:33
If .Cells(i, 1).Value <> .Cells(i + 1, 1).Value Then Worksheets("FS").Cells(j, 1).Value = .Cells(i, 1).Value For k = 0 To 3 Worksheets("FS").Cells(j, k + 3).Value = WorksheetFunction.Sum(Rng(k)) Worksheets("FS").Cells(j, k * 3 + 7).Value = WorksheetFunction.Sum(Rng1(k)) Worksheets("FS").Cells(j, k * 3 + 8).Value = WorksheetFunction.Sum(Rng2(k)) Worksheets("FS").Cells(j, k * 3 + 9).Value = WorksheetFunction.Sum(Rng3(k)) Next j = j + 1 End If i = i + 1 Loop End With For k = 0 To 3 Set Rng(k) = Nothing Next Worksheets("FS").Select End Sub
>>67 2007持ってないんで2003以前の話なんだけど
(1)名前の定義をする
2003以前なら範囲を選択→挿入→名前→定義
(2)表示される[列2]を元にINDEX関数で引っ張ってくるとかかなあ?
もの凄く初歩的な質問と思われますがお願いいたします。 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 「エクセル 数 順」「エクセル 複製」 左側に縦1列で上から順に1から数字をうった表を作りたいのですが 必要な数だけ1から順に数字を入力する方法を教えてください。 行数が足りなくなった際の複製方法もお願いします。 検索をかけてみましたが何をキーワードにすれば良いかも分からない状態です。 よろしくお願い致します。
集計にVBAを使うのはバカだということで意見が一致しています
>>93 2003なら編集−フィル−連続データの作成
さがせば2007にも同じような機能はあるだろう
>>93 "1"を入力したセルの右下でマウスカーソルが十字キーみたくなったら その状態
で右クリックを押しつつ必要な数のセルを選択。
右クリックから指を離すと右下に四角っぽい図形(オートフィルオプション)
がでてきますのでそこの▼をクリックし”連続データ”を選択する。
まあ A1+1を下にコピーすればいいんだけどね
98 :
96 :2009/06/12(金) 22:57:48
>>95 会社:2007、俺:xpなんだけど2007って扱いづらいっす。
>>95 指摘の編集−フィルって便利なの、もしかしたら無いんじゃないかとおもう。
一応前スレにも載ってた方法をコピペ&加筆させてもらいました。
10 2 5 8 9 4 3 など乱数が並んでる列に対し 5以上の数字の偏差(stdev)など使ってやりたいのですが 何か良い関数があれば教えて下さい。 実は数字じゃなくて時間でやりたいので応用が利くのがいいです。
>>99 C1に数値を入力
b1=a1>$c$1
下にオートフィルで偏差出すとか
ちなみに計算上TRUEは1、FALSEは0でしょ利される
101 :
96 :2009/06/12(金) 23:14:18
ちょっと訂正 ×:右クリック→○:左クリック
102 :
93 :2009/06/12(金) 23:19:21
出来ました!皆さんどうもありがとうございました!!
>>92 回答ありがとうございます!試してみます。
>89 月毎の集計ならこういうオーソドックスなのはどうでしょうか? 四半期の小計は計算式にまかせているのと、FSシートのクリアは入れてません。 Option Explicit Dim Sh_I As Excel.Worksheet, Sh_O As Excel.Worksheet Dim Retu As Variant, Tate_I As Long, Tate_O As Long, i As Integer Dim Syokei(12) As Long, W_DATA As String Sub 集計() Call Init_proc Do While (W_DATA <> "") Tate_I = Tate_I + 1 If W_DATA = Sh_I.Cells(Tate_I, 1).Value Then For i = 1 To 12 Syokei(i) = Syokei(i) + Sh_I.Cells(Tate_I, Retu(i - 1)).Value Next i Else Sh_O.Cells(Tate_O, 1).Value = W_DATA For i = 1 To 12 Sh_O.Cells(Tate_O, i + 6).Value = Syokei(i) Syokei(i) = Sh_I.Cells(Tate_I, Retu(i - 1)).Value Next i W_DATA = Sh_I.Cells(Tate_I, 1).Value Tate_O = Tate_O + 1 End If Loop Set Sh_I = Nothing Set Sh_O = Nothing End Sub 続く
105 :
104 :2009/06/13(土) 00:29:52
続き Private Sub Init_proc() Set Sh_I = Worksheets("DATA") Set Sh_O = Worksheets("FS") Retu = Array(3, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17) Tate_I = 2 Tate_O = 2 W_DATA = Sh_I.Cells(Tate_I, 1).Value For i = 1 To 12 Syokei(i) = Sh_I.Cells(Tate_I, Retu(i - 1)).Value Next i End Sub 以上 当方、COBOLが長かったのと、UNION とかRESIZEとか初めて見たので、↑こういうやり方しかできません。 Retu = Array(3, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17)の行は、 DATAシートとFSシートの月の列の対応のためのもので、FSシートの方は+6するだけなので配列にしてません。 参考まで。
#VALUE! って参照不可能なんでしょうか? 例えば、 A B 1 マスクメロン 1000 2 夕張メロン #VALUE! 3 XXX とあって、セルXXXに=IF(B2="#VALUE!",B1,B2)みたいな#VALUE!を転用する 感じの式って打ち込めないんでしょうか?宜しくお願い致します。
>>106 =IF(ISERROR(B2),B1,B2)
>>107 ^ー^)ノシ Thanks so much !!
>>89 集計方法が変わるたびにプログラミングか。ご苦労なことだ。
そんな簡単なことできたって誰もほめてくれないぞ。
集計なんかできて当たり前で、集計結果をもとにどんな意思決定をするかが大切なんだ。
>>89 DATAシートとFSシートでは構成が違うのだから、Cellsの引数を変える必要がある。
具体的には、
>Set Rng1(k) = .Cells(i, k * 3 + 7)
↓
Set Rng1(k) = .Cells(i, k * 4 + 3)
さらにその下のOffsetを使っている部分は全然ダメ
>Set Rng1(k) = Union(Rng1(k), .Cells(i, 3).Offset(0, k * 3 + 7))
↓
Rng1(k) = Union(Rng1(k), .Cells(i, k * 4 + 3))
もしくは
Rng1(k) = Union(Rng1(k), .Cells(i, 3).Offset(0, k * 4))
Rng2とRng3は、上の3という数字をを4と5にそれぞれ変えればいい。
これでうまくいくはず。
いろいろつっこみどころ満載だが、とりあえず配列とOffsetについてはググるなりしておいたほうがいい。
111 :
110 :2009/06/13(土) 05:15:03
Setが抜けてた・・・
>>89 >>94 がピボットテーブル使えと言ってるぞw
Excel2000なんでアイテム数が足りるかどうか分らんが。
ついでにピボットテーブルのヒントだが、「複数のワークシート範囲」と「グループ化」で出来る。 4月〜6月を選択してグループ化、7月〜9月を選択してグループ化、以下同様。 4月を左端にもってくるには並び替えのユーザー設定リストを作ればいい。
115 :
110 :2009/06/13(土) 09:52:30
>>89 は前スレでピボットは無しという条件を付けている
何故かはわからないがな・・・
>>116 ピボットに頭はいらないじゃん。
頭の悪い人ほどピボットを覚える必要がある。
>>117 ピボットぐらいはまず全員が使えるようになるべき
知名度が異常に低いの何とかして欲しい
Excelは何でもありだから逆にややこしくなる。 ピボットテーブル専用ソフトみたいなのがあるといいんだけどな。 並べ替えとフィルタとVLOOKUPあたりも使えた方がいいか。
過去そういうソフトはいっぱいあったんじゃないかな で、これがしたい、あれがしたいとなって、マクロが実装されて(マイツールとか) マクロ書くのがめんどくさい!ってなって今の形になった、のかも
>>117 難しいこと知っていたって役に立たないなら無意味。
vba便利だよ マクロの記憶とif、forだけ覚えてればかなりの場面に対応できる
>>118 全員出来なくても、自分が作ってあとはマクロを登録したボタン押すだけにしといてもいいじゃん。
登録するマクロは範囲変更と更新だけで使えるな。
自分が操作するにはかまわないけどとか言い訳する奴結構いるが、何でVBAを併用しないのかと
いつも思う。
>>122 じゃあ売上の多い順に並べ替えるプログラムを作ってください。
ピボットテーブルの認知度が低いのは名前のせいだよな クロス集計ウィザードみたいな名前にしとけばもうちょっと普通に使われてた。
>>125 同感。
SUM関数よりも先に覚えるべき機能だと思う。
>>121 ピボットなんて難しくないよ。
馬鹿でも使えるように作られた機能だからどんどん使うべき。
OOoじゃピボットテーブルはなんて名前だったっけ?
>>127 >>121 だけどピボットが難しいとは言ってないよ。
どんどん使うべきだよね。
何でもピボットでできてしまうのにVBAはいったい何に使うの?
コンパイラでも作るの?
ピボットテーブル便利なんだけどさ、 複数人の人が行うルーチンワークに使うには 微妙に難しい面があるんだよな。 データ行を追加する場合にちょっと工夫が必要だとか 書式設定がらみとか
>>128 Calcならデータパイロット
>>129 だからピボットを覚える気がない人にボタンを押してもらうときVBA使えばいいんだよ。
どんな馬鹿でもボタンは押せる。
ボタン押すのも嫌で関数でやるやつはウルトラヴァカ。
>>123 そういう意味じゃなくてエクセル使ってる人の中でもピボットの知名度は低いってことだよ
マクロはVBA大好きっ子が自慢半分に使うから(昔の俺もそうでしたけど)有名になってる気がする
ただピボット使わなくても関数で集計できるのでそうする人もいる
最悪集計を手作業でやる人もいるしね
>>124 イヤだよ麺どくさい
並べ替え使うよ
>>129 ファイルの整形とか、プリンタの変更とか、数式の結果を値にして貼り付けるとか
あと「いくつあるか分からない」事態に対しても非常に強い
いいこと考えた。 「万能クロス集計」っていう名前でExcelのアドインを売れば儲かるんじゃね? 中ではピボットテーブルを起動してるだけ。
>>131 何でウルトラヴァカ?
俺様はSUMPRODUCTでサクッと出来ちゃうんでピボットテーブルなんてイラン。
>>134 SUMPRODUCTとかSUMIFとかは分類を列挙しないとだめでしょ。
新しい分類が増減する度に集計表をメンテしないといかん。
>>135 それも配列数式で出来るからピボットテーブルはイラン。
>>132 VBA使って自慢ってのも低レベル。
並べ替えにはVBA使わないってのはおもしろいな。
>>138 ネタだろ?
本気で書いてたら盲愚回答者なみのアフォだなw
>>137 だから昔のことだって
黒歴史なんだって
あまりそこには触らないでほしいんだぜ
データ数多すぎてピボットの限界超えてるのかと思ったけど
>>89 の表見るとそんなでもなさそうだね。
142 :
名無しさん@そうだ選挙にいこう :2009/06/13(土) 19:19:52
【1 OSの種類 .】 Windowsxp 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 最近エクセルの勉強を始めました。 日付の表示形式で 表示形式がdddだと表示結果はFri aaaだと表示結果は金 となるようですが、 何故aやdが使われてるんでしょうか。 このa,dにはどういう意味があるんでしょうか。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可 できれば関数で
【5 検索キーワード 】 板取り 関数
Excelの関数で板取計算ができないかと考えています。
ROUNDDOWN関数を使用して自分なりに作ってみましたが
場合によっては以下の様な取り方も必要になってきます。
http://up2.viploader.net/pic2/src/viploaderf161057.gif やりたいことは
1 母材の縦横サイズを入力
2 部材の縦横サイズを入力
3 最適取り数を表示
です。宜しくお願いします。
>>143 一般的にこの手の問題は関数ではありません。
(x1, x2, x3, ... , xn)を決めたら自動的にf(x1, x2, x3, ... , xn)が求まるというわけではなく、
f(x1, x2, x3, ... , xn)が最大になるような(x1, x2, x3, ... , xn)を探す問題です。
>>142 YY : Year
MM : Month
DD : Day
Aは知らん
>>144 ありがとうございます。
VBAは使えませんが、これから勉強しようと思います。
頭の中ではイメージは出来上がっているのですが、なかなか形にできなくて…
4パターンの取数計算をし、そこから1番大きい数を取り出す様なイメージなのですが合ってますかね?
具体的に例もあれば教えていただきたく
>>147 そうです。
考えられる全ての組合せを全て網羅して結果が最大となるものを選んでください。
150 :
89 :2009/06/13(土) 23:22:52
>>104 ありがとうございます。
Syokei(i) = Sh_I.Cells(Tate_I, Retu(i - 1)).Value で、「実行時エラー13、型が一致しません」と
エラーが出てしまいました。
Private Sub Init_proc() は、標準モジュールに書きましたが、書く場所が違ってたら
教えてください。
>>109 もちろん、集計は目的ではなく手段で使っています。
幼稚なマクロながら動いてたので、効率の良い書き方をご教示頂いたしだいです。
>>110-111 ありがとうございます。完成しました。
配列は初めてなので、これからもっと勉強します。
>>115 ホストコンピュータから出されたCSVを集計して、売れ筋商品とか今後の予測とか
その他もろもろを解析した結果を報告書を印刷するまでをマクロ一括でやっているためです。
単に集計するだけなら、ピボットデーブルでいいのは分っています。
>>141 毎月データ量が3万〜4万件くらいあるようなので、ピボットテーブルを作るより
マクロで一括処理の方を選んだしだいです。ピボットの限界って、どれくらいですか?
板取りの汎用のソフトがあまりないのは ・第一に数学的にかなり難易度の高い問題であること ・工業的に大量生産する場合は最初に1回決めれば終わり ・材料と部品が現実的なサイズなら人間の直感のがよっぽど早くて確実 ・素材の特性や機械の都合で部品の向きが固定されることがある。この場合は単純な割り算 ・切り抜くたびに素材に歪みが出る場合は部品の間隔を空ける必要がある ・切断時の工具の通り道によるロスも千差万別
>>150 >ホストコンピュータから出されたCSVを集計して、売れ筋商品とか今後の予測とか
>その他もろもろを解析した結果を報告書を印刷するまでをマクロ一括でやっているためです。
>単に集計するだけなら、ピボットデーブルでいいのは分っています。
売れ筋商品はどうやってみつけているの?
集計して売上の大きいものが売れ筋なんじゃないの?
つまり集計するだけなんじゃないの?
>>150 流れを見ずにレスするけど
Syokei(i) = Sh_I.Cells(Tate_I, Retu(i - 1)).Value で、「実行時エラー13、型が一致しません」
Syokei()はLong型だから、右辺で読み込んでいるセルの内容が数値じゃないってことだな。
>>152 自分で引用した部分をよく嫁
報告書の印刷までやってると書いてあるだろ
>>150 今後の予測なんて本当にVBAでやってるの?
配列も知らなかったのに。
【1 OSの種類 .】 Windows2000 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 割り算 あまり VBAのfornextループを使い、データの整形をしようとしています ループカウンタiが3の倍数のときに3、3の倍数+1の時は1、3の倍数+2の時は2を返したいのですが、 どうすればいいでしょうか? for i = 1 to 100 if 「iは3の倍数か、+1か+2かどうか」 then 'ここの間に処理 next だと思うのですがどうやればいいでしょうか
>>150 Private Sub Init_proc()の、
Tate_I = 2をTate_I = 3にすればいい。
これは
>>104 が間違えたというよりもお前の説明不足。
DATAシートのデータが3行目から始まっているなんて
>>89 からはわからない。
ぜんぶホストコンピュータでやればいいじゃん
>>150 集計をマクロを使ってピボットテーブルを作成するのはダメ?
別シート作ってやればシートが汚くなることも無いけどな
俺は会社でそうやってるけど
>>157 ((i - 1) Mod 3) + 1
これ、たまに忘れる
>>157 If i Mod 3 = 0 Then
'3
ElseIf i Mod 3 = 1 Then
'1
Else
'2
End If
こっちのがいいかも
Select Case i Mod 3
Case 0
'3
Case 1
'1
Case 2
'2
End Select
>>161 >>162 ありがとうご゛ざいます
selectcaseいいですね。使ったこと無いので使って見ます
>>150 2003以前のピボットテーブルは
フィールドあたりの重複しないアイテムは32500まで。
データ量がそんなあるなら「アイテムが多すぎます」みたいなエラーが出るだろうね。
ピボットはファイルがでかくなるし、多くの人は嫌がるよな。 VBA使えるならその方がいいと思うけど。
ファイルがでかくなると言っても大した量じゃないと思うけど。まぁ重くなるのは避けたいところだけど 作成した後にコピーして別シートにはりつけ、ピボット削除をマクロにさせれば問題ないんじゃないかな
>>153 とりあえず動いたので、104さんのマクロは
あとで検証してみます。
>>160 ピボットテーブルをつくる手間を掛けるなら、マクロで一括と・・・
>>164 2000だと辛いですね。2003で作ったマクロが動かないこともありますし。
いずれにしても、今回のはピボットテーブルでは実現が困難のようなので
マクロでやります。
みなさん、ありがとうございました。
Exel2000はもうすぐサポートが切れるんじゃなかったか?
>>168 まあこれ以上
>>89 の心配しても仕方がない。
また新しいレポート作らないといけなくなった時に泣きついてくる。
きっと。
【1 OSの種類 .】 WindowsXP/VISTA 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可(できればVBAなしのほうが助かりますが、この機に勉強する気もあります) 【5 検索キーワード 】 EXCEL 並び替え 合計 相談させてください。 EXCEL初心者なのですが、仕事で作らなければいけない情報があって困ってます。 たとえば A列 B列 人名 経費 山田 1200 鈴木 3000 佐藤 2400 鈴木 1000 佐藤 8000 というエクセルデータがあったとして 佐藤 10400 鈴木 4000 山田 1200 というように、数字を合計させて、かつ、多い順に並べて表示させたいのです。 どのような仕組みにすればできるでしょうか? 教えていただけると幸いです、宜しくお願いします。
>>170 話題沸騰のピボットテーブル。
リストのどこかを選択→データ→ピボットテーブルとピボットグラフレポート→
範囲がちゃんと選択されてるか確認→次へ→レイアウト→人名を行にドラッグ→
経費をデータにドラッグ→OK→完了
ピボットテーブルができるので計列のデータのどこか選択して降順で並び替え
人名順に並び替えしてデータ(D)→集計(B)で集計させてから経費列を降順というのも。
人数がそんなに多くなければsumif使って集計すれば? 課内の交通費清算表なんかはこうやってるな。 あと、多い順にするには最後にソートする。
そこは今このスレで話題のVBAでだな
>>164 ,
>>167 Excel2000は8000ちょっとだよ。
だから俺は2000使ってた頃、ピボットテーブルつかうのはお子ちゃまだと思ってた。
2002からぐっと増えたから2000からは絶対に乗り換えた方がいいね。
あとピボットテーブルは一度作っておけば、範囲の変更(名前定義使えば不要だけど)と更新と
場合によっては集計方法の変更くらいをマクロで操作すればいいから、VBAだけでやりたいってのは言い訳にしかすぎない。
今回は30000行にたいしてユニークなアイテム数がどのくらいあるか知らんが、せいぜい数百種類なら絶対ピボットテーブル
使った方がいいな。
>>168 >>175 会社のPCは4年償却なんですが、このご時世で買い換えてもらうこともできず
当分はOffice2000スタンダードのままです。
それから、集計にピボットテーブルは使っています。
89に挙げたSheet"DATA"は、CSVを一旦TXTにして文字列で開いてから
列を選んで抽出したものなので、最初からあのデータで、なおかつ
集計だけで良いならピボットでやってたかもしれません。
結果的には、件数の問題もあってダメなようですが。
売れ筋商品をピボットでという話もありましたが、「売れ筋商品」は
「売り上げ上位商品」だけを集計すれば済む問題ではありません。
例えば車なら、5月の売り上げトップ3はプリウス、フィット、インサイトですが、
売れ筋商品となると「燃費が良い車」に該当するものを抽出するわけです。
ピボットテーブルで、どのように抽出するのか考えたこともありませんが、
Excelとは関係ないので、これ以上書くのはやめます。
あ、
>>169 さん。
ご察しのとおり、また泣き付いてくるでしょうから、その際はよろしくお願いします。
>>179 売れ筋商品をどう定義するかというだけの話だ。
>ピボットテーブルで、どのように抽出するのか考えたこともありませんが、
結局考えてないのだよ。
>>176 具体的にアイテム数どのくらいあるの?
フィルタオプションの「重複するレコードは無視する」で何行のでーたになる?
ピボット厨は身の回りの狭い世界しか知らずに 自分のやり方で世の中のあらゆる事が解決出来ると思ってるんだろうなあ(笑)
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 思いつかず 目標:資格試験に受かりたいです。 よって、目標勉強時間の設定(300時間)をしました 盛り込みたい機能 1,本日〜試験日までの残日数を表示 2,一日何時間勉強すれば目標時間に届くか計算 3,その日の勉強時間を打ち込めば自動的に 明日からの平均勉強時間を算出 その他:勉強時間は分単位で入力、平均必要勉強時間は分単位で出力したいです。 お手数ですが、よろしくお願い致します。
>>179 はさぞVBAの達人なんだろうね。
達人のつもりの人だったかw
getpvotdata関数とかまで使いこなせれば、ユーザーにもわかりやすい シート設計できるはずだけれど、他人が作ったブックでそこまで 気の利いたのみたことがない。 ピボット厨が市民権得られないのはそこいら辺が原因では? 俺もたまにはピボット使うけど他人も使えるフォーマット作るのは骨が折れるよね。 ピボ厨さんなら簡単なんだろうけど。
>>182 他人の心配する前に自分の欲しいレポートすら得られないことを心配したほうがいい。
俺はどちらかと言うとピボット厨であり ピボットをもっと普及させたいと思っているんだが こういう粘着質の傲慢野郎がいるおかげで困るんだよね・・・
結局
>>89 をピボットテーブルで出来る人、このスレに何人いるんだ?
>>184 ピボットがわからないやつってバカにしたくならないか?
>>180 残りの日数はDATEDIF関数でも計算できるし、もっと単純にシリアル値を引き算してINTを取るだけでもいい。
あとは残りの時間を割り算するだけ。
>>180 電話から回答なので間違えてるかも。
言われた条件だけ満たしたつもり
> 盛り込みたい機能
> 1,本日〜試験日までの残日数を表示
A1に「=試験日を入れたセル-TODAY()」
↑表示形式は「"あと"0"日"」
> 2,一日何時間勉強すれば目標時間に届くか計算
B1に「=("300:00:00"-勉強済み時間を入れたセル)/A1」
↑表示形式は「"一日"mm"分"」
> 3,その日の勉強時間を打ち込めば自動的に
> 明日からの平均勉強時間を算出
C1に「=("300:00:00"-勉強済み時間を入れたセル)-Time(0,その日の勉強時間(分)を打ち込んだセル,0)/(A1-1)」
↑表示形式は「"明日から一日"mm"分"」
190 :
189 :2009/06/14(日) 23:23:37
表示形式の「mm」は「[mm]」だな失礼。
191 :
189 :2009/06/14(日) 23:32:37
よく見たら()の場所も違う。。。中途半端に回答してすまんかった。。。
Excel2003のVBAで解読できない文があります。 With Worksheets(2) If .AutoFilter is Nothing Then .AutoFilter.Range.AutoFilter 「二番目のワークシートにフィルタが無い場合」 まで分かるんですが、その後の文の意味が分かりません。 どの様に解釈すればいいのでしょうか。
193 :
180 :2009/06/14(日) 23:51:10
>>187-191 皆様
ご回答、ありがとうございました。
187氏に作成して頂いたファイルを元に
日付等を調整し、希望していた機能が不足無く手に入りました。
これで試験だけに集中できます。
感無量です・・・、重ね重ねありがとうございました!
それでは、失礼致します。
>>177 ちょっと興味があるので教えてほしいんだが、ピボットテーブルで
売れ筋商品をどう定義するんだ?
>>194 あほか?
売れ筋商品が何かを定義しろよ。
話はそれからだ。
受注が何週間継続しているとか 出荷数が何万個以上とか 数字で決めることができればなんだって可能
遅い時間にすみません、どうか助けてください。 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 少しなら 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 エクセル 1つのセル 改行 左詰め 右詰め 内容して、A1とB1の内容を&を使ってC1に結合させて表示しています。 A1とB1の間にCHAR(10)で改行させているのですが、その一段目を左詰めに、二段目を右詰めにしたいのですが可能でしょうか。 会社でシステムの縛りがあり、エクセル2000しか使用できません。 どうかよろしくお願いいたします。
198 :
名無しさん@そうだ選挙にいこう :2009/06/15(月) 01:01:40
先生! ピボット厨が必死なのは何故ですか?
>>192 フィルタがない場合、じゃなくてフィルタで抽出されたデータがない場合、じゃね?
その時はフィルタを解除する、と。
>>197 無理な気がする。
フォーマットを改善するしかなくはないかねー
>>198 例えば
>>143 の問題なんかはピボットテーブルでは解決できない。
VBA厨が回答してやったらどうなんだ?
>>197 試してみたらWordの表なら可能っぽいね。
なにごとにも適材適所ってのがあってねー
どうしてもエクセルでってならWordの表をExcelに張り付けるとか
202 :
名無しさん@そうだ選挙にいこう :2009/06/15(月) 01:16:04
>>197 C1の幅の文字数をみて空白を入れるという強引方法ですが
=A1 & " " & CHAR(10) & REPT(" ", CELL("width", C1) - LEN(B1)) & B1
ただし、フォントはプロポーショナルフォントだとうまくいかないこと
C1の幅が丸められるためか、C1の幅を整数にしないとうまくいかないようです。
203 :
名無しさん@そうだ選挙にいこう :2009/06/15(月) 01:18:01
>>202 あと、漢字はうまくいきません。
かなり微妙な位置合わせですw
>>199-204 こんな遅い時間に皆さんありがとうございました。
やはりWordの表を貼り付ける以外、方法がないようですね;
199さんがおっしゃるように、フォーマットの改善を試みてみます。
本当にありがとうございました。
【1 OSの種類 .】 WindowsVista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 多少 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Excel グラフ 表示形式 すみません、お願いします 折れ線グラフで縦軸に「1,2,3」のような数字が入るのですが、 軸に表示する文言を、1→低、2→中、3→高、のように変換できないでしょうか。 中のデータは数字だけど、グラフで表示するのは文字みたいにしたいです。 表示形式に関数を適用してできると思ったのですが、 やり方が悪いのかうまくいきません。 同様なことを実現できるなら、ほかのやり方でもかまいません。
>>206 2007で3パターンだったら表示形式でいけんじゃねーかな?
[<2]低;[<3]中;高
とかで
>>207 できました!
ベタですが「[=1]低;〜」とやりました。
表示形式ってこんなこともできるんですね。
買った本には応用的なことはほとんど書いてなくて。
ヘルプを探して勉強します。
ありがとうございました!!!
209 :
名無しさん@そうだ選挙にいこう :2009/06/15(月) 10:16:45
数値B列から数値C列を引いた数値D列を作りました このD列から数式を抜いてただの文字列か標準にしたいのですが、どうすればいいのでしょうか
>>210 できました!ありがとうございます!
なるほど・・・新しく貼り付けるのか・・・エクセルの作法は独特ですね
Excle2000のVBAで、統計関数(AverageとかVarとか)を呼び出すと、 『WorksheetFunctionクラスの Average プロパティを取得できません。』 のエラーになります。 Application.WorksheetFunction.XXXXXXのように書いてます。 途中まで書いて、リストから選択してるのでタイプミスじゃないと思います。 その関数をセルに直接書くと動作します。 何が原因でしょうか? よろしくお願いします。
>>212 エラーの出た行をそのままコピペしてみて
>>147 途中まで作ったのUPしてみ
俺は挟み込み方で作るな
>>147 ソルバー使うんじゃないの?
ソルバーの使い方知らないけど、二次関数とか解けるってどこかで見たことがある
selectせずに、セルの位置を変えるにはどうすればいいの?
218 :
147 :2009/06/15(月) 22:17:31
あまり深く考えて言うわけじゃないが、 一度に計算しようとしないで、場合分けとかして 何ステップかに渡って計算させた方がいいんじゃないのかな
>>218 俺も板取のVBAも持ってる 今改造して渡そうと思ってけどブランクが空きすぎて基本構文の方がやばい
明日つくります。
以下作りかけ
Sub it()
End Sub
Function ITA(ITA As Double) As Double
Dim A As Double
Dim B As Double
Dim C As Double
Dim H As Double
Dim X As Double
Dim Y As Double
Dim Xa As Double
Dim Ya As Double
A = 100
B = 100
Do
C = A - Xa
H
If (H >= 0) Then A = C
If (H < 0) Then B = C
If (H < 0) Then H = C
If (H < 0.000000000001) Then Exit Do
Loop
End Function
ピボット厨ってVBAが使えないんだろ?
板取計算は難しいよ 特に5*5の中で2*3を4枚とる、という計算が難しい 後は7*7で2*3.を8枚とか 更にそれらを組み合わせるとなると・・
>>225 IfとかForのレベルで考えているからだ。
VBAしか使っていないと発想が貧困になる。
各列にフィルタをかけ、例えば、A、B、C列のどれかの値が1だった表示、 全て空白のものだけ非表示、というふうに絞る方法はあるでしょうか?
228 :
147 :2009/06/16(火) 00:27:51
>>225 さん
確かに入れ子の取り方だと計算式はかなり難しいです。
それでは昇降盤で切れる最適取数が知りたいという質問であれば計算できませんか?
実際用途も材料を昇降盤で切るときに取数が計算できればと思い質問しました。
>>226 さん
入れ子の板取の方法もあれば、是非教えていただきたく
印刷屋さん等には重宝されるのではないでしょうか?
>>227 フィルタオプションでできると思う。
(オートフィルタとは別ね)
>>228 ここExcelスレなんで昇降盤とか入れ子とか
あまり一般的じゃない用語使う場合は多少の解説が欲しいな
板取りってのは何となく分かるけどさ
>>230 昇降盤は知らないが入れ子というのはExcelでは普通に使う。
2007ではネストにひっかかった時のエラーメッセージでも出てくるし。
×ネスト ○ネスト制限
板取の際の入れ子って意味じゃね 昔倉庫でバイトしてたときは回す、とか呼んでたな
汎用性の高いものは小手先のプログラムでできるようなものじゃない。 状況が限定されれば簡単になるけど、それには情報が少なすぎる。 材料も部品も長方形で、回転は90度単位で、部品のサイズがすべて同じで、 こんなふうに刃物が途中で止まるような切り方が許されないってなら だいぶ簡単になるんだが。 一一二 三捨二 三四四
235 :
名無しさん@そうだ選挙にいこう :2009/06/16(火) 10:50:00
【1 OSの種類 】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか 】 ほんの少し 【4 VBAでの回答の可否】 可 A1とB1の数値が共に1分おきに更新されます。 A1=0のときのB1の値をC1に代入して、そのまま保持させます。 次に再びA1=0になると再び同じことをくり返します。 このようなことを行いたいのですが、数式では困難に思いました。 VBAでよろしくお願いします。
>>235 「1分おきに更新されます」ってのは、誰がどうやって更新すんの?
この部分もVBAで作りたいってこと?
>>235 1分間隔とか関係なしに、A1に0が入った瞬間にB1をC1にコピーするだけ
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then
If Range("A1").Value = 0 Then
Range("C1") = Range("B1").Value
End If
End If
End Sub
239 :
235 :2009/06/16(火) 11:29:16
>「1分おきに更新されます」ってのは、誰がどうやって更新すんの? 機器からのデータをEXCELで受けています。 >238さんどうもありがとうございました。
>>239 >>238 のプログラムだと、A1が書き換わった瞬間にデータをコピーするから、
受け取ったデータをA1→B1の順にセットするようなプログラムの下では
うまく動かないよ。
人間の目にはA1とB1に同時にデータが入ったように見えるけど、
実際はA1が書き換わる→B1がC1にコピーされる→B1に新しいデータがセットされる
って順に動くから、1つ古いデータがコピーされる。
LARGE、SMALLを使って、配列内の上から2番目と下から2番目を取り出そうとしています。 これらの関数は、同じ値のトップが複数居ると、2番目もトップも同じ値を返してきます。 重複を避けたいのですが、何か関数はありますか? または、配列から重複を取り除く関数はあるのでしょうか? 調べた範囲だと、ソートして重複を削除する関数を自分で作るか、 セルに書き出して、AdvancedFilter Action:=xlFilterInPlace, Unique:=Trueを使うかの 2通りしか分かりませんでした。
RANK()ってしってる?
244 :
241 :2009/06/16(火) 12:58:19
RANK()は一位が2つあると2位がなくなって次は3位になる
作業列に=IF(MAX($A$1:$A$8)=A1,MIN($A$1:$A$8),A1)としてそれの最大をとるぐらいか
ピボットしてindexで取ってくればいいんだよ
大体重複を除いた順位ってどんなとき必要なの? 1位が二人いれば次は3位なのが当たり前と思うが。 1位の二人を何らかの基準で1位と2位に分けるのは分るが、本来3位のやつが2位ってのはおかしい。 同じ値のトップが複数居ると、2番目もトップも同じ値を返してくるのはごく当たり前だと思うが。
普通に上から3つの値を取りたかったら重複邪魔じゃん。馬鹿すぎないかさすがに?
「一位が二人」とか書いちゃってるのをみると、 スポーツとか入学試験とか、人間の順位を決めることしか頭にないんだろうな。
251 :
名無しさん@そうだ選挙にいこう :2009/06/16(火) 14:26:45
【1 OSの種類 .】 Windows XP Professional 【2 Excelのバージョン 】 Excel 2003 【3 VBAが使えるか .】 昨日はじめてさわりました 【4 VBAでの回答の可否】 可 【5 検索キーワード 】「空白」「詰め」「Excel」「VBA」 質問です。 Sheet1にのAには会費、雑費、交通費と3種類のジャンルがあり、B列にはその金額の数値がはいります。 それらの会費であれば別シート(会費シート)のA列に会費と入り、B列にその金額が複写されていく。いうものを作りたいのですが、 A B 会費 1000 会費 2000 雑費 500 会費 3000 となった場合、会費シートには1つ空白行ができてしまいます。 オートシェイプや、IF文、ジャンプDel等々あるのですが、そのぶん行が削除されてしまったりと、 表がくずれてしまいめちゃくちゃになってしまいます。 そこで空白が合った場合、詰めていってくれるコードなどおしえてもらえないでしょうか? にたような質問コーナーなどは沢山ありましたが、VBAをはじめてさわった自分には応用できそうにありません。 どうかよろしくおねがいします。
252 :
235 :2009/06/16(火) 14:31:03
>240 どうすればいいでしょうか…
>>252 機器からデータを受け取るプログラムが、
必ずA1→B1の順にデータを書き込むとか、ルールが厳密に決まっていればいいんだけど。
あるいは配列を使って2つのセルを同時に書き換えてるとか、
そういう仕様になってない限り、別のプログラムでなんとかするのはかなり難しいと思う。
どういう順番で調べても、タイミングによっては意図しない値がコピーされる可能性がある。
一つだけ方法があるとすれば、例えば0.1秒間隔のタイマーで2つのセルを監視して、
2回続けて内容が同じならデータの書き込みが完了したと見なす、みたいな方法かな。
少しタイムラグが発生するけど。
>>251 項目の分類や集計と体裁を整える作業は分けて考えるようにしなさい。
集計にオートシェイプは必要ありません。
見栄えよく飾り付けて印刷したい場合はワードにエクセルの表を貼り付ける
方法をおすすめします。
255 :
235 :2009/06/16(火) 15:08:00
>253 そうですか、どうもありがとうございました。
256 :
147 :2009/06/16(火) 15:16:05
説明不足ですみません
私がしたいの
>>234 さんが説明されている様に材料から同じサイズの部品がいくつ取れるかという計算がしたいです
昇降盤は切る際に途中で止まらない機械ですので5×5から2×3は3つしかとれません(この計算方法が知りたいです。)
5×5から2×3を4つ取るのが入れ子の取り方だと思っています。
>>256 それなら、
(1) 材料をそのまま使うか90度回すか
(2) 幅いくつで切るか(短辺と長辺の最大公約数の倍数の間隔で)
(3) できあがった2つの破片に対して再帰で計算
という手順で計算できる。
部品の数が多いと幾何級数的に計算時間が増えちゃうけど、
最近のパソコンは速いし、材料がそれほど大きくなければ
一晩ぐらいほっとけば答えは出るんじゃないかな。
>251 その処理はひんぱんに行うものでしょうか? 単にデータ件数が多いだけでは? マクロを使わなくても、オートフィルタで会費、雑費、交通費の3回に分けて絞り込んだ結果をコピーして、 それぞれのシートに貼り付けるだけではいけませんか?
>>251 Sub a()
Dim kaihi, zapi, kou
Dim gyo
gyo = Sheets("sheet1").Range("a65536").End(xlUp).Row
For i = 1 To gyo
Select Case Sheets("sheet1").Cells(i, 1).Value
Case "会費"
kaihi = kaihi + 1
Sheets("会費").Cells(kaihi, 1) = Sheets("sheet1").Cells(i, 2).Value
Case "雑費"
zapi = zapi + 1
Sheets("雑費").Cells(zapi, 1) = Sheets("sheet1").Cells(i, 2).Value
Case "交通費"
kou = kou + 1
Sheets("交通費").Cells(kou, 1) = Sheets("sheet1").Cells(i, 2).Value
End Select
Next
End Sub
そのシートがsheet1以外の名前の時は、sheet1というシート名に変えるか
マクロの記述を変更してください。範囲選択して置換すれば一発です
こんな感じでいいのかな。誰か検証して (1) 部品の短辺と長辺の最大公約数を求める 再帰ループ開始 (2) 材料の面積が部品の面積より小さかったらループから抜ける (3) 材料の短辺が部品の短辺より短かったらループから抜ける (4) 材料の長辺が部品の長辺より短かったらループから抜ける (5) 材料の面積が部品の面積の2倍未満なら部品カウンタに1を足してループから抜ける (6) 分岐…材料をそのまま使う / 90度回す (双方試す) (7) ループ…切断位置を決める (初期値は部品の短辺、終了値は材料の幅の1/2、間隔は最初に求めた最大公約数) (8) 2つの破片に対して再帰ループ
>>249 100 100 90 85 80
上から三つとるなら100 100 90をとるのが当たり前だろ?
100 90 85を取りたいときってどういうとき?
>>250 1位ってのは1番目に置き換えろよ。
お前スポーツも駄目、入試も不合格ばっかだったんだろ?
なんで意固地になってんのこの人 めんどくさw
俺はテストが2位でした。 ちなみに俺以外は全員満点でした。
265 :
251 :2009/06/16(火) 17:06:17
251です。
返信してくださった方々ありがとうございます。
また
>>259 の方マクロが未だに良く分かっていない自分にはコードをわざわざ
書いてくださって非常にたすかりました。
再度感謝です。
またなにあればよろしくおねがいします。
>>264 限界集落の分校で生徒が2人しかいなかったんだね
>>261 「100までの数をいっせいに言って、2番目に大きい数(重複除く)を言った人が勝ち」
みたいなゲームとか。
仕事上でどういう場面で使うのかちょっと思いつかないが、
別に必死に食らい付く様な事でもなかろう。
>>251 「フィルタオプションの設定」でググるともっと簡単な方法がすぐ見つかるよ
>>241 要するに本来の順位が変わらない範囲で差をつければいいわけだから
端数を足してからRANKで順位づけすればいい
100 100 90 85 80なら
100.01 100.02 90.03 85.04 80.05
これで解決
え?
271 :
名無しさん@そうだ選挙にいこう :2009/06/16(火) 18:59:47
バカと粘着しかいねーのかwすげーなここはw
>>147 そういうのはシェアウェアが出ているくらい”銭”になる計算式(ソフト)になりますので
そういうのを他人に頼って創るのはどうかと。
仮にそれ相応のレスが有ったとしてキミがそれをシェアウェア(金儲け)として
使用しないと断言できるのだろうか?
上記のそれ相応のレスした人が不憫だと思うのだが。
>>272 いや回答者は好き勝手答えてるだけだから
そんなの別にどうでもいいよ
>>269 意味を取り違えてるらしいが、
>>247 のピボットですでに解決してるんだよ。
解決したうえで、どういう場面でそういう重複しない2番目の数値が必要なのか聞いてる人が一人いるわけだ。
世の中には
>>248 みたいなkとが分らない人はたしかにいることはいるが、まぁなんか訳があるんだろう。
おれもちょっと実務では思いつかないけどな。
興味がわるから
>>241 に聞いてみたい気はするが。
ボーリング大会とかでブービー賞(ビリから2番目)を決めたい時
1位 1位 3位 4位 4位 4位 7位 みたいに同順位は横並びで、縦方向は行間を詰めずに表示したい なんて場合に使い道あるかな。
278 :
名無しさん@そうだ選挙にいこう :2009/06/16(火) 20:27:17
スケートの審査点で最高点と最低点を除外して合計するときの前処理段階とか・・・
>>247 のピボットが、元データの変更にも対応しやすい方法だと思うよ
ピボット絶賛中に悪いが
>>277 みたいな表はピボットじゃむりだぞ
>>278 昔はそうだったが今のスケートの点数はそんな風にださないんじゃね?
抽選で二人除外するんじゃなかったか?
ちなみに昔は韓国人審判の日本サゲはデフォだったもんな。
ランク系の関数の質問です。 りんご 120 みかん 100 いちご 150 トマト 90 なす 70 レタス #VALUE! 1位 (いちご) 2位 (りんご) 3位 (みかん) とあってこれでランクを関数で自動的に抽出しようとすると、 #VALUE!があってランク付けができません。( )内としてランク付けを したいのですが、どうしたらできますでしょうか?宜しくお願い致します。
#VALUE!を消す
>>282 すいません、あるもとのとしてお願いします。^^;
#VALUE!か#N/Aにしろエラー系を含む形です。m(_ _)m
ISERRORでエラー値だったら""にできるのに
285 :
281 :2009/06/16(火) 21:17:18
セルちょっと変ですね。訂正します。
りんご 120 (2)
みかん 100 (3)
いちご 150 (1)
トマト 90 (4)
なす 70 (5)
レタス #VALUE! (6?)
>>284 ありがとございます。ちょっと色々と試してみます!
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 1組8列のデータがあり、それぞれ一番左の値を比較して合致してるか調べるとき、 Q列に =EXACT(A2,I2) を入れて判断しています。 しかし、1行でも間違ってたら、それ以降は全てFalseを返してしまいます。 Trueとなるように行を調整(行の挿入で位置合わせ)したいのですが どのようにすればいいでしょうか?
Q2 =A2=OFFSET(A2,0,8)
>>277 おおっ、それ俺がvba使えるようになる前はやってたわー懐かしい。
確か最終的に元データをユニークなデータにしてから並べる関数にした記憶がある。
今だったらそんな面倒なシート作りいやだなー。嫌いではないが。
289 :
名無しさん@そうだ選挙にいこう :2009/06/16(火) 23:24:19
かわいそうに
290 :
名無しさん@そうだ選挙にいこう :2009/06/16(火) 23:32:41
バカなのは構わないけど、それをなんとか認めないように必死なのは見てらんないなw なんでも知ってる気分を邪魔されるのが我慢できないクソなんだろうけど
>>289 どれに対するレスなのか分からんので意味が分からん。
雑談なら雑談スレへどうぞ
字間を詰めることはできますでしょうか? 超初心者な質問で申し訳ないですがよろしくお願いします
なんかさっぱりわからんけど
>>290 は病気じゃね?
>>292 多分できない
ってゆうか、Excelのデフォルトの字間は充分狭いと思うけど・・
広げるほうならセル配置を工夫すれば均等割り付けなどで
どっちにせよWordほどの融通はきかないよ
>>292 無理
字間を調節したいときはワードを使ってください。
289=290 バカなのは構わないって自己紹介してるしw
セルを一つ飛ばしで、2、4、6〜端っこまで、 とか指定して合計や平気を出したいんですが、 セルの指定はどう書けばよいのでしょう?
>>300 セルが連続してない場合は一発で求める関数がないので工夫する。
(例)A1からA6までの偶数行だけの合計
=SUMPRODUCT((MOD(ROW(A1:A6),2)=0)*(A1:A6))
平均は合計を個数で割る
また遅いって文句言われそうだけど
>>300 =SUM(A2,A4,A6,A8,A10……)
集計したい横の列に1を入力しておいてSUMIFがいちばんかんたん
行列、共に隙間なく表になってるから無理だす
306 :
名無しさん@そうだ選挙にいこう :2009/06/17(水) 13:50:46
そこで配列数式でしょう
よし、VBAの出番だな
308 :
名無しさん@そうだ選挙にいこう :2009/06/17(水) 14:03:30
目的のセルに =SUM(IF(MOD(ROW(A2:A10),2)=0,A2:A10,0)) と入力 CTRL+SHIFT+ENTER 平均はSUMをAVERAGEに変えるだけ。
309 :
ism :2009/06/17(水) 15:03:42
すみません、Officeの方で回答得られなかったので、こちらで質問させてください。 Excel2007で右クリックで出る書式メニュー(右クリックメニューと少し離れて表示されるメニュー) のカスタマイズって出来ますか? このメニューの名前もわからなかったので、検索もできず・・・ もし名前ご存知でしたら、そちらでも結構です。 よろしくお願いいたします。
311 :
ism :2009/06/17(水) 17:05:10
> 310 即回答ありがとうございます! カスタマイズできないってことでいきます。
オートフィルを使う場合セルの右下を左クリックで摘みますが、 キーの操作でその摘んだ状態にすることは出来ないでしょうか。 Excelのバージョンは2003と2007の両方でお願いします。
>>312 右下の黒いポッチの名前はフィルハンドルという。
キーボードでやりたい時はショートカットキーで
メニューバーのメニュー開いてオートフィル選ぶしかないです。
状況が限定されるならマクロ。
>>312 オートフィルとはちょっと違うけど
たとえばA1に入ってるものをずっと下にコピーするなら
A1を選択→Shift+↓で範囲選択→Ctrl+D
でA1の内容を下方向にコピー出来る。
右方向にコピーしたいならCtrl+R
データの入ってる範囲を選択するならShift+Ctrl+↓でもいける
>>305 うそつきは泥棒のはじまり。
仮に本当でも別シートに書けば無問題。
317 :
312 :2009/06/17(水) 17:37:27
>>313-314 上手い具合にやることは出来ないんですね。
参考になりました。ありがとうございます。
>>300 SUMPRODUCTなら
=SUMPRODUCT(MOD(ROW(A1:A6)+1,2),A1:A6)
これなら
>>308 同様文字列は無視してくれる。
文字列の任意の位置に任意の文字列を追加する関数などはありますか? バージョンは2003です
>>319 そのものズバリの関数は無いが
LEFTやRIGHTやMID関数を組み合わせれば出来る。
>>319 ,
>>321 またずいぶん物わかりのいい人だな。
A1の文字列の3文字目に"xyz"を挿入したければ
=REPLACE(A1,3,,"xyz")でok
へぇ
>>322 この方が式がスマートになりますね。
ありがとうございます。
INDEXとMATCH関数の質問です。 りんご 150 みかん 150 ばなな 200 いちご 120 ぶどう 300 1. ぶどう 2. ばなな 3. りんご 4. #N/A 5. いちご 上記のように関数で拾うと、事実上同列順位3位であるはずの「みかん」 が拾えません。別の関数等でも結構ですが、同列順位も表示させるには どうしたらいいでしょうか?宜しくお願い致します。
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 少し 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Excel ピボットグラフ 入力されない おねがいします Excelを使って毎日の売上を管理しています。 ピボッドグラフというのを使って、表とグラフを出すことにしたのですが、 売上がない日は項目としてあがってこなくて困っています。 グラフは縦軸に売上、横軸に日にち(1ヶ月分すべて)で、 商品ごとに棒グラフにしたいのですが、 売上がない日はつまって表示されてしまい、 月のどのあたりがダメなのかがわかりづらいのです。 売上がない日もグラフに出す方法はあるでしょうか。 売上がない日は、適当な商品に0円の売上データを入れようとも思ったのですが、 ゴミみたいなデータになりそうで躊躇してます。 日にちと日付を違うセルに分けてやってみたり、 なんだかわけがわからなくなりました。 横軸の日にちは31日固定でいいのですが、 何かいい方法があればご教授ください。
>>326 >>適当な商品に0円の売上データを入れようとも思ったのですが
基本的にそれでいいんじゃないの?
適当な商品じゃまずいから「売上無し」みたいな仮の商品を作って、その売り上げを0円とかに設定すればいい。
269=325=327 うわー気持ち悪っ
332 :
325 :2009/06/17(水) 21:32:47
>>327 端数はないものとしてお願いしますm(_ _)m
>>331 =248
お前はいつまで必死に粘着してるんだよw
世の中には自分の想定外の事が色々あるんだよ
自分の思慮の浅さを素直に認めろよw
index+matchで「順位」なんて言葉出ないし こわー
>>332 元のデータは金額だから端数が無いってのは分かってるよ
元のデータに無理やり適当な少数を足して、同一順位の物が絶対出てこないようにすればいいだろって話
つか、うわ 書き込んでる間にまたやってる 病院いっておいでよ本当に
あ、金額と限らないか、よく分らんが個数とかか?
339 :
325 :2009/06/17(水) 21:51:33
>>335 基本的にセルに端数を打ち込むのは避けたいんですが、
やっぱり数式に「+0.0001」「+0.0002」とか打っていくしかないんですかね・・・?
ほんっと頭悪いな ランダムでも連続でも日付でもダブらない端数ならいいんだよ 横の列につくって加算する式つくって順位づけすればいいだろうに
ちなみにカルシウム不足でイライラしてる
>>340 は俺とは別人ですよ(^^;)
手書き用の見積書をエクセルファイルで再現する作業をしています 金額の欄が一桁ごとに縦棒で区切ってある仕様(例参照)なんですが こんな感じの外見を維持しつつ、入力してある数字を一つのデータとして 認識させて(例の場合は1234567)、下部でsumを実行させることは可能でしょうか? 例)こんな感じ ________________________________________ │ │ │1│2│3│4│5│6│7│円  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>342 =VALUE(SUBSTITUTE(A1,"│",""))
344 :
286 :2009/06/17(水) 22:13:19
286ですが
345 :
325 :2009/06/17(水) 22:13:37
>>340-341 やっぱり加算用のセル(端数)を別途設けるしかなさそうですね・・・
ありがとうございました
実際には1セルに1ケタ入力されてるんじゃないの? だったら =1*1000000+2*100000+3*10000(以下略 または数値がA1:G1にあるとして =(A1&B1以下略)+0
D:\Excel\files\ の中に、次のファイルがあります。 PS655M_CBX20090422_093329.CSV PS655M_CBX20090525_135112.CSV PS655M_CBX20090617_152657.CSV B3セルに 05 と入れてボタンをクリックしたら、PS655M_CBX20090525_135112.CSVを 開きたいのですが、実行時エラー'1004' "D:\Excel\files\"が見つかりません とエラーになってしまいます。しかし、D:\Excel\files\は、実在します。 ググって、見よう見まねでマクロを書きましたが、それぞれの意味もよくわかってないので、 どこを直せばいいのかも分かりません。。。 教えて、優しい人。 Sub CSVを開く() Dim DDrv, MONTH, FSO, CSV, FN DDrv = "D:\Excel\files\" MONTH = Range("B3").Value Set FSO = CreateObject("Scripting.FileSystemObject") For Each CSV In FSO.GetFolder(DDrv).Files If Mid(CSV, 15, 2) = MONTH Then FN = CSV End If Next CSV Workbooks.Open Filename:=DDrv & FN End Sub
>>343 すいません、ヘルプ見つつやってるんですが上手くできません(´;ω;`)
>>346 現状そういう風に(1セルに1ケタ)入力されてます
で、そうした文字列(金額)が10項目ほど縦に並んでいて
最下部にその合計(と消費税と消費税込み金額)が並んでます
ちなみに文字列の桁数は項目ごとに違います
これをなんとか数字を入力するだけで下部に合計の数字を出すことはできるでしょうか?
>>348 とりあえず1の位がZ列にあると仮定する
=MOD(SUM(Z1:Z10),10)
10の位は1つ左のY列
=MOD(SUM(Y1:Y10)+INT(SUM(Z1:Z10)/10),10)
みたいに、繰り上がりの計算を自力でやる。
式がどんどん長くなるから、個人的にはあまりおすすめしない。
作業列を用意するか、表示用シートと計算用シートを分けた方がいいと思う。
>>347 これでおk
Sub CSVを開く()
Dim DDrv, MONTH, FSO, CSV, FN
DDrv = "D:\Excel\files\"
MONTH = Range("B3").Value
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each CSV In FSO.GetFolder(DDrv).Files
If Mid(CSV, Len(DDrv) + 15, 2) = MONTH Then
FN = CSV
End If
Next CSV
Workbooks.Open Filename:=FN
End Sub
>>345 残念そうなのが引っかかる・・・
複雑な計算をさせる時に作業用の列を設けて
何ステップかを経て最終結果を求めるのはExcelでは普通にやる事。
なぜか質問者に作業列を設ける事を嫌がる人が多いんだよな。
画面に表示したくなければ非表示にする事も出来るわけだし、
いちいちそんな事気にしてたら仕事にならんよ。
>>348 なんで直接加算しようとするかなー?
>>346 とかで、いったん隣の列あたりに通常の数値に戻して入れてから加算すればかんたんじゃん
>>349 なるほど、よく分かりました。
ありがとうございます○┓ペコリ
>>353 あーなるほど。
その方向でやってみます
ありがとうございました○┓ペコリ
355 :
342 :2009/06/17(水) 23:05:06
何度もスイマセン
文字列(金額)のとなりに非表示の計算用の列を作って
そこに
>>346 さんの教えてくれた形式で戻した数字を入れて
最下部でsumさせたんですけど、合計の文字列(金額)の
(表示させる印刷用の)部分も一桁ごとに別のセルになってます
計算用の非表示の列でsumさせて出た合計の数字を
その一桁ごとに仕切られた印刷用のセルに
一桁ずつ割り振って入力させることはできるますでしょうか?
めんどくさい質問で申し訳ありませんがよろしくお願いします<(_ _*)>
356 :
347 :2009/06/17(水) 23:08:51
>>350 おぉ!開けました。
ありがとうございます。
ついでに質問ですが、For Eachで探す場合は複数あっても
見つけた時点でループをやめるって、どこかのサイトで読みました。
だったら、Workbooks.Open Filename:=CSV でも良い気がするんですけど、
実行時エラー'1004'になってしまいます。
何で?
>>356 CSVをウォッチしてみればわかるけど、見つけてもループは終わらないから
>>355 文字列操作関数でもMODとINTの組み合わせでもどちらでもできる
A1に最大8桁の数値が入る場合、A2=RIGHT("0000000"&A1,8)
1桁目は=MID(A2,8,1)
2桁目は=MID(A2,7,1)
以下略
359 :
347 :2009/06/17(水) 23:18:52
>>357 そうなんですか、分りました。
ありがとうございます。
360 :
342 :2009/06/17(水) 23:44:57
>>358 合計額の桁数は毎回一定ではないのでmodとintを使ってやってみました
そしてほぼ上手くいったのですが、8桁(セル)で合計の欄を作った場合
合計の数字が7桁だったりすると、1桁目のセルに「0」が入ってしまいます
この「0」をなんとか表示しないようにする方法はないでしょうか?
何度も何度もスイマセンが、よろしくお願いいたします<(_ _*)>
>>358 の"0000000"のかわりに" "でもおk
あ 消えてる " "の間は半角スペース8個ね
てゆーかmodとintなら
>>358 の方法は使わないはずだな
オプションの表示でゼロサプレスするか、ifで0なら""に置き換えるとかすれば?
363 :
342 :2009/06/18(木) 00:14:59
>>362 すいません、一生懸命ヘルプ見ながら調べてたんですが
仕事の疲れから眠気が限界で頭がまともに働きません
明日時間を見つけてまたやってみます
色々教えてくださり本当にありがとうございました○┓ペコリ
>>328-330 返事が遅くなってすみません。レスありがとうございます。
やぱりピボッドテーブルの機能では無理で、
データに何らかの工夫をしなければならないんですね。
グラフに関するテクニックありがとうございます。
それもつまづいたんですが、格闘のすえ解決しました。
ここで聞けばよかったかもです。
365 :
名無しさん@そうだ選挙にいこう :2009/06/18(木) 03:35:37
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel 2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 エクセル 関数 抽出 重複 無視 sheet1 A B 1 コード 金額 2 A001 \500 3 B001 \500 4 B002 \200 5 A001 \300 6 B002 \500 sheet2 A B 1 コード 金額 2 A001 \800 3 B001 \500 4 B002 \700 A列のコードをsheet2のようにまとめる関数を教えてください B列のSUMIF関数での集計は自己解決してます よろしくお願いします
>>342 1セルに普通に入力し
適当な文字の大きさにし、
オートシェイプで、枠を重ねろ。
そうすれば普通に計算できる。
今からできるか確認してくる。
できないことはないが、字間が不自由だな。
>>365 重複しないリスト作ってSUMIFは馬鹿のやること。
どこかのDQNなら重複しないリストの作成をINDEXとSMALLとMATCHとROWを使った配列数式でやりそうだがw
フィルタオプション使うのも駄目。
ピボットテーブルが正解。
行フィールドにコード、値フィールドに金額を引っ張り、集計方法を合計にすりゃよい。
データが変わるたびに更新するだけだ。
データソースの範囲はあらかじめ広く取っておくか=Sheet1!$A$1:INDEX(Sheet1!$B:$B,COUNTA(Sheet1!$A:$A))を名前定義して使えばよい。
VBAが出来る人はVBAで取得してもいいけどな。
しかし馬鹿がわいてきそうだな。
369 :
名無しさん@そうだ選挙にいこう :2009/06/18(木) 09:09:19
>>365 368が一番簡単で早い。
面倒なやり方すれば、コード順でソート→集計→
折りたたんで可視セルのみコピって貼り付け。
>>368 単純なピボットならいいが、行フィールドに複数項目入れると
小計とか一々出てきてダルいんだが、これは俺の使い方が悪い?
教えて頼む。
>>369 項目の先頭を右クリックして設定で不要な部分を折り畳める
右からn桁目を取り出す =LEFT(RIGHT(" "&A1,n),1) 追加するスペースは1個だから桁数が増えてもこのま使える コピペできるバージョン =LEFT(RIGHT(" "&$A1,9-COLUMN()),1)
372 :
名無しさん@そうだ選挙にいこう :2009/06/18(木) 10:03:57
すみません、計算して小数になったものを一桁で四捨五入して10円単位にしたいのですが、 どういう式を入れたらいいでしょうか? 554.16を550にする等 本を調べてみたけど、よくわかりません お願いします、教えて下さい
>>372 =ROUND(A1,-1)
2番目の数字が桁数。マイナスにすると小数点より左の何桁目という意味になる。
374 :
名無しさん@そうだ選挙にいこう :2009/06/18(木) 10:52:09
>>373 もうほんとに助かりました
感謝、感激です!!
早速にレス頂き、本当に有り難うございます
375 :
名無しさん@そうだ選挙にいこう :2009/06/18(木) 12:54:01
すみません、さっきはどうも有り難うございました 表を印刷すると、普通数値が印刷されるのですが、すべて数式を表示させて印刷したいのですが、 そういう事はできるのでしょうか 調べてみたけど、一部を表示させる方法しかわかりませんでした
>>375 ツール → オプション → 数式にチェック
むしろ、一部だけ表示させる方法なんてあったっけ?
377 :
名無しさん@そうだ選挙にいこう :2009/06/18(木) 13:56:49
できました 本当に有り難うございます 一部というか、そのマス目だけのが載ってたように思います ほんとに助かりました 感謝です!
>>376 '=A1+B1
みたいにすることじゃないかな
他には「=」を「'=」に置換すれば表示できるよ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 エクセル 文字列 並び替え A 1 A 2,3,4 B 5 C 6,7 上記のように並んでいる文字列を下記のように並べ替えることは出来ますか? :と;と,も必要です。。 A:1,2,3,4; B:5; C:6,7;
>>379 それって1つのセルに「A 1」って入ってんの?
それとも「A」「2」「3」「4」て4つのセルに分かれてるの?
Range("A1") = "" Range("A1").ClearContents Range("A1).Delete shift:=xlup これらの使い分けを教えて。
382 :
381 :2009/06/18(木) 20:23:34
x Range("A1).Delete shift:=xlup o Range("A1").Delete shift:=xlUp
Range("A1") = "" と Range("A1").ClearContents は同じ。 Range("A1).Delete shift:=xlup は行削除、他のセルにも影響する
384 :
381 :2009/06/18(木) 20:55:06
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel20000 画面のチラツキを無くすのにApplication.ScreenUpdating を書いてますが、 CallとCallの切り替わりで無効になっているようです。 Callを使ってもチラツキを無くすにはどうすればいいですか? Sub あ() Application.ScreenUpdating = False Call い Call う Call え Call お Application.ScreenUpdating = True End sub ----------------------------- Sub い() Application.ScreenUpdating = False 略 Application.ScreenUpdating = True End Sub ----------------------------- Sub う() Application.ScreenUpdating = False 略 Application.ScreenUpdating = True End Sub
い〜おのApplication.ScreenUpdating = True を消す
>>380 左のアルファベットで1セル 右の数字郡で1セルです。
よろしくお願いします。
>>379 C1=開始
D1=A1&":"&B1
C2=IF((A2<>A1)*(A2<>A3),"一行",IF((A2=A1)*(A2=A3),"継続",(IF(A2<>A3,"終了","開始"))))
D2=IF(C2="開始",A2&":"&B2,"")&IF(C2="継続",D1&","&B2,"")&IF(C2="終了",D1&","&B2&";","")&IF(C2="一行",A2&":"&B2&";","")
C2D2を選択して下にオートフィル
E1=IF(OR(C1="終了",C1="一行"),D1,"")
下にオートフィル
最後にE列で空白以外の条件でオートフィルタをかければ終わり
一応言っておくと C1=開始 とはC1セルの中身が「開始」って意味ね 数式でも同様
シートの名前がPゴシック(?)で読みにくいので、MSゴシックとかの 等幅フォントに変えたいのですが出来ますか?
OS::XP Excel2000 VBA いいえ VBA回答 いいえ 検索ワード excel 置き換え 付加 札幌営業所 盛岡営業所 東京営業所 などといったセルの先頭に[ 末尾に]をつけて []でかこみたいのですがやりかたがわかりません 所を所]に置き換えて末尾に]をつけることはできるのですが頭がばらばらで解決になりません・・・・
392 :
名無しさん@そうだ選挙にいこう :2009/06/19(金) 01:06:27
>>391 たとえばA列にそれがあったらB列に式で
= "[" & A1 & "]"
と入れてそのままB列を使うか、B列をコピー>A列に値で貼り付けで上書きしちゃう
>>391 ="["&A1&"]"
ってやってから値コピー
時間を下のように繰り返し入力していきたいのですがどのような式を使えばよろしいでしょうか。 00 01 . . . 23 00 01 indrectかな(´・ω・`)?
2回繰り返してからオートフィル使ったら出来た・・・(´;ω;`)
でも式で書くとどうやるんだろう。。 modだと 1234ってなるから01 02って出来ないよね(´・ω・`)
式の場合、 A1=0,セルの書式設定→ユーザー定義を00にすると00で表示します。 A2 =A1+1 でA2をA24までコピペ ちとめんどい. A1=0,セルの書式設定→ユーザー定義を[hh]にすれば以降A24までオートフィル どっちも23の次に00をもってくるならA1をコピペでどうぞ。
単に見た目だけ変更したい場合は、変更したい範囲を選んでから セルの書式設定 − 表示形式 − ユーザー定義 とし、種類の欄に "["@"]" でOK。
>>397 text関数、ROW、MODを組み合わせるとか
まぁユーザー書式と同じようなもんだがね
402 :
名無しさん@そうだ選挙にいこう :2009/06/19(金) 09:07:33
403 :
名無しさん@そうだ選挙にいこう :2009/06/19(金) 10:14:45
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━ 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】エクセル 並び替え エクセルで個人データの管理をしているのですが。 住所の並び替えで2003まで普通にできた事できなくなっております。 以前は、昇順で並び替えをした場合。 ○○町30 ○○町1000 ○○町500 ○○町30 ○○町1000 ○○町500 ↑ ↑ 以前はこのように数字の 2007では○○町の次の数字の一桁目で並び替えされています。 小さい順から並び替えされていましたが。 セルの書式設定で、表示形式を文字に変えたりもしたのですが、2003の時のような 並び方にはなりませんでした。どのようにすれば、2003の時のように 並び替えをできるのか教えてください。
そんな事ある? 2003でも普通は文字コードで並べ替えるんじゃなかった? なんか別な列で並べ替えてたんじゃね?
405 :
403 :2009/06/19(金) 10:38:30
>>404 はい、私も、使い慣れないので別の列を並び替え他のかもしれないと思い
何度もやってみましたが、結果は上記の通りになってしまいます。
>>405 2003も同じだと思うが?
文字列なら左側みたいにゃ並ばんよ。
そーいうこと 並んでたって言うのは思い込みなんじゃね?
XP以降のファイル名の順番と混同してるのかな
409 :
403 :2009/06/19(金) 11:42:28
すみません。今2003を起動して確かめてみたら
>>406 の言う通りでした。
私の勘違いでした。申し訳ありませんでした。
>>410 こういうめんどくさい処理にはVBA使え.
とは言っても、人間にとっては極めて単純な作業だから、
これをエクセルでやろうとすると実は結構めんどくさいってのが
わかんないんだろうなあ
ピボットテーブルでほぼ近い結果は得られる 仕上げに関数と手作業は必要になるけど
シートの名前がPゴシック(?)で読みにくいので、MSゴシックとかの 等幅フォントに変えたいのですが出来ますか?
414 :
名無しさん@そうだ選挙にいこう :2009/06/19(金) 21:10:32
下記のようなエクセルの表を作りたいのですがどのように設定すればよいのでしょうか?
りんご、みかん、イチゴ、にんじん、レタス、白菜・・・このような感じで果物と野菜を書いて
その横のセルに1、2など数量を入力したとします。そして その合計を果物や野菜別に出す方法って可能でしょうか?
出来れば品物はプルダウン(データ→入力規則→リスト)で選べるような方法を考えています。
A1 品物をプルダウンで選ぶ(例えば イチゴ) B1 15
C1 品物をプルダウンで選ぶ(例えば にんじん) D1 8
E1 品物をプルダウンで選ぶ(例えば レタス) F1 11
G1 品物をプルダウンで選ぶ(例えば 白菜) H1 3
I1 品物をプルダウンで選ぶ(例えば みかん) J1 13
こんな感じで作り
K1 果物の数の合計(答え的にはイチゴとみかんの数の合計28)
L1 野菜の数の合計(にんじん、レタス、白菜の数の合計22)
を出す方法ってありますか?
伝えるのが難しく うまく文を書けませんが分かる方がいましたら宜しくお願いします。
イメージ的には
http://www.imagegateway.net/ph/OPA/aig/29uhaZeDr47sCNBM3603ks3kskXL0103kskXLyCw4Fpmg.jpg こんな感じでピンクの部分が表示されると助かります。
【1 OSの種類 】 Windows XP 【2 Excelのバージョン】 Excel 2003 【3 VBAが使えるか】 いいえ
【4 VBAでの回答の可否】 否 【5 検索キーワード】 合計 プルダウン 商品別
VBAでやれば簡単にできることを、無理矢理ピボットを使おうとするヤツってwwww
先生! メロンは果物ですか? 野菜ですか?
>>413 まともな方法じゃ無理
やるとしたらリソースハッカーでフォント名書き換えかな
すんなりできるかわからんけど
418 :
名無しさん@そうだ選挙にいこう :2009/06/19(金) 22:05:42
>>416 すみませんが わからないなら 黙っていて下さい。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Google EXCEL 関数 データが↓みたいな並びで1セル1データで30個くらいあります 例データ A A A A A B A A A 〜A 全て同じならTRUE 一つでも違うデータが混在していたらFALSEになる式はありますか? 例データで言いますと、Bが混ざっているのでFALSEになるようにです。
全部Bの場合はtureなの?
>422 はい、そうです データの中身はランダムで何でも入ってきます。 目的は、中身が全て同じか確認したいのです。
>>421 =COUNTA(1:1)=COUNTIF(1:1,A1)
こんなとこかな
>>424 同じこと考えたけど空白もfalseにしなきゃいけなかったらダメでは?
>>414 果物か野菜かの判別をするための指標を「品物リスト」に
追加すれば簡単にできるよ。
>424 ありがとうございます!!! >425 空白は無視しています。 ありがとうございます。
A4の紙に付箋を貼り、付箋に文字をプリントしたいのですが、 エクセルに付箋のサイズを設定した四角をオートシェイプで 作り印刷すると、毎回数ミリ小さく印刷され、 サイズを見直すと設定したサイズより小さくなっています。 どうすればサイズが変わらずきれいにプリントできるでしょうか? プリントする文字は毎回変わるので、フォーマットを作っておきたいのですが。
>421 =A1=REPT(LEFT(A1),LEN(A1))
添削 =A1=REPT(LEFT(A1,1),LEN(A1))
>>428 いろんな大きさの文字を印刷して、
ちょうどいいのを選んで付箋に糊で貼れ
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 現在勉強中 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 マクロ ユーザーフォーム 入力 一覧表への単調なデータの入力をユーザーフォームを使って行いたい。 入力項目は6つでそのうち4つは文字や数値を手入力、2つはリストから選択して入力させる。 現在は入力したデータを表示させる一覧表とユーザーフォームの作成し、 ユーザーフォームを立ち上げるコントロールをクリックするとユーザーフォームが立ち上がるところまではできました。 しかし、ユーザーフォームで入力項目を入力し終わって登録させるボタンをクリックしても一覧表にデータが追加できません。 新しい行が一行追加されるだけです。 入力したデータを一覧表に反映させるためのマクロ記述に問題があると思うのですが、 現在もっているマニュアル本で調べてもどこがどのように間違っているのか分からない状態です。
433 :
432 :2009/06/20(土) 14:09:05
>>432 の続きです。
以下のどこかに記述の間違いがあると思うのですが…。
お気付きの点があれば教えて頂きたいと思います。
ちなみに5,6がリストから選択して入力できるようにしたい部分です。
'行数の取得
rowsCount = Range("本一覧").Rows.Count
'最下行に行を挿入
Range("本一覧").Cells(rowsCount, 1).EntireRow.Insert
'データをセルに入力する
Range("本一覧").Cells(rowsCount, 1) = BookNameBox.Text
Range("本一覧").Cells(rowsCount, 2) = WriterNameBox.Text
Range("本一覧").Cells(rowsCount, 3) = PressCompanyNameBox.Text
Range("本一覧").Cells(rowsCount, 4) = NumberBox.Text
Range("本一覧").Cells(rowsCount, 5) = PointNameCombo.Value
Range("本一覧").Cells(rowsCount, 6) = AdressCombo.Value
'[本追加]ダイアログを閉じる
Unload Me
よろしくお願いします。
Range("本一覧").Cells(rowsCount, 1) = UserForm1.BookNameBox.Text って事じゃないの? >430 初心者は省略しない方がいいかもね
LEFTは省略できたのか しらんかったよすまん
436 :
432 :2009/06/20(土) 14:44:04
>>434 できました!
ありがとうございましたm(__)m
厚かましいお願いになりますが、マクロを作っていく手順書みたいなものがあれば教えて頂けませんか?
今もっているのは個別のマクロ記述についてのモノで辞書のように使うには便利なのですが、
もう少し概要を学んで大まかなマクロ作成の流れやパターンが紹介されているものを読んでみたいのです。
アマゾンなどで調べてもそういった本が見つからなかったもので。
もしご存じでいらしたら教えて頂けたらと思います。
>>428 そういうのはWordでやった方がはるかに簡単だよ
>>436 手順って、ねぇ
マクロ程度なら順番にさせるだけだしな
ifとfornext覚えたらナンとでもなる
極端な話マクロの記録だけでもok
キレイなコードを書きたいならデザインパターンで調べると吉
>>436 Excelのマクロって限定しないで
一般的なプログラミングの入門書みたいなの読めばいいんじゃないかなあ。
概念的な事でつまづいてるならわざわざ買わずとも
ネットで調べるとか図書館で借りるだけでもいいと思うし。
XP バージョン2003 VBA 否 二つのセルの中の文を入れ替えることって簡単にできるでしょうか? excel 入れ替え などでググったけど、行と列の入れ替えに関するものばっかり出てきます……。 あと、コピー&ペーストで、セルの中の文だけじゃなく、セルの形式?や枠線?みたいなのまでコピーされてしまうのが困ります。 セルの中の文章だけを簡単にコピー&ペーストできる方法ってないでしょうか?
>>440 その著者、今はどうだか知らんけど500連発出したころはかなりひどくなかったか?
Selectばっかじゃなかったっけなぁ。
どこかに変数の宣言はしない、インデントはいい加減、Selectばっかの三重苦でいつもおふざけの人がいたがどうも彼とかぶるんだよな。
500連発の他の著者の一人かも知らんが。
>>441 どっか別のセルに値としてコピーするしかないな
>>442 俺は変数の宣言無しやSelectしてても読めるからまぁ許せるが、インデントぐちゃぐちゃは駄目だな。
本を出すようなやつでいくらなんでもインデントぐちゃぐちゃはいないと思うな。
Selectばっかで本を出すやつは昔は結構いたよ。
セル入れ替えはVBA書いてボタンに登録しとけばかんたんだね
>>441 A1とB1を入れ替えたいとすると
A1をC1にコピー
B1をA1に
c1をB1に
というふうにワンテンポオクしかない
>441 セルが隣り合っていればソートでもいい。(書式も入れ替わるけど) 同じ行の場合(例えばA1セルとB1セル)の場合は オプションで「方向−列単位」を選べばいい。 入れ替わらなかったら昇順と降順を入れ替えるだけ。 隣り合っていなければ>443、>447のように別セルを利用して2回コピーなり移動なりするしかない。 現実でも、2枚の皿にタマゴ(なんでもいいけど)が1個ずつあって「片手」で入れ替えることを 想定したらわかる。皿以外の場所にタマゴを置いてはいけないならもう一枚皿を用意するしかない。 これと同じ。
Officeクリップボードを使用する
>>441 2つのセルが隣り合っていれば
右(または下)のセルの枠の部分をShiftを押しながらドラッグすると入れ替えられる
>>450 上下は出来るけど左右が出来ないんだが、コツがあるの?
452 :
441 :2009/06/20(土) 22:00:30
申し訳ないのですが、VBA使えるとしたら、どういうふうにしたらいいんでしょう?
A1とB1を入れ替えたいとすると A1を上に放り投げる 落ちて来る前にB1をA1へ入れる 落ちてきたA1をB1で受け止める
お手玉かよ。
入れ替えるセル位置は常に固定ですか? それともその都度変わる?
>>451 B1のセルのはしをシフトクリックしてA1の左端に持っていく
こんな機能初めて知ったわ
>>452 Sub a()
Dim a
a = Cells(1, 1)
Cells(1, 1) = Cells(1, 2)
Cells(1, 2) = a
End Sub
隣り合ってればB1切り取ってA1にはりつけるのが早いんだけどね
離れてるならこうと思うけどもっと楽なやり方あるのかな?
>>452 Sub 入れ替え()
Dim r As Range
Dim buf As Variant
Set r = Selection
If r.Count = 2 Then
If r.Areas.Count = 1 Then
buf = r(1).Value
r(1).Value = r(2).Value
r(2).Value = buf
Else
buf = r.Areas(1).Value
r.Areas(1).Value = r.Areas(2).Value
r.Areas(2).Value = buf
End If
End If
End Sub
458 :
451 :2009/06/20(土) 22:38:02
>>456 トン
出来たわ。
おれもこんなの初めて知った。
>>457 は二つのセルを選択して実行だからな。
とびとびセルなら2個目の選択はCtrlキーを押しながらクリックだ。
似たような記述が2回あるから二つのプロシージャに分けた方がいいかも知らんけど。
似たような記述が2回の回避はこうすりゃいいのか。 オナニー気味ですまんね。 Sub 入れ替え() Dim r As Variant Dim buf As Variant Set r = Selection If r.Count = 2 Then If r.Areas.Count = 2 Then Set r = r.Areas End If buf = r(1).Value r(1).Value = r(2).Value r(2).Value = buf End If End Sub
SO201v1.03.xls にシート4月〜6月があり、SO201v1.030.xls、4月.xls、5月.xls、6月.xlsとして それぞれを保存し、SO201v1.03.xls に戻りたいのですが、インデックスが有効範囲にありません とエラーメッセージが出ます。どこを書き直せばいいでしょうか? Sub test() Dim FN, myDrv, m FN = ThisWorkbook.Name myDrv = "E:\test\" ActiveWorkbook.SaveAs Filename:=myDrv & Left(FN, Len(FN) - 4) & "0.xls" For m = 4 To 6 Sheets(Array(m & "月")).Copy ActiveWorkbook.SaveAs Filename:=myDrv & m & "月.xls" Next Workbooks(FN).Activate End Sub
>>461 保存してファイル名というか、ファイルが変わってるんじゃね
保存したのをアクティブすれば
463 :
461 :2009/06/21(日) 00:22:15
>>462 >保存したのをアクティブすれば
保存したのがアクティブになってるからエラーになってるわけで・・・
原因は分ったものの、直し方が分りません。
>>463 Sub test()
Dim FN, myDrv, m
FN = ThisWorkbook.Name
myDrv = "e:\test\"
ActiveWorkbook.SaveAs Filename:=myDrv & Left(FN, Len(FN) - 4) & "0.xls"
For m = 4 To 6
ThisWorkbook.Activate
Sheets(Array(m & "月")).Copy
ActiveWorkbook.SaveAs Filename:=myDrv & m & "月.xls"
Next
Workbooks("so201v1.030.xls").Activate
End Sub
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】関数 グラフ Excel こんばんは。初めて投稿します。 EXCELを使って関数のグラフを描きたいのですが変数に具体的な値を入力する以外に方法はないのでしょうか。 Googleを利用して調べたところ簡単な二次関数(放物線)の例などを見つけましたが、どれも具体的な値を入力しているものばかりでした。 変数のままグラフを描く方法があればご教授していただきたいです。 また不可能な場合ある程度の点を入力した後に滑らかにつなぐ方法は可能でしょうか。 (ただ私が描きたいグラフはある一点で滑らかでない閉曲線なのでこの方法では結局期待通りの結果は得られないかもしれませんが) どなたかわかる方よろしくお願いします。
466 :
461 :2009/06/21(日) 00:51:59
>>464 ありがd!
SO201v1.03.xls に戻りたいので、邪道かもしれませが2行を追加して解決しました。
Sub test()
Dim FN, myDrv, m
FN = ThisWorkbook.Name
myDrv = "e:\test\"
ActiveWorkbook.SaveAs Filename:=myDrv & Left(FN, Len(FN) - 4) & "0.xls"
For m = 4 To 6
ThisWorkbook.Activate
Sheets(Array(m & "月")).Copy
ActiveWorkbook.SaveAs Filename:=myDrv & m & "月.xls"
Next
Workbooks.Open Filename:= myDrv & FN
Workbooks(Left(FN, Len(FN) - 4) & "0.xls").Close
End Sub
>>465 Excelでは具体的な数字入れないとグラフはかけません。
>465 具体的な数値は関数を使ってやればどうですか? y=(x−a)^2+bのグラフなら A2セルから下にxを0.2きざみとかでいくつか入れてオートフィルで数十個、 B2セルに=(A2-2)^2+3などの計算式を入れてオートフィルしたらどうですか。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 0 同じシートにおいて あるセルでは「0」の場合何も表示させず 別のセルでは「0」の場合「0」と表示させたいのですが それは可能でしょうか?
>>469 もすこし具体的なら条件次第で可能です。
>469 条件付書式で ユーザー定義に 0;-0;"" って入れてみて。
472 :
469 :2009/06/21(日) 02:23:56
473 :
465 :2009/06/21(日) 03:43:02
>>467 ,
>>468 お返事ありがとうございます。
やはり具体的な数値は必要なようですね。
一度
>>468 さんの方法を試してみたいと思います。
また何か疑問があれば利用させていただくかもしれません。
改めて
>>467 さん,
>>468 さんお返事ありがとうございました。
>>471 まあ中二病的発想だろうね
三年生ともなれば経済ってもんが大まかにでも分かって来て個々人が自分自身の為に精一杯頑張る事が
最も社会(彼らは地球・世界・市民といった表現が好きなようだが)の為になるって事に気付くもんだけど
>>469 セルの書式設定の表示形式で ユーザー定義に 「0;-0;」 って入れてみて。
俺は
>>471 は表示形式を間違って条件付き書式と書いたのかと思ったが違ったのか。
しかし2003で条件付き書式で出来るの?
2007では出来るけど2000だと出来ないんだけど。
477 :
471 :2009/06/21(日) 08:52:16
うおおっ、気付かなかった。 トランスフォーマー録画したの見ながら缶チューハイ飲みながら 条件付書式でも、表示形式でもできるやん、って思いながら書いてたらごっちゃになった。 自分で書いてて恥ずかしいです。
しかも最後の "" も無駄ってか これは録画だの酒だの関係なく 知識として勘違いしてたんだな
ガキ相手に大変だなwwwww
じゃあなんで 0;-0;"";"" とか 0;-0;"";@ にしなかったの?って話になるな 4つ目を省略しておきながら 3つ目を省略することに異を唱えるのは苦しすぎるw
「数字のゼロを表示したくない」って質問者が言っているのがわからないのかな?
483 :
476 :2009/06/21(日) 12:35:41
2003だけど
0;-0;""
で正解じゃ??
>>475 だと0が表示されるんだけど
あえて言うなら「=0&""」なんて入ってる場合0が表示されてしまうが
こんなケース考えても仕方ないだろう
>>484 もちろん正解だけど""を書かなくてもいいって言ってるんだよ。
言い出したの俺じゃないけどな。
例えば正の数値しか表示しないのであれば 0;;;とする人はいても0;"";"";""とする人あまりいないよな。
488 :
432 :2009/06/21(日) 13:35:08
>>438 ご回答ありがとうございます。
デザインパターンで検索してみたらと私が知りたかったことに通じそうですね。
マクロの構文のようなものを掴めたらと思っていたので、
しばらく色んなサイトを巡って勉強しようと思います。
条件付きの処理をする時はIfの設定を上手にすれば色んな処理ができそうなので、
これが使えるとルーティン入力作業はかなり捗りそうですね。
>>439 ご回答ありがとうございます。
ご回答のように私がつまずいているのはマクロそのものというより、
その前の概念的なものがかなり大きいと感じています。
>>438 さんに教えて頂いたのも一般的なプログラムでの考え方のようです。
>>440 ご回答ありがとうございます。
作業の進め方を確認したり、マクロを作っていく基本的な部分が乗っていてQ&Aのように使えそうです。
今回つまづいたコンボボックスの部分も基本的なセットの仕方から応用まで出ていましたので、
早速応用の方を試してみたいと思います。
エクセルの基本的な操作の仕方も私の知らない事が沢山載っていますので大いに参考になります。
私のつたない質問に御三方から的確なお答えを頂き本当にありがとうございました。
少しずつ勉強して使いこなせるようになりたいと思います。
他の方には長文のレスでご迷惑をお掛けして申し訳ございません。
>488 どーでもいいことだけど Address は d がふたつな。
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】関数 表 Excel 検索
※当スレの
>>5 、「作業セルを使って別セルに詰めて表示」に関連する質問
になるのでしょうか
CSVで取り込んだデータがシート1に並んでいます。
A列には氏名が、B列には売上金額が表示されています。
A2とB2はデータの先頭行なので必ずデータが入っていますが、
それ以降は5〜10行程度の空白行がランダムに続き、A列ところどころに
氏名が入力(たとえばA8,A15,A20・・・)され、氏名がある場合は必ず
同じ行のB(上記例なら必ずB8,B15,B20・・・)に金額が入っております。
このデータを別のシートに空白行なしに2行目、3行目、4行目と
きれいに並べた表にしたいのです。
関数を使って、シート1のデータが上書きされると自動的に別のシートの表に
縦に隙間なく表示させるようにするにはどうしたら良いのでしょうか
(今は一行づつコピーペーストしています)
>489 どーでもいいことだけど 「Adress」または「Address」という文字が488に書かれてないんだが?
>>490 おーとふぃるたで空白行以外をえらんでこぴぺ
>491 488=432,433 お礼の書き込みで、まだ見てるなと思ってね。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 【5 検索キーワード 】時刻 セルに「0:30」と入力したとき、「午前0時30分」 「12:30」と入力したとき、「午後0時30分」 と表示させることは可能でしょうか? 今のところ表示形式で「[$-411]AM/PM・・・・」と入れているのですが それぞれ「午前12時30分」「午後12時30分」と表示されます。 よろしくお願いします。
>>490 作業セルを使ってって検索条件のことか?
いずれにしてもオートフィルタはいかん。
フィルタオプションを使った方がいい。
検索条件範囲に
氏名
<>
として抽出コピーするだけ。
なお別のシート上からフィルタオプションを操作するべし。
>>493 とりあえずピボットテーブルについて調べてみることだな。
499 :
名無しさん@そうだ選挙にいこう :2009/06/21(日) 16:32:56
【1 OSの種類 .】 Windowsxp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 エクセル 列 整理 メモ帳に書かれたデータをエクセルに作り変え整理したいです。 現在メモ帳に下記の様に書かれた文章があります 山田太郎 100歳 東京都新宿区○× (03)1234-5678 鈴木一郎 10歳 東京都中央区○△ (03)2345-6789 佐藤・・ ・・ ・・・ ・・・・・ 吉田・・ ・・ ・・・ ・・・・・ と以下続きます。 この住所録をエクセルで下記の様に行、列で整理したいのです。 A列 B列 C列 D列 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 山田太郎┃100歳 ┃東京都新宿区○× ┃(03)1234-5678┃ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 鈴木一郎┃10 歳 ┃東京都中央区○△ ┃(03)2345-6789┃ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ の様に整理したいのです。 どの様にしたら宜しいでしょうか?よろしくお願い致します。
>>499 ファイルを開く→ファイルの種類でテキストファイルを選択→テキストを開く→テキストファイルウィザードが出るので
スペースによって〜ってとこにチェック→後はウィザードにしたがって進めばいい
501 :
名無しさん@そうだ選挙にいこう :2009/06/21(日) 17:22:34
>>500 ファイルを開いたのですが、
『ファイルの種類でテキストファイルを選択』
がわかりません。
何処にあるのでしょうか?
スミマセンがよろしくお願い致します。
>>501 ファイルを直接開くのではなくExcelアプリケーションを開いて
メニューのファイル(F)→開く(O)→ファイルの種類(T)でテキストファイルを選択する、
ってことだろう。
504 :
名無しさん@そうだ選挙にいこう :2009/06/21(日) 18:55:41
【1 OSの種類 .】 Windowsxp 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 VBA 日付 0をつける 質問です。 初歩かもしれないのですが、VBAで今日の日付を、 「20090621」のような、0をつけた日付を取り出す場合には どのようにすればよいのでしょうか? 現在は、10以下の場合は0を加えているのですが、 もしもっとスマートなやり方があれば教えてほしいです。 よろしくお願いします。
>>504 format関数でyyyymmdd・・だっけな
ワークシート関数でtext関数呼び出して"yyyymmdd"呼び出すほうが分かりやすいかな
506 :
504 :2009/06/21(日) 19:03:48
>505 即答ありがとうございます。 ものすごく短くなってすっきりしました。
Excel2000を使用していますが、Excelで作った表などの一部をイメージ(jpg)で書き出したいのですが、 どのような方法で出来るんでしょうか
508 :
名無しさん@そうだ選挙にいこう :2009/06/21(日) 22:58:34
>>507 prtscr押す(がめん全体をコピー)
ペイントを起動
ペイントに貼り付け
もしくはセル範囲を選択
以下ペイント起動、貼り付け
エクセル上でできるかは知らないけど、きいたことないな
509 :
名無しさん@そうだ選挙にいこう :2009/06/21(日) 22:59:51
--------------------------------------------------------------------- 【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】EXCEL2007 積み上げ棒グラフ 系列の順序 --------------------------------------------------------------------- EXCEL2007で積み上げ棒グラフの系列順序の入替をしたいのですが、 見当たりません。2007では、この機能はなくなってしまったのですか?? 入替の方法を教えて下さい。お願いいたします。
510 :
名無しさん@そうだ選挙にいこう :2009/06/21(日) 23:01:27
499です。 遅くなりました、回答有難うございます。 エクセルには移せました。 そこで、A列は名前、B列は年齢C列は住所の様に 簡単にまとめる方法はありませんか? よろしくお願い致します
>507 Shift押しながら、編集→図のコピー
512 :
名無しさん@そうだ選挙にいこう :2009/06/21(日) 23:07:05
>>511 一旦A1セルにコピーし、
データ→区切り位置
カンマや〜→ok
スペースを選択して官僚
じゃダメ?
513 :
名無しさん@そうだ選挙にいこう :2009/06/21(日) 23:08:18
515 :
名無しさん@そうだ選挙にいこう :2009/06/22(月) 00:27:42
>>512 回答有難うございます。
出来ました凄いです。
複数の列を選択できないのは残念ですが、しょうがないと思います。
有難うございました。
>>515 おまえまだ何か勘違いしている。
500,502も正確に実行できていない。
もう一度見直せ。
そして、インポートをマスターするのだ。
何でも、中途半端に投げ出してはいかん。
517 :
名無しさん@そうだ選挙にいこう :2009/06/22(月) 09:38:47
EXCEL2007です セルの境界線を表示させたり、消したりするには、 どうすれば良いのでしょうか? よろしくお願いします。
518 :
432 :2009/06/22(月) 10:35:33
>>489 ご指摘ありがとうございます。
普通に間違えてましたw
>>517 「表示」タブを開いて「枠線」のチェックを外す
520 :
名無しさん@そうだ選挙にいこう :2009/06/22(月) 17:52:10
--------------------------------------------------------------------- 【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】EXCEL2007 積み上げ棒グラフ 系列の順序 --------------------------------------------------------------------- EXCEL2007で積み上げ棒グラフの系列順序の入替をしたいのですが、 見当たりません。2007では、この機能はなくなってしまったのですか?? 入替の方法を教えて下さい。お願いいたします。
>>520 グラフエリアを右クリック→データの選択を開いて、
下段左のペインに並んでる系列名をクリックして選択、
そのペインの右上にある小さい青い矢印で
選択した項目を上下させて順番を入れ替えることができる
アキバでOfficeXPとか2003とかのCDが4000〜8000円で売られてるんだけど、パッケージに入ってなくて、 誰かがインストールしたかもしれないものですが、アクチベーションは出来るのでしょうか? 売人いわく「問題ないっすよ」って言ってたんだけど、気になって買えませんでした。
うるせー
http://www.moug.net/faq/viewtopic.php?t=42598 かわいそうに大先生のDQNな式をどこかで見たんだろうな
{=IF(SUM((シート1!$A$2:$A$1000=1)*(シート1!$B$2:$B$1000=1))< ROW(A1),"",INDEX(シート1!C:C,SMALL(IF((シート1!$A$2:$A$1000=1)*(シート1!$B$2:$B$1000=1),ROW($C$2:$C$1000),10000),ROW(M1))))}
オートフィルタかフィルタオプション教えない奴は馬鹿だな。
上のリンクのスレッド大先生が登場するかな?
526 :
名無しさん@そうだ選挙にいこう :2009/06/22(月) 21:29:05
クソうぜえ ネットwatchでも行ってくれや 陰口しか叩けないカスは
527 :
名無しさん@そうだ選挙にいこう :2009/06/22(月) 21:31:52
大先生って誰だよ てめえの知ってる内輪のクソみたいな言葉使って 悦に入ってんじゃねーよ てめえの脳内だけでやってろ クズ過ぎて反吐が出るわ
528 :
名無しさん@そうだ選挙にいこう :2009/06/22(月) 21:34:37
教えない奴は馬鹿? そう思ってんならてめえで書き込んで来い 関係ねーとこに自慢げに落書きしてんな
>>527 まぁ見てなって。
もうすぐ登場するから。
>>528 おれIDもってないもん
ID持とうとも思わんな
あの〜、522ですけど。。 眠いので寝ますけど誰か教えてくださいね。
532 :
名無しさん@そうだ選挙にいこう :2009/06/22(月) 23:54:08
>>516 質問主です。メモ帳からエクセルには移せました。
また、
>>515 で課題だった列を一気に整理する方法とかあるのでしょうか?
お解りでしたらよろしくお願い致します。
【1 OSの種類 .】 WindowsXP professional 【2 Excelのバージョン 】 Excel 2003 (11.8307.8221) SP3 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Excel コピーモード Enter 貼り付けない セルの移動 優先 Excel2003を使用しています。 何らかのセル(仮にA1を)をコピーし、形式を指定して(A2に)貼り付けたあと、 セルを移動せず(アクティブセルはA2)、Enterをおして下のセル(A3)に移動しようとすると、 コピーモードのためにEnterによって(A2にA1の内容が)コピーされてしまいます。 インストール当初は普通にEnterをおして下に移動できていたんですが、 いつのまにかEnterをおすと貼り付けが優先されるようになってしまいました。 Googleで検索してみるとどうやら貼り付けが行われるのがデフォルトということなのですが、 これを無効にして、Enterでセルを移動させることを強制する方法はあるでしょうか? できればすべてのExcelワークシートでこの設定を使いたいので、 VBAでないと助かりますが、それでは実現できないということであればVBAでもかまいません。 よろしくお願いいたします。
>>533 > インストール当初は普通にEnterをおして下に移動できていたんですが、
というのは勘違いで、もとから貼り付けが優先だったはず
絶対に勘違いじゃ無いというならバグだろうな
そもそもそれが実現できたとして、「移動したい」と思ってEnterを押した場合はいいが
「貼り付け実行したい」と思ってEnterを押した場合にまで移動してしまうようになるぞ
それでもいいと言うかも知れないが、Excelは幅広く使われているソフトで、自分持ちのExcel以外
使わないってわけにも行かないことが多いからイレギュラーな操作感に慣れてしまうのは好ましくない
マウス主体で操作している内はまだいいが、キーボード主体で操作するようになると
変な癖は抜けにくくなるので、ESCで解除するなど正しい操作を覚えた方がいい
それでもどうしてもやりたいならApplication.OnKeyで
Application.CutCopyMode = False
SendKeys "{ENTER}", True
でも再帰しないように当てておけ
因みに、VBAでは個々のブックやシートに設定しなければならないと思ってるのかも知れないが
OnKeyはWorkBookやWorkSheetではなくApplication(Excel本体)レベルのメソッドなので
一カ所で設定すれば、全てのブックやシートで有効になる
まあ個人用マクロブックなどでスタートアップさせるのがいいだろう
ついでに言えばWorksheet_BeforeDoubleClick等のWorkSheetレベルのイベントマクロとかも、
個々のシートにWorksheet_BeforeDoubleClickイベントを記述しなくても、1つのブックの設定だけで、
全てのブック及びシートで同じ動作をさせる方法もある
>>531 マジレスすると、アクチできるのとできないのが混ざってる。
見分ける方法はない。買ってみてだめだったらあきらめる。
数千円捨てる覚悟があるなら買ってみればいい。使えたらラッキー。
あと、ソフトを路上販売してるやつらは犯罪者だから、かかわらない方がいい。
知ってて買うなら無理には止めないけど。
「gif」という文字列が含まれているセルを含む行だけ選択してサッと消したいんですが オートフィルタじゃうまく行きません どうすればいいでしょうか
>>536 フィルタオプションでgifを含まないセルの行を抽出する。
項目
<>*gif*
その後全体をコピーして張り付け、フィルタ解除でgifの行がなくなるって寸法だ
A列からC列でgifを含まない行なら
A列項目 B列項目 C列項目
<>*gif*
<>*gif
<>*gif*
または
空白
=COUNTIF(A2:C2,"*gif*")=0
>>538 嘘書いちゃいかん。コピペは駄目だよ。
抽出範囲を指定した範囲だ。
すまん
>>539 は間違いだ。
A列項目 B列項目 C列項目
<>*gif* <>*gif* <>*gif*
チラシの裏
長年Excel使ってるけど
>>533 みたいな機能初めて知った…
でも一般的なアプリのコピペと違う挙動って何か気持ち悪いね。
これを無効にしたいっていう
>>533 の気持ちは分からないでもない。
[esc]押して[enter]押せば済む話でないのかいなそれは
いやそういう話をしているわけではないんだが
>>534 Application.Onkeyで動作を実装しました。
マクロが書かれているブックやシートを起動せずに動作を実現したかったので、
VBAよりも本体の設定で行いたかったのですが、本体設定ではないようなので、
やはりVBAを書き、ブックを起動させる必要があるようですね。
しかしマクロブックを用意し、スタートアップにする方法は考え付きませんでした。
参考にさせていただきたいと思います。
ご回答ありがとうございました。
考え付きませんでした 考え付きませんでした 考え付きませんでした
546 :
名無しさん@そうだ選挙にいこう :2009/06/23(火) 18:00:39
【1 OSの種類 .】 WindowsXP Pro SP3 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 受注/発注の管理をしているのですが、商品の種類が5,000近く あり、それらがSheet A に記載されています 1回の注文で毎回ランダムに5000種類の中から30〜50の注文が来ますが、 現在はそれらの品目の1個1個を検索(Ctrl+F)でSheet Aから検索し、Sheet Aにある 列a/b/c/d/eの価格情報と注文情報が正しいか調べています
547 :
名無しさん@そうだ選挙にいこう :2009/06/23(火) 18:01:56
sheet Aはアルファベット順に並び、ソートもできますが、5000種類からかなりランダムに 注文が来る為、結局手作業で1個1個検索するしか無い状況です 注文はexcelのシートでくるので、例えば注文のexcelから機種名の部分だけを コピーして、sheet Bの特定のセルに値を貼り付ければsheet Aの同一の機種名 の情報を全件自動検索してAの列a/b/c/d/eの情報を隣のセルに表示してくれるような 機能は無いでしょうか? EXCELで無理ならその様な機能があるアプリケーションはありますでしょうか?
>546->547 初歩的な手法ならVLOOKUPでいいんじゃね? たった50くらいなら使えるだろう。 注文数が数千とかだと駄目だけどな。
しかしそんなんでよく実務やってるな。 5000も在庫があって手作業。 ウソだろ?
発注が1日に数件なら可能だろう
【1 OSの種類 .】 WindowsVista
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 ハイパーリンク 貼り付け
多数のアドレスを貼り付け⇒即ハイパーリンク表示させたいのですが
方法がわかりません・・・。
サンプルとして
http://www.a http://www.b http://www.c http://www.d http://www.e という5行をテキスト等からコピペし、編集⇒エンターという感じにすると
5行全てハイパーリンクになるのですが、数が多いと編集回数が増え
困っています。
解決方法がありましたらよろしくお願いします。
>>547 Sheet2のA列に品名を入れるとSheet1のA列から検索して、何行目にあるか調べる式
=MATCH(A1,Sheet1!A:A,0)
行がわかればあとはなんとでもなる
>>551 作業列に=HYPERLINK(A1,A1)と入れてオートフィル
554 :
551 :2009/06/23(火) 18:46:59
>>553 凄い!出来ました!
ありがとうございます。
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 excel 折れ線グラフ マーカー 変更 折れ線グラフのマーカーは●や■など自動で割り当てられると思いますが、 これをすべての系列で●というように統一できないでしょうか。 折れ線グラフはピボットグラフを使っています。 一つ一つの系列の変更なら「選択対象の書式設定」でできるのですが、 すべての系列というのができません。 また、すべての系列の色を、黒に統一などはできるでしょうか。 現在は黒のスタイルを選択しているのですが、 系列ごとに少し差をつけているようで黒と灰色のようになり、 すべて同じ色に設定したいのですができません。 どうぞよろしくお願いします
>>555 一括でスタイルや色を変更するのはVBA使わないと無理かなあ
>>555 すべてのグラフを真っ黒にする
Sub aaa()
For Each c In ActiveSheet.ChartObjects
c.Activate
For Each s In ActiveChart.SeriesCollection
With s
.MarkerStyle = xlCircle 'マーカーの形=丸
.MarkerBackgroundColorIndex = 1 'マーカーの色1=黒
.MarkerForegroundColorIndex = 1 'マーカーの色2=黒
.Border.ColorIndex = 1 '線の色=黒
End With
Next
Next
End Sub
>>556 やっぱりですか。かなり探したのでもしかしてないかなと。
>>557 うおおおおお!ありがとうございます!!!
ソースまでいただけるなんて思いませんでした!!!
559 :
522 :2009/06/23(火) 20:05:51
>>557 いま貼り付けて動かしました。動作確認できました!
てすと1は動くのに、てすと2はCopyのところで止まってしまいます。 どこが悪いの? Sub てすと1() STN = "集計表" MM = 5 STM = MM & "月" If MM > 4 Then Worksheets(STN & MM - 1 & "月").Select Range("C4", Cells(MM - 1, 10)).Copy _ Destination:=Worksheets(STN & STM).Range("C4") End If End Sub Sub てすと2() STN = "集計表" MM = 5 STM = MM & "月" If MM > 4 Then Worksheets(STN & MM - 1 & "月").Range("C4", Cells(MM - 1, 10)).Copy _ Destination:=Worksheets(STN & STM).Range("C4") End If End Sub
>>561 どこも悪くないから、原因は他のところにあると思われ
とりあえずエラーメッセージを晒せ
>>562 バーカ!なにもわかっちゃいねーなw
>>561 Worksheets(STN & MM - 1 & "月")の範囲をしっかり指定しないとダメ
Sub てすと2()
STN = "集計表"
MM = 5
STM = MM & "月"
If MM > 4 Then
With Worksheets(STN & MM - 1 & "月")
.Range("C4", .Range(Cells(MM - 1, 10)).Copy _
Destination:=Worksheets(STN & STM).Range("C4")
End With
End If
End Sub
564 :
563 :2009/06/23(火) 21:07:22
微妙にインデントがズレた Sub てすと2() STN = "集計表" MM = 5 STM = MM & "月" If MM > 4 Then With Worksheets(STN & MM - 1 & "月") .Range("C4", .Range(Cells(MM - 1, 10)).Copy _ Destination:=Worksheets(STN & STM).Range("C4") End With End If End Sub
┌─────────────────────────┐
│
>>562 実行時エラー1004 |
│ |
| アプリケーション定義またはオブジェクト定義のエラーです. |
│ |
└―――──――────―──―──―──―──――┘
ヽ(´ー`)ノ
( へ)
く
何度もスマン 右括弧 「)」が足りなかったorz × .Range("C4", .Range(Cells(MM - 1, 10)).Copy _ ○ .Range("C4", .Range(Cells(MM - 1, 10))).Copy _
567 :
561 :2009/06/23(火) 21:27:30
>>562-566 ども。
564と566を組み合わせても、565のエラーが出るんだけど・・・
568 :
名無しさん@そうだ選挙にいこう :2009/06/23(火) 21:47:15
Worksheets(STN & MM - 1 & "月") Worksheets(STN & STM) Cells(MM - 1, 10) どれかが存在しない。ウォッチ式で「STN & MM - 1 & "月"」等を見て、その名前のシートやセルがあるか調べる ステップインでエラーが何行目で起こるか教えてくれ
>561 変数を置き換えると以下のようになりますよね。これを実行するときのアクティブシートによって 正常終了する場合とエラーになる場合があります。集計表4月がアクティブでなければ>565のエラーになります。 Sub てすと3() Worksheets("集計表4月").Range("C4", Cells(4, 10)).Copy Destination:=Worksheets("集計表5月").Range("C4") End Sub
>561 の てすと1 には Worksheets(STN & MM - 1 & "月").Select があるので、ここでは?
571 :
名無しさん@そうだ選挙にいこう :2009/06/23(火) 22:00:52
>>569 もしかして・・
標準モジュールじゃないところにコードかいてる?
sheet1のところにsheet2を扱うコードを書くとエラーになるよ
572 :
569 :2009/06/23(火) 22:04:12
>571 標準モジュールに書いてますが?
573 :
名無しさん@そうだ選挙にいこう :2009/06/23(火) 22:05:30
>>569 Worksheets("集計表4月").activate
入れとけ
眠い
574 :
563 :2009/06/23(火) 22:05:45
申し訳ない これでエラーは出ないはず(当方環境で確認済 Sub てすと2() Dim STN As String, STM As String Dim MM As Integer STN = "集計表" MM = 5 STM = MM & "月" If MM > 4 Then With Worksheets(STN & MM - 1 & "月") .Range("C4", .Cells(MM - 1, 10)).Copy _ Destination:=Worksheets(STN & STM).Range("C4") End With End If End Sub
575 :
561 :2009/06/23(火) 22:24:00
>>574 ども。
感動です〜 (∩Д`)゚。うわぁん
576 :
名無しさん@そうだ選挙にいこう :2009/06/23(火) 22:25:39
【1 OSの種類 .】 WindowsVista 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 よくわかりません 【4 VBAでの回答の可否】 よくわかりません 【5 検索キーワード 】 エクセル 時刻 秒数を分数 秒数で算出した数字を、分数で表示する方法を教えてください。 秒数(j行)→分数表示(k行) J → K 17 → 0:17 30 → 0:30 47 → 0:47 60 → 1:00 77 → 1:17 90 → 1:30 107 → 1:47 120 → 2:00 137 → 2:17 150 → 2:30 167 → 2:47 180 → 3:00 197 → 3:17 J列(17)をK列(0:17)のように表示したいです。 分数を秒数になおす方法はあるようですが、逆が見あたりません。 エクセルはまったくの初心者ですが、どうぞよろしくお願いします。
>>576 =A1/24/60/60
書式を時刻にする
書式を、m:ss にする
579 :
名無しさん@そうだ選挙にいこう :2009/06/23(火) 22:32:41
>>576 =TIME(0,INT(j1/60),MOD(j1,60))
とか〜
580 :
576 :2009/06/23(火) 22:41:56
=A1/24/60/60 と 書式をm:ssで 「分:秒」の表示になりました! ありがとうございます!!! 本当に助かりました。
ショートカットの Ctrl + C と Ctrl + V でコピペできますが、 ショートカットで “値だけ貼り付け” ってできますか?
できまへん VBAでつくって登録しとけ
↓を作って、ショートカットキーをCtrl+Shift+Vにすればいい Sub test() Selection.Value = Selection.Value End Sub
584 :
名無しさん@そうだ選挙にいこう :2009/06/23(火) 22:58:42
Sub s() Selection = Selection End Sub でいいと思うぜ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】いいえ 【4 VBAでの回答の可否】否 【5 検索キーワード 】 Excel 列 反転 列のデータをそのままそっくり反転させる方法を教えてください。 たとえば 1 5 7 9 と並んでいるデータを 9 7 5 1 としたいんですが。お願いします。
横に連番ふってソート
>>583-
>>584 まったくどいつもこいつも・・
それじゃコピーした該当セルだけでしか対応しねーだろが!
Sub 値の貼り付け()
Selection.PasteSpecial xlValues
Application.CutCopyMode = False
End Sub
対象を選択して縦にZAって書いてあって横に”↓”が付いているボタンを押す。
589 :
588 :2009/06/23(火) 23:30:11
590 :
581 :2009/06/23(火) 23:37:00
>>583-584 >>587 581です。
どう使えばいいんですか?
標準モジュールに書いて実行したら、、、
┌─────────────────────────┐
│
>>587 実行時エラー1004 |
│ |
| RangeクラスのPasteSpecialメソッドが失敗しますた |
│ |
└―――──――────―──―──―──―──――┘
ヽ(´ー`)ノ
( へ)
く
>>587 なーるほど、
>>581 じゃないけどそれ頂きました。
Personal.xlsに登録してCtrl+Shift+Vに設定したらバッチリでした。
>>590 まず、どこかのセルをCtrl+Cでコピーしてからマクロ実行しなきゃエラーになるよ。
593 :
581 :2009/06/23(火) 23:56:01
うぅーん、良く分らない・・・・ ゴメソ マタアシタクルヨ…  ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ o o ヽ(´(ェ)`;)ノ ( ) 〜 〜 ヨロヨロ く へ 〜 〜
594 :
585 :2009/06/23(火) 23:57:16
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】はい 【4 VBAでの回答の可否】否 【5 検索キーワード 】 Excel IFERROR VLOOKUP 2007になって折角 IFERROR があるので, =IFERROR(VLOOKUP($AA$1,$A$1:$Z$100,2,FALSE),"") このように書いてみましたが,この場合,VLOOKUPで参照し空白セルは0を返してきます。 1. #N/A エラー対策 2. 参照元が空白の時 3. 参照元が「0」の時はエラーとみなさない この3つの条件を満たしながらIFERRORを使いながら簡潔にまとめるにはどうしたらいいでしょうか? ちなみに =IFERROR(VLOOKUP($AA$1,$A$1:$Z$100,2,FALSE)&"","") とすると,0は表示されなくなるのですが,セルに設定した書式が無視されてしまいました。 これもどうしてこうなるのかよくわからないです。 よろしくお願いします。
>>595 参照元が空白の時は何?文章が途中で終わってるぞ。
検索したいのはどんなデータ?
参照元が0の時、エラーじゃないのはいいとして、そのかわりに何を返すの?
とにかく脳内で完結しすぎ。ちゃんとわかるように説明しろ。
>>597 大変申し訳ありませんm(__)m
検索したいのは「数値」です。
ただ,空白セルがあったり,0のデータもあります。
空白は空白で,0は0を表示させたいのです。
もちろんエラーは空白表示となる必要があります。
よろしくお願いします。
>>598 こうかな?
=IF($AA$1="","",IFERROR(VLOOKUP($AA$1,$A$1:$Z$100,2,FALSE),""))
>>598 作業セルAB1に=MATCH(AA1,A$1,A$100,0)または=IF(AA1="","",MATCH(AA1,A$1,A$100,0))としてから
=IF(ISNUMBER($AB1),IF(INDEX(B$1:B$100,$AB1)="","",INDEX(B$1:B$100,$AB1)))
同じ計算が2度あって気持ち悪いが""と0を区別するには仕方がない。
これは作業列では解決できないと思う。
全セル名が絶対指定になってるのに微妙な違和感が... シートの設計に何か問題がありそうな予感
>>601 おれは$AA$1は$AA1なんだと思う。
そして列番号の2を色々変えた無駄な式が右側にありそうな悪寒。
>>600 でエラーを空白にするの忘れた。
=IF(ISNUMBER($AB1),IF(INDEX(B$1:B$100,$AB1)="","",INDEX(B$1:B$100,$AB1)),"")
全然試してはいないんだが。
IFERRORを使ってない件
今回のように空白と0を区別したきゃIFERRORを使うのは無駄だよ。 もっとも無駄は絶対に入れることを信条としてる人は使ってもいいかな?
606 :
名無しさん@そうだ選挙にいこう :2009/06/24(水) 15:01:03
うわあ
608 :
名無しさん@そうだ選挙にいこう :2009/06/24(水) 15:54:00
>>607 駄目だろ?
検索したA列で見つかった隣のB列の値が空白のとき0になるのがいやだって言ってるんだぜ?
違うと重い升。
610 :
sage :2009/06/24(水) 16:16:35
こうか?
=IF(IFERROR(VLOOKUP($AA1,$A$1:$B$100,2,FALSE),"")="","",VLOOKUP($AA1,$A$1:$B$100,2,FALSE))
>>603 とたいして変わらないんじゃね?
右側に似たような式があるならたしかに無駄だな。
611 :
sage :2009/06/24(水) 16:19:27
IFERRORが無駄だというのはちょっと納得できないけど
>>599 はB列の空白が0になるから駄目だな。
612 :
595 :2009/06/25(木) 00:49:37
みなさんありがとうございました。 =IFERROR(1/(1/VLOOKUP()),"") 色々考えて,このようにして解決してみました。
>>612 なんだよ、数値だけって決まってたのかよ。
俺はまた別の列の文字列を求める式もあるだろうから、文字列でも数値でも対応できる式じゃないと駄目かと思ったよ。
FALSEオプションで探しに行って ヒットしたら空白でしたって どんなテーブルだよって ことだわな
大体
>>612 じゃヒットした隣が0でも""になるんじゃねーか?
>>598 の
>空白は空白で,0は0を表示させたいのです。
これは何だったんだ?
もうハチャメチャで分らんな。
ハチャメチャって表現を久々に見たわ
シッチャカメッチャカだな
なまってるな
やわやや〜
商品を複数の店(C1:F1)から見積もり(C2:F2)を取って、 商品ごとに最小値を探して(G2)店名を表示(H2)させたいんですが G2=MIN(C2:F2) H2=INDEX($C$1:$F$1,MATCH($G2,$C2:$F2),1) これはどこが間違っているのでしょうか?
>>620 おかしいのはこの部分
MATCH($G2,$C2:$F2)
この書き方だと、数字が順番にソートされていないとエラーになる。
順番がバラバラの中から検索する時は
MATCH($G2,$C2:$F2,0)
>>620 そういう一覧表は縦に並べた方がいいぞ。
店名=A3:A6
金額=B3:B6
Excelはもともとデータを縦に並べるように設計されてるから。
まあほとんどの関数はどっちでも使えるようになってるけど、
例えばオートフィルタなんかは縦方向にしか作れないでしょ?
>>621 なるほど、確かに順番になってるところだけが表示されます。
しかし
=INDEX($C$1:$F$1,MATCH($G2,$C2:$F2,0),1)
と書き直してもやはりだめでした。
>>623 オートフィルタはよく使いますが、それは気づきませんでした。
品名が横に並んだ一覧を渡すのも変かなと思い縦に並べましたが。。。
以後そうします。
>624 行と列が逆 =INDEX(C1:F1,1,MATCH(G2,C2:F2,0))
>>625 出来ました。
行列がわからなくなってたみたいです。
>>623 さんもヒントありがとうございました。
1列または1行の場合は引数は一つに省略できるからね。
一応
>>625 みたいなことは理解した上で省略すればいいだろう。
=INDEX(C1:F1,MATCH(G2,C2:F2,0))
フォルダ内にある一番最後に保存したブックを開きたいです。 だれか直してくださぁ〜い。 Sub 最新のブックを開きましょう() DIR = "C:\Documents and Settings\Maririn\Excel\Data\" For Each WB In Workbooks T1 = FileDateTime(DIR & WB) TWB = WB If T1 > T2 Then T2 = T1 NWB = TWB End If Next Workbooks.Open Filename:=DIR & NWB End Sub
Workbooks は開かれているすべてのブックを表す とあるから、開いてないと駄目みたい。 ファイル操作関数を当れば?
>>628 かなり無駄なコードだと思うけど一応動く。
Sub 最新のブックを開きましょう()
Dim FSO, LastUpdate1, LastUpdate2
Dim PathName As String
Dim BookName As String
Dim MyBook As String
Set FSO = CreateObject("Scripting.FileSystemObject") 'File情報取得準備
PathName = "C:\Documents and Settings\Maririn\Excel\Data\"
BookName = Dir(PathName & "*.xls")
MyBook = BookName
LastUpdate1 = FSO.GetFile(PathName & BookName).DateLastModified
Do Until BookName = ""
LastUpdate2 = FSO.GetFile(PathName & BookName).DateLastModified
If LastUpdate1 < LastUpdate2 Then
LastUpdate1 = LastUpdate2
MyBook = BookName
End If
BookName = Dir()
Loop
Workbooks.Open PathName & MyBook
End Sub
628でぇす。 630さん、ありがとね。 みたことない単語がいっぱいです。
とりあえず、「まりりん」に釣られて優しくレスしたやつがいる確率、20%
【1 OSの種類 .】 Windows2000 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 sumproduct ワイルドカード 複数条件(3つ)の値を合計したいのですが、条件は下記通りです。 Aの列は文章が入っており、その中にある「発注完了」というワードが条件 Bの列は文章が入っており、その中にある「郵送対応」というワードが条件 C列は完了という文字だけです。 そのため、AとBの列はワイルドカードが必須なのですが、どうしてもうまくいきません =sumproduct((ISNUMBER(FIND("発注完了",A2:A1000)*AND(ISNUMBER(FIND("郵送完了",B2:B1000) )*(C2:C1000="完了")) など、かなり試しましたがカウント出来ませんでした・・・orz よろしくお願いします
なぜに、ワイルドカード必須と思ったか? 興味有る。
>633 sumproduct云々は別として、方向性は大体あってる =SUMPRODUCT(ISNUMBER(FIND("発注完了",A2:A1000))*ISNUMBER(FIND("郵送完了",B2:B1000))*(C2:C1000="完了"))
エクセルVBAで扱う「セル」や「ワークシート」は、オブジェクト指向でいう 「オブジェクト」そのものと考えて間違いないでしょうか?
>>636 うまく行きました、ありがとうございます。
>>634 AとBのセルは発注書からのコピペなので、文字列だけ抽出したかったのです。
厳密にはワイルドカードではありませんでしたが。。
>>637 そうです。
ワークシートの上にある「Excelアプリケーション」「ブック」も、
ワークシートとセルの間にある「Range」も、みんなオブジェクトです。
640 :
名無しさん@そうだ選挙にいこう :2009/06/26(金) 13:57:04
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 今、セルA2には =A1+ROUNDDOWN(A1/7,0)*ROUNDDOWN(A1/7,0) という計算式が入っており セルA1に数字(1以上の整数)を入れると結果が出るようになっています たとえばA1に77と入れればA2に198が返り、114と入れれば370が返ります ここで問題です 全く逆の関数を作りたいのです つまりたとえばB2に198と入れれば77が返り、370と入れれば114が返る そんな計算式をB1に作りたいのですが なんと書けばいいでしょうか?
641 :
640 :2009/06/26(金) 14:17:05
すみません自己解決してしまいました・・・ =B2-ROUND(SQRT(49+4*B2)-7/2,0)*ROUND(SQRT(49+4*B2)-7/2,0) でうまくいったみたいです 高スキルの人から見ればこの式には無駄が多いかもしれませんが あまり気にしないことにします
【1 OSの種類 .】 Windows Vista SP2 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 Excel 2007 テーブル 赤色ならない 等 Excel 2007で書式の「通貨」を指定することによって、マイナスの場合、文字を赤色にする設定にしているのですが、 テーブル内だと文字が赤色になりません。 どのようにしたら、テーブル内で色を反映させることができますでしょうか?
643 :
642 :2009/06/26(金) 14:26:30
いろいろ試していたら、解決しました。 テーブルを一旦、「デザインタブ」で「範囲に変換」して、再度「挿入タブ」→「テーブル」としたところ、 無事にマイナスが赤色になりました。 多分コピペしたときにおかしな書式カナにかがにつていたのしょうかす。 無事にかいけつしまそた。 あいごつあました。
644 :
640 :2009/06/26(金) 14:26:43
あれ?やっぱりダメかも・・・数字によっては答えが間違っちゃいますね うーん・・・
>>634 ワイルドカードというのが何かをわかっていない為としか考えられない。
ワイルドなカードだよ
>>639 VBAではセルやワークシートをオブジェクトと呼ぶけど
オブジェクト指向って話になるとそんな単純なものでは無いね。
>>644 上の式は切り捨てしてるから、それを復元することは出来
>>649 え?自分でどういう質問したか意味がわかって言ってるの?
中途半端な理解しかないなら難しい言葉は安易に使わない方がいいよ。
>640を関数でやるのは無理だな。 マクロでユーザー関数が吉。
>640 元の式で切り捨て(ROWNDDOWN)をしない場合の逆を求める式はこういうふうになります。 ※A1セルの方をχ、A2セルの方をуとします。 у=χ+(χ^2)/(у^2) これを変形していくと 7^2*у+(7^4)/(2^2)=χ^2+7^2*χ+(7^4)/(2^2) ={(χ+(7^2/2)}^2 これを左右逆転して平方根をとると χ+(7^2/2)=SQRT{7^2+(7^4/2^2)} ↓ χ=SQRT{7^2+(7^4/2^2)}−(7^2/2) これを検証するために、A2から下に1からオートフィルで300程度まで B2に=A2+ROUNDDOWN(A2/7,0)*ROUNDDOWN(A2/7,0)の計算式を入れて下へコピー、 C2に逆を求める計算式として=SQRT(7^2*B2+(7^4/2^2))-(7^2/2)の計算式を入れて下へコピーすると、 A列の数字が7の倍数のときに限りA列=C列となります。それ以外の場合は微妙に異なります。 単に+1して切り捨てればいいわけでもありません。 >651さんのいうようにVBAを使うか、ここで作った表からVLOOKUPを使って求めるかということに なると思います。 ついでに、B列の増え方の規則性を見るために、D2セルに=B3-B2の計算式を入れて下にコピーしてみると おもしろいです。
653 :
652 :2009/06/26(金) 18:25:28
ちょっと抜けてた。やり直し >640 元の式で切り捨て(ROWNDDOWN)をしない場合の逆を求める式はこういうふうになります。 ※A1セルの方をχ、A2セルの方をуとします。 у=χ+(χ^2)/(у^2) これを変形していくと 7^2*у+(7^4)/(2^2)=χ^2+7^2*χ+(7^4)/(2^2) ={(χ+(7^2/2)}^2 これを左右逆転して平方根をとると χ+(7^2/2)=SQRT{7^2*у+(7^4/2^2)} ←ここを訂正しました ↓ χ=SQRT{7^2*у+(7^4/2^2)}−(7^2/2) ←ここを訂正しました これを検証するために、A2から下に1からオートフィルで300程度まで B2に=A2+ROUNDDOWN(A2/7,0)*ROUNDDOWN(A2/7,0)の計算式を入れて下へコピー、 C2に逆を求める計算式として=SQRT(7^2*B2+(7^4/2^2))-(7^2/2)の計算式を入れて下へコピーすると、 A列の数字が7の倍数のときに限りA列=C列となります。それ以外の場合は微妙に異なります。 単に+1して切り捨てればいいわけでもありません。 >651さんのいうようにVBAを使うか、ここで作った表からVLOOKUPを使って求めるかということに なると思います。 ついでに、B列の増え方の規則性を見るために、D2セルに=B3-B2の計算式を入れて下にコピーしてみると おもしろいです。
654 :
652 :2009/06/26(金) 18:29:27
間違いがまだあった orz 誤 у=χ+(χ^2)/(у^2) これを変形していくと 正 у=χ+(χ^2)/(7^2) これを変形していくと
655 :
名無しさん@そうだ選挙にいこう :2009/06/26(金) 18:45:03
こんにちは。 B列のB3セル以降の数字の合計を、B2セルに集計したいのですが、 B列の終わりが決まっていません。(定期的に増える予定) 「 =SUM(B3:B9999) 」とかでもいいのですが、もちょっと格好よく 列全体の指定「 B:B 」を応用してこれをやる方法ありますでしょうか? よろしくお願いいたします。
>>640 =A1+ROUNDDOWN(A1/7,0)*ROUNDDOWN(A1/7,0)
この式の答えになりえない整数はたくさんある。
なので、条件判定も必要になり式がくそ長くなりますが、ご容赦を。
なりえない分はFALSEになるようにしました。
=IF((A1-INT((-7+SQRT(49+4*A1))/2)^2-7*INT((-7+SQRT(49+4*A1))/2))>6,FALSE,A1-INT((-7+SQRT(49+4*A1))/2)^2)
>>655 =SUM(B3:B65536)
2007なら=SUM(B3:B1048576)
もっとも2007ならテーブルとかいうのがあったかな?
>655 =SUM(B:B)-SUM(B1:B2)
>656 どうやら出来たみたいだね。(パチパチ >657 それ以外でと言っておる。(ブーブー
660 :
655 :2009/06/26(金) 20:28:00
A3セルに '09.06.26 と入れたんですが、' が出ません。 どう書けばいいの? Range("A3") = "'09.06.26"
>>661 シングルクォーテーションを2個
Range("A3") = "''09.06.26"
あ、かぶったorz そのうえ6じゃなくて06だったorz ' が一個だと、「その後の値を文字列にする」という意味になるので、 09.06.26が文字列になってるはず。
>>662-664 ありがと。
やりたかったのは、Range("A3") = Format(Date, "''yy.mm.dd") です。
>655 ごめん、よく読まずに答えちゃって。 循環参照になるから、2003なら ツール→オプション→計算方法→反復計算 にチェック入れて、 回数適当に1とかいれると計算できる。 でも>657のやり方の方が結局いいと思うよ。
667 :
655 :2009/06/26(金) 22:21:40
>>666 なるほど、わかりました
皆様どうもでした。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Google エクセル テキストファイル 取り込み テキストファイルの取り込みでお聞きします。 30万行あるテキストファイルをウイザードで 取り込む時、行数が多いので すべて取り込めません。 3万行くらいでエクセルシートに1列、2列・・・と分けて すべて1作業で取り込む方法はありませんか?
他のブックの列をコピぺしてますが、ブックによってコピーしたい列の位置が違うため タイトル行を読みとっています。このままでも動くようになりましたが、Doの中が重複した 書き方になってしまいました。もっと完結な方法があれば教えてください。 コピー元にある "コード" の列を選び、2行目からのデータをコピー先のB2へ値だけ貼り付けます。 同様に、商品名、単価などを貼り付けていきます。 Sub コピペ() Dim i As Integer, WB As Workbook, WB1 As String, WB2 As String WB1 = ThisWorkbook.Name For Each WB In Workbooks If WB.Name <> WB1 Then WB2 = WB.Name End If Next
With Workbooks(WB2).Worksheets("Sheet1") i = 1 Do While .Cells(1, i) <> "" If .Cells(1, i) = "コード" Then .Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy Workbooks(WB1).Worksheets("Sheet1").Range("B2").PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End If If .Cells(1, i) = "商品名" Then .Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy Workbooks(WB1).Worksheets("Sheet1").Range("C2").PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End If If .Cells(1, i) = "単価" Then .Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy Workbooks(WB1).Worksheets("Sheet1").Range("D2").PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End If i = i + 1 Loop End With End Sub
>>670 以下でどう?
Sub コピペ()
Dim i As Integer, WB As Workbook, WB1 As String, WB2 As String
WB1 = ThisWorkbook.Name
For Each WB In Workbooks
If WB.Name <> WB1 Then
WB2 = WB.Name
End If
Next
With Workbooks(WB2).Worksheets("Sheet1")
i = 1
Do While .Cells(1, i) <> ""
Select Case .Cells(1, i).Value
Case "コード"
.Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy
.Range("B2").PasteSpecial xlValues
Case "商品名"
.Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy
.Range("C2").PasteSpecial xlValues
Case "単価"
.Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy
.Range("D2").PasteSpecial xlValues
End Select
i = i + 1
Loop
End With
End Sub
672 :
671 :2009/06/27(土) 00:26:03
ごめん、間違えたorz Sub コピペ() Dim i As Integer, WB As Workbook, WB1 As String, WB2 As String Dim mySht As Worksheets WB1 = ThisWorkbook.Name For Each WB In Workbooks If WB.Name <> WB1 Then WB2 = WB.Name End If Next Set mySht = Workbooks(WB1).Worksheets("Sheet1") With Workbooks(WB2).Worksheets("Sheet1") i = 1 Do While .Cells(1, i) <> "" Select Case .Cells(1, i).Value Case "コード" .Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy mySht.Range("B2").PasteSpecial xlValues Case "商品名" .Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy mySht.Range("C2").PasteSpecial xlValues Case "単価" .Range(.Cells(1, i), .Cells(65536, i).End(xlUp)).Copy mySht.Range("D2").PasteSpecial xlValues End Select i = i + 1 Loop End With End Sub
もひとつ ×Dim mySht As Worksheets ○Dim mySht As Worksheet
674 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 02:31:33
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 エクセル オブジェクト 検索 マクロを埋め込んだオブジェクトの位置を簡単に検索する方法はないでしょうか。 オブジェクトの名前は下記のようにマクロの記述からわかります。 チェック100_Click() 各シートに多数のオブジェクトがあり、かつシートも多数あるので TABキーなどで検索するのが大変です。 ワークシートのオブジェクト名を一覧表示する、あるいは オブジェクトの名前からオブジェクトを探す方法があれば教えてください。
>>674 プロパティウィンドウの一番上。
ドロップダウンリストにオブジェクトの一覧があるから
選択すればフォームデザイナの中で強調表示される。
>>674 ワークシートに貼り付けたコントロールなら、コードデザイナのタイトルバーに
シート名が出てるはずだけど。
Caption、Top、Leftプロパティあたりを見ればどこにあるどんなボタンかもわかる。
ワークシートに貼り付けたコントロールの一覧(オブジェクト名と座標)を出す Sub a() For Each w In Worksheets Debug.Print w.Name For Each o In w.OLEObjects Debug.Print o.Name, o.Top, o.Left Next Next End Sub
678 :
676 :2009/06/27(土) 11:09:18
補足 あと、デザインモードじゃないとプロパティウィンドウにコントロールは出ないよ
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 少々 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 エクセル マクロ マクロを消して保存 新垣結衣.xlsにマクロを書いて、集計したものを新垣帳.xlsで保存するとき 新垣帳.xlsのマクロを消したいんですが、ググっても例が見つかりません。 今は手動で消していますが、マクロでできますか?
マクロを消すマクロってのは矛盾してるなあ。 新規ブックにデータを全部コピーして、そちらを保存するっていうのが定番かな。 Excel2007だと保存するときにマクロを含めるかどうか選択できるんだけど。
XPのMicrosoft FAXを使って、電話番号指定でFAXを送るマクロって可能ですか?
683 :
679 :2009/06/27(土) 13:47:28
>>680 シートコピーも考えたんですが、問題がありまして・・・
・大半のシート名が週ごとに変わるので、Sheets(Array("NAHA", 略)).Copyで書けない。
・塗りつぶしの色を淡色系に変えてるので、新規ブックだとセルの色が変わってしまう。
>>681 三矢サイダーじゃだめですか?
>>683 ワークシートコレクションを使えばシート名が変わっても関係ない
色もActiveWorkbook.Colorsで簡単に再設定できる
それよりも、既存のシートにいきなりマクロを追加しちゃうような使い方をなおすべき
687 :
679 :2009/06/27(土) 14:30:32
>>686 ワークシートコレクションについて調べてみましたが、これってWorksheets(1)とか
書くわけですよね。不要なシートを選ばないようにもできますか?
色は33箇所だけなので、ActiveWorkbook.Colors(38) = RGB(255, 249, 249)とか
書けばいいですか?
それから、
>既存のシートにいきなりマクロを追加しちゃうような使い方
の意味がわかりません。
Sheets(Array("NAHA", 略)).Copyって、マクロを追加しちゃうんですか?
688 :
679 :2009/06/27(土) 15:35:51
i = Worksheets.Count ReDim WS(1 To i) For j = 1 To i WS(j) = Sheets(j).Name Next Sheets(WS).Select ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\yui\My Documents\新垣帳.xls" これで大丈夫っぽいです。
>>687 ワークシートは連番のほかに名前でも指定できる。
WorkSheets("Sheet1")
みたいに書く。
名前を見て除外するかどうかチェックすればいい。
A列の一番下の行数はA = Range("A65536").End(xlUp).Row 2行目の一番右の列はどう書けばいいでそ?
Range("IV2").End(xlToLeft).Colulmn
ありゃ lが入ってしもた、、、orz
d
html・・・・ というのをコピペで貼り付けて、リンクとして表示し クリックしたらブラウザで開くというのをやりたいのですが どうすればいいですか? htmlというのは複数あります。とりあえずコピペしたら リンクになりクリックしたらブラウザで開くという動作に したいと思っています。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 ExcelXP A1セルに1、B1セルに0.0104、C1セルに=A1*B1、D1セルに1、E1セルに0.0103、 F1セルに=D1*E1、G1セルに=C1-F1と入力したとき、G1セルには0.0001と表示される。 ところが、G1セルの桁数を増やしていくと・・・ 0.0001000000000000 0.0010000000000000 0.000099999999999999 0.0000999999999999994 0.00009999999999999940 0.000099999999999999400… なんで?
x 0.0010000000000000 o 0.00010000000000000
697 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 19:52:36
>>697 どもw
695の例ではないんだけど、=EXACT(C1,F1)としたときFALSEを返すのがあって
値をみたら-0.00000になってますた。
仕様だと思って諦めますわ。
699 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 20:37:59
正確な数を求めたいなら10000とか数を大きくしてから計算するといいよ 整数なら小数誤差は起こらない
エクセル2007 アンインストールしようにもファイルが壊れてできません 無理矢理削除する方法知っていますか
701 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 21:09:20
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2000・2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 不可 【5 検索キーワード 】 時給計算 ROUND =IF(A1="","",ROUNDDOWN(A1*24*4000,-2)) A1とは分です。(表示形式 ユーザー定義[mm]) 1時間4000円なので 40分2600円と計算されるようにしています。 しかし30分だと1900円になってしまいます。 本当は2000円にならなければいけません。 どうして誤差がでるのでしょうか。
>>684 プリンタを指定するまでは出来たのですが
番号はどうやればよいのでしょう?
>>701 30分(0:30)だと2000(円)になりますが?
704 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 21:46:23
>>703 C1 15:30:00(出発)
D1 16:00:00(終了)
E1 0:00:00 (休憩)
F1 1(人数)
G1
=IF(OR(C1="",D1=""),"",IF(D1-C1<0,(D1-C1-E1+1)*F1,(D1-C1-E1)*F1))
H1
=IF(G1="","",ROUNDDOWN(G1*24*4000,-2))
だと1900円になるのです。
言葉足らずで申し訳ありません。
>>704 カウントの仕方が間違ってネカ?
時給なら、終了するのは16:00ではなく、16:01でないとw
これも小数誤差だな 1999.999…を切り下げてるんだ
707 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 22:08:08
>704 エラー回避いれてないから直して =(HOUR(D1-C1-E1)+MINUTE(D1-C1-E1)/60)*F1*4000
>>704 C,D,Eの数値を10^8してから計算すれば誤差はでない。確認済み。
710 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 22:26:55
711 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 22:31:54
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 不明 いま、エクセルにデータをまとめているのですが 1行目にデータの種類(家計簿で言うならA列に日付、B列に出費、C列に金額という感じです)を打ち込んでいます。 データの種類が増えてきて下に伸びてくると1行目が表示されなくなって困るので常に表示する方法はありますか?
713 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 22:39:40
714 :
712 :2009/06/27(土) 22:44:05
>>710 うちの会社は8〜17時だけど、8:00に出社(打刻)して17:00に退社(同)すると−0:15になるお
それは通報しとけ
717 :
名無しさん@そうだ選挙にいこう :2009/06/27(土) 23:18:41
レコーダーの設定がおかしいんじゃないか
いや、フレックスで15分単位だからまちがってないお
719 :
名無しさん@そうだ選挙にいこう :2009/06/28(日) 00:10:36
助けてください。 【1 OSの種類 .】 Windowsビスタ 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 △ 【5 検索キーワード 】エクセル excel 一度(一回で、一発で)に閉じない 症状:エクセルのブックをひとつだけ開く→タイトルバーの×ボタンを押す →ブックは閉じるが、何もブックが表示されていない枠?だけ残る (ちょうど、メニューバーの×ボタンを押した状態と同じ灰色の画面になる) 1、個人マクロのPERSONALブックは、非表示にしている 2、原因と思われるのは、個人マクロを記録したらPERSONALの画面が 表示されてしまったので、あわててXLSTARTフォルダや、PERSONALの ファイルを削除した。(確か、その時PERSONALのファイルが削除できなかった) 状況が変わらず、さらに、マクロのメニュー画面で個人マクロを削除。 その後調べて、PERSONALブックを非表示にする方法を知ったが、 それは非表示に出来たが、上記のようにエクセルの枠?だけが残ってしまう。 3、会社のPCなのですぐに試せないのですが、お願いします。 (自宅のPCはEXCEL2003なので、再現できません)
2007って、そんなもんじゃなかったっけ? officeボタンかなんかの閉じるじゃないと一括で閉じないんじゃね?
721 :
719 :2009/06/28(日) 00:23:54
>>720 さん
もともとは、一回で閉じてました。
個人マクロを記録してから二段階で閉じるように変わってしまったのです。
エクセルは仕事で頻繁に使うので、すごい不便になってしまいました・・・
しかも、共用で大勢で使っているので、オフィスボタンでのエクセル終了や、
シフト+×のような一手間かかる操作を周知させるのは難しく、ただ、元に
戻せないかと相談させてもらってます。
722 :
719 :2009/06/28(日) 00:43:22
あ、2つ以上のブックを開いたときは、やっぱり個別に閉じてました。 それはそれで、まったく構わないんですが。 今まで Aブック、Bブック→Aブック閉じる→Bブック残る 現在 Aブック、Bブック→Aブック閉じる→Bブック残ると共に、Aブックは閉じるが枠?が残る →A枠を閉じるのにもう一度×をクリック
【1 OSの種類 .】 Windows Vista 【2 Excelのバージョン 】 Excel2007 2009/6/28の表示をH21(2009).6.28と表示したいときどうしたらいいですか? TEXT関数じゃなく表示形式でお願いしたいのですが。 あるところに表示形式をge[$-409](yyyy).m.dとすればよいと書かれてますが H2009(2009).6.28と表示されます。
"H"e.(yyyy).m.dとかじゃダメかな?
>>723 当方2002環境ですがge[$-409](yyyy).m.dでおkでしたが2007環境だとダメなのかな?
726 :
723 :2009/06/28(日) 07:07:47
>>724 平成だけならいいのですが昭和や大正もあるんで....。
>>725 2002では出来るんですか。
2007では駄目なんですよね。
>>723 2000だと
ge(yyyy).m.d
でいけるんだけどなー。
728 :
723 :2009/06/28(日) 07:27:53
>>727 サンクス。
バージョンによってころころ仕様が変わってるんですね。
2007ではyyyy(ge)とすれば2009(H21)と表示されますがgeを先に持ってくると年が同じに表示されて駄目ですね。
まぁ正直言うとこんな表示しないのですが某所で書かれてるようにやってみても出来なかったもので。
729 :
725 :2009/06/28(日) 09:35:49
>>723 ge[$-xxx]yyyy.m.dのxのところをいじってみては?
いまそこ弄ってみると表示が変わったりしたので。
今北 >701みたいな少数誤差は四捨五入をかますが一般的じゃまいか。 =IF(G1="","",ROUNDDOWN(ROUND(G1*24*4000,0),-2))
731 :
名無しさん@そうだ選挙にいこう :2009/06/28(日) 12:11:14
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 EXCEL 2byteコード 任意の1文字が2byteコードかどうか知りたいの ですが、数式はどのようになるのでしょうか? ある文字列の2byte目までと3byte目以降を別のセルに 表示したいのですがMIDBでは2byte目が2byteコードの 場合におかしくなります。 2byte目が2byteコードの場合は1byte目までと2byte目 以降としたいのですがIFの判定にはどのような数式が あるのでしょうか? A1="1□3" B1=LEFTB(A1,2) C1=IF(●●●,MIDB(A1,3,LENB(A1),MIDB(A1,2,LENB(A1)) よろしくお願いします。
732 :
719 :2009/06/28(日) 12:21:34
お〜い 俺のことも忘れないで
>>731 普通に取り出してLENBで長さを見る
=IF(AND(LENB(LEFT(A1,1))=1,LENB(MID(A1,2,1))=2),"2バイト目が2バイトの先頭","")
>731 2byte目のコードが 0x20 〜 0x7E 以外かつ 0xA1 〜 0xDF 以外
735 :
731 :2009/06/28(日) 12:51:01
>>733 2byte目というのは実際には40byte目で且つそれ以前にも1byteコード
が存在するんで MID(A1,□,1) は使えないんですよ。
簡略化して書いて申し訳ない。
>>734 MIDBで1byte取り出すと2byteコードだった場合には0x20が
返るんですよ・・・
【1 OSの種類 .】 WindowsXP SP3 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 【5 検索キーワード 】 Excel カーソルの色 Googleで検索すると様々な方法が出てきましたが,今ひとつ自分の希望とは異なりました。 (1) カーソルがあるセルだけに背景色をつけたい。(行,列にも色がついた十字ではなく。) (2) 1つのシードだけでなく,ブック内の全てのシートで行いたい。 なので,Thisworkbookに記述できると良い。(設定すべきシートが多いので) なので,条件付書式を使う方法は避けたい。(設定する箇所が多いので) よろしくお願いします。
追記 (3) 元々セルに背景色がついているときは,カーソルがずれたらもとの背景色に戻る。
738 :
731 :2009/06/28(日) 13:06:45
>>733 すみません。勘違いしておりました。
その案を戴きました。(LEFTの意図が不明ですが・・・)
=IF(LENB(MID(A1,2,1))=1,MIDB(A1,3,LENB(A1)),MIDB(A1,2,LENB(A1)))
ありがとうございました。
>>735 40バイト目に境界が存在するか調べる
A20:A40は20〜40の値を作るためなので意味は無い
=IF(SUMPRODUCT(1*(40=LENB(LEFT(A1,ROW(A20:A40))))),"","2バイト文字あるいは40バイト未満")
答えがでて終わってるのにわざわざ披露するヤツって何なの? しかも長げーし。 レス乞食ってヤツかなwww
>>736-737 です。
今のところ,もっとも近いのは下記のコードなのですが,
十字の選択であることとが希望と異なります。
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
With Target
Range(.EntireColumn.Address & "," & .EntireRow.Address).Select
Target.Activate
End With
Application.EnableEvents = True
End Sub
>>741 どこかに元セルの色を控えておけばいいんじゃね
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Static tmpRange As Range
Static tmpColor As Long
Static blnFlg As Boolean
If Not tmpRange Is Nothing Then tmpRange.Interior.ColorIndex = tmpColor
'If Target.Address(0, 0) = "A1" Then blnFlg = Not blnFlg
'If blnFlg Then Exit Sub
Set tmpRange = Target(1)
tmpColor = Target(1).Interior.ColorIndex
Target(1).Interior.ColorIndex = 35
End Sub
ねぇねぇ、↓は何でダメぽ? For @ Do A Do B Loop B Loop A Next @
>>742 俺も似たようなこと考えた。
VBAスレでも似たようなコードで論争になったが、あの基地外君は元気だろうかw
それはおいといて、2003では多分うまくいくと思うんだがExcel2007では
何故かうまくいかないね。
元の色に戻らない色がある。
薄い青(初期状態のColorIndex33番)とか橙(初期状態のColorIndex44番)とか。
あとで色が薄くなってる。
どうなってんの?
上の基地外君って使い物にならないものを、使えないほどじゃないとか言い張ったやつね。
746 :
719 :2009/06/28(日) 19:31:15
誰か・・・ 俺の質問にも答えて・・・
>>746 それが普通なんでないの?
うちも二台あるが最後に枠が残るよ。
2007もってないんだよなぁ。買う予定もないし 会社とかの関係で持ってる人いたら答えてあげて
おれらはVistaも2007もつかってないんだよ マイクロソフトに聞け
750 :
743 :2009/06/28(日) 21:00:51
誰か・・・ 俺の質問にも答えて・・・
>>743 あとは変数の使い方間違って無限ループしてるとかな
>>750 どうダメなんだ?
エラーが出たのか、どんなエラーなのか、プログラムが終わらないのか、
期待した結果が出なかったのか、もうちょっと状況を詳しく書け。
とあるQ&Aのサイトで見かけたものです。 手抜き宣言は出来きないと書いてる先生がいます。 でも、実際には変数として宣言できちゃうことが多くないですか? ┌───────────────────────────────┐ │> Dim s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13 As Worksheet | │ │ │よく見かけますが、 │ │こういう手抜き宣言は出来ません。 │ │参考までに何故、こう宣言できると考えたのか教えて頂けないでしょうか? | └───────────────────────────────┘
デカイの来たな そこで聞けよ
先生に聞けば
あ、s1〜s12がバリアント、S13がワークシートって意味ねw
嫌味な先生だね
いい先生じゃん。 最善を死んでも求めない人とか動けばいいって人には嫌味かもね。
>こういう手抜き宣言は出来ません。 神経質な奴なんだろうな VBAは全部バリアント型で処理してるよ。メモリなんて腐るほど余ってるんだから使えるだけ使えばいいのに
x こういう手抜き宣言は出来ません。 o こういう手抜き宣言はしないようにしましょう。 初心者だと知っていながらイジメるのはどうかと思うけどねw わざと動作しないマクロを書いて、質問者の反応をみてる意地悪な先生もいるし。 そんなマクロでも質問者が「ありがとう」なんてレスしたときは笑える。
【1 OSの種類 .】 WindowsVista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 excel 縦軸 横軸 比 現在取り組んでいる課題である関数の平面図形を描く必要があり、 図形を描くことはできたのですが縦軸と横軸の比がバラバラになってしまいます。 方眼紙のように1:1対応させようとそれぞれの軸の最大・最小値を同じにしたり、 散布図のグラフの種類を変更したり試してみましたがどれもうまくいきません。 どなたかわかる方ご指導よろしくお願いします。
>>762 Excelでは寸法や比率を厳密に合わせるのは難しい
画面上では正方形でも印刷すると長方形になってしまう可能性もある。
とりあえず軸の範囲だけでなくプロットエリアのサイズも調整すべし
最終的に画面で見るのか印刷するのか。
印刷が目的なら、まずは1枚出してみて、そこから設定するサイズを逆算する。
>762 ものさし作成のマクロがフリーであるから、それ使うといいよw
765 :
762 :2009/06/29(月) 00:24:53
>>763 ,764
ExcelのヘルプにもWebにも方法が無かったので覚悟はしてましたがやはり厳密にあわせるのは難しいようですね。
Vectorでものさしのフリーソフトを見つけたのでExcelではそれを利用したいと思います。
また印刷する必要もあるので縮尺が変わってしまった場合は逆算して調整したいと思います。
お二方ご指導ありがとうございました。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 関数 ○○小学○○ → 小学校 △△中学△△ → 中学校 文字列の中に"小学"が含まれている場合は、隣りのセルに"小学校" 文字列の中に"中学"が含まれている場合は、隣りのセルに"中学校" と表示させたいのですが、共通の関数で処理したいのですが どのようにすれば宜しいでしょうか。宜しくお願いします。
>>766 =IF(ISERR(FIND("小学",A1)),IF(ISERR(FIND("中学",A1)),"","中学校"),"小学校")
ISERRって必要か?
>>767 できました!
なるほど…ISERRで検索文字列があるかどうかを真か偽で判定させて
IFの条件式に利用させるんですね
これは他にも応用できそうです
素早い回答ありがとうございました!
パソコンから書き込めない環境なので携帯から失礼します 【1】 WindowsXP 【2】 Excel2003 【3】 いいえ 【4】 否 【5】 エクセル 関数 並び替え 獲得ポイント数に対応したランキング表を作っているのですが、ランク順に並び替えすると正しく表示されません。 順位、選手名、チーム名、総獲得ポイント数、大会番号、大会名、会場、結果、獲得ポイント数、 というような表になっているのですが、並び替えると選手名はランク順になっているのですが、順位、総獲得ポイント数、獲得ポイント数がその選手にあったものではなくなります。 ちなみに別シートに、大会番号に対応した大会名・会場の表と、大会名・結果に対応した獲得ポイント数の表があります。 大会名と会場は前者の表から、獲得ポイント数は後者から参照して、総獲得ポイント数は獲得ポイント数の合計から算出しています。
>>770 並び替えたい範囲全体をドラッグして選択状態にしてから並び替えてないか、
数式の相対参照と絶対参照の書き方が不適切かどっちか。
>>771 早速のアドバイスありがとうございます
前者を試したら結果が同じでしたので、恐らく後者だと思われます。
しかし後者の意味がわからず、調べてみたんだすけどやはりわかりませんでした。
どのようにすればいいんでしょうか?
773 :
名無しさん@そうだ選挙にいこう :2009/06/29(月) 06:25:01
Me使っているんですが、エクセルのファイルを閲覧する方法って無いでしょうか? 2000の場合、MSがヴューワを提供しているみたいなんですが・・・
旧ビューア(2003ではなく97)を使う
VBAについて質問です Range("b2:f6") = Range("l12:p16") という風に、valueをそのまま代入したいのですが、 これは複数セルではできないのでしょうか? 値だけコピーするしかないんでしょうか
776 :
名無しさん@そうだ選挙にいこう :2009/06/29(月) 11:55:38
チョット教えて下さい COUNTIFの検索条件に小文字の"*"を指定するとちゃんとカウント出来ないんだけど。小文字の検索条件はできないのですか?
>>776 Range("b2:f6").value = Range("l12:p16").value
ちゃんとvalueつければいけんじゃね?
>>777 ありがとうございます!
範囲だと別のプロパティが優先されるのかな
質問です VBAで TRUE+TRUE=-2 になるのはなぜでしょうか? TRUE=1だと思っていたのですが、ウォッチウィンドウで確かめてもTRUEが-1という扱いになっています。 それと別の質問ですが、COUNTIFで離れた範囲(A1:A2とc1:c2)をカウントしたい場合、 COUNTIF(a1:a2,1)+countif(c1:c2,1)のように足し算するしかありませんか?
781 :
776 :2009/06/29(月) 12:26:43
レスどうもです。 ワイルドカード・・・、それがあるのを忘れてました
>>780 cbyte(true)とかすると255になるから、vbaでtrueって「全部ビット立ってる状態」みたいに管理してんじゃねーかな?
それだと符号付きの数値に自動キャストすると、符号ビット立ってるとみなされてマイナス扱いになって、で、残りのビット立ってるから補数取ると-1と判断してんじゃね?
trueは「0じゃない物」くらいに考えといた方がいいんじゃねーのかな。特に自動キャストの計算に直接使うのはやめといた方がいいんじゃね?
>>782 なるほど、ありがとうございます
エクセルのTRUEとは別物なんですね
TRUEの時は変数に1でもいれるようにします
>776 ん、カウントできるけど? =COUNTIF(A1:A18, "*")
>>784 それだと「文字が入力してあるセル」全部カウントしちゃうんで*だけ数えたい
って話よ
チルダがいるね、すまんかった。 =COUNTIF(B1:B18, "~*")
エクセル2000のVBAについて質問です。 以下標準モジュールのマクロです。 Sub Macro4() Sheets("a").Range(Cells(1, 1), Cells(1, 1)).Value = Sheets("tmp").Range(Cells(1, 1), Cells(1, 1)).Value End Sub 実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。 とエラーがでます。なぜでしょうか? 両辺Range(Cells(1, 1), Cells(1, 1))をrange("a1")に変えてもうまくいきますし、 両辺Range(Cells(1, 1), Cells(1, 1))をcells(1,1)にかえても成功します また右辺をsheets("a")でも成功します。 違うシートで範囲で代入は出来ないと思ってよいのでしょうか? シート"a"と"tmp"は存在していますし、セルの結合もしていません。
Sheets("a").Range(Sheets("a").Cells(1, 1), Sheets("a").Cells(1, 1))
>>788 ありがとうございます!
そういう記述でしたか、助かりました
いや適当だからうまくいくかわかんね
Application.ActivePrinter = "Fax on Ne03:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _ "Fax on Ne03:" こんな感じでFax送信ダイアログを呼び出すところまでは出来ましたが 追加で電話番号を渡すにはどうしたら可能でしょうか?
793 :
名無しさん@そうだ選挙にいこう :2009/06/29(月) 16:57:22
先日ピボットテーブルの練習を開始しました。 そこで終わったセパ交流戦の入場者数を全て 新聞を見てメモを取り、日毎の入場者数を 対戦別入場者数としてセリーグ本拠地、 パリーグ本拠地でシートを分けて実施して みました。駄作と思われるかもしれませんが この練習法はどうでしょうか?
>>793 いいんじゃないかな。
検索したけど練習用の素材って無いね。
A商店の複数の部品の売り上げ、みたいな表があれば楽なのにね
一行目に見出し
A列にセ/パ
B列に球場
C列以降日付に対応する入場者数入れて作ればいいと思う
あれ、行列逆か?まぁいいか
とりあえず正規化の概念が分かればok
795 :
名無しさん@そうだ選挙にいこう :2009/06/29(月) 18:57:26
796 :
名無しさん@そうだ選挙にいこう :2009/06/29(月) 21:42:40
質問です。 デバック時に、filecopyで実行時エラー 52 ファイル名または番号が不正です、になるのですが、 その部分を取り出して別で作ってみると実行できます。 mycsvにした部分を手入力だと問題がないようです。 どのように修正すれば動くでしょうか? とりあえずうごかない部分の直前から抜粋しました。 よろしくお願いします。 If .Execute(msoSortByFileName, msoSortOrderDescending) > 0 Then mycsv = .FoundFiles(1) End If FileCopy mydir & "\" & mycsv, mydir & "\test\" & "copy" & mycsv
イミディエイトウィンドウでmycsvの中身を確認してみれ
>>795 探したけどもうDLできないと思う。リンク切れだった
799 :
796 :2009/06/29(月) 22:11:18
>797 ありがとうございます。 mycsvにディレクトリ名も入っており、二重になっていたのが原因のようです。 ここから名前のみを抜き出すことはできますでしょうか?
なんで抜き出す必要があるの mydir&を消せばいいだけやん
あー コピーするのにリネームするのか 文字列操作関数でどうにかできるんじゃね?しらんけど
802 :
796 :2009/06/29(月) 22:20:37
>800-801 そうですね、ファイル操作でやらなきゃと思ってて忘れてました。 今回の作業に関しては文字列操作で簡単にできそうです。 ありがとうございます。
>>795 オープンオフィスをダウンロードすれば見えるのでは
OOoはMEに対応してないって書いてある インストールできるかもしれないけど
ちょっと質問です。 C列に部品の単価が入ってて、値はマイナスになりません。 真のとき何もしないのが無駄になっています。 別の書き方を教えてください。 If Range("C3").Value < 0 Then 'なにもしない Elese MsgBox "(・3・) エェー!!" End If
If Range("C3").Value => 0 Then MsgBox "(・3・) エェー!!" この場合endifは不要
808 :
名無しさん@そうだ選挙にいこう :2009/06/30(火) 00:21:39
>>798 ですよね
97使えとか書いてくるから、どこにあるのかと小一時間探しました
809 :
名無しさん@そうだ選挙にいこう :2009/06/30(火) 00:26:26
>>805 http://wiki.services.openoffice.org/wiki/Ja.openoffice.org/start/environment ↑
このページなんですが、文字化けしませんか?
ナビゲーション
メインページ
最近更新したページ
おまかせ表示
ヘルプ
って左上にありますが、「ナビゲーション」が「ナビゲ□ション」、「メインページ」が
「メインペ□ジ」みたいに、伸ばす音「ー」が「□」って表示されてます
これはMe特有の現象なんでしょうか?たまに、ブログ何かでも同じように文字化けすることがあります
あと、フォントがおかしくなっていて、読みにくいフォントになっています(うまく説明できません)
なんと言って良いか、カクカクしているというか、ザラザラしているというか、滑らかじゃありません
たまにWikipediaでもなる現象なんですが、ならない場合もあります・・・原因は分かりません
810 :
805 :2009/06/30(火) 00:33:49
>>809 vista ie8
文字化けはしていません
何なんでしょうね
811 :
806 :2009/06/30(火) 00:35:55
>>807 Range("C3").Value = "" のときは?
>>809 XPでも問題なく表示される。
文字がおかしくなるのはリソース不足の症状。フォントを減らすと直ることもある。
けど、根本的な解決法はWindows2000以降のOSに入れ換えること。
test
814 :
名無しさん@そうだ選挙にいこう :2009/06/30(火) 04:59:15
>>810 >>812 MEでIE6なんですよ
やっぱり、リソース不足でしょうかね
フォントがおかしくなる時と、ならないときがあるんで
ギコナビとか複数のアプリ起動した状態だと、おかしくなることが多い気がします
>>811 =の反対は<>
Range("C3").Value <> ""
いろんなサイト眺めるといいよ
たまに日本語入力するとエラーを吐いて落ちるんですがなぜでしょう あとエラーログはどこに仕舞われてるのでしょうか
日本語で(r
変換するときにエラーならOSが不安定になってると思う OSごと再インストールおすすめ
IMEの辞書が壊れてるんでは
グラフを作成するときにX軸を上下に2つ作りたいのですがどうすればできるでしょうか? 下の軸に時間、上の軸にはそれを分に換算した軸を表示させたいのです。
821 :
名無しさん@そうだ選挙にいこう :2009/06/30(火) 19:22:34
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 今度経理事務の正社員面接を受けるんですが、ワード、エクセルのテストがあるらしいです。 自分は市販の2007版をつかってしか勉強した事がないんですが(実務で扱った事はない)、 どうやらテストは2003版らしいです。 2007版で勉強したものは2003版でも活かせるんでしょうか。
822 :
806 :2009/06/30(火) 19:33:55
>>815 ゴメソ。間違えちゃった。
値が0とか""とかのときに、演算したいのよねん。
If Range("C3").Value > 0 Then
'なにもしない
Else
MsgBox "(・3・) エェー!!"
End If
823 :
名無しさん@そうだ選挙にいこう :2009/06/30(火) 21:39:21
A4〜A10でデータがあって 間に空白があればエラーみたいにできますでしょうか? たとえば A1 A2 A4 … A10 の場合A3が埋まっていればOKだけど、空白なのでエラーみたいにしたいのですが もちろんデータの最後は可変です
824 :
名無しさん@そうだ選挙にいこう :2009/06/30(火) 21:43:19
Excel2007なんですが あるシートに書かれているすべての文字列のふりがなをまとめて空白(=削除)したいのですが やり方とかあるのでしょうか?
sub 全削除() sheet(a).cells.clear end sub
>823 ・検査対象セルを選択してからマクロ実行 ・空白セルとはnullのこと という前提でなら、こういうのでいいと思うけど Sub テスト() Dim flg As Boolean, c As Excel.Range flg = False For Each c In Selection If c.Value = "" Then flg = True Exit For End If Next c If flg Then MsgBox ("ERROR") Else MsgBox ("NO ERROR") End If End Sub 空白セルをスペースだけのセルも含むのであれば、trimも組み合わせるといいです。
"NO ERROR" 何かかわいいなw もし社会人なら少しは英語の勉強してから英語使えよ。
NO ERROR なんて英語は無いんだが・・バカ丸出しww
>>821 機能自体は生かせるけど、GUI(見た目、大きなところではメニューバーとリボン)の違いははっきり言ってかなりキツイ
不安ならエクセルの入ってるマンガ喫茶で旧バージョンさわってみたらどう?大概のところには入ってるよ
>>822 If Range("C3").Value > 0 and Range("C3").Value <> "" Then
なにもしない
以降同じ
あと個人的には
If (Range("C3").Value > 0 ) and (Range("C3").Value <> "") Then
とカッコをつけたほうが見やすいと思っている。が別につけなくてよい
>829 お前は何を言ってるんだ?
832 :
名無しさん@そうだ選挙にいこう :2009/06/30(火) 22:24:42
"NO ERROR" の検索結果 約 847,000 件中 1 - 10 件目 (0.21 秒)
そんなに必死になって同じ馬鹿を探さなくても・・・
NO ERRORに全く違和感を感じなかった俺・・ ちなみに本来の英語だとどう言うんだ?
TOEIC800点レベルの俺には見当もつかんな
838 :
806 :2009/06/30(火) 23:04:10
839 :
名無しさん@そうだ選挙にいこう :2009/06/30(火) 23:04:17
そんなことよりdimじゃなくて正しくはdimensionじゃねww エクセル馬鹿wwww
俺はTOEIC980点レベルだぜ!
この騒動の張本人の>823はどうした?
NO ERRORのどこがおかしいのか小卒の俺に優しく教えて下しあ
おかしくないよ(棒読み
845 :
名無しさん@そうだ選挙にいこう :2009/07/01(水) 00:00:04
あと5日
普通エラーでなければノーエラーとは言わないw 英語圏の人はOKとかGOODとか使うよ よーく考えてみ、”エラーでない”とは言わんだろ
フリチン≠ふるちん みたいな恥ずかしいレスやめようぜ
ちと言い回しがおかしかった・・ ×普通エラーでなければノーエラーとは言わない ○普通エラーでないときはノーエラーとは言わない
禁煙がNO SMOKINGだから、NO ERRORは禁誤じゃね?
英語圏厨はどこまでマジで書いてるかわからんな・・ 日常のカタカナ英語にも全部噛みついてんの?
851 :
名無しさん@そうだ選挙にいこう :2009/07/01(水) 00:46:30
テストでエラーを出したいSTやITAの場合 エラーが出れば成功 エラーが出なければテスト失敗のときは Error、No Errorとするがな
どうでもいいけどさー ・間違い ・正解(”間違いでない”とは普通書かない だろ?
No errorとGoodじゃ意味合いが違うよなあ イチロー選手に今日もエラーが無かったっていうのを No errorじゃなくてGoodと言ったんじゃ意味不明だし
英語のNOじゃなくて排他のNOだろといってみる
>>829 C3が0より大きければ Range("C3").Value <> ""はTrueになるに決まってるだろうよ。
まあ 中学程度の英語力もないやつがNO ERRORがおかしいとかかみつくなってことだなw
857 :
名無しさん@そうだ選挙にいこう :2009/07/01(水) 10:05:05
【1 OSの種類 .】 WindowsXP SP3 【2 Excelのバージョン 】 Office2003 Excel 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 クリップボード・クリップ・画像・挿入・図 具体的なやり方とかの質問ではないのですが、クリップボードであらかじめ用意されている画像というのは 使用に制限はないのでしょうか? プレゼンや何かに色々と使っておりますが、一部のアイコンの表現がとてもよかったのでパンフに載せるという事になりまして 現在コンテンツについて確認しておりました。 使用制限などありましたら教えてください。
つまり素材として再利用できる形で使っちゃERRORで パンフに乗せるのはNO ERRORてことですか?
>>858 その同じページにこう書いてあるぞ
--
単に配布物の装飾、イラストとして使用するだけであれば問題なくご使用いただけます。
たとえば、年賀状、ホームページ、お店のちらし、会社が無料で配布するパンフレット、
会社として出す年賀状、区立図書館の月報などにクリップ アートを使用することは可能です。
--
861 :
名無しさん@そうだ選挙にいこう :2009/07/01(水) 18:15:09
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 3万件くらいの市内住所録を作成していますが、最近合併により北区、南区などに分かれてしまいました。 郵便番号辞書で一括変換をする際に、郵便番号→住所は問題無いのですが、 区を省いた住所→郵便番号の変換はエラーになってしまいます 解決策は無いでしょうか・・?
区の分割に対応した最新の郵便番号辞書をつかえばいんじゃないの
記入して頂いたカードを打ち込む作業なんですが、○○市●区△△町と書いてくれている人はまだ少ないんです。 ○○市△△町だと郵便番号に変換できないんですよ かといって旧辞書だと○○市●区△△町が変換できません…
>861 「区を省いた住所」とは「合併により政令指定都市となる以前の旧表示の住所」のことですか? であれば、 ・合併前の旧住所用の郵便番号辞書を入手する もしくは ・「区を省いた住所」から区を含む完全な住所に変換したのち郵便番号変換する のいずれかでしょう。 合併協議会のウェブサイトに新旧住居表示対応表というのがあるはずです。
>>863 市内の住所録程度なら
△△町→●区△△町
という置換作業を何回か行えばいいんでは
該当する町名が何百とかあるわけじゃないっしょ?
866 :
864 :2009/07/01(水) 19:38:04
アップする直前にリロードしてなかった。
>863
住所録の入力と併せてということであれば、単語登録してしまうのがてっとり早いと思う。
最近の政令指定都市ということで岡山市を例にあげると、
http://www.city.okayama.jp/gyouseiku/kunaijuusho.html にある町名区名対照表から 葵町 は 北区 とわかるので、「あおいちょう」の呼び名で
「北区葵町」って登録しとけばいい。
もしくは、そのまま入力してしまってから対照表(エクセルの表)を利用してVBAでも
使って区名を入れ込むこともできる。
867 :
864 :2009/07/01(水) 20:04:39
追加 IMEにATOKを使っているのであれば、一括で単語登録できる。(MS-IMEは知らん) 詳しい方法はスレが違うので割愛。 入力後に一括して置き換えするのにVBAが使えればいいけど、VBA:いいえって 書いてあるから、「がんばって置換してね」としか言えません。
>>822 If Not Range("C3").Value > 0 Then MsgBox "(・3・) エェー!!"
869 :
名無しさん@そうだ選挙にいこう :2009/07/01(水) 20:18:31
「NO ERROR」は、エラー禁止 エラーなしなら、「NON ERROR」
えええww適当な事言ってんじゃねえw
なぜフランス語
Office Standard 2007 アップグレード 20周年記念 優待パッケージですが、 OfficeXPプリインストールモデルでも入れられるでしょうか?
Sub テンション推移() Dim i, j As Byte Dim warosu As String For i = 1 To 5 warosu = "NO ERROR" For j = 1 To 5 - i warosu = warosu & "ww" Next If i = 5 Then warosu = warosu & "、あるとおもいます" MsgBox warosu, , "英語圏厨" Next End Sub
>Dim i, j As Byte よく見かけますが、 こういう手抜き宣言は出来ません。 参考までに何故、こう宣言できると考えたのか教えて頂けないでしょうか?
ん?できるぞ? それそのまま標準モジュールにコピペして実行してみ
>875 できるけど、as Byte はjにしか効かない だったらむしろdimする意味ないw
>>875 出来る出来ないの話じゃ(ry
iとjの両をByteにしたけりゃ
Dim i As Byte, j As Byte
iをByteにしたいなんて誰も言ってないだろw
屁理屈こいてじゃねーバカ
>>754 からの流れでネタ楽しんでるんじゃねーのか
こういう中途半端は扱いに困る
754のパクリだよw
うわ、つまんね
実行できないのかと思った そんなギャグみたいなコードで何いってんだww
どこの斉藤だよw
そろそろ1000だからあとはネタで埋めよう
>Dim i As Byte, j As Byte i と j をByteで宣言するとき、もっと簡単に書く方法ってありゅ?
ギャグに妥協を許さない英語圏厨用に直してみた Sub テンション推移() Dim i As Variant Dim j As Byte Dim warosu As String For i = 1 To 5 warosu = "NO ERROR" For j = 1 To 5 - i warosu = warosu & "ww" Next If i = 5 Then warosu = warosu & "、あるとおもいます" MsgBox warosu, , "英語圏厨" Next j = 256 End Sub
何も書かなければいいじゃん
なんでDim i As Variant?
一気に過疎ってきたから900ゲト  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ 〜〜з ⊂(´Д`⊂⌒⌒`つ 〜〜〜 〜  ̄ ̄ 〜〜〜〜З ノタクリ〜
∧_∧ /⌒ヽ ) トボトボ・・・・・ 899と見間違えた・・・・ i三 ∪ |三 | (/~∪ 三三 三三 三三
∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵。∴∵
∴∵∴∵:。∴∵∴∵∴: --─- ∴∵∴∵∴∵∴∵
∴∵゜∴∵∴∵∴∵ (___ )(___ )
>>890 ∵。∴∵∴∵ ゜
∴∵∴∵∴:∵∴∵_ i/ = =ヽi ∴∵∴∵。∴∵∴
∴∵☆彡∴∵∵ //[|| 」 ||] ∴:∵∴∵∴∵:∴∵
∴∵∴∵∴∵ / ヘ | | ____,ヽ | | ∴:∵∴∵∴∵:∴∵
∴゚∴∵∴∵ /ヽ ノ ヽ__./ ∴∵∴∵:∴∵∴∵
∴∵∴∵ く / 三三三∠⌒> ∴:∵∴∵:∴∵
∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴∵∵∴∵∴∵
∧∧ ∧∧ ∧∧ ∧∧
( )ゝ ( )ゝ( )ゝ( )ゝ 無茶しやがって・・・
i⌒ / i⌒ / i⌒ / i⌒ /
三 | 三 | 三 | 三 |
∪ ∪ ∪ ∪ ∪ ∪ ∪ ∪
三三 三三 三三 三三
893 :
名無しさん@そうだ選挙にいこう :2009/07/02(木) 08:04:04
教えてください。 下記の式で、C2〜のセルが未入力であれば""で返すと思うのですが、 C2〜のセル自体が、他のシートからのデータを引っ張って来るために =Sheet1!A2・・・などという式が入っているためか、行数を返して来て しまいます。 このC2以降のセルに式が入っていても""で返すようにするには どうすればいいのでしょうか? =IF(COUNTIF($C$2:C2,C2)=1,ROW(),"") =IF(COUNTIF($C$2:C3,C3)=1,ROW(),"") =IF(COUNTIF($C$2:C3,C3)=1,ROW(),"") ・ ・ ・ (表から文字データを抜き出す時に、重複の文字を省くための式の前段として作成中)
>>893 データでも数式でも、その式で大丈夫のはずだけど
>>894 いやーでも実際に空欄のところも行数を返してきちゃうんですよね。
だから、抜き出した行数をもとに以下の式で文字を抜き出しても
りんご
ごりら
らっきょ
・
・
のように、空欄が挟まってしまいます。
=IF(COUNT(E:E)<ROW(A1),"",INDEX(C:C,SMALL(E:E,ROW(A1))))
(Eの列に
>>893 の式)
ちなみに、C列の式をデリートすれば空欄が行数を返して来なくなりますが
本来の表には空欄がランダムにいくつも入っているので、手作業でデリートするのは
手間がかかりますし。
それと、本来の表では空欄ではなくて結合したセルの下段です。
>887 なしてjをわざとオーバーフローするん?
899 :
名無しさん@そうだ選挙にいこう :2009/07/02(木) 19:33:28
C1=8:30 D1=20:00 E1=休憩あれば F1=人数 G1=総分数 =IF(OR(C1=",D1=""),"",IF(D1-C1<0,(D1-C1-E1+1)*F1,(D1-C1-E1)*F1)) H1=支払金額 =IF(G1="","",ROUNDDOWN(HOUR(G1)*6000+MINUTE(G1)/60*6000,-2)) 時給6000円での計算です。 1人だと69000円になるのに (2人もOK) 4人だと132000円になります。 どこがまちがっているのでしょうか。
900 :
899 :2009/07/02(木) 19:35:02
すみません。 テンプレ挿入忘れていました。 よろしくお願いします。 【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 時給計算 minute関数
>>899 HOUR(G1)
は24:00を超えると0:00に戻る
H1=IF(G1="","",ROUNDDOWN(G1*6000*24,-2))
が正解
G1の式でエラーがでたので調べてみたら、"のかたわれがなかったのを発見。 正しくは =IF(OR(C1="",D1=""),"",IF(D1-C1<0,(D1-C1-E1+1)*F1,(D1-C1-E1)*F1)) になります。 で、三人のときもおかしい。H1セルの中のHOUR(G1)が桁あふれしている模様。 HOURは23の次は0になるんじゃないかな?
同時にレス付いてワロタw 先生方 お疲れ様ですm(__)m
いやいや NO ERROR
はやらせたいのは伝わってくるが、そんなに面白くないぞ
>>899 だからおとなしく、俺が >730 に書いたようにしておけと。
本当はG1の方で金額をROUNDしておいて人数を掛けるんだが。
There is no error.
It is not a error.
別に NO ERROR でもおかしくない。
908 :
名無しさん@そうだ選挙にいこう :2009/07/02(木) 21:10:57
Excel2007で関数のグラフを作りたいのですが、 x+Δxのようにちょっとずつ同じ数値を足していくにはどうすればいいのでしょうか? 定義域は-1<x<1です。
「インデックスが有効範囲にありません」というエラーが出るんです。 どこがマズーなのん? Sub test1() Dim WB1 As String, WB2 As String WB1 = "Book1.xls" WB2 = "Book2.xls" Workbooks(WB1).Worksheets("Sheet1").Range("C2").Copy Workbooks(WB2).Worksheets("Sheets1").Range("C2").PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub
>>909 ワークシートの名前
sheetとsheetsになってるぞ
>>910 あんがと。
超初歩的なミスで恥ずかスィ〜
ついでに、 値だけをコピペしたいんだけど、もっと簡単な書き方あるますか? Workbooks(WB1).Worksheets("Sheet1").Range("C2").Copy Workbooks(WB2).Worksheets("Sheet1").Range("C2").PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Workbooks(WB1).Worksheets("Sheet1").Range("C2").Copy Workbooks(WB2).Worksheets("Sheet1").Range("C2").PasteSpecial xlValues
Workbooks(WB1).Worksheets("Sheet1").Range("C2").value=Workbooks(WB2).Worksheets("Sheet1").Range("C2").value
916 :
名無しさん@そうだ選挙にいこう :2009/07/02(木) 22:21:31
Excelで同じ漢字を入れた場合 同じ漢字を入れているのに場合によって並び返してもうまくいかない場合があります 調べたところ 以前に入力した感じにはふり仮名が設定されていないのですが 新しく入力した漢字はオートコンプリートで使ったとしても自動的にふりがなが設定さ れてしまうので その結果、漢字は同じでも並び替えをするとバラバラになるのですが これを回避する方法とかありますでしょうか? 自動的にふり仮名をつけなくさせるか シート内のすべての文字列のふり仮名を一括して削除するか
>>916 漢字をキーにして並べ替えないようにする
>>916 VBAで゛ふりがな降る方法があったけど忘れた
IMEの履歴を取るとか何とか
シフト+alt+↑を同時に押せばふりがな編集できるよ
Selection.SetPhonetic
あと3日
921 :
名無しさん@そうだ選挙にいこう :2009/07/03(金) 01:23:05
Windows vista Excel2007 パソコン初心者、Excel初心者です。 ひとつのセルの中で文字をならびかえることはできますか? AbCabC→AabbCC よろしくお願いします。
>>921 1文字ずつMID関数で取り出してソートしてふたたび結合するか、VBA
923 :
名無しさん@そうだ選挙にいこう :2009/07/03(金) 01:30:44
>>922 さん、ありがとうございますっ!!!
でも全然わかりません。VBAとはなんですか?
924 :
名無しさん@そうだ選挙にいこう :2009/07/03(金) 02:14:49
VBAや関数に関してはド素人ですが、よろしくお願いします。 【1 OSの種類】 Windows XP 【2 Excelのバージョン】 Excel2003 【3 VBAが使えるか】 いいえ 【4 VBAでの回答の可否】 なるべく不可 【5 検索キーワード】 検索 抽出 データベース なるべくシンプルに操作出来るデータベースを作ろうと思っています。 そこで考えたのが、googleトップページの様なシンプルな検索ボックスのみを sheet1に置き、sheet2のデータベースからデータを抽出する。 検索・抽出結果はsheet1の検索ボックスの下に表示する。 データは氏名、住所、電話番号、年齢とする。 で、sheet1の検索ボックスに氏名、住所、電話番号、年齢のいずれを入力しても 該当する列を検索結果として表示したいのです。 こんなことは出来るのでしょうか?
>>921 >>922 ではないけれど、超初心者という前提で言えばひとつのセル内での並び替えは無理と思っていいのでは?
文字を複数セルに分割して作業してよければ、Excelの並び替え機能が活かせる。
その手掛かりがmid関数
vbaで解答なら簡単だけれどそれ以前っぽいし。
まずmid関数をヘルプなりGoogleなりで調べて解らない点を再質問すれば?
>>924 できるだけド素人に解決できそうな手掛かりを考えてみた。
(ただし「年齢」を抽出条件に入れるなら複数ヒット確実っぽいのでとりあえず除外)
Sheet1に氏名、住所、電話番号入力セルを別々に用意
↓
出力行も別々に用意
↓
出力行にIndex関数とMatch関数の組合せでSheet2からデータを引っ張る
あたりがとりあえず近道かと
(質問のブック構成を度外視すればフィルタオプションあたりがいいかも)
>>924 検索結果が必ず1つだけになるんならワークシート関数でできるけど、
たとえば年齢で検索すると、該当するデータが複数出てくるはず。
そういうのはVBA使わないと無理
928 :
924 :2009/07/03(金) 02:56:17
>>926 早速のご返答感謝します。
えーと、ちょっと補足しますと、別に複数ヒットは全然構わないです。
例えば「東京」で検索した場合、3人とか4人とかヒットしても
構いません。
あと、これを使うのがほんとに私以上のド素人のおばさん連中なのです。
一つの検索ボックスでことを賄うのはやはり高度な技術が必要でしょうか?
出来ればどシンプルにいきたいのですが・・
>>928 書き方が悪かったね。もうちょっと簡潔に書くと…
まず、検索ボックスの数は関係ない。
検索結果がいつも1件に絞られるなら簡単。
検索結果の件数が不定だとちょっと難しい。
作業列1…検索にヒットしたかどうか 作業列2…ヒットしたうちの何番目か これらを頼りにSheet1に検索結果を表示するような式を作ることになると思う 微妙にめんどくさいね VBA使った方が楽かな
>>928 ところでコントロールキーを押しながらfキーを押すと検索用のウィンドウが出るという機能はご存知?
932 :
924 :2009/07/03(金) 06:22:56
おはようございます。 えっと、皆さんのアドバイスをまとめると 検索結果が複数を想定しているので、VLOOKUPとかじゃ無理よ。VBA使いなさい ってことですか? 未だに具体的に見えなくて困っています・・
少し使える人ならオートフィルタでも良いと思うけど。
>>932 簡単だ。
氏名,住所,電話番号,年齢を1つのセルに入力して
後はオートフィルタ使うだけ。
使うのがど素人なのは仕方ないが 作る方がど素人だと使わされる側が大変だね・・・
>>924 普通はvbaだろうな
ほとんどが一件だけなら、vlookup
COUNTIFを別セルに用意して、2以上のときは大きく"注意!2件以上該当しています"
と表示させてオートフィルタ使うとか
938 :
924 :2009/07/03(金) 08:02:56
ふむ、やはりVBAですか ちょっくら調べてきます
別に、↓に大量の抽出セルを用意すればいいし
>>916 に対してまともなレスがついてないのが悲しいな
バージョンによって多少違いがあるかも知れんが「並べ替え」のオプションに「ふりがなを使わない」というのがある
>>924 名前〜右端の列を選択してオートフイルタをかけておく
先にフアイル、またはシートをコピーしておく
後は検索項目だけ入力、保存しておくのがいいんじゃないかなぁ
オバチャンというのが非常にひっかかる
942 :
名無しさん@そうだ選挙にいこう :2009/07/03(金) 09:17:28
____
/ \ /\ キリッ
. / (ー) (ー)\ <「
>>916 に対してまともなレスがついてないのが悲しいな 」
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー?、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー?、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
Ctrl+Fだと検索結果が複数あった時に一覧表示できないじゃん 2桁の数字を入れた時、年齢なのか住所の一部なのかもわかんないし 人名と地名がかぶることもあるよな 結論、元々の発想に無理がある
検索フォーム作れ 初心者向けなら、名前検索用、年齢検索用と、入力欄を分けた方がいいぞ 1つにまとめて多機能にすると、かえって混乱する
2003なら普通に範囲指定して[すべて検索]で、ハイパーリンク付きで候補一覧でるんじゃね?
>>938 どうやら最初からVBAと結論は出ていて、それ以外の話は聞こえていないようだな。
お前みたいなド素人のオナニーを見せつけられるおばちゃん達がかわいそうだ。
949 :
名無しさん@そうだ選挙にいこう :2009/07/03(金) 14:39:47
EXCEL2007です。VBA不可。 イメージを挿入した後、180度回転して、貼り付け位置に移動し、 サイズ調整を行いました。 挿入したイメージでは、通常、外側の辺の線は表示されません(元々無い)が 上辺と左辺の箇所に線が表示されます。 印刷プレビューで見ても線が表示されます。 この線が表示されないようにするには、どうすれば良いのでしょうか
950 :
949 :2009/07/03(金) 14:53:25
↑OSはVista Ultimateです。
>>949 たぶん画像と縮小方法と倍率の相性。どーしょもねーんじゃね?
結果が大事ならExcel以外のお絵かきアプリで回転とサイズ変更やればいいんじゃねーのかな
検索の人はおばちゃんに検索機能教えてやれば済む話じゃ? 対人恐怖症でもあるまいし、5分で済むでしょ おばちゃんだってそんなにバカじゃねーよ。めんどくさがってるだけ
「フィルタオプションの設定」って意外と知られてないんだな。
>>924 をそこそこ満足させられる機能だと思うんだが。
快適な操作性を考えるとVBAも使う必要が出てくるけどググればすぐサンプルが出てくる。
954 :
949 :2009/07/03(金) 17:16:39
>>953 いや、こういうヤツがVBAを作ると・・・ハァ
U
>>953 フィルタオプション?
そんなしちめんどくさいことをおばさん連中がやるわけないだろって w
命令してやらなかったらクビだから・・・ 問題は「いかに操作を間違えないか」じゃないかなぁ
まあ、マクロでフィルタオプションをいじるUIを作ることだな フィルタオプションなんて触らせたら文句バッカくるよ
検索・抽出ならピボットテーブルを使えよw
あと2日
962 :
名無しさん@そうだ選挙にいこう :2009/07/04(土) 02:06:14
それぞれ書式が日付型で A1に2001/01/22 A2に2003/01/01 A3に2007/04/19 A4に2001/12/30 … みたいにあった時 =COUNTIF(A1:A500,"2001") みたいにA列のすべてのデータから、2001年だけをカウントで取得したいのですが 書式が日付型なのでどうしてもうまくいきません 他の列に=YEAR(A1)みたいにしてそこからカウントを取るやり方もあると思いますが A列内だけで完結できないものでしょうか?
>>962 =SUMPRODUCT((YEAR(A1:A500)=2001)*1)
なんで初心者って異様に作業セル(列)使うことを嫌がるんだろう?
> 他の列に=YEAR(A1)みたいにしてそこからカウントを取るやり方
で結果には何も問題ないんだからそれでいいじゃん
逆に
>>963 の式には問題がある
間違いが有るわけではないし、不適切な要望とは言え、962の要望通りの
式を出してる963を非難するわけではないが、他の人がこの式を見たときに
「2001年の件数をカウントしてる」とすぐに解るかどうかって話だ
962もそういう手法を知らなくて質問に来たように、この式の意味を理解できない人は多い
会社などの組織・団体で使う場合は、そういう部分はかなり重要になる
今回は個人で使うにしても、作業セルを使ったところで結果に間違いが生じるわけではないんだし
社会に出てからも通用する方法に慣れておいた方がいいと思うのだが
作業列を使わない方が無駄がないとか勘違いしてるのかも知れないが
実際の所、作業列を使ったことによって列数が足りなくなることなんて殆ど無いし
列数を多く使ったからって経費が嵩むわけでもない
逆に他の人が式を読解するのに無駄な手間が掛かる方がよっぽど問題だ
とか、暇なので熱く語ってみる
まぁ初心者共からの反応は目に見えてるがなw
>>964 べつにSUMPRODUCTの式が一個ならいいんじゃない?
年別のカウントなら駄目だけどな。
要するに配列数式やSUMPRODUCTをフィルコピーしちゃいかんってことだ。
年別のカウントならもちろんピボットテーブルでグループ化だな。
SUMPRODUCT使うと簡単だけど単純ではないんだよな エレガントでは無いというか何というか
=COUNTIF(A1:A4,"<2002/1/1")-COUNTIF(A1:A4,"<2001/1/1") で・・・
>>964 確かにあるなぁ
作業セル含めて答えても「1行ですませられませんか?」とか聞かれたこともある
気持ちは分からんでもないが、意味はないことに気づいて欲しいな
969 :
名無しさん@そうだ選挙にいこう :2009/07/04(土) 10:44:39
FOM出版のデータCDロム付き中古テキストを買ってきたんですが、 ワード2002はインストできましたが、エクセル2002の方がインストできません。 自力でインストする方法はありますか? ちなみに、ワード、エクセル2007もインストしてます。
出版元に聞いてください
>>968 元となるデータ側のフォーマットが決まってて、
追加(または更新)が来たときに、そのフォーマットのままコピペできるほうが便利だから
作業列を挿入したくない、ってことはたまにあるな
そういうときに配列使って式入れてたりすることはある
基本的には
>>964 に同意だけど
くせのある作成者のExcelを修正しなきゃならんときは解読に無用に手間がかかる…
>>964 実務を分かっている方ですね
ほんと一番大事なことだよ
配列数式なんかで書いた時には自分でも後でんんん?とかなるし w
やむなく作業列を使わないときはコメントとか入れておくけどね 作業列云々とは関係ないけど、いきなり=A1*234.85 とか入っててこの234.85って何?みたいなこともある そういうのも説明書いておかないと後の人が困るんだよね。 ところでさ、実務で使ってる人に聞きたいんだけど、 データ元の別のブックからリンク貼り付けしてるような一連のブックの管理ってどうしてる? 同じブックにデータ元が入ってるほうが管理はしやすいけどブックのサイズがとんでもないことになるし 別々にしてるといつのまにかリンク切れしてて貼りなおしが厄介になるんだが… 今はフォルダに入れて、コピペとかするときはそのフォルダごと!って言ってるんだが気づくとリンク切れorz
可能な限り一つのブックかマクロかコピペで更新
>>964 たとえばB1〜B30000ぐらいまでYear(A?)を入れていて
B列を非表示にしていて、
新規で途中の行を追加するとその行のYear(A?)はないから
うまくカウントされない時があるから、
たまにうざい時があるけどね
たしかに追加するたびにマクロを使って記述を追加できるけど
句点"。"が打てないやつって、義務教育を受けてないの?
うわぁ・・
NO ERROR です
あれ?今日は何故かまともなやつがいるなw 作業列の嫌いな大先生見てるかい? 死ぬまで治らんだろうなぁ。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 2000 選択したセルの色が出ないのですが出るようにするにはどうしたら良いのでしょうか?
すみません説明不足で 薄い水色みたいな奴の事です
2000は最初から色付かないよ そういうもの
>>983 え!?そうだったんですか・・・
会社のエクセルの事だったんですが転属先のエクセルが選択した所(Ctrl+クリックとかで)に色がつかず
やりにくいので質問させてもらいました。
先輩に何かいじった?最初は色出てたとか言われたんですが勘違いだったのでしょうか?
【1 OSの種類 .】 Windows** 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 【5 検索キーワード 】 虚数 乗 小数 こんにちは。行き詰ったとき度々お世話になっています。 虚数の小数乗(1.5~1.9)を計算する必要があり、調べたところIMPOWERとIMSQRTを組み合わせればできると思ったのですがうまくいきません。 具体的にはIMPOWERを用いて3乗した後、IMSQRTを1回使用したり、IMPOWERを用いて15乗した後、IMSQRTを3回使用したりしました。 試しにIMPOWERで4乗した後IMSQRTを1回使用したものと、IMPOWERで2乗したものを比べてみたところまったく違う結果が出たので 比較してみてやっとIMSQRTでは正数しか算出されないのでうまくいかないとわかりました。 そこでこの問題を解決する方法か小数乗を計算できる他の方法を教えていただきたいです。 どなたかよろしくお願いします。
986 :
985 :2009/07/04(土) 17:40:43
985を書き込んだものです。
自分の参考にしたサイト(
ttp://www.cs.reitaku-u.ac.jp/infosci/excel/excel10.html#engi )
には「IMPOWER 複素数の整数乗を返します。 」と記述されているのですが、EXCEL2007では小数乗もIMPOWERで計算できるようです。
この記述を読んでいたので整数しか試していなかったのが盲点になっていました。
もし調べていただいた方がいればお手数かけて本当に申し訳ないです。
しかもテンプレ埋めきれてませんね…OSはVistaです。重ねて申し訳ありません。
次に利用させていただく際にはこのようなことは無いよう努めますので、その際はどうかご助力ください。
お騒がせしました。
Excelファンクラブ落ちてるね
うん、数日前からね。
>>975 今回のケースじゃないけど、
会社から勤務表フォーマットを送られていろいろ入れたけど、何をどうやっても計算が合わない。
で、聞いたら途中で新規で行を追加したら非表示設定の部分の計算列が丸ごと空白になっていて
そりゃ計算があわないわなって事はあったなぁ。
ふざけんじゃねぇと思ったが、
ドシロウトにの人間に文句言うのは簡単だけど、
そういう隠しキャラはこっちには見つけられっこないし。
非表示になってたら表示してみるのは男のさが
表示ロックしてる 計算式の部分は非表示にしてる
>>993 具体的な内容を見ないとナンとも
ブックをアップロードして
う
>>994 さすがに勤務表は会社の固有資産なのでここで公開するのは無理
それにすでに修正は入っているから目に見えるバグはなくなってる
句読点が打てないバカw 社会人失格だなw
NO ERRORです
1000 :
名無しさん@そうだ選挙にいこう :2009/07/04(土) 22:11:36
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。