5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Excel総合相談所 95

1 :名無しさん@そうだ選挙にいこう:2010/12/24(金) 12:49:49
前:名無しさん@そうだ選挙にいこう[] 投稿日:2010/10/10(日) 02:31:08
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★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総合相談所 94
http://hibari.2ch.net/test/read.cgi/bsoft/1286645468/

2 :名無しさん@そうだ選挙にいこう:2010/12/24(金) 12:50:40
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
・1 現行スレ内で既出の質問が無いか、ページ内検索をしよう。(Ctrl+F)
・2 図やコードを書く場合、TABや連続する半角スペースは無視されるので注意
・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。何レス使っても構いません。
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。
・5 回答内容でわからない部分があっても、すぐに聞き返さずにヘルプやGoogleなどで検索しましょう。
・6 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。
  ここは技術的な質問のみで。
・7 VBAはプログラム言語のVisualBasic(6以前)に近い処理が可能で Excelに関係ないことも出来ます。
  Excelの操作に関係ない部分は、スレ違いなのでここで聞かずにVB言語やAPI、COMについて自分で勉強し、
  どうしてもわからない部分はVBスレやAPIスレなどの該当スレで質問しましょう。
  但し向こうはプログラマのスレなので、構文規則などの最低限の事は覚えてから質問しましょう。
  ここみたいに丸投げはダメですよ。
・8 うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。
  例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。
  その上で、どううまくいかないのかを具体的に書きましょう。
  エラーが出るなら、何処でどういうエラーが出るのか、
  想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。
・9 マルチはダメ。一度マルチしたら、謝っても他のスレの質問を取り下げても回答は得られないと思ってください。
・A テキストボックス(エディトボックス)、コンボボックス(ドロップダウンリスト)、リストボックス、コマンドボタン、
  チェックボックス、オプションボタン(ラジオボタン)、スピンボタン、スクロールバー、等の質問をするときは、
  ユーザーフォーム、コントロールオブジェクト、フォームオブジェクトのどれなのかを必ず書くこと。
・B 書籍や解説サイトの紹介以来はスレ以外。ここは技術的な質問のみで。

3 :名無しさん@そうだ選挙にいこう:2010/12/24(金) 12:51:22
★ルールを無視すると…
 >>1-2あたりのルールに従うか否かは自由だけど、従わないと以下のような不利益があるよ

 ★1.マルチをしてしまったら…
 A.謝っても他での質問を取り下げても、以後その質問に対する回答は付かない物と思ってください。
   それが嫌なら初めからマルチなんてしないように。>>2にマルチ禁止と書いてあり、
   マルチの意味が分からなければ検索すれば出てくるので、「知らなかった」は通用しません。

 ★2.>>1★4に従わず、必要な情報を出さないと…
 A.自分の使用しているバージョンで使えない機能を答えられたり、VBA使えないとか使いたくないと書かないと
   VBAでの解決OKで自分でコード書けるものと勝手に解釈されて、「VBAで出来るから自分でコード書いて」程度の
   適当な回答を返されたりします。また、ここではVBAコード書けない人の丸投げ依頼を許可してますが
   これはきちんとルールに従って質問、依頼した人のみの特権です。

 ★3.情報・条件を後出しすると…
 A.後から出された情報は意図的に無視されたり、質問自体を放置されたりします。
   >>1★4の必須情報はもちろんのこと、要望や条件、既に試したことなどは、
   長文になってもいいので詳細かつ明確かつ具体的に書きましょう。


★VBAについて
 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。 
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

4 :名無しさん@そうだ選挙にいこう:2010/12/24(金) 12:52:05
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)

 ▼環境・書式
  ・ 列数を256列以上、行数を65'536行以上に増やす (Excel2007以降では16'384列、1'048'579行扱える)
  ・ Excel2003以前で条件付き書式を3つ以上設定する (文字色だけなら、入力規則でも3つ設定可能。それ以外はVBA)
  ・ 行の高さを0.25きざみ以下の単位で指定する
  ・ セル内の文字を○で囲む、一部のみ2段にする (オートシェイプ、オブジェクト)
  ・ オートフィルタで英字の大小文字を区別する (小文字 → 半角、大文字 → 全角、と使い分ける)
  ・ 祝日を判断する (作業セルに祝日を列挙、VBA)
  ・ 同一列内でセル(行)ごとに列幅を変える、同一行内でセル(列)ごとに列高を変える (セルの結合)
  ・ ヘッダー・フッターのページ番号の開始番号任意指定、ページ番号演算、同シート内で違ったものを指定など
  ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する
  ・ 罫線幅の自由指定
  ・ 表示形式で「10/ 1」といった書式を指定し、日付が一桁の場合のみ日付の前にスペースを入れる (TEXT関数、VBA)
  ・ 書式設定の「折り返して全体を表示する」と「縮小して全体を表示する」を同時に使う (折り返しを有効にして、手動で文字サイズを調整)

 ▼操作
  ・ ファイラーの右クリックメニューからの新規作成で、Excelで設定したシート数のブックを作る (任意のシート数のテンプレートを作成)
  ・ 複数シートを選択して入力規則やシートの保護を設定する (VBA)
  ・ オートコンプリート機能を、別列や離れたセルで動作させる (VBA)
  ・ 選択範囲から一部を除く、Ctrlを押しながらの複数選択で一部を取り消す (VBA)
  ・ 優先キーを3つ以上指定しての並べ替え (優先度の低い方から順に並べ替える)
  ・ 1セルを分割 (分割したいセル以外を結合)

5 :名無しさん@そうだ選挙にいこう:2010/12/24(金) 12:53:24
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。
間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。
Excel2010についても未確認な項目が多いので変更点が有ればご指摘下さい。

また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。
ここに書かれてないからといって必ず出来るはずだなんて思わないように。

>▼環境・書式
> ・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する
補足
2007以降ではページレイアウトビューの表示時に限り、幅・高さともcm単位で表示され、
指定も同じくcm単位でできる。
ただし大元がインチ系なのでなかなかピタリの値は出ない。1cm→0.98cmのように
近い値に勝手に丸められる。

以上でテンプレ終わり (Excel総合相談所 94からコピペ、一部改定)。

6 :名無しさん@そうだ選挙にいこう:2010/12/24(金) 13:21:26
>1-5 乙でした

7 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 00:24:10
>>1

前スレ>>997のひらがなが出ない問題。
回答は前スレ>>1000氏の

>csvとかテキストファイルを読み込んだりデータをExcel以外の所からコピペするとそうなる

なんだけど、setphoneticで無理矢理ふりがなをふることができる。

selection.setphonetic

でもほんとに無理矢理なので固有名詞とかは希望通りにはならない。

8 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 02:16:04
関数でA条件のときDという結果になり、いったんD結果になったなったら条件をAからBに変えてもD結果という関数が必要なのですが、どうすればよいのでしょうか?

複数の組み合わせでも可なので分かる方がいたらぜひお願いします

9 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 03:22:18
>>8
質問の日本語がわかりにくい
文章が苦手なら箇条書きで
できれば具体例を付けて

10 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 04:37:55
>>9Excel初心者のせいもあって私自身が理解できていないので分かりにくい文章になってしまいました、ごめんなさい(;_;)

IF関数で真の値が出たら、結果がそのまま固定されるようなものが知りたいのです

例えば"正解"と入力したら"合格"と出て、さらにその後に正解以外のものを入力したとしてもずっと"合格"が出続けて欲しいです。
IF関数は入力に対して任意のもの表示させる所まではOKなのですが、入力を変えてしまうと結果が変わってしまうのです(そういう関数なので当たり前ですが…)
まだまだかなり分かりにくいとは思いますが…

11 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 04:58:52
固定させるならマクロ使うしかないのでは。

12 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 06:13:26
>>11マクロ?ですか

とりあえずマクロを知らないので学んできます

13 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 07:38:18
>>10
・AND関数で”正解”以外でも”合格”と出力させる条件を増やす。
・逆に”不合格”の条件を設定しそれ以外を"合格"とする関数式にする。

14 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 07:47:02
>>1


前スレの最後で複雑な式の意味を
おしえてくれた人たちありがとう!


15 :13:2010/12/25(土) 08:00:03
AND じゃなくて OR でした。

16 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 08:54:02
>>10 無理。関数に記憶はない。

17 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 11:40:00
>>10
値の貼付け
をまず答えてあげようぜ


18 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 12:07:39
環境:EXCEL2007(WINXP)

株のデータを表示するのに300銘柄ほどRSSでデータ受信しています。
前日比など5種類のデータを表示しています。

3種類は条件付き書式(プラスマイナスなどの条件)で背景色、フォント色を変化させています。

次官は決まっていませんが、1時間ほど表示すると文字が消えてしまったり、
文字が表示されなくなります。

再度、EXCELを起動し直すと治るのですが、また時間がたつと同じようになります。

EXCEL2003では症状が発生しませんでした。

できれば色味がいいEXCEL2007で動かしたいのですが、何とかならないでしょうか。。

19 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 13:00:34
>>10
そんなへんてこな判定に何のメリットがあるのかが分からん
そもそもの合格基準を見直すべき

20 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 13:21:15
>>10
正解、不正解の履歴を残すようにしないとそういうのは判定できない

21 :fuku:2010/12/25(土) 13:27:28
>>18
・OSとオフィスをアップデートする。グラボのドライバも最新にする。
・↓のページに対処法。メモリを使いすぎるらしい。この二つじゃなかったら分からない
http://devadjust.exblog.jp/9518880/
具体的には、下記のレジストリエントリを削除して再起動するのだそうだ。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LanguagePack

22 :>>10:2010/12/25(土) 15:48:08
10ですが「セルの値によって処理を変えるVBA」なら目的のものができそうなので、マクロを猛勉強です >>11様ありがとうございます(*^_^*)

>>13 関数の中では今までで一番近いので参考にさせて頂きます

>>19 最終目的は自働更新型の図鑑作るのが目的です。 例で挙げればポケモン図鑑とかがまさにそれですね



23 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 16:34:26
【1 OSの種類         .】 WindowsXP(SP3)
【2 Excelのバージョン   】 Excel2000

住所録をCSVファイルで管理しています。
たとえばこんな感じのカンマ区切りのCSVファイルです。

 ななしの,ごんべい,001-0011,東京都大江戸区,3−11−15,様

住所録一覧をExcelを使って印刷しようとおもっています。
このCSVファイルをダブルクリックしてExcel2000で読み込ませる
(CSVファイルはExcelに関連づけされています)と次のような問題が生じてしまいます。
番地の「3−11−15」をExcel2000は日付として認識してしまうようで
「2003/11/15」と表示してしまうのです。

さらに困ったことにこの状態から「セルの書式設定」で「標準」に直すと日付をUNIX時間に
変換してしまうようで「37940」なんていうとんちんかんな値になってしまいます。

CSVファイル内の番地部分も最初から文字列として読み込ませるにはどうしたらいいでしょうか?

24 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 16:58:08
>>23
データタブ→テキストファイル でインポート

その際、ウィザードの3/3で列のデータ形式を番地とか郵便番号をきちんと「文字列」に指定する

25 :複乳:2010/12/25(土) 17:01:53
>>23
CSVから開く場合は知らないが、他の解決案
まずcsvテキストをメモ帳で開き、全文コピー
エクセルを開き、貼付け
多分A列に全て張り付けられると思う。ならなかったら教えて。
で、その状態でA列を選択
メニューバー、データ、区切り位置。カンマやタブなど〜を選択し「次へ」カンマにチェック「次へ」
で、番地のところを選択し、文字列に指定する
こんな感じ
ttp://www1.axfc.net/uploader/Img/so/103655.jpg

26 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 17:15:22
>>24
>>25
ご丁寧にありがとうございました。
どちらの方法でも実現できることを確認いたしましたm(_ _)m

27 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 19:00:23
こんにちわ
また教えていただきたいのですが

以下の表から

   [ A ] [ B ] [ C ]

[1]       200   300     

[2]200円

[3]100円

[4]300円

[5]

例えばA1からA5までのなかで
記入のないセルは無視、記入のあった中で
最も若いセルから順に値を抽出して
一番最初の値をB1へ一番最後の値をC1へ表示させるには
どのような式を使えばいいのですか?

またまたよろしくお願い致します


28 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 19:19:13
B1=MIN(A1:A5)
C1=MAX(A1:A5)

29 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 19:40:20
>>27
B1は自信なし。もうちょっと良い式あるとおもう。
=INDEX(A:A,INDEX(SMALL((A1:A5<>"")*ROW(A1:A5),COUNTBLANK(A1:A5)+1),))
C1は簡単
=LOOKUP(10^10,A1:A5)

30 :27:2010/12/25(土) 23:21:05
ありがとうございます
わたしには式の意味はいまいち理解できませんが
期待通りの数値が帰りました

ちなみに式の中で
A1:A5というのは A1からA5の範囲ってことですよね
これを例えばピンポイント(A1とA3とA5)にした場合は
(A1,A3,A5)って表記にすればいいんですよね?

31 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 23:24:36
>>30
それは無理

32 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 23:25:51
>>30 そういうこと

33 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 23:33:31
そ。

34 :27:2010/12/25(土) 23:51:12
どっち(^▽^;)

35 :名無しさん@そうだ選挙にいこう:2010/12/25(土) 23:58:54
>34
試せばわかる

36 :27:2010/12/26(日) 00:06:36
試したら###だったんです
原因がわたしのそれが勘違いかと

37 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 00:11:42
>36
### は、表示幅(列幅)不足では? 当該列の幅を十分に拡げたらどうなりますか?

38 :27:2010/12/26(日) 00:23:12

ひろげたら「value」でした


39 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 00:40:00
Excel2003で =INDEX(A:A,INDEX(SMALL((A1:A5<>"")*ROW(A1:A5),COUNTBLANK(A1:A5)+1),)) を
=INDEX(A:A,INDEX(SMALL((A1,A3,A5<>"")*ROW(A1,A3,A5),COUNTBLANK(A1,A3,A5)+1),)) に、
しようと試したら、#value!以前の 入力した数式は正しくありません になりました。

>31が正解みたい というか、実際のデータはどうなっているの? 連続した範囲ではないの?
>1 を見てもらうとわかるけど「条件の後だし」はダメですよ

40 :複乳 :2010/12/26(日) 00:41:03
【1 OSの種類         .】 Windows2003
【2 Excelのバージョン   】 ExcelXP
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 indirect関数 離れた場所 指定
=sum(a1,b3)
のセル範囲(a1,b3)をindirectで参照したいと思いました
=SUM(INDIRECT("a1,b3",1))
とすると#REF!エラーになります。
=SUM(INDIRECT("a1:b3",1))
と続いた範囲だと大丈夫です。
名前の定義をしてもやはり同じ状況になります。
indirect関数で離れた範囲は指定できないのでしょうか?

41 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 01:18:25
=SUM(INDIRECT("a1"),INDIRECT("b3"),1)

じゃだめなの?

42 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 01:20:24
=sum(a1,b3)
あ、↑だけなら↓か
=SUM(INDIRECT("a1"),INDIRECT("b3"))

43 :10:2010/12/26(日) 01:37:34
VBAを勉強中ですが難しいです…

A1のセルに"あ"と入力した場合にB1に"い"とずっと(A1が変わっても)表示させるにはどのようなコードを入力すればよいのでしょうか?

分かる方がいたらお願いします

44 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 01:50:42
>>43
プロジェクトのツリーで、標準モジュールの上のほうに、
”Microsoft Excel Objects”が表示されていて、その配下にシート名が表示されている。
操作対象にしたいシートの所に、プログラムコードを記述。

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1") = "あ" Then Range("B1") = "い"
End Sub

ボタンクリックなどで実行させたいなら
標準モジュールに

If Range("A1") = "あ" Then Range("B1") = "い"

と書けばよい。

45 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 01:52:30
ループ使うときは
Range("A1")
Range("B1")
より
Cells(1, 1)
Cells(1, 2)
の方が便利。

46 :複乳:2010/12/26(日) 02:21:09
>>41-42
なるほど、そういうやり方があるんですね。ありがとうございます。
あとはindirect関数の仕様というものはどうなんでしょう。
離れた範囲の参照を返すようにすることはできないんでしょうか。


47 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 02:41:57
>>46
http://ys2001hp.web.fc2.com/page2ka-kansu.html#=INDIRECT

INDIRECTで複数の範囲は指定できないっぽい。
これ見るとセル範囲に付けた名前はOKとなってるが
離れた範囲だと名前付けてもエラーになるね。

48 :複乳:2010/12/26(日) 03:15:04
>>47
ありがとうございました!

49 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 04:33:19
>>44 >>45 できましたありがとうございます(^-^)

50 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 04:57:17
>>43 これをさらにシートを越えて実行するにはどうしたらよいのでしょうか?

Sheet1 A1が"あ" ならば Sheet2 A1が"い"
自分なりに>>44のコードに Sheets("Sheet2").Selectなどと組み合わせようとやってみましたが、エラーになるばかりでした

51 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 05:14:14
>>50
If Range("A1") = "あ" Then Sheets("Sheet2").Range("A1") = "い"

シート超えするなら標準モジュールにコード書いてボタンクリックとかで実行するのがいいかもね。
If Sheets("Sheet1").Range("A1") = "あ" Then Sheets("Sheet2").Range("A1") = "い"

52 :18:2010/12/26(日) 05:36:05
>21

詳しくありがとうございました。

リンク先のレジストリ削除で上手く行きそうです。


53 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 06:20:15
>>51 できました! 本当に本当にありがとうございます! 


54 :27:2010/12/26(日) 09:22:43
>>39
いつの間にか寝ちゃってました(すみません)
実際のデータは連続した範囲では無く
範囲内に文字列が入っているんです

   [ A ] [ B ] [ C ]

[1]       200   300     

[2]煮浸し

[3]200円

[4]ライス

[5]100円

[6]アジフライ

[7]300円

[8]

みたいな感じなんです
なので途中未記入セルがあったりすると
ちょっとまずいのです
よろしくお願いします

55 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 09:43:01
>>54
後出しばかりすんな。最初からそう書け

B1
=INDEX(A:A,MIN(IF(ISNUMBER(A1:A5),ROW(A1:A5),10^10)))
式を入れた後、CTRL+SHIFT+ENTERで確定させる(式の前後に{ }がつく)
C1は同じでOK
=LOOKUP(10^10,A1:A5)

56 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 09:51:12
なんでMIN、MAXつかわないのん?

57 :27:2010/12/26(日) 10:25:54
>>55
確かに最初から直で書けばよかったです(反省してます)
でもホントありがとうございます
試してみます
>>56
>>27の説明を参考にしてください

58 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 10:43:27
仕様しらないのかな
MIN、MAXは空白セル、文字列セルは無視するよ

59 :27:2010/12/26(日) 11:13:29
>>58
わたしの知識不足だったら申し訳ありません
それだと最大値と最小値を返されるのかと


60 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 11:24:35
>>57
ちなみに200円とかは書式設定で「円」が付いているとして、数値とみなしたよ。
それじゃないと成り立たない

61 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 12:17:45
>>59
なるほど。誤解してました。

自分だったらA列の左に作業列をつくって、B列が数値だったら作業列内での
行番号を返すようにして、いちばん上の行の値は作業列の最小値、下は最大値
を検索するVLOOKUPで求めます。

62 :27:2010/12/26(日) 12:36:45
>>55
また怒られる(´・ω・`;)

「配列数式は結合セルでは使用できません」

対象が結合セルなんです
どうか見捨てないで下さい(*>ω<)

63 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 12:46:15
>62
セルの結合をやめるか、VBAで処理するしかないのでは?
結合なんて、見た目だけのことやめればいいのに

64 :63:2010/12/26(日) 12:48:16
>61さんの、作業列を使う方法が一番いいですね

65 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 12:58:51

── =≡∧_∧ =!!
── =≡( ・∀・)  ≡    ガッ     ∧_∧
─ =≡○_   ⊂)_=_  \ 从/-=≡ r(    )←>>62
── =≡ >   __ ノ ))<   >  -= 〉#  つ
─ =≡  ( / ≡    /VV\-=≡⊂ 、  ノ
── .=≡( ノ =≡    "  ,ヽ   -=  し'
 " ""        """  "  ,ヽ
       "", ,,, ,,  , ,, ,,,"_wノ|
""""     v,,, _,_,,, ,,/l ::::... |
    ,.-r '"l\,,j  /  |/  L,,/:: i
,    ,/|,/\,/ _,|\_,i_,,,/ /::./
    _V\ ,,/\,|  i,:::Y: :: :i/:: |


一旦、セルの結合を解く。式を入れて確定させる。再度セルを結合させる。面倒だけど、これで行けるんじゃない?


66 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 13:03:45
ああ、それかこの式で
=INDEX(A:A,SMALL(INDEX(ISNUMBER(A1:A5)*ROW(A1:A5),),5-COUNT(A1:A5)+1))
途中の「5-count・・」の「5」はセルの数だから、ここは実際にあわせて。

67 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 20:06:44
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 セル 選択

マクロで、データが入っている最終行の次の行の
セルA*〜C*を選択するにはどう記述すればよいですか

例えば、行50まで入っている場合は
A51〜C51を選択


68 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 20:22:16
>>67
Range("a" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Resize(1, 3).Select
とか?

69 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 20:23:30
>>67
1列め(A列)に必ずデータが入っているものとして最終行+1を変数 r に代入

Dim r As Long
r = Cells(Rows.Count, 1).End(xlUp).Row + 1
Range("A" & r & ":C" & r).Select

70 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 20:54:17
【シート1】     【シート2】
 商品B 5    商品A 3
           商品B 4(←5)
           商品C 7   

例えばシート1のセルA1に"商品B" B1に"5"と入力したときに、シート2の対応する数値の"4"と"5"を比べて、
もしシート1の値の方が大きかったら、シート2の対応する値をシート1の値と同じにしたいのですが、
どのようなVBAのコードを入力すればよいのでしょうか?        

71 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 22:09:00
うんこ りんご
しっこ みかん
鼻くそ メロン
耳くそ いちご

のような2列のデータを

うんこ
りんご
しっこ
みかん
鼻くそ
メロン
耳くそ
いちご

のような順番で1列に並べるにはどうすればいいでしょうか?

72 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 22:28:48
excelで、好きなページだけ印刷したいのですが
Wordのように「1, 2, 4, 6, 9, 11, 12」と印刷したいページ数を入力する欄はexcelにはどこにありますか?

73 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 22:35:59
>71
人に教えを請う内容ではないな

>72
メニューの ファイル−印刷 で表示されるダイアログにありませんか?

74 :名無しさん@そうだ選挙にいこう:2010/12/26(日) 23:33:49
SOS助けて下さい
さんざん既出だろけどハイパーリンクのブラウズした履歴を消す方法おいえてくらさい
OSはVista excel2007 インターネットオプションで一部は消えるんだけど
youtubeの履歴が残る ccクリナー導入炭 フラッシュの残骸も消して見た
が SODが地方で見つけた超美巨乳仲居さんを仕事中に職場でAV出演させます! | アダルト動画ダウンロード、アダルトDVD通販の総合サイト SOFT ON DEMAND
てのがどーしても消えない
これだけでも消しておきたい
ご教授よろぴく

75 :複乳:2010/12/27(月) 00:57:34
>>70
行を取得して(マクロの記録でctrl+↑)その範囲をfornextでぐるぐる回す、を覚えたら何でもできるようになるぜ
Sub aaaa()
gyo = Sheets("Sheet2").Cells(65535, 1).End(xlUp).Row
For k = 1 To gyo
If Cells(k, 1) = Sheets("Sheet1").Cells(1, 1) Then
If Sheets("Sheet1").Cells(1, 2) > Sheets("Sheet2").Cells(k, 2) Then
Sheets("Sheet2").Cells(k, 2) = Sheets("Sheet1").Cells(1, 2)
End If
End If
Next
End Sub
後は君のしたい事は大体予想できる。シートA列全体で同じことしたいんだろう
Sheets("Sheet1").Cells(1, 1) をfornextでCells(b, 1)にしてfor b = 1 to si-to1gyoで全体をぐるぐるするだけだ。がんばれ
わかんなかったらもっかい聞いていいぞ
>>71
俺は答えるがふざけた質問は回答が遅くなったりこなかったりする原因になるぞ。回答する側に回ればふざけ放題だぞ。ウヘヘ
C1=INDIRECT("r"&INT((ROW()+1)/2)&"c"&1+MOD(ROW()+1,2),0)
下にオートフィルな


76 :71:2010/12/27(月) 01:22:36
すまんすまん。ちょっとふざけちゃった。
でも例語がなかなか思いつかなくて最初が「うんこ」だったもんだから変なのばかりになってしまった。
>>75
どうも。感動!ありがとうです。

77 :名無しさん@そうだ選挙にいこう:2010/12/27(月) 12:20:59
>>76
こういうのは、並び替え用のキーを作業列につくってコピペ、並び替えすれば
かんたん

78 :76:2010/12/27(月) 19:07:36
>>77
?
Tell me more, please.

79 :名無しさん@そうだ選挙にいこう:2010/12/27(月) 19:22:12
つまりこういうこと

1 うんこ  2 りんご
3 しっこ  4 みかん
5 鼻くそ  6 メロン
7 耳くそ  8 いちご

80 :名無しさん@そうだ選挙にいこう:2010/12/27(月) 19:38:26
>>79
頭いいなお前。INDIRECTだのマクロだの難しく考えすぎてたぜ。

81 :名無しさん@そうだ選挙にいこう:2010/12/28(火) 01:57:59
>>75
あなたはエスパーか神様ですか?
素晴らしすぎて感動しました、ありがとうございます!
分からないことがあったらまた是非お世話になりたいです。

82 :名無しさん@そうだ選挙にいこう:2010/12/28(火) 02:43:06
ネット上のデータをテキスト形式でExcelに貼り付けると「〜」が「~」になってしまったので
「~」を「〜」に置換したいんですが「検索対象が見つかりません」とエラーが出てしまいます。
「~」というのは何か特別な意味のある文字で変換できないんでしょうか?

83 :名無しさん@そうだ選挙にいこう:2010/12/28(火) 06:08:33
>>82
~ (チルダ)は ワイルドカード( * や ? )やチルダを検索・置換するときに使う。

~ を 〜 に置換するときは ~~ (←チルダ二つ)を 〜 に置換。

84 :名無しさん@そうだ選挙にいこう:2010/12/28(火) 14:10:07
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 Excel 図のリンク貼り付け 出来ない

お願いします。
範囲指定後コピー→Shift+「編集」→図のリンク貼り付けをしていたのですが、
突然出来なくなりました。
他のExcelファイルでは出来るのですが、何故か出来ないファイル(α)があります。
αを再起動させても駄目です。
出来ないというのは、「図のリンク貼り付け」はクリック出来るのですが、その後図が出てこないのです。
他のファイルでは出来るので、αだけおかしな事になってます。
解決法はありますでしょうか。

85 :複乳 :2010/12/28(火) 14:43:25
>>84
その機能は少しバグが多い気がする。原因も解決方法も分からないが、
シートを新規ブックにコピーすれば解決するんじゃないかな
無理ならセル範囲を新規ブックにコピーして、元のは破棄するか

86 :名無しさん@そうだ選挙にいこう:2010/12/28(火) 14:55:56
>>85 成程ですね。有難うございます。

87 :名無しさん@そうだ選挙にいこう:2010/12/28(火) 16:19:36
Microsoft SQL Server 2008 R2 - PowerPivot for Microsoft Excel 2010 - RTM
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=e081c894-e4ab-42df-8c87-4b99c1f3c49b&displayLang=ja

88 :名無しさん@そうだ選挙にいこう:2010/12/28(火) 21:41:13
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 EXCEL メーラ起動

EXCELからメーラを起動しようとしています。
検索で調べて、以下のVBAを使おうと思っているのですが
宛先だけじゃなくCCやBCCもVBAで自動設定するようにしたいです。
アドバイスお願いします。

Sub Sample()

  Dim sAddr As String
  Dim sBody As String
  Dim sSubj As String
  Dim sComd As String
  
  sAddr = "hoge@sample.ne.jp"
  sSubj = "メールテスト"
  sBody = "標準メーラが起動しますよ."
  
  sComd = "Mailto:" & sAddr & "?Subject=" & sSubj & "&body=" & sBody
  Debug.Print sComd
  
  CreateObject("WScript.Shell").Run sComd
  
End Sub

89 :複乳:2010/12/29(水) 02:51:48
>>88
こないだ俺が教えたそのままじゃねーかw
「VBA メール CCの設定」でぐぐれ
ちなみにスパムメール送りたいならソフトがすでにあるからそっち使った方が早いぞ
探せばすぐに見つかる

90 :名無しさん@そうだ選挙にいこう:2010/12/29(水) 20:22:36
メール、ネットは毎日使っててWordは文章入力ができるレベルなんですけど、
Excelって年末年始の五日間ぐらい、本とか見ながらずっといじってれば
基本操作ぐらい覚えれるもんですかね?


91 :名無しさん@そうだ選挙にいこう:2010/12/29(水) 20:42:47
>>90
はい
オフィスのバージョンにもよるけど
http://office.microsoft.com/ja-jp/training/RZ006107930.aspx
とか
http://office.microsoft.com/ja-jp/training/RZ001043747.aspx
なんかもよいかも。

92 :名無しさん@そうだ選挙にいこう:2010/12/30(木) 00:19:09
>>91
親切にありがとうございます!
こんなサイトがあるんですね〜事務職希望なんで覚えたかったんです!
関数の勉強もここでできるのかな?やっぱり基本的な関数ぐらい
覚えないとエクセルできますっていえないですよね

93 :複乳:2010/12/30(木) 03:38:36
>>92
さすがにsumぐらいは使えないと厳しい。できればifも使えるようになっておくといい
あと罫線使って表作成、セルの色づけ、フォントの変更、ピボット・・かなぁ
関数一覧
ttp://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/itiran.html
読み物
ttp://www.relief.jp/itnote/

94 :名無しさん@そうだ選挙にいこう:2010/12/30(木) 11:52:52
>>88
やっぱりWikipediaを間に受けてる

95 :名無しさん@そうだ選挙にいこう:2010/12/30(木) 12:49:20
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel 2003
【3 VBAが使えるか    .】 いいえ(微変更程度なら可能)
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 エクセル グラフ 範囲、など

元データの範囲を変えたグラフを複数作りたいです。
↓のような感じです。

X1, Y1, X2, Y2,…, Y10 ←行1
○, ○, ○, ○
○, ○, ○, ○         このへんに左の評から作ったグラフ1
○, ○, ○, ○
・・・・・・・・・・・
○, ○, ○, ○  ←行9

X1, Y1, X2, Y2, …, Y10 ←行11
○, ○, ○, ○
○, ○, ○, ○         グラフ2以降を省力で作りたい
○, ○, ○, ○
・・・・・・・・・・・
○, ○, ○, ○  ←行19   行と列、項目の数は同じ

X1, Y1, X2, Y2, …, Y10 ←行21
○, ○, ○, ○

96 :名無しさん@そうだ選挙にいこう:2010/12/30(木) 23:12:27
スレチかもだけどExcelは中小企業の製造業でも使うもんですかね?
マシニングセンタとか使うときにでもいるもんかなぁ?
ごめん、やっぱわかんないか。。

97 :名無しさん@そうだ選挙にいこう:2010/12/30(木) 23:29:05
Excelなんて電卓がわりにつかうもんだよ

98 :名無しさん@そうだ選挙にいこう:2010/12/30(木) 23:33:23
>96
エクセルでGPIBやRS232Cのインターフェイスからの情報を
自動収集してデータ処理やグラフ作成に使うっていう話はネットで見た
ことがありますよ。

99 :名無しさん@そうだ選挙にいこう:2010/12/31(金) 01:07:48
>>95
マクロの記録を使い、グラフを作る
Range("B1:C5").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B1:C5")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
コードがこんな漢字で吐き出されるので、Range("B1:C5")の部分を変える
マクロの記録はこんな漢字→ttp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_01.html
意味がわからないところがあれば聞きにくればまた教えるぞ
>>96
メインは専用ソフトだと思うが、掃除のシフト表なんかはエクセルで作る事はあるだろう
一切使わない企業というのは、無いと思っていいと思う。まぁ、事務方で就職するなら必須だろう

100 :名無しさん@そうだ選挙にいこう:2010/12/31(金) 07:11:10
test

101 :88:2010/12/31(金) 10:03:35
>>89
何とか解決しました。ありがとうございます。流石にスパムはしないです。

追加で質問なのですが、このメール作成マクロで
本文に改行を組み込むには、どうすれば良いか回答お願いします。

Sub Sample()

  Dim sAddr As String
  Dim sBody As String
  Dim sSubj As String
  Dim sComd As String
  
  sAddr = "hoge@sample.ne.jp"
  sSubj = "メールテスト"
  sBody = "標準メーラが起動しますよ."
  
  sComd = "Mailto:" & sAddr & "?Subject=" & sSubj & "&body=" & sBody
  Debug.Print sComd
  
  CreateObject("WScript.Shell").Run sComd
  
End Sub


102 :名無しさん@そうだ選挙にいこう:2010/12/31(金) 21:29:23
Excel 2007です。
グラフをホームページに載せたいので、画像にしたいのですが、
その場合、コピーからペイントに貼付けして保存、の方法が普通ですか?

他にもっと良い方法があれば教えてください。

103 :102:2010/12/31(金) 21:47:21
すみません、質問を変えさせてください。

作成したグラフ(背景灰)をペイントなどの画像ソフトにコピーしたのですが、
白い枠が出てしまいます。

この枠を消して、全面背景灰色の画像にしたいのですが、どういう方法がありますか?

104 :名無しさん@そうだ選挙にいこう:2010/12/31(金) 21:52:47
>>103
グラフエリアの書式設定で「枠線の色」を「線なし」にしたら大丈夫じゃない?

105 :名無しさん@そうだ選挙にいこう:2010/12/31(金) 21:58:00
>103
グラフのプロパティを変更して消える種類の白枠なの?
(枠線なし、という設定はありませんか?)
それとも、Windows標準アプリのペイントで白い枠を消す方法が知りたいの?
(200%に拡大して、白い枠の部分にバケツ・ツールで背景色にしたらダメかな?)

106 :95:2010/12/31(金) 22:43:51
>>99
ありがとうございます

すみません、手元に環境がなくてすぐ試せないのですが、

>>Range("B1:C5").Select

これは、Range("B1:C5,D1:E5,F1:G5").Select、みたいに複数の要素を選択出来るのでしょうか?

107 :名無しさん@そうだ選挙にいこう:2010/12/31(金) 22:51:52
>>104
線なしにしたんですけど、コピーしたときに出てしまうんですよね
>>105
やってみます。ありがとうございます


108 :105:2011/01/01(土) 00:28:00
>107
枠線なしにする設定とは逆に、枠線ありにして枠線の色を背景と同じ灰色にする、じゃダメですか?
(当方、Excel2003なので試してません)

109 : 【だん吉】 【1967円】 :2011/01/01(土) 10:50:03


110 :名無しさん@そうだ選挙にいこう:2011/01/01(土) 18:07:51
>>102
Excel出グラフを作ったら、「名前を付けて保存」で「その他の形式」を選ぶ
「Webページ」(単一ファイルじゃない方だ)を選んで、デスクトップに保存する。
すると、Webページと、フォルダが出来るから、そのフォルダの中を探れ。

グラフの画像ファイルが出来上がっているはずだ。もちろん枠線など無い。

111 :名無しさん@そうだ選挙にいこう:2011/01/01(土) 20:07:24
積み上げ横棒グラフの、グラフと目盛りの間を縮めたいんですが、方法わかる方いますでしょうか?

112 :名無しさん@そうだ選挙にいこう:2011/01/01(土) 22:58:38
>111
>グラフと目盛りの間を縮めたい
具体的にどういうことですか?
1 棒の幅を広げたい
2 グラフの一番大きいものでも、右側におおきく空いているから
   目盛りの最大値を減らしたい
3 その他

113 :名無しさん@そうだ選挙にいこう:2011/01/02(日) 00:36:35
質問お願いします。

横軸に2010年の 1/1〜12/31 をとった、折れ線グラフがあります。
この折れ線グラフに、特定の日付の部分だけ、補助線を入れることは出来るでしょうか?

例えば、4人の友人の誕生日である、3/24、5/25、9/2、12/22 にだけ補助線を入れる、などです。

114 :名無しさん@そうだ選挙にいこう:2011/01/02(日) 00:44:18
>>113
正月ぐらい休ませてよ。質問なんて浮かばない。

115 :113:2011/01/02(日) 01:12:06
自己解決しました。すみません。

116 :名無しさん@そうだ選挙にいこう:2011/01/02(日) 01:13:41
ワロタ

117 :名無しさん@そうだ選挙にいこう:2011/01/02(日) 02:29:20
A列とB列が両方一致する、重複セルを削除したいのですが、
これを、「大文字小文字」や「半角全角」などの違いがある場合は削除しない、という条件で行いたいのですが、
良い方法はあるでしょうか?

118 :名無しさん@そうだ選挙にいこう:2011/01/02(日) 07:17:30
>>117
exactを使う。関数でやりたいの?それともvba?

119 :名無しさん@そうだ選挙にいこう:2011/01/02(日) 23:06:23
http://silver.ap.teacup.com/hghg4858/img/1154763013.jpg

120 :名無しさん@そうだ選挙にいこう:2011/01/04(火) 15:44:14
【1 OSの種類         .】 Windows XP sp3
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 ピボットテーブル ピボットグラフ フィルタ N 平均 制限など

ピボットグラフで平均値集計を行う際に、データの個数が一定数以下の平均値を
表示させない方法はあるでしょうか。
クロス集計ならばデータの個数でフィルタをかけられるのですが、平均値の場合
の方法が思いつきません。

具体的には、
    変数A(N) 変数B(N)
部署1 10.5(30)   5.4(13)
部署2 20.4(15)   9.1(35)
部署3 15.1(40)   3.2(25)
のような場合(実際にテーブルやグラフ中にはNは表示されていませんが)、
Nを20で切るならば、部署2の変数Aと部署1の変数Aの平均を伏せたいのです。
無理であれば、グラフの方にラベルでN数を表示するあたりが次善策と考えていますが、
その方法も思いつきません。

ピボットテーブルの作成や変数の入れ替えはVBAで行っており、最終的にはVBAで
制御することを目指していますが、手動で実現する方法が分かればなんとかなると
思いますので、よろしくお願いします。


121 :名無しさん@そうだ選挙にいこう:2011/01/05(水) 17:35:36
>>120
そういうのはむしろVBAの方が簡単だな
Ifで個数を調べてデータソースを適切に設定するだけだから

122 :名無しさん@そうだ選挙にいこう:2011/01/05(水) 17:38:14
>>117
作業列に=A1=B1と書いてオートフィルのあとオートフィルタ、削除

123 :120:2011/01/05(水) 22:31:45
>>121
レスありがとうございます。
Ifで個数を調べてデータソースを指定しなおすというのは、>>120の例でいうと、
元データから部署1の変数Bと部署2の変数Aを値を除いて別シートにコピーし、
ピボットグラフを作成しなおす(あるいはデータを更新する)ということでしょうか。
データが12万行を超えるので、処理時間が心配ですが、なるほど確かにその手があるんですね。

解釈が誤っているか、何か効率的な方法を見落としていたらご指摘いただけますと幸いです。

124 :名無しさん@そうだ選挙にいこう:2011/01/05(水) 22:44:20
【1 OSの種類         .】 WindowsXP SP3
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 Excel リボン カスタマイズ 小さいアイコン 3行

2010になり,リボンが簡単にカスタマイズできるようになりました。
そこで,新たにタブを追加し,その下に新たなグループを追加し,様々なコマンドを追加しました。
コマンドの中には,Personal.xlsに記述してあるマクロもあります。
このとき,それぞれのコマンドが大きなアイコンつきで,横一列に並びます。

これを,他のタブのように,小さなアイコンつきで3行×n列と配列したいのですが,標準機能では
無理のようでした。何か良い方法があれば教えて下さい。


125 :名無しさん@そうだ選挙にいこう:2011/01/05(水) 23:06:01
皆様こんばんわ
セルの書式設定で表示形式・・・
ユーザー定義で
「###.#"メートル"」としたんですが
例えば1以下の表記が「.5メートル」等となってしまいます
これを「0.5メートル」とするにはどしたらいいんでしょうか

126 :名無しさん@そうだ選挙にいこう:2011/01/05(水) 23:15:31
>125
「##0.#"メートル"」で試してみては?

127 :名無しさん@そうだ選挙にいこう:2011/01/05(水) 23:25:27
ありがと様です

試してみます

128 :名無しさん@そうだ選挙にいこう:2011/01/05(水) 23:37:19
>126
完璧b

129 :名無しさん@そうだ選挙にいこう:2011/01/05(水) 23:45:07
>>124
いっぱい並べれば自然に3行になるけどw

後はたぶんCustom UI Editor Toolとかを使うんじゃないかね。嘘かもしれないけど


130 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 18:31:55
excelで、数字が+のとき、その枠の中が赤色、数字が−のときは青色、0の時が黄色に
なるようにする方法教えてください。

131 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 19:43:52
>>130
条件付書式か、セルの書式設定の表示形式を

[赤]#,##0;[青]#,##0;[黄]#,##0

みたいにする。

132 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 19:44:37
[赤]#,##0;[青]-#,##0;[黄]#,##0

だった。

133 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 20:22:29
ありがとうございます。

134 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 21:50:22
0のときは0だけなんだから  #,##0 にする必要ないな

135 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 22:05:45
その#とか0とかのしくみをこの際完璧に理解したいのでござるが
それがまとまったサイトはないですか?

136 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 22:06:38
あと正規表現のしくみもこの際完璧に理解したいのでござるが
それがまとまったサイトはないですか?

137 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 22:43:37
なら「詳説 正規表現」を買うんだ
アレはいいものだ
読み疲れて眠くなったら枕にも出来る

138 :名無しさん@そうだ選挙にいこう:2011/01/06(木) 22:54:09
ああすまん。Excelの表示形式か(汗
ヘルプで「表示形式」で検索すれば「表示形式で使われる書式記号」って項目に書いてる。(2003の場合)

139 :tsukino:2011/01/06(木) 23:56:41
【1 OSの種類         .】 mac
【2 Excelのバージョン   】 Excel2008
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 どのワードで検索をかければいいのかわかりまえんでした。
まずシートが2枚あります。前者が日計表で後者が売掛表です。

日経表が

  A  B  C  D  E  F    G
1 番号 日付 担当 お客 会計 現金入金 売掛残額 


売掛表は

   A   B   C   D
1  売掛日 担当名 客名  売掛残高


です。
売掛表には、
A2…日経表の売掛残高に値がある行の日付(日計表B列)、B2…A2の行の担当名(日計表C列)、C2…A2の行の客名(日計表D列)、D2…A2の行の売掛残高(日計表G列)
という風に表示させたいです。
データを抽出するのに日付、担当名、客名と複数の条件があるので関数の使い方がわかりません。
どうか宜しくお願い致します。

140 :名無しさん@そうだ選挙にいこう:2011/01/07(金) 00:23:00
ピボットテーブルで

141 :複乳:2011/01/07(金) 06:24:46
>>139
漢字間違えたままだと回答率が低くなるから変換はちゃんとしたほうがいいかも
ま、どっちでも私は回答するけど

ttp://www1.axfc.net/uploader/Img/so/104802.jpg
↑とりあえずこんな感じ

日計表シート
H2=IF(AND(C2=Sheet2!$B$2,D2=Sheet2!$C$2,B2<=Sheet2!$A$2),1,0)+B2/100000
I2=IF(MAX(H:H)=H2,1,0)
J2=I2*G2
下にオートフィル

売掛表
D2=SUM(Sheet1!J:J)

142 :tsukino:2011/01/07(金) 20:04:27
複乳さん返答ありがとうございます。

日付が1980年代になってしまいました。

わざわざ答えて下さったところで申し訳ないのですが、ピポットテーブルで妥協しようかと考えています。
一度ピポットテーブルで試してみて、また何かあったら質問させて頂きたいと思います。本当にありがとうございました。

143 :名無しさん@そうだ選挙にいこう:2011/01/08(土) 10:43:29
A列に1000個くらいデータが並んでます。
これを交互にA列B列A列B列に並べたいんです。
どうすればいいでしょうか?

<解説>
(実行前)
みかん
りんご
いちご
複乳
メロン
スイカ
 ・
 ・

(実行後)
みかん りんご
いちご  複乳
メロン  スイカ
 ・    ・
 ・    ・

144 :名無しさん@そうだ選挙にいこう:2011/01/08(土) 11:14:43
>>143
sheet1に並んでいるとして

sheet2で
A列
=INDEX(Sheet1!A:A,ROW(A1)*2-1)
B列
=INDEX(Sheet1!A:A,ROW(A1)*2)
として下にコピー

式のままが嫌なら、コピー→形式を選択して貼りつけで「値」で。

145 :名無しさん@そうだ選挙にいこう:2011/01/08(土) 11:35:53
>>144
なるほどぉ
ここでINDEX関数の登場ですか
ぁりがとぉござぃました

146 :名無しさん@そうだ選挙にいこう:2011/01/08(土) 13:28:32
そういえば組み合わせ技の一番有名なINDEXとMATCHの関数。
どういう場合に使うんでしたっけ?

147 :名無しさん@そうだ選挙にいこう:2011/01/08(土) 13:34:21
>>146
vlookupの場合は右側の値しか持ってこれないけど、matchとindexは左側のものも持ってこられる
あと、vlookupより軽い

148 :名無しさん@そうだ選挙にいこう:2011/01/08(土) 21:18:09
計算そのものの重さは同じだよ。
2列の表引きならどちらもまったく同じだ。
ただ3列以上の表引きだとVLOOKUPは無駄な再計算がある。

149 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 01:10:32
式の重い軽いってどうやって勉強すればいいんでしょう?
仕事で数十万行のデータの分析やるので気になります
vlookよりindex使うと少しはましとか勉強になる

150 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 01:38:09
>>149
関数の中には「揮発性関数」というものがあって、これはたいがい動作が重くなる原因になる

151 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 08:24:39
揮発性関数は重くなるね。

たとえば
=VLOOKUP(A1,B:J,9,0)より
=INDEX(J:J,MATCH(A1,B:B,0))の方が軽い、と言われているし、
それより範囲を指定した
=INDEX(J1:J100,MATCH(A1,B1:B100,0)) の方が軽い。

あと、配列、例えばsumproductなんかは重くなるから、作業列を設けてsumifとかを使ったほうが軽く済む。

でも、数十万のデータはそもそもエクセル向きじゃない、ってのはあるね。
アクセスのほうがお利口に処理してくれそう。

自動計算を切る、ってのも手だけど、後で戻すのを忘れると悲惨。

152 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 09:38:30
>>151
「たとえば」って上の揮発性関数云々とは無関係だよね。
なんか勘違いしそうだね。

=VLOOKUP(A1,B:J,9,0)
=INDEX(J:J,MATCH(A1,B:B,0))
これは148で書いたとおり計算そのものの重さは同じ。
検索アルゴリズムが同じだからね。
ただVLOOKUPは表の2列目から8列目を変更したとき無駄な再計算が走る。
だからVLOOKUPは重いとよく言われるね。
それと昔は3000行あたりを超えるとAccsessを進める人がいたが、単純に大量のデータを扱うスキルがなかっただけだな。
たとえばピボット使えばいいものをSUMIFの羅列なんてやる人が多かったからね。

あと自動計算を切るってのは根本的な解決にはならん。
計算を軽くすればすむ話だ。

153 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 09:57:38
>>149
式の重い軽いは関数の内部アルゴリズムを考えればいいよ。
たとえばCOUNTIFは範囲全部を舐めなきゃ個数は分からないから総当たりだとわかる。
だからデータが重複してるかどうかをCOUNTIFで調べるなんてのは無駄だとわかる。
10000データだと10000*10000で1億回の比較を行うから相当に重い。
ソートすれば上下比較するだけだから比較回数は最高でも2万回でぐっと軽くなる。

154 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 10:22:52
よほど重いならVBA覚えるのも考慮に入れた方がいいと思うの

155 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 10:31:52
>>152
ピボットに関しては昔のピボットはしょぼかったからなぁ。

156 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 10:40:50
>>154
考える力のない人はクエリとか覚えた方がいいと思う。
あとVBAでDictionary万能と思ってる人は考えた方がいいな。
これって数十万では使えないからな。
Excel2003なら6万ちょいだから便利だが。

157 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 22:22:54
マイクロソフトオフィスのExcel入門ってExcel2007しか
インストールされてない場合使えないんですかね?
2003がインストールされてる必要があると書いてあるんで。
どなたかご存知ないですか?


158 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 23:18:19
>>157
http://office.microsoft.com/ja-jp/training/RZ010074593.aspx
の事じゃないよね?

159 :名無しさん@そうだ選挙にいこう:2011/01/09(日) 23:41:57
>>158
これです!2007もあったんですね、見落としてました・・
どうもありがとうございます!

160 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 00:34:06
Excel入門の内容できたぐらいじゃ面接でExcelできますとは言えないですよね?

161 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 00:41:26
>>160
「操作方法はわかります」程度が無難な返答じゃないか。
ある程度の規模の会社ならマクロ禁止かもしれないし、小さな会社ならPC関係の何でも屋にされちゃうから。

162 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 01:33:58
俺ならとりあえず「できる」って言っちゃうけどな
あとのことは採用されてから考える
いつもそれで乗り切ってきたし

163 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 01:44:17
まあ採用されてからレベルが低いのが判明したって、ちゃんと確認しなかった会社が悪いってことで

164 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 03:29:12
>>161
>>162
>>163
お答えありがとうございます!
マイクロソフトのこのサイトだとExcel入門が終わったあとは
どのトレーニングがいいでしょうか?お勧めがあれば教えてください
なにぶん初心者なものでわからなくて…これ覚えとくといいとか
よろしければまたアドバイス頂けないでしょうか

165 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 11:11:29
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 EXCEL OutlookEXPRESS マクロ メール 作成

業務で、定型的な内容のメールを年間、何百件と送ってるので
何とか簡略化したいと思っています。

会社のシステムで作成した伝票がEXCELで出てくるので、
そこでマクロを実行すれば、下記内容を本文や宛先に入力されたもの
がOutlookexpressメーラで起動(ここまでをマクロで実行)
その後、内容確認→送信したいです。

宛先:a@test.co.jp(仮)
C C:b@test.co.jp(仮)
件名:セルP11に記載の文字列
本文:セルHK1〜HK10の内容を1セルずつ改行したもの

Googleで色々と検索しましたが、ぴったり合うものが無くて困ってます。
よろしくお願いします。

166 :複乳:2011/01/10(月) 12:03:06
>>160
セルに色つけ、フォントと表示形式の変更、罫線の作成、グラフ作成はできないとまずいと思う。
こんだけできたら請求書の作成ならすぐにできますとか言えると思う。
>>165
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1120016111
のページの「本文に半角空白や改行がある場合」ってとこにコードがある。
CCを付けたい場合は以下のようにすればいけた。テキトーに改変してくれ
cmd = "Mailto:" & mailto & "?cc=dsfs" & "&Subject=" & subject & "&body=" & body

167 :165:2011/01/10(月) 21:55:37
>>166
色々修正して何とか目的の動きをするものが作れました!
ありがとうございました。

168 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 22:43:08
>>166
160です、ありがとうございます。
マイクロソフトオフィスのトレーニングの演習がうまくダウンロード
できない場合の解決方法わからないでしょうか?
対処法も色々載ってあるのですが、どれをしてもできないもので…

169 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 23:15:43
質問です。
本日仕事で上司の人にExcelで相談をされたのですが
説明が下手になるかもしれないのですが・・・。

シート1,2の二つがあります。
シート1には列が二つあり1列目に日付。2列目に金額が入っています。
シート2には1列目に日付。2列目にその日付ごとの合計が自動的に
入力される関数がほしいのです。

といいますのもシート1の1列目にある日付というのがばらばらで
かついくつも同じ日付があるので
シート2の2列目には、「もしシート1の日付が〜なら、シート1の2列目の
金額をこのcelに合計する」というような関数を作る必要があると思います。

学生時代は勉強で関数にも触れてきたのですが
もしこの関数を作れる人がいれば是非教えていただきたいです。

説明不足な部分が多いと思いますのですが
その点を指摘していただければ、また答えたいと思いますのでおねがいします。

170 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 23:20:42
SUMIFで
ただ、自分ならピボットテーブルつかう

171 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 23:21:45
>>169
大抵、sumif。

172 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 23:22:38
>>170
>>171
sumif・・・
ちょっとぐぐってきます

173 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 23:48:53
解決しました。
シート1の日付の列→C1:C20とします。
シート2の日付の列1行目→B1とします。
シート1の金額の列→E1:E20とします。

そのときにシート2の金額の列の最初の行に入力すべき関数

=sumif($C$1:$C$20,$B1,$E$1:$E$20)
↑を入れた後
コピーして同じ列のとこに全部貼り付けてしまえば完成か。

ありがとう。無理かと思っていたが明日が楽しみだよ。

174 :名無しさん@そうだ選挙にいこう:2011/01/10(月) 23:58:30
式の軽い重いについてレスくれた方々ありがとう!


175 :名無しさん@そうだ選挙にいこう:2011/01/11(火) 00:09:40
えっと、ちょっとした質問。
173なのですが、空白celもちゃんと計算してくれるのでしょうか?。


176 :名無しさん@そうだ選挙にいこう:2011/01/11(火) 00:21:59
【2 Excelのバージョン   】 Excel2000
英語の小文字を入力するとiがIと大文字になってしまいます
この機能を解除するにはどうしたらよいのでしょうか?

177 :名無しさん@そうだ選挙にいこう:2011/01/11(火) 00:25:45
>>176
オートコレクトだかを無効にするか、Ifを一覧から削除。

178 :名無しさん@そうだ選挙にいこう:2011/01/11(火) 00:26:30
>>173
それじゃダメ。シートの指定をしないと

空白セルはあっても大丈夫だけどピボットテーブルのが早いぞ
日付ごとに分けて合計するだけなら手順に従って10回かそこらクリック、ドラッグするだけ

179 :複乳:2011/01/11(火) 00:31:36
>>168
>>158のこと?これはダウンロードじゃなくサイト見て勉強するだけだと思うけど
>>173
=SUMIF(Sheet1!$C$1:$C$20,$B1,Sheet1!E1:$E$20)
sheetの指定を忘れずに。
あと日付(シート2の日付の列1行目)が空白の場合は計算しない。日付の列に空白があっても計算する
あとcelじゃなくてcell


180 :名無しさん@そうだ選挙にいこう:2011/01/11(火) 00:53:10
>>177
あざーす

181 :名無しさん@そうだ選挙にいこう:2011/01/11(火) 01:13:38
>>179
168です。こんな質問してすみません、回答ありがとうございます。
進んでいくと演習だけダウンロードしてエクセル開いて
実際に練習できる形式になってるみたいなんですけど
何度やってもダウンロードエラーになるんです。
もう少し調べてみます。

182 :名無しさん@そうだ選挙にいこう:2011/01/11(火) 21:12:02
sumifのものです。
とりあえず色々と試行錯誤の末任務完了しました。
達成できたのもみなさんのおかげです。ありがとー。

183 :名無しさん@そうだ選挙にいこう:2011/01/12(水) 17:10:47
【1 OSの種類】 WinXP
【2 バージョン】 Excel2003
【3 VBAが使えるか】 少々
【4 VBAでの回答の可否】 可
【5 検索キーワード】 EXCEL シート 固定

【シート1】【シート2】【シート3】【シート4】【シート5】【シート6】と見えている場合、
それより右のシートを表示させると【シート1】が見えなくなってしまいます。
右のシートを見ても一番左の【シート1】だけは常に表示させる事は出来ますか?
30以上ある為、シートが見える領域を広げるだけではどうにもならず、
▲ボタンの左または右クリックで行ったり来たりするのも苦痛になっています。

184 :名無しさん@そうだ選挙にいこう:2011/01/12(水) 19:01:46
>>183
出来ない。

対応方法としては
1:複数ウィンドウを開いておいて必ずシート1を開いておく(新しいウィンドウを開く、って奴)。
2:三角ボタンの上で右クリックするとシート一覧が出る。それでシート1を選択

185 :名無しさん@そうだ選挙にいこう:2011/01/12(水) 19:23:09
3.モニターを増やす。

186 :名無しさん@そうだ選挙にいこう:2011/01/12(水) 20:43:54
>>183
VBA可だからイベントでシートの順番を入れ換えれるようなマクロを動かせばいけるかも
単なる思いつきだから、実際にできるかどうかはマクロに詳しい人たのむ

187 :名無しさん@そうだ選挙にいこう:2011/01/12(水) 20:51:38
できるけど、うざくなる

188 :名無しさん@そうだ選挙にいこう:2011/01/12(水) 22:05:27
ようするにシート1がすぐに出てくればいいんでしょ
これにショートカットキーを割り当てれば?

Sub Sht1Act()
  Worksheets("シート1").Activate
End Sub

189 :名無しさん@そうだ選挙にいこう:2011/01/12(水) 23:30:59
変換の操作を教えてください
・セルに半角で連続で入力→全角に変換
・または全角で連続で入力→半角に変換
の操作を何かを使って一気に変換できる便利な操作があるらしいのですが教えてください。

190 :名無しさん@そうだ選挙にいこう:2011/01/12(水) 23:55:04
>>189
ASCとJIS
またはフリーウェア
ttp://uiusite.web.fc2.com/windows_free.html

191 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 12:06:41
皆様こんにちわ

教えて下さい
対象セルの特定の文字を削除したいのですが
その関数を教えて下さい


特定文字:「黒」
対象セル:A1

A1セルへ「黒髪」と入力すると
結果A1に「髪」と表示・・・させたいんです

上手く伝わりましたでしょうか

192 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 12:13:29
>>191
入力したら式が消えるんだから関数でできるわけねーだろ?
VBAならChangeイベントでできる。

193 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 12:20:15
まったくもってそれはそうですね(泣)
結果を他のセルへ返した場合はどうですか?
例えばB2へ

194 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 12:28:19
すみません
あともう一つだけ

娘の成長日記など毎日積み重ねていくような作業の場合
同じファイル内のシートで分けた方がいいのか
それともファイル毎に分けた方がいいのか
どうしたらいいでしょう?

195 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 12:28:29
>>193
=SUBSTITUTE(A1,"黒","")

196 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 12:29:36
>>194
そういうのは同じシート内で1列に1項目として縦にどんどん並べていくのが正当なやり方

197 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 12:48:18
本当にありがとうございました
引っ掛かっている問題が解消されました


198 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 13:47:43
csvファイルってデータがカンマ区切りで格納されてると思うんですが
これをスペース区切りに変更することってできますかね?拡張子はcsvのままで

199 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 14:12:11
>>198
スペース区切りで保存すると固定長で拡張子がtxtになるから自分でcsvに変えなきゃいけない
可変長でスペース区切りはできないから、別のソフトでコンマやタブをスペースに置換するか
VBAを使う必要がある

200 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 14:17:48
可変長なんですが結構大変な処理のようですね。ありがとうございます

201 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 15:06:18
Excelにて、簡単な帳簿システムを作成しています。

お金の出入りを一つのシート(元帳)にずらずらと書き込み
項目ごとに、別シート(普通預金、貯蓄預金、現金…等)へ自動振り分けしたものを記載するというものです。
振り分けには、VBA/AutoFilterを使用しています。

そこで質問なのですが
オートフィルタ―をしたものをコピーする際に、項目を除いた部分をコピーすることは、可能なのでしょうか。

・別シートには、項目は別書式で記載済み
・項目とデータの間に、「前年度より繰越」の1行が入る
これらの理由より、データ部分だけをコピーしたいのですが、
コピー時に1行ずらすと、正しくオートフィルタされたものがコピーされません。(当然なのですが…)

オートフィルタをかけたものを、データ部のみコピーする方法があれば
教えてください。お願いします。

【1 OSの種類         .】 WindowsVista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい(まだ始めたばかりですが…)
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 「Excel VBA AutoFilter 項目以外」などなど

202 :名無しさん@そうだ選挙にいこう:2011/01/13(木) 19:27:35
>>201
オートフィルタからコピーはやめれ
フィルタオプションを使いなさい。
VBAならなおさらだ。
抽出してから前年度繰越の行を2行目に挿入すればよい。

203 :201:2011/01/13(木) 22:39:21
>>202
おおお、フィルタオプションの方がいいんですね。
>202の件は、とりあえずインチキぽくやり過ごして、次の段階へ進んだのですが
条件が2つ以上あるので、どうしようか考えていたところでした。

フィルタオプションについては、まだ何も知らない状態ですので
ググって色々調べてみます。

また聞くかもしれませんが、
その際にはよろしくお願いします。

204 :201:2011/01/13(木) 22:40:21
あ、訂正。

>202の件は、とりあえずインチキぽくやり過ごして、次の段階へ進んだのですが

>201の件は、とりあえずインチキぽくやり過ごして、次の段階へ進んだのですが

205 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 10:51:12
友達にExcel教えているのですが
「アクティブセル領域」の定義を一番うまく説明する方法はなんですか?

206 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 11:08:25
■□□□■□□□□
□■□■□□□□□
□□■□□□□□□
□□□□□■□□□
□□□□□□■■■
□□□□□□□■■
□□□□□□□□■

例えば■が入力ありのセル、□が空白セルとすると、
左上のセルを基準とすればこの領域すべて9x6がアクティブセル領域、
右下のセルを基準とすれば右下の4x4がアクティブセル領域、
となることは最低限説明できないといけないんです。

207 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 11:25:16
>>205
左右上下の行と列とその交点が完全な空白に囲まれた領域
つっても分かりづらいわな。

208 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 11:51:38
>>206
現在のセルを左上として、それ以上の左と上セルはガン無視する
そして無視してない範囲すべての入力済セルが入るような場所が右下セル
とか
それか現在セルを左上として、ctrl+shift+endの範囲とかじゃダメか。操作した方が早そうな感じもする

209 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 16:39:12
2003つこてます。
フィルタオプションで、文字列を「インド」だけ抽出しようとしたら「シンドネシア」までひろってくるんです。
「インド」だけにするにはどうすればいいですか?

もちろん条件で「インド*」とはしていないんです。
「インド」だけにしてるのにもかかわらず、です。

210 :209:2011/01/14(金) 16:40:51
× 「シンドネシア」
○ 「インドネシア」

211 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 17:13:02
>>209
たしかExcel2002以外は前方一致だった筈。
'=インド
="=インド"
とか表示形式を文字列にして =インド 等々
要するにセルに=インドと表示されればよい。


212 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 17:32:19
>>208
別に現在のセル(アクティブセルのこと?)を左上とはしないだろ?
その左と上は無視しないぜ?
>>206のC3とかD2を基準にしても9x6だな
図の右下のセルの一つ斜め右下を基準にすりゃ5×5だし
別に左と上を無視したりはしない


213 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 17:48:56
211だが表示形式を;;;="インド"とかにして何か文字列を入力して=インドと表示されてるのは駄目な。

214 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 20:29:52
Private Sub Worksheet_Change(ByVal Target As Range)
のところで、「もしTargetが空白なら」という条件で分岐したいんですが
   if Target="" then
だとエラーになってしまいます
どういう風に記述したらいいんでしょうか?


215 :複乳:2011/01/14(金) 21:05:03
>>214
エラーで質問するときは必ずエラーの文章もそのまま書くこと。
ttp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_03/vba12_01.gif
sheetのところに入力した?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "" Then
MsgBox ("hoge")
End If
End Sub
だとエラーはでない。targetが2セル以上だとでるけど、1セルだとでないはず。

216 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 22:08:31
>>214
範囲を消したとかでTargetが1個じゃないんだろ?
For Eachあたりでループ回したら?

217 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 22:17:55
【1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 今日の日付の列を常に色づけ

エクセルで帳簿を作ろうとして大まかな形はできたので、
起動した時に常にその日の日付の列に色づけしようとしているんですが、
日付の記載されているセルだけ色づけされて、列は色づけできません。

以前どこかで見た物にはそういった事がされていたのでできると思うのですが、
どうすればいいのでしょうか?
条件付書式で=today()を使うだけだと上記のようにしかならなくて・・・。

218 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 22:23:46
>>217
条件付き書式で「数式が」
=TODAY()=$A$1
これを列全体に設定

219 :217:2011/01/14(金) 23:40:27
>>218
ありがとうございます!
今ちょっと出ているので、また帰ったら早速試してみます!

220 :名無しさん@そうだ選挙にいこう:2011/01/14(金) 23:47:47
>>216
ありがとうございます
そのとおり複数のセルを選択してました。

221 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 10:11:40
ファイルが1000個あって、100個のフォルダを作ってそれぞれ10個入れたいんです。
フォルダ名はExcelのA列の1〜100のセルに入っている値にしたいんです。

このようにセルの値をフォルダ名に当てる方法は、ExcelかVBAの機能を使ってできますか?

222 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 10:13:03
>>221
うん
ファイルを入れるとかフォルダを作るとか、普通に出来る。


223 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 10:30:41
いや、やり方を聞いておるにょだ

224 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 11:58:36
1000個のファイルをどういう法則で100のフォルダに割り当てるのかわからにゃいのだ

225 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 12:00:53
そうなのだ、折角つくっても後出し条件が多いと困るので、追記願う

226 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 12:46:46
1.for構文でセルを読み込む
2.mkdirでフォルダを作る

Sub 具体的にはこう()
temp_path = "C:\Documents and Settings\admin\My Documents"
For i = 1 To 100
MkDir temp_path & "\" & Cells(i, 1)
Next i
End Sub

227 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 13:38:51
OpenOffice だと行や列の幅を、ミリ単位で指定できて非常に便利なのですが、
MS-Office には同等の機能があるんでしょうか?
行の高さが「12」とか言われても、それが印刷媒体で何ミリになるのか、想像できません。

228 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 14:11:44
オートシェイプだとミリ指定できるけどね。
ただ、どうせ印刷でずれるから(´・ω・`)

229 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 14:17:15
>>227
ないんだなそれが

230 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 22:13:20
質問失礼します。
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 条件付き書式 コピー
点数を入力したセルに、条件付き書式で「50点以下だったらセルの色を赤に塗りつぶす」ということをしました。
このセルを見たまま(セルの色が赤く塗りつぶされている状態)は変えずに、条件付き書式を除いて他のセルにコピーする方法は無いでしょうか?
ご教授お願いします。

231 :名無しさん@そうだ選挙にいこう:2011/01/15(土) 22:17:36
>>230
コピー→右クリックで「形式を選択して貼りつけ」で「値」

他の書式は持って行きたい!だけど条件付き書式は持って行きたくない! ってのは無理なので、
後で条件付き書式をクリアすればいい

232 :複乳:2011/01/16(日) 07:08:38
>>230
ttp://www.excel.studio-kazu.jp/kw/20100721134421.html
ここにコードがある。うまく動くかは知らん。とりあえず基本的には無理と思って別の方法試した方がいい。

233 :名無しさん@そうだ選挙にいこう:2011/01/16(日) 09:46:36
VBAの.Resize(n)について、nはマイナス値指定はできないのでしょうか?

234 :名無しさん@そうだ選挙にいこう:2011/01/16(日) 09:55:23
出来ないみたいだね

235 :名無しさん@そうだ選挙にいこう:2011/01/17(月) 15:11:45
以前、オートフィルタの件で質問させてもらったモノです。(>201)
その後、無事、フィルタオプションにて、項目ごとに別シートに自動振り分けをすることが出来ました。

次に、
振り分けたシート毎には、月ごとの合計値などを算出する表(シート毎によって項目の違い有)を作成したいのですが
どちらの処理がいいのでしょうか?

1.テーブル雛型と言うシートに、直接関数を入れた表をあらかじめ作成しておき、丸ごとコピー、アクティブシートに貼り付け。
  フィルタオプションで抽出してきた値達により、値を自動表示。

2.テーブル雛型と言うシートに、VBAにて値を取得(とりあえず1か月分)。
  その後12か月分をループ処理で順次表示。

ワークシート関数を使用する方が処理が早くなると思い、「2」の方法を試してみたのですが、
「1」の方が処理は早いという結果になりました。

データ量が少し多めなので、出来るだけ高速化したいのですが
どのような処理をするのがいいでしょうか。

【1 OSの種類         .】 WindowsVista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 Excel VBA 高速化



236 :複乳:2011/01/17(月) 17:03:14
>>235
VBAで処理するなら一時的に再計算と再描画を止める処理を追加して、最後に解除する
↓のページの
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_090_040.html
>■処理中は画面描画や自動計算を停止する。
ってとこ。
「少し」がどれぐらいかさっぱり分からんが、再計算と描画止めて2が一番早いと思う
再計算と描画止めて1でもいいと思うけど、前処理ちゃんとやってればそんなに変わらないでしょ

237 :名無しさん@そうだ選挙にいこう:2011/01/17(月) 18:51:01
再計算と描画を止めて速くなるようであれば、もともと設計が悪いってこったな。
そんなことしなくても速くなるようにしないとね。
Application.ScreenUpdating = Falseなんてソートするときくらいしか使わないね。
>>235が何をやりたいのかわからんが、なにげにピボットの出番のような気がしないでもない。

238 :名無しさん@そうだ選挙にいこう:2011/01/17(月) 22:31:40
【1 OSの種類         .】 Windows**
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 ユーザー定義 数字
"1234"が"1,234"("1234.0ではなくて)
"1234.5"が"1,234.5”となるような設定はどうすれば良いですか?


239 :名無しさん@そうだ選挙にいこう:2011/01/17(月) 22:53:48
#,###

240 :名無しさん@そうだ選挙にいこう:2011/01/17(月) 22:57:29
>>238
With Range("A1")
  If .Value = Int(.Value) Then
    .NumberFormatLocal = "#,##0"
  Else
    .NumberFormatLocal = "#,##0.?"
  End If
End With

241 :235:2011/01/17(月) 23:49:17
>>236
処理中、画面描画は停止してます。
自動計算については、再計算をする箇所がないので、設定してません。

データ量についてですが、
元データは3000件程度、
各シートへ振り分けするものは、シートにもよりますが、500〜2000件程度です。

方法1と方法2で、10秒くらい差があり
ありすぎだなと思っています。

>>237
ピボットも考えたのですが、レイアウトが決まってることや、シートによって表示したい項目が違うこと
元データには存在しない項目(税金を別途算出するなど)などがあり
メンテナンスの面からも考えて、雛型を作成し流用するという方法にしました。
(実は、ピボットはあまり使ったことないので詳しくないとも言います……)

見にくいかもしれませんが、説明図を作成してみました。
http://uproda.2ch-library.com/333991XC9/lib333991.gif

ExcelのVBAは、これが初めてじっくり取りかかったものなので
まだまだわからないところがありますが
何か改善点があれば、教えてください。

242 :複乳:2011/01/18(火) 03:24:15
>>241
いや自動計算も止めとけよ
で、
for i = 12 to 最終行
if and ( cells(i,1) = 1 and cells(i,2) <= 25 ) then
cells(12,12)=cells(12,12)+cells(i,6)
next
こんな感じで手動で抽出。配列に入れるのが一番早いと思う

243 :235:2011/01/18(火) 14:38:13
>>242
自動計算止めました。
結果は、方法1と方法2、同じくらいの性能に!

次に、方法2にて、VBA処理部分を配列にはしてなかったので
>242を参考にチャレンジしました。
これは、フィルタオプションで抽出してきたデータを1行ずつ見ていくということですよね?

データ件数ループさせる中で、月ごとの処理を入れるのでしょうか。

For i=12 to 最終行
 
 intKariCell = 12
 For intMonth=1 to 最終月
  If Cells(i, 1) = intMonth And Cells(i, 2) <= 25 Then
   ' 該当月1〜25日分の借方値
   Cells(intKariCell,12) = Cells(intKariCell,12) + Cells(i,6)
  End If
  intKariCell = intKariCell + 6
 Next intMonth

Next i

244 :複乳 :2011/01/18(火) 20:26:15
>>243
人の言うことは聞くもんだ
ttp://www1.axfc.net/uploader/Sc/so/195587.xls
で、マクロはまー大体こんな感じ。fornextで振り分ける。
配列が使いこなせなかったら変数いっぱい用意してもいいけど使いこなせるようになったほうが絶対にいい。
列が変わったりするとすっげーめんどくさいので、これを機に
フォーマットは統一することをオススメします・・

あと月別の合計はsumでだして下さい。
やり方はなんでもいいけど俺だったら最初から入力しておく。
諸事情で新規シートが渡される場合は、vbaで入力するって感じだな。

245 :名無しさん@そうだ選挙にいこう:2011/01/18(火) 20:53:47
>>238ですがありがとうございます。
VBAじゃないとダメなんですね。


246 :名無しさん@そうだ選挙にいこう:2011/01/18(火) 20:54:14
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

officeXPを利用していて、office2007に変えました。
アイコンが2007にならないのでいじっていたら、ダブルクリックで開かなくなくなってしまいました。
アイコンのマークがちょっと変で、白いバックにエクセル2007のマークです。
真白というのが違和感あります。ワード2007の保存したアイコンはバックにはちゃんと線とかマーク入っています。

また、エクセル2007で作成して保存するとこの白いバックのアイコンになってしまい開きません。
保存を97-2003ブックにすると、2003のマークで白いバックではなくしっかりとしたアイコンで保存されて、ダブルクリックで開きます。

さらに先にエクセル2007を起動して、白いバックのアイコンを開くと開けます。その後、ダブルクリックで直接開くことはできません。

いじりすぎて、開くときの関連付けがおかしくなってしまったようです。
お助けください。

247 :名無しさん@そうだ選挙にいこう:2011/01/18(火) 21:03:44
>>246
再インストール(修復)すれば?

248 :名無しさん@そうだ選挙にいこう:2011/01/18(火) 21:29:10
officeを全てアンイストールして、再度行いましたがダメでした。
この方法ではないんでしょうか???
エクセル2007で作成し「EXCELブック形式で保存」がいかないんです。
白いバックのアイコンで開かないのがなんとも・・・


249 :名無しさん@そうだ選挙にいこう:2011/01/19(水) 01:59:47
【1 OSの種類         .】 WindowsXP Windows7
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 ショートカットキー excel2007

図の挿入とか、値として貼りつけ、シート名の変更、グリッド、セル結合などのメニューに
ショートカットキーを割り当てるにはどうしたらいいですか?
Excel2003ではalt+qとかalt+a、alt+zとかに割り当てて使用してました。
Excel2003でできたものが2007でできなくなるなんてことがあるのかしら?
あ、リボンに入れてalt→数字キー、っていうアホな回答は無しで。

よろしくお願いします。

250 :名無しさん@そうだ選挙にいこう:2011/01/19(水) 18:37:01
>>249
ところでaltキー押してみた?

251 :複乳:2011/01/19(水) 21:09:05
>>248
xlsx 関連付け おかしい
でぐぐる。それはエクスプローラーの問題なので、
エクセル側としては対象外なのよねぇ。
まーどっかに解決策あるでしょ。ない+どうしても直したい
ならおとなしくOS再インストールしなさい。
>>249
2007は持ってないので知らないわ。
エクセル ショートカットキー 割り当て 辺りでぐぐればいいと思うわ。
多分sendkeyは統一されてると思うのよねぇ。他の機能は知らないわ。あとは↓。
ttp://www.aoten.jp/snack/excel/m9_16.html
sendkeyなのに2003→2007で使えなくなってるなら逆に教えてね。なにもしないけど。

252 :名無しさん@そうだ選挙にいこう:2011/01/19(水) 21:36:11
システム関係のフォルダを勝手に消すとアイコンが壊れる
いかにも作業用っぽい名前なのに実はリソースファイルが入ってるやつがある

253 :名無しさん@そうだ選挙にいこう:2011/01/19(水) 21:40:51
>>248
試してみた?
ttp://support.microsoft.com/kb/931786/ja

254 :名無しさん@そうだ選挙にいこう:2011/01/19(水) 23:37:45
日時の引き算をするにはどうしたらいいのですか?

たとえば1999年1月1日から2011年1月19日まで何日あるか、何年あるか
計算をするにはどうすればよろしいのでしょうか?

255 :名無しさん@そうだ選挙にいこう:2011/01/19(水) 23:41:41
>254
DATEDIF関数
http://kokoro.kir.jp/excel/datedif.html

256 :235:2011/01/20(木) 00:23:02
>>244
ありがとうございました。
サンプル見ながら、配列で頑張ります!

257 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 12:20:51
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 少々
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 一致、抽出

A列とB列のデータを比較して、A列だけにあるものをD列に抽出、B列だけにあるものをE列に抽出、両方で一致したものをF列に抽出
という具合にやりたいのですがデータが多いので時間がかかって困っています。
それに少々複雑で
aa    bb
1     1
1     3
3     4
5
このようなデータだとaaの最初の1は一致として抽出、次の1は右と数が合わないので不一致として抽出したいのです。
つまりaaのみは1と5、bbのみは4、一致は1と3という具合です。
データは実際は7万行くらいあります。
現在は=COUNTIF(A$2:A2,A2)<=COUNTIF(B:B,A2)と=COUNTIF(B$2:B2,B2)<=COUNTIF(A:A,B2)を作業列に入れて
FALSEのものを不一致、TRUEのものを一致としてフィルタオプションで抽出してます。
VBAで速い方法がありますか?

258 :257:2011/01/20(木) 12:24:16
すいませんVBA板と間違いました。
両方見てる人が多いと思うのでこのままでいきます。

259 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 12:45:22
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 出来ません
【4 VBAでの回答の可否】 可 (無知でも簡単にできるのであれば)

お教え下さい
指定範囲セル内(A1〜D10)に書き込みがあった場合に
セル(A11)の背景色を反転させるなんて事は可能ですか?
またあればそのほうほうをおしえてくださいませんか?


260 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 13:09:25
Q1.A1-D10に入るのは数値?文字列?
Q2.背景色変更のトリガは、セルのひとつでも変更?全部変更した場合?
Q3.A11の背景色変更は、何色→何色?

261 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 13:14:07
Q1→どちらもです。何かしらの入力で。
Q2→セル一つでも変更で。
Q3→背景を黒、フォントを白へ。

どうにかなりますでしょうか?

262 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 13:46:05
>>261
条件付き書式で数式を使用した書式;

=COUNTBLANK(A1:D10)

で、背景とフォント色をそれぞれ設定すればおK。

263 :262:2011/01/20(木) 13:49:15
× =COUNTBLANK(A1:D10)
○ =COUNTBLANK(A1:D10)<>40

264 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 13:54:46
ifと合わせますか?
「もし空白でないセルが一つ以上ある場合」みたいな感じでしょうか?

背景とフォント色をそれぞれ設定すれば・・・のほうほうがわかりません

ん〜難しい


265 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 14:37:47
【1 OSの種類         .】 WindowsVista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい(少しなら)
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 行 移動, 行 変更



3      A  B  .C
4  →  1  2  3
5      4  5  6
6       7  8   …


このような感じで縦1行に並んでいるデータを規則正しく
N行目にあったものをA列、2N行目をB列、3N行目をC列というように
行ごと移動させたいのですがどのようにしたらいいのでしょうか?

266 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 14:40:28
>>257
A列とB列のデータはソートされてるの?

267 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 14:40:49
>>257
そういうのソートされたデータに適したマッチングアルゴリズムが昔からあるんだよね。
コボラーなら知ってる人が多いはず。
コード書くのも面倒なので心当たりのハンドルネームを某サイトで検索したらこんなのが見つかったぜ。
http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200709/07090183.txt
ループの回し方にかなり改善の余地があるようだが、これを参考にしてみたら?
横方向のを縦方向に手直しも必要そうだし、一致した場合の処理もないようなので書き足す必要があるだろう。
Select Case lngMatch
Case Is = 0 'Matchiした場合
ここの次にその下と同じような感じで書けばいいだろう。

268 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 14:44:25
>>264
COUNTBLANKは名前をよく見ればわかるけど(Count Blank)空白セルの個数を数える関数だからIFは使わなくてもいい
A1〜D10はセルが40個だから、COUNTBLANKが40になるかどうか調べればいい

色の付け方は条件付き書式の画面を開いてみればわかるよ
セルの書式設定とまったく同じだから

269 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 14:51:21
>>265
元のデータがN列に並んでるとして
A1=INDEX($N:$N,ROW()*3+COLUMN()-3)
これをガーっとC列までコピペ

270 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 14:52:07
>>266
ソートされてないと大変だもんね。
>>257のようなCOUNTIFとフィルタオプションだとフリーズしそうだなぁ。
ソートされてなきゃどこかにコピーしてソートして、そこを対象に処理すればいいよね。
あるいは隣に列を挿入して、連番振ってからソートして、処理が終わったら
連番をキーにソートして元に戻してから挿入した列を削除するとか。
数値なら数値のソートは速いから、どっかコピーした方が手っ取り早いだろう。

271 :fuku:2011/01/20(木) 15:11:13
>>257
現在は=C 〜 で抽出してます。
をvbaで実装すれば一度の計算で済む。B:Bなどの範囲もVBAで決めるようにすれば更に早い


272 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 15:16:33
>>269
できました。助かりましたありがとうございます

273 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 15:24:52
>>271
VBAで>>257と同じようなものを実装しても駄目だよ。
やっぱマッチングアルゴリズムの出番だなぁ。
>>267のはかなり下手だけどな。
ちなみにCOUNTIFで範囲をB:Bとしようが、きちんと指定しようが大した差ではない。
Excelは使ってない範囲は数えないからね。

274 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 17:10:08
>>257
だいぶ長くなったのでcodepadに貼り付けてきた

ttp://codepad.org/ZCepBnhf

すでにA列とB列がソートされてるって前提で、
各列7万行ずつ適当なデータを入れて試したら、うちのショボいノートPCで15秒ほどかかった
とりあえずは結果を出すことを目標に作ったので、
マッチング後のデータを配列に入れて一気にワークシートに書き出すようにすればもっと速くなるはず

275 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 18:20:22
やっぱループの回し方が>>267のリンク先同様下手だなぁ。
ループの脱出はもっと楽に出来るんだけどね。
配列とかよりアルゴリズムの勉強が先だな。

276 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 18:51:44
能書きはいいから具体的なコード書けば?

277 :fuku:2011/01/20(木) 19:06:58
無能を相手にすると伝染るよ。放置しませう。

278 :257:2011/01/20(木) 19:23:34
みなさんありがとうございます。
>>267の手直しはなかなかできないので>>274でやってみましたが
どうも正確に抽出されないようです。
1   0
2   1
2   3
2   6
    8
こんなデータで3と6が消えてしまいます。
また2は3個とも不一致で抽出したいです。
よろしくお願いします。

279 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 19:45:07
271程度で無能呼ばわりかよ
まいいか。
>>276
俺はここには書かんよ。
大体長すぎて3分割くらいしないと駄目だから面倒だしな。
>>278
>>267のリンク先のアルゴリズムの説明をよく読んで自分で書け。
そこそこ動くコードならそんなに難しくはない。

280 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 20:20:48
新規でExcel2010をインストールしたんだけど
ヘルプファイルって旧バージョンのExcelの内容じゃない?
オンライン環境だとヘルプファイル更新されたりするの?

281 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 20:21:37
【1 OSの種類         .】 WindowsVista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 列幅 コピー シート VBA

シートAの列幅をそのままシートBに適用したいのですが、うまくいきません
Sheets("シートB").Columns("A:M").ColumnWidth = Sheets("シートA").Columns("A:M").ColumnWidth
こんな感じでやっているのですが、どこが間違っているんでしょうか…

282 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 20:30:11
>>281
列幅が全部同じならうまくいくと思うが、一つでも違えば右辺はNullになり駄目だな。
「コピー」、「形式を選択して貼り付け」に「列幅」があるからそっち使え。

283 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 20:32:12
>>282
なるほど。即レスありがとうございました

284 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 20:41:27
>>279
「できない」より「できるけどやらない」の方が世間の評価は低いって覚えといた方がいいよ
まともな神経してたら「面倒だからやらない」なんて恥ずかしくてとても言えないもんだけどな

まあネットは何書くのも自由だけど、読んだ人間はみんなおまえのこと能無しだって思ってるよ
やる気がないんなら黙っとけ

285 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 20:42:26
>>281
ForでAからMまで回せばいい

286 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 20:45:27
>>278
条件の後出しは嫌われるよ
同じデータが複数あった場合は、片方にある場合も一致した場合も、データの数だけ取り出すの?

1 2
2 2
2 3
2 4

の場合は、

Aだけ Bだけ 一致
1     3    2
2     4    2

ってするの?

287 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 20:52:01
>>284
お前や世間にどんな評価されようが結構。
まずアルゴリズムの理解が先だろ?
グダグダ長いコードを披露する奴って馬鹿と思われるよ。
たとえば>>267のような長いコードなんて誰も見向きもしないよ。

288 :257:2011/01/20(木) 21:05:54
お騒がせしてすいません。
>>286
まったくそのとおりです。

289 :fuku:2011/01/20(木) 22:27:55
>>287
評価じゃなくて君は本当にレベルが低いんだよ。本当に分かってないのならちょっとマズイ。
学生だったらその内意味はわかるようになるだろう。アルバイトしたほうがいい。

290 :fuku:2011/01/20(木) 22:36:52
>>257>>288
ってわけでできた
ttp://www1.axfc.net/uploader/Sc/so/196320.xls
Cのflgって列はフラグなので最終的に消しても構わないが、
マクロを実行するときは開けておいてくれ
あと色々ゴミが残ってるが、module1のSub aってのがマクロ本体な

291 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 23:01:49
どうでもいいことだけど、いっぱし気取りの>>289も大差無いと思うな。
レベルが低いって()

292 :264:2011/01/20(木) 23:22:09
>>268
ありがとうございました
今日は少し飲んでるんで明日試します
また質問するかも知れませんがどうかよろしくお願いします

293 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 23:24:33
恐ろしいコード書くな。7万行でどうするんだろ?
ネタにまじになってもしょうがないが、とりあえず>>274が書いたコードを手直ししておく。
初心者に優しく配列は使わないでCellsを使っておく。またValueも省略する。
突っ込みどころが沢山あるがアルゴリズムの勉強だと思ってくれ。
ループを簡略化する方法があるが>>274を尊重した。
Sub special_matching()
Dim lastRowA As Long
Dim lastRowB As Long
Dim a As Long, b As Long, d As Long, e As Long, f As Long
lastRowA = Range("A" & Rows.Count).End(xlUp).Row
lastRowB = Range("B" & Rows.Count).End(xlUp).Row
With Range("D1:F1")
.CurrentRegion.ClearContents
.Value = Array("Aのみ", "Bのみ", "一致")
End With
a = 2: b = 2: d = 2: e = 2: f = 2

294 :293の続き:2011/01/20(木) 23:26:08
Do While a <= lastRowA And b <= lastRowB
If Cells(a, 1) = Cells(b, 2) Then
Cells(f, 6) = Cells(a, 1)
a = a + 1
b = b + 1
f = f + 1
ElseIf Cells(a, 1) < Cells(b, 2) Then
Cells(d, 4) = Cells(a, 1)
a = a + 1
d = d + 1
Else 'If Cells(a, 1) > Cells(b, 2) Then
Cells(e, 5) = Cells(b, 2)
b = b + 1
e = e + 1
End If
Loop
Do While a <= lastRowA
Cells(d, 4) = Cells(a, 1)
a = a + 1
d = d + 1
Loop
Do While b <= lastRowB
Cells(e, 5) = Cells(b, 2)
b = b + 1
e = e + 1
Loop
End Sub


295 :293の続き:2011/01/20(木) 23:28:03
すまんインデントがなくなってるわ。
メモ帳で半角スペース2個を全角スペースに置換したつもりだっだが。

296 :293の続き:2011/01/20(木) 23:38:05
>>289-290に俺のレベルの評価を聞きたいもんだぜw
ってか俺は他人のを手直ししただけどな。
しかしfukuと大差なかったらショックだなw

297 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 23:58:53
試しに>>293を配列を使うように直してみた。そこそこ速くはなったけど、
もっと効率のいい方法があるんなら教えてほしい>>293

Sub special_matching2()
  Dim lastRowA As Long
  Dim lastRowB As Long
  Dim lastRow As Long
  Dim cell() As Variant
  Dim a As Long, b As Long, d As Long, e As Long, f As Long
  lastRowA = Range("A" & Rows.Count).End(xlUp).Row
  lastRowB = Range("B" & Rows.Count).End(xlUp).Row
  If lastRowA > lastRowB Then lastRow = lastRowA Else lastRow = lastRowB
  With Range("D1:F1")
    .CurrentRegion.ClearContents
    .Value = Array("Aのみ", "Bのみ", "一致")
  End With
  cell = Range("A1:F" & lastRow)
  a = 2: b = 2: d = 2: e = 2: f = 2
  
  Do While a <= lastRowA And b <= lastRowB
    If cell(a, 1) = cell(b, 2) Then
      cell(f, 6) = cell(a, 1)
      a = a + 1
      b = b + 1
      f = f + 1
    ElseIf cell(a, 1) < cell(b, 2) Then
      cell(d, 4) = cell(a, 1)
      a = a + 1
      d = d + 1

298 :名無しさん@そうだ選挙にいこう:2011/01/20(木) 23:59:39
続き

    Else 'If cell(a, 1) > cell(b, 2) Then
      cell(e, 5) = cell(b, 2)
      b = b + 1
      e = e + 1
    End If
  Loop
  Do While a <= lastRowA
    cell(d, 4) = cell(a, 1)
    a = a + 1
    d = d + 1
  Loop
  Do While b <= lastRowB
    cell(e, 5) = cell(b, 2)
    b = b + 1
    e = e + 1
  Loop
  Range("A1:F" & lastRow) = cell
End Sub

299 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 00:00:56
>>257はコード見て理解出来なかったら、トランプを昇順に2列並べて
指で指し示しながらやれば分かるようになるかもよ。

300 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 00:09:09
最後の部分、メインループを抜けたあと余ったデータをループで1個ずつコピーしてるけど
残り全部まとめてコピーなんだからRange指定で一発でいけるよね
Range(Cells(b, 2), Cells(lastRowB, 2)).Copy 以下略

301 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 00:18:15
>>297
教えるとばれるからやめとくわ。
そのくらいでも十分すぎるくらいかもね。
下手は言い過ぎだったわ。

302 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 00:22:33
ちなみに300は301じゃないからな

303 :fuku:2011/01/21(金) 00:30:41
>>291
いや、煽ったら作ってくるかなと思って
>>296
俺が悪かった、すまんかった

304 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 00:37:15
何この空気
おまいらこれでちょっとおちつけよ

   ∧__∧  
  (*´д`*)  間違い探し(3個)
  / ,   ヽ
 ̄_|,..i'"':, ̄ ̄ ̄ ̄ ̄___i'"':, ̄ ̄ ̄ ̄ ̄___i'"':, ̄ ̄ ̄ ̄ ̄___i'"':, ̄ ̄ ̄ ̄
  |\`、: i'、     |\`、: i'、      |\`、: i'、     |\`、: i'、
  \ \`_',..-i    \ \`_',..-i     \ \`_',..-i    \ \`_',..-i
   \.!_,..-┘     \.!_,..-┘      \.!_,..-┘     \.!_,..-┘

  ___i'"':       ___i'"':,        ___i'"':,       ___i'"':,
  |\`、: i'、     |\`、: i'、      |\`、: i'、     |\`、: i'、
  \ \`_',..-i    \ \`_',..-i     \ \`_',..-i    \ \`_',..-i
   \.!_,..-┘     \.!_,..-┘      \.!_,..-┘     \.!_,..-┘

  ___i'"':       ___i'"':,        ___i'"':,       ___i'"':,
  |\`、: i'、     |\`、: i'、      |\`、: i'、     |\`、: i'、
  \ \`_',..-i    \ \`_',..-i     \ \`_',..-i    \ \`_',..-i
   \.!_,..-┘     \.!_,..-┘      \.!_,..-┘     \.!_,..-┘


305 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 01:18:56
>>285
亀レスすいません
どうも難しい方に考えていって簡単なこと忘れてました…
ありがとうございます

306 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 08:11:51
>>255
返事遅れてスマンコ
サンクスコ!


307 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 14:43:39
AB
10
10
11
(空白1)
12
(空白2)
13
14
のようにA列に数字が記入されているセルと空白セルが混在しているとき
B列に空白を無視したA列の直近2つの数字の平均を計算していきたいんです。
11の隣=(10+10)/2
(空白1)の隣=(10+11)/2
12の隣=(10+11)/2
(空白2)の隣=(11+12)/2
といった具合です。どうしたらできるでしょうか。ご教授くださいm(_ _)m

308 :fuku:2011/01/21(金) 14:48:07
>>307
B2=IF(A2="",(A1+A3)/2,A2)
下にオートフィル。値にしたいならコピーして貼りつけ

309 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 15:42:33
>>307
空白が2個続くことあるの?
あるとしたら
B3以下に=(LOOKUP(10^10,A$1:A2)+LOOKUP(10^10,A$1:INDEX(A:A,MATCH(10^10,A$1:A2)-1)))/2

実際は下のように作業列にMATCH使った方がいいんだが。
B3以下=MATCH(10^10,A$1:A2)
C3以下=(INDEX(A:A,B3)+LOOKUP(10^10,A$1:INDEX(A:A,B3-1)))/2

310 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 15:46:32
>>308
うまくお伝えできなくて申し訳ありません

・基本、Bn=(An-2+An-1)/2、つまり直近2値の平均
・if(An="", Bn+1=Bn, "")、つまり新たな数値がなければ
平均は変わらない
・An<>""のとき、つまり新たな数値があるとき、Bn+1は
そのAnと、An-1, An-2, An-3...の最もAnに直近の数値との平均

て感じです。新たな数値があるとき、古い数値を1個だけ捨てて
平均を取ることができないんです。。。

311 :fuku:2011/01/21(金) 16:01:38
>>310
すまん、全然話を聞いてなかった。>>309さんのを参考にして下さい。

312 :309:2011/01/21(金) 16:01:46
俺の式は直近に2個以上数値がないと具合が悪いな。
B3の場合、A1だけにデータがあるとA1とA列最後のデータの平均になる。
A2だけの場合は#N/Aだな。
=IF(COUNT(A$1:A2)>=2,式,"データ不足")とでもしてね。

313 :307:2011/01/21(金) 16:15:29
>>308サン, 309サン
どうもありがとうございます
実際のデータはかなり空白が多く
直近2値とともに直近4値の平均も必要です
MATCH, INDEX, LOOKUPを研究してみたいと思いますm(_ _)m

314 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 17:11:03
>>307
空白の数が不定だとワークシート関数じゃかなり難しいと思う
とりあえず2値バージョンをVBAで作ってみた
これを4値に増やすのはIf、Whileのブロックを積み重ねればいいんだけど、
それよりも直近データの探索は関数化した方がいいだろうね
Sub 直近二値の平均()
  For i = 3 To Range("A" & Rows.Count).End(xlUp).Row + 1
    j = i - 1
    f1 = False
    While j >= 2 And f1 = False  ' 直近1つ目のデータを探す
      If IsNumeric(Cells(j, 1).Text) Then
        f1 = True
      Else
        j = j - 1
      End If
    Wend
    If f1 Then
      k = j - 1
      f2 = False
      While k >= 1 And f2 = False  ' 直近2つ目のデータを探す
        If IsNumeric(Cells(k, 1).Text) Then
          f2 = True
        Else
          k = k - 1
        End If
      Wend
      If f1 And f2 Then
        Cells(i, 2) = (Cells(j, 1) + Cells(k, 1)) / 2  ' 平均を求める
      End If
    End If
  Next
End Sub

315 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 19:11:00
309だが別の方法を考えてみたぜ。
作業セルE1に=COUNT(A:A)
作業列B列のB1以下に=E$1-COUNT(A1:A$65536)
直近4個平均の求める答えはC2以下に=AVERAGE(INDEX(A:A,MAX(B2-4,1)):A1)
直近2個平均の求める答えはD2以下に=AVERAGE(INDEX(A:A,MAX(B2-2,1)):A1)
4個に足りなくて3個しかなければ3個の平均になる。
データが1個もなければ#DIV/0!になる。

間違っても配列数式でLARGEやROWを使ってはいけない。

316 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 19:15:28
平均の個数がいくつでも対応できるやつを作ってみた
手抜きなので全データの個数がN未満だと暴走するけどな

Sub N値の平均()
  N = 2  ' 直近N個の平均を求める
  r = 1  ' データの先頭行を指定
  c = 0  ' counter
  While c < N ' 上からN個目のデータの位置を調べる
    If IsNumeric(Cells(r, 1).Text) Then c = c + 1
    r = r + 1
  Wend
  For i = r To Range("A" & Rows.Count).End(xlUp).Row + 1
    r = i - 1
    c = 0  ' counter
    s = 0  ' sum
    While c < N ' 直近N個の合計を求める
      If IsNumeric(Cells(r, 1).Text) Then s = s + Cells(r, 1): c = c + 1
      r = r - 1
    Wend
    Cells(i, 2) = s / N ' 平均をB列に書き込む
  Next
End Sub

317 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 19:34:13
間違ったよ
=AVERAGE(INDEX($A:$A,MATCH(MAX($B2-4,1),$B:$B)):$A1)
=AVERAGE(INDEX($A:$A,MATCH(MAX($B2-2,1),$B:$B)):$A1)
Excel2003以前なら$B:$BはNGなのでB列の式が入力されて範囲を指定汁

318 :257:2011/01/21(金) 20:09:12
昨日は私の質問に答えてくださったみなさんありがとうございました。
別サイトの解説と>>293さんのコードが理解できるよう頑張ります。
少しは分かったような気がしてますけど。

319 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 22:34:33
excel2007で棒グラフを作ったのですが、
凡例がたくさんあって、それらを並び替えたいです。

しかしデータの選択から並び替えると棒グラフ上でのそれも並び変わって島します
判例だけ並び替えるにはどうすればいいでしょうか?

320 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 22:45:42
>>319
凡例の部分で右クリック→データの選択
凡例項目 で項目を選んで上三角や下三角を押してお好きな順番に



321 :319:2011/01/21(金) 22:51:17
>320
それだと棒グラフのならびも入れ替わってしまうんです。。。


322 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 23:30:55
ああ、そうか、、、であれば無理っぽくない?
テキストボックスでも作って重ねるってのは?

323 :名無しさん@そうだ選挙にいこう:2011/01/21(金) 23:50:29
多分無理だね。ペイントで編集するのが速そう


324 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 01:02:55
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003

フォルダの中にCSVを複数入れて、ひとつずつ開きながら集計し、
1月なら 1月_@.xls、1月_A.xls、1月_B.xls・・・ と名前をつけて
保存するときの質問です。

フォルダ内のCSVを順次開いたとき、CSV_CNT = CSV_CNT + 1 と
CSVをカウントし、20までなら@〜Sを使い、21以上あったら
メッセージを出してから中止してます。
このとき、21以上だったら集計する前に中止したいです。

Q1 CSVを開く前にファイル数をカウントすることはできますか?
Q2 Ifは20個書かないとだめでしょうか?
   (1を@に置き換える方法がありますか?)

If CSV_CNT = 1 Then
 FN = Format(Date, "m") & "月_@.xls"
ElseIf CSV_CNT = 2 Then
 FN = Format(Date, "m") & "月_A.xls"
ElseIf CSV_CNT = 3 Then
 FN = Format(Date, "m") & "月_B.xls"
       ・
       ・
ElseIf CSV_CNT = 20 Then
 FN = Format(Date, "m") & "月_S.xls"
Else
 MsgBox "CSVが20を超えているため中止します!"
 Exit Sub
End If

よろしくお願いします。

325 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 01:38:56
>>324
Q1 できる
Q2 文字コードを使えば20通りの変換が1行でできる

おせっかいを承知で言わせてもらうと、21個でエラーを出すんじゃなくて、
丸の中に数字を入れるのをやめて、たとえばカッコを使って(1)、(2)、(3)みたいにして、
21個あってもそのまま処理できるようにした方がいいと思うぞ

326 :fuku:2011/01/22(土) 01:47:24
>>324
コードが中途半端で作業内容もよく伝わらない
1.どういう作業かイマイチ伝わらないからカンで答えるけど
順次開く、の作業の前にカウントすればいい
VBA ファイル 個数 辺りでぐぐってみればいいんじゃないか

2.Sub b()
k = 1
Cells(1, 1) = Chr(k - 30913)
End Sub
ascで数値にしてから数字にすると分かりやすい。訳でもなかった。chr関数・asc関数でぐぐれ
Chr(Asc("@"))

327 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 10:16:38
>>324
とりあえずこれで@〜Sまで自動的に出るけど…

FN = Format(Date, "m") & "月_" & Chr(&h873f + CSV_CNT) & ".xls"

上の方にも書かれてるけど丸付き数字はやめとけ
あと"m"は"mm"にしとけ
いくつあっても20個しか処理しないって、それじゃ集計したことにならないじゃん

328 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 12:00:58
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 Excel 2010 グラフ X Y Z
B列とC列は条件で、J列に結果を入力しています。。
B列とC列をグラフのX軸Y軸とし、Z軸に結果を示した等高線グラフを作りたいと思っています。
しかし、軸に対するデータの指定がうまくいかずに変なグラフになってしまいます。
データの範囲の指定はどのように行えばよいのでしょうか?
よろしくお願いします。

329 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 12:30:57
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 自信なし。
【4 VBAでの回答の可否】 必要であれば。

シートが100枚ほどありますが現状はバラバラの順番になっています。
すべて1-100までの連番にしたいと思っていますが可能でしょうか?


330 :329:2011/01/22(土) 12:32:26
補足:シートの順番は今のままで連名にリネームしたいということです。

よろしくお願いします。

331 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 12:38:16
Sub こうすりゃええんやろ()
For i = 1 To 100
Sheets(i).Name = i
Next
End Sub

332 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 12:38:47
>>329
ほい
Sub シート連番()
  For n = 1 To Sheets.Count
     Sheets(n).Name = Format(n, "シート000")
  Next
End Sub

333 :324:2011/01/22(土) 13:47:50
>>325-327
どもです。

まず、カウントするのはググってみました。
で、新たな疑問です。
これだと何でカウントしないんでしょうか?

FDR = Range("B2").Value         'D:\Excel\test
'CSVN = Dir(FDR & "\" & "*.CSV") '←OK
CSVN = Dir(FDR & "*.CSV")      '←NG
Do While CSVN <> ""
 CSV_TTL = CSV_TTL + 1
 CSVN = Dir()
Loop
MsgBox "CSV_TTL=" & CSV_TTL


それから、丸付き数字を使うのは職場の慣習みたいです。
ホストコンピュータに指示すると、サーバの指定されたフォルダに
20個のCSVが出力されます。このとき、他の人が何か指示すると
同じフォルダにCSVが出てしまい20を超えてしまいます。

今まで1日がかりで手動で集計してたというので、同じフォルダに
別のCSVが入っても気にしてなかったようです。
マクロに置き換えたら、7分ちょっとで終わってしまいましたが、
別の仕掛をつくって、処理に1時間くらい掛けた方がいいのでしょうか?

334 :fuku:2011/01/22(土) 14:13:42
>>333
csvn = Dir(FDR & "\*.CSV")
こうじゃな
前のままだと
"D:\Excel\test*.CSV"
となり、test*.CSVをexcelというフォルダから探してることになる

丸付き数字はなぁ
普通は20を越える可能性や文字化けなんかも考慮して使わないんだけど
システムが必ず20個出力、ずっと使い続けてきて問題ないって前提なら使っていてもいいんじゃないかな
俺なら変えるけどな。職場の人との兼ね合いもあるだろうし、いいといえばいいんだけどな。
今回みたいにマクロ組むときに問題が起きて、後々対処がだるいだけだ。何とかしようと思えば、何とかなる。だるいけどな。

335 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 14:34:51
フィルタオプション、項目別集計などについて質問させていただいたものです。(>201,>235)
その後、集計については、無事、配列で計算することができました。

度々で申し訳ないのですが、
今までフィルタオプションで抽出してきたデータを
日単位でまとめる必要が出てきてしまいました。
http://uproda.2ch-library.com/335399SIc/lib335399.gif

方法としては、
1.フィルタオプションにて、データ抽出・表示(既存を流用)
 ↓
2.その後、日単位で計算しなおし表示
なのかなと思うのですが、どうにも効率が悪いような気がしてなりません。

日単位で計算する方法としては、以下のような書き方をしようと思っています。
----------------
For intLoopCnt=0 To データ件数
 if 今レコードの月日 = 前レコードの月日
  arrDate(intCnt) = arrDate(intCnt) + 今レコードの値
 Else
  arrDate(intCnt) = 今レコードの値
  intCnt++
 End If
Next intLoopCnt
----------------

もっと簡潔・性能良な方法があれば、教えていただけますでしょうか。

【1 OSの種類         .】 WindowsVista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

336 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 15:15:56
時間の入力する時
通常、8 : 20 といった感じに入力しますが
0820で、8:20と表示してくれたりは出来ないのでしょうか?

時給1時間1000円 30分で500円として
4:30の時、(1000×4)+500=4500円というのを自動表示してくれる方法は
無いでしょうか?

337 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 15:38:41
>>336
A1に普通の時間形式で入力。
B1=HOUR(A1)*1000+INT(MINUTE(A1)/30)*(1000*30/60)

で1時間1000円、30分500円の給料が計算できる。
時給は30分単位で計算している。10分単位の場合には
B1=HOUR(A1)*1000+INT(MINUTE(A1)/10)*(1000*10/60)


338 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 15:45:58
>>337
すいません。ありがとうございます・
後者は解決したのですが
前者が判りません。

0820で、8:20と表示したいのですが

339 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 15:55:04
A1を文字列にしといて0820
B1に=time(left(a1,2)*1,right(a1,2)*1,00)

340 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 15:57:29
>>338
そのセルで、ってこと?
ユーザー定義とかでできなくはないけど、あとで計算したい時に苦労するからやめておいた方がいい。
>>339みたいな別セルの方法を取ったほうがいい

341 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 16:08:26
>338 当該セルで変換したいなら、VBAしかありません。以下のマクロをシートに入れる。
Private Sub Worksheet_Change(ByVal Target As Range)
Rem 次の行の "A1:A5" 部分は、4桁数字を時刻に置き換えたいセル範囲を指定する
If Intersect(Target, Me.Range("A1:A5")) Is Nothing Then Exit Sub
Application.EnableEvents = False rem ←イベント受付停止
If (Target.Count = 1 And IsNumeric(Target.Value)) Then
 jikoku = Format(Target.Value, "0000")
 If Len(jikoku) > 4 Then  rem 入力した数字が5桁以上だったらエラー
  MsgBox ("エラー 4桁の数字で時刻を入力")
  Target.Value = ""
 Else
  h = Val(Left(jikoku, 2)): m = Val(Right(jikoku, 2))
  If h < 24 Then
   Target.Value = TimeValue(Left(jikoku, 2) & ":" & Right(jikoku, 2))
  Else
   MsgBox ("エラー 正しい時刻を入力")
   Target.Value = ""
  End If
 End If
Else
 Target.Value = ""
End If
Application.EnableEvents = True rem ←イベント受付再開
End Sub


342 :341:2011/01/22(土) 16:12:13
ちょっと訂正
Target.Value = TimeValue(Left(jikoku, 2) & ":" & Right(jikoku, 2))
の部分は
Target.Value = TimeValue(h & ":" & m)
でいいです。数字の部分は2桁じゃなくてもよかった。

343 :341:2011/01/22(土) 16:29:09
「分」のチェックも抜けてましたね
If h < 24 Then

If (h < 24 and m < 60 ) Then
にしてください。

344 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 17:24:09
ありがとうございます。
解決しました。

345 :fuku:2011/01/22(土) 17:52:09
>>335
それでいいと思う
あとインクリメント++は使えないけど、まぁ、知ってるわな

346 :335:2011/01/22(土) 19:46:45
>>345
レス、ありがとうございます。
安心して進めます。

>あとインクリメント++は使えないけど
ついウッカリ!

347 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 21:10:02
下記のような構成でエラーが出たとき、"err1", "err2", "err3"が表示されてしまうことがあります。
演算1でエラーが出たらerr1、演算2でエラーが出たらerr2を出して、それ以降はメッセージを
出さずに中止するにはどうすればいいですか?

------------------
Sub a()
On Error GoTo err0
Call b
Call c
Call d
Exit Sub
err0:
MsgBox "err0"
End Sub
------------------
Sub b()
On Error GoTo err1
'演算1
Exit Sub
err1:
MsgBox "err1"
End Sub
------------------

348 :347の続き:2011/01/22(土) 21:10:50
------------------
Sub c()
On Error GoTo err2
'演算2
Exit Sub
err2:
MsgBox "err2"
End Sub
------------------
Sub d()
On Error GoTo err3
'演算3
Exit Sub
err3:
MsgBox "err3"
End Sub
------------------

349 :名無しさん@そうだ選挙にいこう:2011/01/22(土) 21:43:50
>>347
SubじゃなくてFunctionにして、エラーが出たかどうかを呼び出し元に通知する
結果の表示と判定は呼び出し元の方でやって、次の演算に進むかどうか決める

350 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 11:31:34
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel 2003
【3 VBAが使えるか    .】 少し
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 Excel データ 消えた

Excelを使って簡単な予約表を作っています。
VBAは使用していますがユーザーフォームの内容をセルに反映させるだけの簡単なものです。
ひとつのブックに1月分のシートがあります。
ここ最近、入力してきちんと上書き保存もしているのに、次の日に確認すると入力した内容が消えているという事例が発生し始めました。
Excelを使用する中で、この様な事例は良くあることなのでしょうか?それとも古いPCなのでPCを疑ってみたほうが良いのでしょうか?
初めての事なのでどこから対処すべきか分かりません。御指南お願い致します。

351 :fuku:2011/01/24(月) 13:29:45
>>350
・マクロがうまく動いていない
・違う場所に保存している
・違う名前で保存している
・違う形式で保存している
色々あるが、まずはちゃんと保存できてるかの確認かねー
データが巻き戻る・PCがおかしいってことは無いと思う。
OSの復元機能ならあるかもしれんが、使ってないよねぇ。

352 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 14:15:25
>>350
ほぼ100%マクロのバグ
簡単な物だと、つい手抜きして作ってしまいがちだから
忘れた頃に不具合が出るなんて良くある話

よくある原因としては、使ってるうちにデータがどんどん増えて対応できなくなったとか、
別の人がさわって作者の想定外の操作をしたとか

ここ最近てことは、「年」が2010で固定されてて日付の計算がおかしくなってるとか、
その程度のことじゃないか?
だとしたら入力したデータは想定外のセルに保存されてる

353 :350:2011/01/24(月) 15:49:41
>>351
スタッフに確認を取ったところ、入力をしてセルに反映されたのを
確認したのち、上書き保存ボタンを押しているとの事だったので
保存の仕方では無いようです。
OSの復元機能も使用していません。

>>352
データが増えて対応できなくなった、はあるかもしれません。
スタッフのほとんどがPCに不慣れな為、極力複雑ではない入力フォームにしているつもりです。
マクロも不慣れな中組んだものなのでどこでバグが発生しているのか
検討がつかない状況です…。

使用しているマクロは↓です。

354 :350:2011/01/24(月) 15:50:43
Private Sub cmdBtn1_Click()
Dim nama As String 'お客様のお名前
Dim sejt As String '施術箇所
Dim tant As String '担当(メイン)
Dim TR As String 'TRのチェックボックス
Dim biko As String 'TRの備考
Dim Ttel As String 'TRのTEL番号
Dim biti As String 'TRの媒体

nama = TextBox1.Value
sejt = TextBox2.Value
TR = "☆"
tant = ComboBox1.Value
Ttel = TextBox3.Value
biti = ComboBox2.Value

If CheckBox1 = True Then
ActiveCell.Value = TR
ActiveCell.Offset(0, 1) = nama
Else
ActiveCell.Offset(0, 1) = nama
End If

355 :350:2011/01/24(月) 15:52:47
ActiveCell.Offset(1, 0).Value = sejt
ActiveCell.Offset(0, 2).Value = tant
ActiveCell.Offset(2, 0).Value = Ttel
ActiveCell.Offset(2, 2).Value = biti

If OptionBtn1 = True Then
With Selection.Interior
.Color = 13421823
End With
ElseIf OptionBtn2 = True Then
With Selection.Interior
.Color = 13434828
End With
ElseIf OptionBtn3 = True Then
With Selection.Interior
.Color = 16772300
End With
ElseIf OptionBtn4 = True Then
With Selection.Interior
.Color = 16764108
End With
ElseIf OptionBtn5 = True Then
With Selection.Interior
.Color = 13434879
End With
End If

ThisWorkbook.save
End
End Sub

356 :350:2011/01/24(月) 15:54:29
もうひとつ、日付ごとのシートを作成するマクロを使用しています。

Sub 予約表作成()
nen = Application.InputBox("日付を入力してください。" & Chr(13) & _
Chr(13) & "例) 2010/1/1", "日付入力")
nen2 = DateAdd("m", 1, nen)
mont = DateDiff("d", nen, nen2)

If nen = "False" Then
MsgBox "キャンセルが押されましたので、処理を中止します"
Exit Sub
End If

Sheets("原本").Copy after:=Sheets(Sheets.Count)

ActiveSheet.CommandButton2.Select
Selection.Delete
Range("D2").Select
Selection.ClearContents

357 :350:2011/01/24(月) 15:55:21
For i = 1 To mont
Range("A4").Value = nen
moji = Format(nen, "d日(aaa)")
ActiveSheet.Name = moji
ActiveSheet.Copy after:=Sheets(Sheets.Count)
nen = DateAdd("d", 1, nen)
Next i

Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True

Sheets(3).Select
End Sub

以上です。なにかお気づきの点があればよろしくお願い致します。

358 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 16:25:32
>>353
マクロの中にThisWorkbook.saveってのがあるのに、また保存ボタン押してんの?

別の場所に同じ名前で保存されてる可能性は?
HDD全体を検索して同名のファイルがあちこちにできてないか確認してみ
ショートカットを作ってるんなら、そのリンク先も確認

あと、今回の件とは直接関係ないけど、Withはこうやって使うのよ
  With Selection.Interior
    If OptionBtn1 = True Then
      .Color = 13421823
    ElseIf OptionBtn2 = True Then
      .Color = 13434828
    ElseIf OptionBtn3 = True Then
      .Color = 16772300
    ElseIf OptionBtn4 = True Then
      .Color = 16764108
    ElseIf OptionBtn5 = True Then
      .Color = 13434879
    End If
  End With

359 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 16:29:32
>>353
保存したはずのデータが消えるのって、開くファイルを間違えてるんじゃないかと思う
とくに複数の人間で共用していると、人によって保存する場所が違ってたり名前が違ってたとかよくある
とりあえずExcelを起動して、「最近使ったファイル」を片っ端から調べてみたら?

360 :fuku:2011/01/24(月) 16:41:12
>>350
>次の日に確認すると入力した内容が消えているという事例が発生し始めました。
これはどこの変更?マクロの後?前?
マクロ自体は、コードは怖いけどそれなりに動くからそんなに問題ではないと思う。

まずは保存してるかの検証だな
1.マクロを動かした後、例えばA1セルを黄色にした後、保存
1-1.それでA1セルが黄色になってなかったら、違うファイルを操作してる。
ところでそれ、メールで送られたものじゃないか?
メールで送られたエクセルファイルをそのまま開くと、
tempフォルダってフォルダに一時的に保存される→そこに保存するとPCの電源を落とすと消滅する
1-2.A1セルが黄色になってるが、一部の場所が変更されていない。
多分無いと思うけど、もしこのパターンならファイルを見ないと分からない。

あとは・・LAN経由で誰か上書きしてるとか、ないよな。ないよね。なかったらいいな。
とりあえずみんな言ってるように、保存場所の再確認をした方が良いと思う。デスクトップで試してみてはいかがでしょうか。

361 :350:2011/01/24(月) 18:37:26
たくさんのレス、本当にありがとうございます。

>>358
>マクロの中にThisWorkbook.saveってのがあるのに、また保存ボタン押してんの?
はい。最初saveは入れていなかったのですが、入力内容が消える始めた時に
入力後に上書き保存ボタンをきちんと押してないのではと考え急遽付けくわえました。
ブックを閉じるときに保存をするように作り変えようと思います。
withの使い方もありがとうございます! 早速訂正致しました。

>>360
マクロの後になります。
入力→セルに反映→保存→PCオフ をして、次の日にファイルを開くと
入力したはずの内容がない という流れでした。
デスクトップに置いてあるファイルを使用してもらっていたので一時ファイルではなかったです。

で、今までいろいろ調べてみた結果、>>359さん他の皆様が言われた通り
保存場所が原因でマイドキュメントの中に同じ名前のファイルと、消えたはずの内容がありました…。
スタッフの誰かが上書きではなく、名前を付けて保存にしたのが原因と思われます。
ミスというのは本当に些細な原因だなと実感しました…。
たくさんのアドバイス、ありがとうございました。
怖いコードと言われないようにもっと勉強したいと思います。

362 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 19:55:51
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel 2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 無理です
【5 検索キーワード     】

長いリストを作る場合
見やすいように、よく一行間隔で背景色を変えますが
わたしもそれをやりたいんです
一行一行手作業でやらないといけませんか?
膨大な行数なんでなんとか楽にやれないものかとご相談を


363 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 20:01:40
テーブルに変換すれば自動でしましまになります

364 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 20:03:01
あー 2003でしたか 条件付き書式でやってください
=MOD(ROW(),2)=0

365 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 20:03:26
>>362
色々な方法があるけど、一番安直にやるには

(1) A1とA2を異なった色で塗る
(2) A1とA2を選択してコピー
(3) 色を付けたい部分全体を選択
(4) 形式を選択して貼り付け→書式

で、繰り返しのパターンが作れる

366 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 20:04:10
テーブルに変換?(ごめんなさい解りません・・・)
ごめんなさい具体的にどのような作業をすればよいのでしょうか?


367 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 20:13:28
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2000
【5 検索キーワード     】 excel_スクロールバー

右の方に出ているスクロールバーを動かした時、エクセルの表示内容が同時に動いていく場合と
スクロールに付いて行かずスクロールバーのドロップ時に切り替わる場合と2通りあります。
これはどこかで設定できるのでしょうか?

368 :362:2011/01/24(月) 20:30:45
助かりました
感謝感謝!!

・・・ちなみにこの背景色って25%(黒)を
さらに薄くすることって可能ですか?
ちょっと濃すぎるんですよね

369 :名無しさん@そうだ選挙にいこう:2011/01/24(月) 20:52:53
>>362
書式→オートフォーマットにその手のフォーマットあるよ。

370 :362:2011/01/24(月) 20:56:15
>>369
あっホントだ(笑)
ありがとうございます

371 :名無しさん@そうだ選挙にいこう:2011/01/25(火) 23:27:44

【1 OSの種類         .】 Windowsxp
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 EXCEL 重複しない本当の順位

RANK関数を使うと重複するデータに同じ順位をつけ、以降は重複した分の順位が飛んでしまいます。
重複を無視した順位をつけるにはどうすればよいでしょうか?

ttp://arrow3.way-nifty.com/shige/2005/04/post_7abd.html
を参考にしましたが、VBAの記述が理解できませんでした。

A列に順位、B列にデータがあった場合はどういう記述をすればよいでしょうか?

372 :名無しさん@そうだ選挙にいこう:2011/01/25(火) 23:41:06
【1 OSの種類】 WindowsXP
【2 Excelのバージョン】 Excel2003
【3 VBAが使えるか】 いいえ
【4 VBAでの回答の可否】否
【5 検索キーワード】 時間計算 繰り上げ 繰り下げ

時間の計算の繰り上げ、繰り下げを教えて下さい。
 7分切り下げ8分切り上げで、15分区切りの場合です。
  例えば、@17:07分 → 17:00 A17:09分 → 17:15
      A17:16分 → 17:15 B17:42分 → 17:45 みたいになります。

 普通の15分区切りみたいなのは、
 =IF(COUNT(B7:C7)<2,"",VALUE(TEXT(FLOOR(C7,"0:15"),"[h]:mm")))
 の式で出来る様になりました。
 これを、上の様に更に細かくすることは出来ませんか?
 



373 :fuku:2011/01/25(火) 23:48:07
>>371
C1=IF(COUNTIF($B$1:B1,B1)>1,"",B1)
A1=IF(C1="",RANK(B1,B:B),RANK(C1,C:C))

374 :名無しさん@そうだ選挙にいこう:2011/01/25(火) 23:53:43
>>372
A1に入ってる時刻を七捨八入
=TIME(HOUR(A1),INT((MINUTE(A1)+7)/15)*15,0)

375 :名無しさん@そうだ選挙にいこう:2011/01/25(火) 23:55:02
>>372
その式の
VALUE(TEXT(
は無駄
FLOORだけでいい

376 :fuku:2011/01/25(火) 23:57:52
>>372
A1=1/24*HOUR(A1)+1/24/60*((INT(MINUTE(A1)/15)*15)+IF(MOD(MINUTE(A1),15)<=7,0,15))
遅い上に長い/(^o^)\ナンテコッタ

377 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 00:11:16
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2002
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
ブックを開くと、データは237行までしかないのに、スライドバー(?)が
細くなっており、それを下に下げると1673まで行きます。
ttp://uproda.2ch-library.com/336604ZLn/lib336604.png
ttp://uproda.2ch-library.com/3366051L7/lib336605.png

238行から65536行まで行削除をしても変わりません。
どころが、1〜237行を新規ブックに貼り付けて保存すると、
ファイルサイズがかなり小さくなります。

なぜ、このようのことが起こるのでしょうか?
また、新規ブックに貼り付けずに空白データ(?)を削除する方法があれば教えてください。

378 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 00:16:34
>>377
削除じゃなくて行削除してみ
名前ボックスに「238:65536」って入れたらCtrl + - (Ctrlキーを押しながらマイナス)
最後に上書き保存すればスクロールバーが短くなってる、ハズ

379 :372:2011/01/26(水) 00:43:57
>>374 >>375 >>375
早急な解答有り難う御座います!!
どっちでも出来ました。
とりあえず、その式で、仕事の片付けしたら、それから、内容の理解に励みます。
有り難う御座いました!!

380 :372:2011/01/26(水) 00:46:33
上は、
>>374 >>375 >>376
でした。

381 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 01:04:12
>>372
=IF(COUNT(B7:C7)<2,"",ROUND(C7*96,0)/96)

382 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 01:33:40
>>371
お前が考えてるのは本当の順位じゃない。
RANK関数が出す答えが本当の順位だ。
もっとも順位は普通はソートして求めるけどな。
正しい順位もだが、お前の考えてる偽物順位もソートで求めることが出来る。
上と違えば1を足せばよい。
60000件でやってみろ。
関数じゃ駄目だということが分かる。

383 :372:2011/01/26(水) 03:48:12
>>381
かなり簡単そうなの有り難う御座います!
それは、朝、分析します。皆様のおかげで、もう寝られます。
感謝!また、宜しくお願いします。


384 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 07:59:28
>>371 B列が整数なら、小数点以下の数値を足した数値でRANK()かければかんたん

385 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 10:49:24
>>384
意味取り違えてない?
俺はこんなことだと思ってる。
点数 順位
90   1
90   1
90   1
30   2
30   2
10   3
こんなものは順位じゃないが。

386 :377:2011/01/26(水) 20:22:03
>>378
ありがとうございます。
行削除したのに変わらなかったんですよ。

と思ったら、保存して反映されました。

387 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 21:23:50
本当の順位ってのが笑えるwww

388 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 22:00:54
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 エクセル ショートカット
Ctrl+Dで上のセルのコピー&貼り付けができますが、
それと同じ要領で上のセルの数字に+1した状態でコピー&貼り付けできるショートカットがあれば教えてください
マウスでセル右下の小さい■を下にドラッグすればできますが、あれと同じことをキーボードのみでやりたいです

389 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 22:12:28
すっごく面倒だけど、上のセルとコピーしたいセルを選択した後、
ALT+E+I+SでATL+TでEnter

390 :fuku:2011/01/26(水) 22:16:19
>>388
楽な方法はないんじゃないかな
Ctrl+Dのあと、どこかに一度「1」を入力してコピー
ALT+E、S、Vでenter(値の貼り付けを加算でするのをキーボードでやってるだけ)
その後1をdelete

391 :388:2011/01/26(水) 22:21:12
エクセル会社のPCにしか入ってないから試せないんだけどレスありがとう
やっぱり簡単にはできないんだねぇ

392 :fuku:2011/01/26(水) 22:26:55
よほど使うならちょっと勉強してマクロをキーボードショートカットに登録するのがいいと思うぜぜ

393 :名無しさん@そうだ選挙にいこう:2011/01/26(水) 23:05:09
>>391
便利な方法を覚えて仕事で楽をしたいなら、自分のパソコンにも入れて色々と研究するといいよ
会社のと違って色々と好き勝手に試せるし

>>392
マクロ不可って書いてあるじゃん
仕事用のPCはそういうの多い

394 :333:2011/01/27(木) 03:45:38
>>334
解説どもです。
レスが遅れてすみませんでした。

395 :名無しさん@そうだ選挙にいこう:2011/01/27(木) 05:37:46
最適化計算したいデータがあるんですが
学生とかじゃなくて一般人の私が
変数や制約条件について対面で説明しながら
アドバイスをもらえるような場所って世の中にありますか?
ここにファイルは貼れないし、パソコン教室とか違う気がするし
どこも思いつかなくて。。。

396 :名無しさん@そうだ選挙にいこう:2011/01/27(木) 06:07:11
エクセル 開発 とか
エクセル 外注 とか
でぐぐればエクセルを使って開発をしてくれる会社が色々出てくるよ
かなり割高と思うのでデータを隠してここで聞いたほうがいいと思うけどね
ついでにどのかいしゃがいいかはさっぱり分からない

397 :395:2011/01/27(木) 06:12:54
>>396
ですよね。文章まとめて書き込みします
難しいことじゃないと思うんだけど、どうもできないんですよ。。。

398 :395:2011/01/27(木) 07:56:34
0.53 -0.24 0.61 0.78 0.43
0.42 -0.07 0.00 0.69 0.00
0.20 -0.09 0.28 0.32 0.28
0.13 -0.21 0.21 0.22 0.21
0.16 -0.13 0.24 0.39 0.43
1.45 -0.08 1.33 0.35 1.34

・A列は、起点が0のある数値が期間nにつけた値
・B列は、起点が0のある数値が期間nまでにつけた最小値
・D列は、起点が0のある数値が期間nまでにつけた最大値
を表している。また
・C列は、仮に起点をB6=-0.08にした場合、A列=期間nにおける値
がどう変化するか
・E列は、仮に起点をB6=-0.08にした上、上限D6=0.35を設定した
場合、A列=期間nにおける値がどう変化するか
を表している。ここで
・C2が0であるように(セルとしては空欄)、B6=起点の設定によっては
「何も起こらない」という結果になる(この場合は、起点を-0.08にしたのに
最小値が-0.07だったから)
・E3が0.28であるように、D6=上限の設定によっては、上限+起点の調整分
ではなく、A列の数値+起点の調整分という結果になる
(この場合は、上限を0.35にしたのに、最大値が0.32だったから)
ものとする。つまり

C1=IF(B1<$B$6, A1+ABS($B$6), "")
E1=IF(AND(C1<>"",D1>=$D$6),$D$6+ABS($B$6),IF(AND(C1<>"",D1<$D$6),A1+ABS($B$6),""))

A6, C6, E6は各列の和であり、B6, D6の値を動かしてE6を最大化させたい
。。。という問題に直面しています。ソルバー?も思ったように動かず。。。
どうしたらいいでしょうか?ご教授くださいm(_ _)m
なんだったら、B6=0で固定で、D6だけ動かすんでも助かります。

399 :名無しさん@そうだ選挙にいこう:2011/01/27(木) 12:14:06
誘導
ネット上の画像をエクセルに取り込む方法を教えて
http://hibari.2ch.net/test/read.cgi/pcnews/1273598482/

400 :名無しさん@そうだ選挙にいこう:2011/01/27(木) 14:03:40
誘導されても困る

401 :複乳:2011/01/27(木) 14:21:13
>>398
マクロで作ってみた。ソルバーは空白入ってる場合にエラーでも返してるんじゃないか。しらんけど。
http://www1.axfc.net/uploader/Sc/so/198717.xls
ボタンを押せば実行される。試行回数を大きくし過ぎるとなかなか終わらないので注意。
G6が今までの最大値の結果。やり直したい時はdeleteで空白にしてからボタンを押せばok


402 :395:2011/01/27(木) 22:05:02
>>401
ありがとうございます
いま帰宅してダウンロードさせていただきました
実はこのデータは書き込み用に一部取り出したもので、実際には
A列B列D列が200行ほどあり、これからも増えていく予定なんです。。。
本当に申し訳ありません

403 :複乳:2011/01/27(木) 23:02:38
>>402
いや、大体予想してたからok。ところでこれで良かったのかな
A6=SUM(A1:A5)

A6=SUM(A1:A5)+sum(a7:a1000)
とかにすりゃok。A6C6E6の三つのセルかな。まあダメだったら作ってみるよ

404 :複乳:2011/01/27(木) 23:10:28
またいつでも言ってちょんまげネ

405 :名無しさん@そうだ選挙にいこう:2011/01/27(木) 23:55:08
【1 OSの種類         .】 WindowsXP SP3
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 Excel ピボットテーブル 精度

下のような4人×3ヶ月分の短距離走の計測タイムがあります。

計測日,クラス,名前,タイム
2010/2/1,赤組,太朗,0:12.988
2010/2/1,赤組,花子,0:12.876
2010/2/1,白組,二郎,0:12.712
2010/2/1,白組,美佳,0:12.645
2010/3/1,赤組,太朗,0:12.521
2010/3/1,赤組,花子,0:12.912
2010/3/1,白組,二郎,0:12.789
2010/3/1,白組,美佳,0:12.745
2010/4/1,赤組,太朗,0:13.344
2010/4/1,赤組,花子,0:13.233
2010/4/1,白組,二郎,0:12.698
2010/4/1,白組,美佳,0:12.501

これをピボットテーブルで個人別に並べ替えて集計しようとしてるのですが、
ピボットテーブル内のタイム値は小数点以下が四捨五入されて全て0:13.000
になってしまいます。生データの方は小数点以下3桁まで入ってます。
(ちなみにセルの表示形式をm:ss.000として小数点以下3桁まで表示させてます。)
ピボットテーブルはms単位のシリアル値は扱えない(取り込めない?)のでしょうか?

406 :複乳:2011/01/28(金) 00:52:10
>>405
よく知らないけど、仕様かねー
元データを数値にしてからピボットテーブルに放りこめば出来るから、
それでやってみてはいかがでしょう

407 :名無しさん@そうだ選挙にいこう:2011/01/28(金) 02:24:44
>>406
試していただいてありがとうございます。
確かに、元データの表示形式を数値(標準)にすると小数点以下も入りますね。謎です。
OpenOffice CALCだと普通に出来たのでそっちでやろうか迷ってました。
でもCALCは個人PCしか入れてないのでとりあえずこれでしのぐ事にします。ありがとうございました。

408 :名無しさん@そうだ選挙にいこう:2011/01/28(金) 19:16:21
C#のアプリケーションから、EXCELオブジェクト使って帳票出力する時に、
ビデオメモリ(VRAM?)のサイズによって処理速度が変化する現象が出てます。

EXCELって、そういうもんなんでしょうか?

質問テンプレ
━━━━━━━━━━━━
>【1 OSの種類         .】 WindowsXP SP2
>【2 Excelのバージョン   】 Excel2000
>【5 検索キーワード     】 VRAM、EXCEL、処理

409 :名無しさん@そうだ選挙にいこう:2011/01/29(土) 14:10:39
>>408
可能性としてはあると思うけど、Excel固有の問題としてはあまり聞いたことがない
出力って画面出力?それともプリンター?
呼び出し元のC#の出力部分の問題のような気がしないでもない

410 :tsukino:2011/01/29(土) 18:35:32
1 OSの種類         .】 mac os x
【2 Excelのバージョン   】 Excel2008
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】

質問させて頂きます。宜しくお願いします。
a1:順位 a2:名前  a3:売上 a4:小計 a5:新規
b1:3  b2:たなか b3:5万 b4:3万 b5:2本
b1:1  b2:すずき b3:8万 b4:5万 b5:4本
b1:2  b2:さとう b3:6万 b4:4万 b5:2本
というようなデータがあります。a2:b5は別のシートから関数でデータをとっています。売上順に並べ替えをしたいです。
メニューから並び替えやオートフィルタを使うと並び替えはされるのですが、行がそのまま並べかえられずにバラバラになって並び替えをされてしまいます。例えば”たなか”の売上が”すずき”の売上で並べ替えされる等。
何が問題なのかがわからないので助言を宜しくお願い致します。

411 :名無しさん@そうだ選挙にいこう:2011/01/29(土) 18:40:47
a1とかb1とかいうのは……セルに入力されてる値?


412 :tsukino:2011/01/29(土) 18:50:13
わかりにくくてすみません。ただのセルの名前です。

413 :名無しさん@そうだ選挙にいこう:2011/01/29(土) 18:54:24
b1セルってそんなにいっぱいあるのか。初めて見た

414 :tsukino:2011/01/29(土) 19:00:38
あ、、、、、申し訳ないです。すごいミスりました。
a1:順位 a2:名前  a3:売上 a4:小計 a5:新規
b1:3  b2:たなか b3:5万 b4:3万 b5:2本
c1:1  c2:すずき c3:8万 c4:5万 c5:4本
d1:2  d2:さとう d3:6万 d4:4万 d5:2本
正しくはこんな感じです。

415 :名無しさん@そうだ選挙にいこう:2011/01/29(土) 19:10:55
たぶんまだ間違ってるが、まあいいや

売上を5万、6万、8万のように昇順で並び替えしたいってこと?

416 :tsukino:2011/01/29(土) 19:33:44
今、気づきました。焦ってました。申し訳ありません。
a1:順位 b1:名前  c1:売上 d1:小計 e1:新規
a2:3  b2:たなか c2:5万 d2:3万 e2:2本
a3:1  b3:すずき c3:8万 d3:5万 e3:4本
a4:2  b4:さとう c4:6万 d4:4万 e4:2本
お願いします。

売上順に並び替えをしたいです。売上の高い方からなので8万、6万、5万です。順位の列の昇順でも大丈夫です。

417 :名無しさん@そうだ選挙にいこう:2011/01/29(土) 19:48:37
で、売上の降順で並び替えるとどうなるわけ?

418 :tsukino:2011/01/29(土) 20:02:46
a1:順位 b1:名前  c1:売上 d1:小計 e1:新規
a2:1  b2:すずき c2:8万 d2:5万 e2:4本
a3:2  b3:さとう c3:6万 d3:4万 e3:2本
a4:3  b4:たなか c4:5万 d4:3万 e4:2本
上記のようになるように並び替えをしたいです。

419 :名無しさん@そうだ選挙にいこう:2011/01/29(土) 20:47:39
それはわかってるんだけど、降順で並び替えるとどうなるの?

6万
5万
8万

みたいなことになるのかな? それなら「6万」が「6万」になってるとかいうことじゃないかな。

420 :tsukino:2011/01/29(土) 21:19:19
行の羅列がバラバラになってしまいます。
例えばですが、
a1:順位 b1:名前  c1:売上 d1:小計 e1:新規
a2:1  b2:さとう c2:5万 d2:5万 e2:2本
a3:2  b3:すずき c3:6万 d3:3万 e3:4本
a4:3  b4:たなか c4:8万 d4:4万 e4:2本

このようにバラバラになってしまいます。

421 :名無しさん@そうだ選挙にいこう:2011/01/29(土) 21:46:40
>>420
並び替えボタンを押すと一瞬セルが選択されるけど、A2からE4が選択されてる?

422 :名無しさん@そうだ選挙にいこう:2011/01/29(土) 21:58:25
Macの2008ってテーブル機能ないのかね。あるならいったんテーブルに変換したほうがいいよ。

423 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 07:55:39
範囲の選択してないだけだろうなぁ

424 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 16:16:57
>>409
出力は何だろう、DBからEXCELファイルです。
Google先生も知らないみたいで。

ただ、Win2000、1Ghz、512MB、VRAM128MBの方が
WinXP、2Ghz、1.5GB、VRAM64MBより圧倒的にEXCEL出力終わるの早いです。

何なんでしょうね…

小さな情報でも、「もしかしたら」でも、何か情報があれば、教えていただけると幸いです。

425 :複乳:2011/01/30(日) 16:40:00
>>424
VRAMだけ変えたなら分かるけど、他も色々変わってるならVRAMを比べたとは言えないですぞ
Pen4はレイテンシや熱など色々なところで遅かったし、XPより2000の方が軽いor少ない処理だと速い。量が多いと分からんけど
あとパソコンの問題もある。最近のPCは熱を持ちやすくて劣化しやすい。長く使ってるなら昔のパソコンのほうがサクサク動くということもある

劣化やホコリの問題もあるので、同じパソコンでVRAMだけ取り替えた場合なら比べる意味があると言える
別のパソコンで比べてるのなら意味がないです

426 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 16:54:11
あげ

427 :tsukino:2011/01/30(日) 17:54:13
皆様返答ありがとうございます。

>>421
正しく範囲が選択されています。

>>422
テーブル機能に関して全く無知ですので宜しかったら教えていただけませんか?

>>423
範囲は確かに選択されています。


そもそもバラバラになるどころか、列の数値さえも正しく並び替えられません。
他のシートから関数でデータを持って来ているからでしょうか。

428 :複乳:2011/01/30(日) 18:04:12
>>427
あんまり覚えてないけど確か関数のまま並び替えるとよくわからんことになったと思う
一度全てをコピーして値で貼りつけてから並び替えたほうが良いと思いまする

429 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 18:04:20
>>427
単位が書式じゃなくて直打ち(直接"1万"とか入力って言う意味だったら文字列扱いだよ。
たとえば、1、2、10、20と並べば数値。1、10、2、20となっていれば文字列扱い。

430 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 18:28:49
まあ、なんどもいってるけど、並び替えたらどうなるのかっていう結果を
具体的に示してくれればすぐ原因わかりそうなんだけどな。

431 :tsukino:2011/01/30(日) 19:07:11
皆様素早い返答ありがとうございます。

>>428
やはり関数のままだと正しく並び替えられないのですか?
コピペ→並び替えだと上手くいくのですが、少々面倒ですので何かいい方法はありませんか?

>>429
簡単に書いただけで数値で入力しています。わかりにくくてすみません。

>>430
具体的に実際のデータで書きたいのですが、いかんせんデータ量が割と膨大なのと会社のデータなので、、、すみません。

432 :複乳:2011/01/30(日) 19:13:57
>>431
俺は知らん。いつも値にコピペしてから並び替えてる

433 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 19:34:40
値で問題ないのなら、関数の式の問題だね。絶対参照で書くべきところを相対参照に
してるとか。これもさらしてくれないとなんともいえない。

434 :tsukino:2011/01/30(日) 21:09:08
返答ありがとうございます。

>>431
コピペしてから並び替えしか方法はないのでしょうか。
ありがとうございました。

>>433
相対参照と絶対参照では並び替えしたときに変化が生まれるのですか?


435 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 21:48:12
そりゃそうでしょ。かんたんな例をつくってテストしてみればすぐわかる。

436 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 21:55:45
>434
WindowsXP、Excel2003で、3列10行程度の簡単なものをつくり、
別シートの同じセル位置を参照する例で試してみましたが、
相対参照、絶対参照ともソート結果は正常でしたよ。
Macは「漢字トーク7」の頃のしか持ってないので、テストできません。

437 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 22:06:19
>>431
膨大なデータのままだとなかなか原因が見えてこないと思うよ

まずそのブックをコピーしたあと、
データをガーっと削除して30行10列程度の小規模なブックにする
その状態で並べ替えをして異常動作が再現できるかどうか試してみて

438 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 22:11:04
>>434
並び替えした後、異常な順番になってるセルの式がへんなセル範囲を参照してないか確認した?


439 :名無しさん@そうだ選挙にいこう:2011/01/30(日) 22:12:37

  A B  C    D
1 1 =D1 =$D$1 a
2 3 =D2 =$D$2 b
3 2 =D3 =$D$3 c
4 4 =D4 =$D$4 d
としてA1:C4を並べ替えるなんて状態なのでは

440 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 00:55:10
関数の書き方が下手なり間違ってるなりするんだろう

会社のでそのままはアップ出来ないのであれば、再現性のあるサンプルを作ってもらわないことにはこれ以上正確なことは誰もいえん

441 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 03:07:24
>>425
ですよねー
VRAMのサイズ弄る方法までたどり着いていないのと、それが許されそうな環境じゃなさそうなので、試せそうにありませんが。

誰か暇な人がデータ取って公開してくれてたら良いのに。


442 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 10:35:21
言いだしっぺの法則

443 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 14:45:40
>>441
単純にデータベースから引っぱってきたデータをExcelのワークシートに落とすだけなら
それはどう考えてもVRAMが原因じゃないね

怪しいのはDBとの接続。LANが物理的に遅いとかデータ量に差があるとか
次は常駐ソフトとかOSのチューニングとか内部的な問題
最後にコンピューターウィルスとか故障を疑ってみる

もう少し具体的に、環境、レコード数、時間を書いてみて

444 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 16:20:23
ここで聞くことなのか分からないんだけど、
Excelのソフト持ってないのにMOS試験受けるのって無謀なの?

445 :複乳:2011/01/31(月) 16:45:07
>>444
受からなくもないけど、かなり難しいとは思う。
あと資格試験板というものもあるけど、まぁどっちでもいいよ

446 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 17:21:11
>>445
そういうものか……
一応OpenOfficeで出来る範囲は勉強してるんだけどさ

447 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 17:51:57
>>446
無料体験版あるから入れたら?
期間延長しながら半年ぐらい使えるから試験対策ならそれで十分なはず

448 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 18:00:32
MOS試験
ってどのくらい難しいですか?

449 :名無しさん@そうだ選挙にいこう:2011/01/31(月) 18:30:40
>>448
1000点満点で600点ぐらいとれば合格と言われてるから、
よほどのアホでなければ普通に勉強してれば必ず合格できるレベル
合格率は90%以上らしい

450 :名無しさん@そうだ選挙にいこう:2011/02/01(火) 15:44:51
>>447
2003なんだけど2003の無料体験版ある?
ググったら評価版とか出てきたけどこれ?

451 :名無しさん@そうだ選挙にいこう:2011/02/01(火) 16:07:11
>>450
公式の試用版は最新版だけ
今だと2010

452 :名無しさん@そうだ選挙にいこう:2011/02/02(水) 17:04:00
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

下記のようにAにアルファベットの文字があって、Bに数値が入っています
Aの文字が上下同じなら、Bの数値を足してCに表示させたいです。

  A B C
1 ac 1
2 ac 3 4
3 ba 5
4 ba 7
5 ba 8 20
6 cd 1 1


可能でしょうか?
よろしくお願い致します。


453 :複乳:2011/02/02(水) 17:10:34
>>452
C1=IF(A1<>A2,D1,"")
D1=1
D2=IF(A1<>A2,B2,B2+D1)
C1とD2を下にオートふいる

454 :452:2011/02/02(水) 18:03:12
>複乳 様

ありがとうございます!
仕事がかなり捗りそうです、助かりました。

455 :複乳:2011/02/02(水) 18:14:06
デヘヘ
僕って頭いでしょ

      / ̄ ̄ ̄ ̄ ̄ ̄\
    /             \
   /                  ヽ
    l:::::::::.                  |
    |::::::::::    ⌒     ⌒     |
   |:::::::::::::./// \___/ ///  |
    ヽ:::::::::::::::::::.  \/     ノ

456 :名無しさん@そうだ選挙にいこう:2011/02/02(水) 19:36:58
複乳って作業列を増やす方法をよく回答するよね。

457 :複乳:2011/02/02(水) 19:44:45
そのほうが分かりやすいし
しろうとが見ても改変が楽でしょ

458 :名無しさん@そうだ選挙にいこう:2011/02/02(水) 20:10:31
大きなお世話かもしれないけど、こういう方法だと行の並び替えをすると
正しく計算できない。ピボットテーブルやデータベース関数で集計するのがいいよ。

459 :複乳:2011/02/02(水) 20:12:43
452さんにピボットテーブルやデータベース関数が使えると思う?

460 :名無しさん@そうだ選挙にいこう:2011/02/02(水) 23:08:53
D1の式は=B1だと思うが複乳のロジックは正解だな。
ソートしてブレイクするまで足し算するというのは考え方としてはごくまっとうな考え方だ。
ピボットテーブルも中では同じようなことやってる。

461 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 10:34:53
=A1
=A4
=A7





と連続で並べる方法はありますか?
もしあればやり方をご教授ください。



462 :複乳:2011/02/03(木) 10:44:24
>>461
(1)B1セルとB2セルに
A1
A4

(2)C1セルに
="="&B1

(3)B列とC列を下にオートフィル

(4)C列をA列に「形式を選択して貼り付け」の「値」にしてコピペ

463 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 11:01:32
>>462
おー、すごい。
ありがとうございました!



464 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 11:06:08
って、だめじゃん。
=A1
でA1の表示が出来るようにしたいのですが
これだと=A1と表示されてしまいますorz

465 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 11:18:57
>>461
その数式をB列に入れたい場合
B1に「a1」
B2に「a4」
と入れてオートフィル
B列を選択して「a」を「=a」に置換

466 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 11:22:08
>>465
おー、すごい。
ありがとうございました!



467 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 11:22:30
>>462
複乳はちょいちょい嘘を書くなあ
書き込む前にちゃんと動くか必ず試せ
過去スレで同じ質問が何度も出てるんだから探せ
A列を参照する式をA列に書き込んだら循環になるって気付け

468 :複乳:2011/02/03(木) 11:26:24
本物の複乳さん、すみません

    / ̄ ̄ ̄ ̄ ̄ ̄\
  /            \
 ./               ヽ
 l:::::::::.              _.,.,_|
 |::::::::::  (ー)    (ー)////゙l゙l 
 |:::::::::::::::::  \___/ .l  / !.| 
 ヽ::::::::::::::::::::  \/   |    | |  
                l   /./

469 :複乳:2011/02/03(木) 12:49:35
何でもいい。というか謝るなら質問者に。


470 :複乳:2011/02/03(木) 19:57:46
なんだこの自演?!

471 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 20:06:28
どうせならこの板の名前欄を複乳にしてしまえーーー

472 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 20:08:10
いつまで「名無しさん@そうだ選挙にいこう」何だろう
そもそもこれ何の選挙なんだろう

473 :複乳:2011/02/03(木) 20:29:09
>>470
こら、おまいニセモノだろ
                 
      / ̄ ̄ ̄ ̄ ̄ ̄\
    /             \
   /                  ヽ 
    l:::::::::.                  | 
    |::::::::::   (●)     (●)   | 
   |:::::::::::::::::   \___/     |  
    ヽ:::::::::::::::::::.  \/     ノ

474 :名無しさん@そうだ選挙にいこう:2011/02/03(木) 23:39:51
【1 OSの種類         .】 vista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 どのワードで検索をかければいいのかわかりませんでした。

数値の抽出に関して質問があります。

        A             B
1 元のデータである数値  検索したい数値 


この用にA列に元のデータがあり
B列には検索したい数値が並んでいます。

ここで抽出する際に問題がありまして、AとBでは完全に一致する数値はありません。
そこで、A列の数値から『B列の数値の±0.005の誤差までは許容できる』という形で抽出したいと思っているのですが
どのような関数を組めばよろしいのでしょうか。
誤差がなければVLOOKUPなどで抽出出来ると思うのですが。

どうかよろしくお願い致します。

475 :複乳:2011/02/04(金) 00:24:32
>>474
C1=IF(ABS(B1-A1)<=0.005,1,0)
これで許容範囲なら1になるので、後はお好きに

476 :複乳:2011/02/04(金) 00:26:16
はい、次!

477 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 03:18:52
>>474
VBA使わないと無理だと思う

>>475
たぶんおまえの解釈は間違ってる

478 :複乳:2011/02/04(金) 03:49:43
>>477
俺もどっちか迷ったんだよな
まぁ明日になれば分かるでしょ〜

479 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 11:00:27
>>474
A列を昇順にソートしないと無理だろうな。
=IF(ABS(TEXT(LOOKUP(TEXT(C1+0.005,"0.000")*1,A$1:A$10)-C1,"0.000")*1)<=0.005,LOOKUP(TEXT(C1+0.005,"0.000")*1,A$1:B$10),"")
A列の先頭データより0.005以上小さいときのエラー対策はしてないから、ダミーで先頭に小さい値を置くように。
誤差対策で式が長くなってるが、A列を1000倍して、C1も1000倍して整数に丸めれば誤差対策は少なくなる。

480 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 11:02:55
上はC1に検索値を入力して、A1:A10を検索して対応するB列のデータを引っ張る例だ。

481 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 11:17:57
>>479の誤差対策は不十分だな。
0.0055大きくてもヒットしてしまう。
"0.000"のところは"0.0000000000"などと十分な長さににしてくれ。

482 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 15:20:20
すみませんが、宜しくお願い致します。
【OSの種類】WindowsXP
【EXCELのバージョン】Excel2000
【VBA使えるか】コードを書いてもらえれば
【VBAでの回答可否】可
【検索キーワード】
アクティブ行 範囲 選択
アクティブセル 範囲 選択 行
【やりたい事】
アクティブセルがある行のA〜N列を選択してコピー状態(クリップボードにコピー)にしたい。
【試したマクロ記述】
Sub アクティブ行のコピー()

'アクティブセルのある行位置を取得
R = ActiveCell.Row

Range("A:N" & R).Select

Selection.Copy

End Sub

宜しくお願い致します。

483 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 15:33:12
>>482

Sub アクティブ行のコピー()

'アクティブセルのある行位置を取得
R = ActiveCell.Row

Range("A" & R & ":N" & R).Select

Selection.Copy

End Sub

484 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 15:35:27
>>482
Range("A" & R & ":N" & R).Select

あるいは、
R = ActiveCell.Row

Selection.Copy
も消して
ActiveCell.EntireRow.Cells(1).Resize(, 14).Copy
もしくは
Cells(ActiveCell.Row, 1).Resize(, 14).Copy
の1行でも良い

あと、そこまで書ける知識があるなら、デバッグの仕方を覚えよう
Range("A:N" & R).Select
ではなく
変数 = "A:N" & R
Debug.Print 変数
Range(変数).Select
とすれば、問題が「"A:N" & R」にあるってことに気付ける
処理は入れ子にせず、逐一変数に代入してDebug.Printで出力する
これで大抵問題点が見えてくる

485 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 16:04:42
>>483
素早いご回答ありがとうございます。
処理が出来ました。ありがとうございます。

>>484
それだけ短い記述が可能とは思いませんでした。
素早いご回答ありがとうございます。
デバッグの仕方があまりよくわかっていませんでした。
参考にして、勉強します。
ありがとうございます。

486 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 19:15:12
>>485
A列からならActiveCell.EntireRow.Resize(, 14).Copyでもいいよ。
ピリオド打ったとき入力候補が毎回出てくるので楽。
A列からじゃなくB列からならActiveCell.EntireRow.Cells(2).Resize(, 13).CopyのようにCellsなどを使う必要があるけどね。
ActiveCell.EntireRow.Range("B1").Resize(, 13).Copyなら入力候補が出てくるが上が普通だな。

487 :tsukino:2011/02/04(金) 20:00:18
>>435,>>436,>>437,>>438,>>439,>>440,>>441,>>442,>>443
返信遅れて申し訳ございません。
あれから色々調べてみたのですが、やはり原因は関数で引っ張って来たデータは正しく並び替えがされないようです。
地道に値のみコピペして並び替えようと思います。

皆様ありがとうございました。

488 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 20:05:12
【1 OSの種類         .】Vista
【2 Excelのバージョン   】Excel2007
【3 VBAが使えるか    .】いいえ
【4 VBAでの回答の可否】否
【5 検索キーワード     】先入れ先出し

下記のような販売管理帳(先入れ先出し法)を作りたいと思っています。

日付  品名  仕入 仕入 仕入 販売 販売 販売 仕入 利益 在庫
          数量 単価 価格 数量 単価 価格 原価 
2月1日 みかん 20  50  1000                     20
2月2日 バナナ 40  50  2000                     40
2月2日 みかん 30  60  1800                     50
2月3日 みかん             30  80  2400 1600 800  20
2月3日 バナナ 30  40  1200                     70
2月4日 バナナ             30  70  2100 1500 600  40

利益の欄を関数で求めることはかなり難しいのでしょうか。
念のため上記の利益計算手順を記しておきます。

2月3日みかん販売
仕入原価:(2/1 仕入分 20個 * 50円) + (2/2 仕入分 10個 * 60円) = 1600円
利益:販売価格 2400円 - 仕入原価 1600円 = 800円

2月4日バナナ販売
仕入原価:2/2 仕入分 30個 * 50円 = 1500円
利益:販売価格 2100円 - 仕入原価 1500円 = 600円

上記キーワードでググったところ、
http://questionbox.jp.msn.com/qa3864767.htmlではVBAを使わないと難しいとのことですが、
作業列等が入っても構いませんし、多少強引な方法でも構いませんので、なんとか関数で出来るならばご教示いただけるとありがたいです。
よろしくお願いいたします。

489 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 20:25:52
>>486
なるほど、Cellsを省略出来る形もあるんですね。
元の内容からこれだけ省略出来るとは…。
勉強になります。
ありがとうございます。

490 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 21:00:17
>>488
関数でもおそらく出来ることは出来るだろうと言うか、案はいくつか思いつくが
あまりに回りくどすぎて実際に組む気にはなれない。

というか>>488の問題は、それを関数でどう解決するかってことではなく
「否VBA」という問題をどうにかして解決することにあると思う。

俺が以前居た会社も最初はマクロ禁止だったけど
マクロ、VBAはこんなに便利で有意義で、こうすれば危険という弊害も排除できると
プレゼンテーションしてマクロ可の職場に変えていったし。

君が頑張ってVBA可にしたら、俺も頑張ってVBAコード書いてあげるよ。


しかし話は変わるが、その計算で出た数字は利益とは言えないでしょ。
50円のみかんを20個と60円のみかんを30個仕入れて
50円のみかんを20個と60円のみかんを10個売った。だから
50円のみかんを20個と60円のみかんを10個分の仕入れ値を売上から引いて+800円
一見正しそうに見えるが、残っている60円で仕入れたみかん20個分も、既に金は支出しているんだから、
それを無視して求めた数字に意味なんて無い。

例えば10000円持っていて、50円x20個のみかんを仕入れたら、手持ち9000円+みかん20個
次に60円x30個のみかんを仕入れたら、手持ち7200円+みかん50個
次に80円x30個のみかんが売れたら、手持ち9600円+みかん20個
何処にも+800円なんて数字は出てこない。
あるのは、この時点では利益-400円(400円の赤字)とみかん20個の在庫という現実だけ。

100円で10個仕入れたもののうちの1個を200円で売ったから、利益は100円。こういう考え方では会社は
回らないよ。これがまかり通るのは仕入れ値そのままでいくらでも仕入先に返品出来る場合くらいだ。
しかし、そんなの少なくとも食い物扱う世界じゃまず無いし、もし有ったとしたら仕入れ値の変動も無いはずだ。

491 :複乳:2011/02/04(金) 21:21:00
>>490
いや、簿記の基本なんだが・・・
損益出したいだけでしょ。残ったものは繰越商品になる
あと食い物は例えでしょ。実際は子会社における部品の利益かなんかっぽい気がする。
あと俺もVBAじゃないと無理と重う。

492 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 21:33:39
簿記で繰越になるのは1日とか1ヶ月とか、ある期間を以てでしょ。
1件売れる度になんてやらないはずだが。

493 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 22:07:01
素人にありがちだけど、結果とデータ構造を分離しないから小難しいことになる。
こういうことをしたいなら、仕入れ日ごとに別商品として在庫管理しないといけない。
さらに、仕入れテーブルと販売テーブルに分けることも必要。


494 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 22:24:05
>>493

どういうことかくわしくおしえてくださらんでしょうか?


495 :488:2011/02/04(金) 22:36:26
>>490-491さん
レスありがとうございます。
まず、>>488の表は、>>491さんの仰る通り、例えではありますが単純に日々の損益を割り出したいだけです。
日々の「損益」と「在庫」を正確に把握しておきたい、というのがそもそもなのですが、
「利益」ということに関して厳密に言えば、たしかに490さんの仰る通りかもしれませんね。
ただ、算定対象の種類や数が多く、また一つのデータが背負ってるパラメータの数も多くて、
とても手計算ではやってられないので、全部関数でなんとかならないかと考えた次第です。

次にVBAについて、環境的にはマクロの使用は問題ないのですが、
恥ずかしながら私自身にVBAを習得する余裕がないというのが実情です。
なので、たとえ力技であっても関数で処理できればと思ったのですが・・・。
VBAのコードをご教示いただいてそれを張り付けるだけでなんとかなる、
なんて甘いものではないですよね・・・。

496 :名無しさん@そうだ選挙にいこう:2011/02/04(金) 23:07:31
>>494
accessのようなデータベースソフト使えってことだな。



497 :複乳:2011/02/04(金) 23:26:09
>>495
ベクターで調べるか
http://www.vector.co.jp/soft/winnt/business/se482514.html
「テンプレート エクセル 先入れ先出し」
でググるのもいいかも。1から作ろうと思ったら結構めんどくさかった

498 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 00:36:35
>>494

テーブルを分ける方法で試作してみた

ttp://www.dotup.org/uploda/www.dotup.org1318717.xlsx.html

保存したファイルはzip形式だけど、拡張子をxlsxに変更すること。


499 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 13:32:03
【1 OSの種類         .】 WindowsXP HOME
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 エクセル 近似値

近似値を求めたいのですが、VLOOKUPを使うと、その数値以下のものが参照されません。

設定1 290
設定2 280
設定3 270
設定4 260
設定5 250
設定6 240

例えばデータベースのセルへ「276」と入力したら、他のセルへ設定2と表示されるような関数はありませんでしょうか。

500 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 14:32:02
276を四捨五入して280にしてから検索

501 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 14:36:39
>>499
数値を昇順にすればLOOKUPでいける。
=LOOKUP(検索値,B$1:B$6,A$1:A$6)
どうしてもVLOOKUPにしたければ列を左右入れ替えて
=VLOOKUP(検索値,A$1:B$6,2,TRUE)だが、これならそもそも=LOOKUP(検索値,A$1:B$6)でよいからLOOKUPがスマートだ。

502 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 14:41:09
>>499
275だったら?
設定2と設定3が出るようにしてみたけど
http://www.dotup.org/uploda/www.dotup.org1320266.jpg

おっとこの場合G5〜G8はいらなかったな まーいーか

503 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 14:42:28
>その数値以下のものが参照されません。
これに惑わされて上の回答をしたが、276で設定2なら数値以上じゃないか?
だったらMATCHの照合の型-1だな。
=INDEX(A$1:$A6,MATCH(検索値,B$1:B$6,-1))
実際はそのように規則正しく10おきなら検索なんかしなくてもいいんだけどな。

504 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 14:44:07
503は501の帝政な

505 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 14:46:58
書き忘れたがMATCHの照合の型-1は降順ソートだから>>499の並びだ。

506 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 15:00:44
>>499は説明が足りないな。
276は設定2が欲しいのは分かったが、271なら設定3か?
また275ではどうしたいの?
俺は出かけるから返事もらっても答えられないが。

507 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 15:12:22
連投おつかれさまです

508 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 15:27:24
ROUND関数も参照してみようね。

509 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 15:54:30
=MATCH(MIN((A1:A6-B1)^2),(A1:A6-B1)^2,0)としてCTRL+SHIFT+ENTERのようなことがしたいのだろう

510 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 16:24:16
本当の近似値にしてもROUNDなんか出番ねーわな。
5シフトしてINDEとMATCHなりLOOKUPなり使えばいいんだし。
しかし例題も悪いね。
それじゃ503がいうように検索しなくても済むもんね。
検索するなら検索するような数値の例題を出さないと。

511 :499:2011/02/05(土) 17:02:53
http://www.dotup.org/uploda/www.dotup.org1320594.jpg
説明へたくそですみません。
そしてたくさんのご回答ありがとうございます。
上記の図で説明すると、C4の数値をG96〜G101を参照してC95に返すようにしたいです。


512 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 17:15:43
なんでこんなクソみたいなシート作るの?
表計算ソフトは図を書くための方眼紙じゃないんだよ
計算情報を扱う為のデータテーブルなんだよ

513 :複乳:2011/02/05(土) 17:54:12
>>511
http://www.dotup.org/uploda/www.dotup.org1320739.jpg
1000から引いたものでvlookup。めんどくさいからあんまり試してない
>>512
パチンカスは頭が傷んでるから仕方ない。今回はスルーしたほうが良いと思うぞ
虫に説教するのと同じ。

514 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 18:49:22
>>511の表で

{=OFFSET(F94,MATCH(MIN(ABS(G95:G100-C4)),ABS(G95:G100-C4)),0,1,1)}

という式をつくると、C4が278.24以上であれば正しい答えが返る。
しかし、それ未満だとエラーになる。理由がわからん。

515 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 19:41:21
朝鮮玉入れ関連の問題なのか?
俺はチョン玉は嫌いなんだよな。
本家の韓国が禁止になってんのに何でこんなものが日本じゃ許されてんのかねぇ。

516 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 20:37:48
朝鮮メダル入れスロットだろ?

517 :複乳:2011/02/05(土) 20:39:22
気持ちは分かるがその辺にしてくれ。このスレでまでそんな事考えたくない

518 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 22:04:01
【1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 エクセル 書き込み禁止 セル内の文字コピー可

データ全体をを書き込み禁止にしつつ、セル内の文字はコピーできるようにしたいのですが
簡単にできる方法はありますか?

519 :複乳:2011/02/05(土) 22:19:02
>>518
・ファイルを読み取り専用にする
・シートの保護→右クリックでコピー
どちらでも

520 :名無しさん@そうだ選挙にいこう:2011/02/05(土) 22:40:30
>>519
教えて下さりありがとうございます。

521 :499:2011/02/06(日) 07:51:52
>>513
ありがとうございます。
1000から引いたものでvlookupで、設定1の値を超えるとエラーになりますが大体希望通りにできるようになりました。

522 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 10:41:04
【1 OSの種類】 WindowsXP
【2 Excelのバージョン   】 Excel2002
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 チェックイン・SharePoint

ツールバー→ユーザ設定→コマンド→ファイル
のなかに「チェックイン」「チェックアウト」という項目がありますが、
これはSharePointと連携して使うためのものでしょうか?

TortoiseSVNと連携して使うことはできないのでしょうか?


523 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 13:42:27

【1 OSの種類】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 限界 仕様

組合せ確率の combin(n,r)*p^r*(1-p)^(n-r) で
nが1000を越えるあたりでrの値によって 計算結果が表示されません。
時間はかかってもよいのですが、n:10000 r:5000 あたりまで限界を拡張する方法は無いでしょうか。
結果における一定範囲の和(n;5000固定で r0〜1000の和等)を知りたく思っております。
excelで不可能であるのなら、別な手法をご教示いただければ幸いです。

524 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 14:45:44
COMBIN(10000,5000)て10の3000乗(?)ほどになってそのままではExcelでは扱えないです
Excelで何とかするより計算桁数無制限をうたっているソフトを探したほうがいいとおもいます

525 :523:2011/02/06(日) 14:57:57
>>524
ありがとうございます。
すぐにはソフトを見つけられていませんが、何とか探してみようと思います。

526 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 15:03:47
VBAでプログラム組んで、結果を文字列で扱えば可能


527 :複乳:2011/02/06(日) 15:30:31
>>525
気軽に「こんなソフトありませんか?」 Part.134
http://hibari.2ch.net/test/read.cgi/software/1294756124/
でもどうぞ

528 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 15:39:39
つーか、宇宙物理学でも10^3000なんて使わないんじゃないか。

529 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 15:53:52
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 かんたんなら可

質問
M列に0から100の数字があって、N列にセルに60未満はA、60以上75未満はB、75以上77未満はC、77以上80未満はD
となる数式をお願いいたします。
『=IF(M6<75,B,"")』とするとBは満たしてくれますが、Aも満たすわけで、上記のように○○以下(未満)は分かるのですが、
○○以上○○未満を複数個満たす式はどうすれば良いのでしょうか。

別セルを何個使ってもかまいません。よろしくお願いいたします。



530 :複乳:2011/02/06(日) 16:01:28
>>529
=IF(M1<60,"A","")&IF(AND(M1>=60,M1<75),"B","")&IF(AND(M1>=75,M1<77),"C","")&IF(AND(M1>=77,M1<80),"D","")
80以上がないけどいいか

531 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 16:04:12
>>529
王道
=IF(M6<60,"A",IF(M6<75,"B",IF(M6<77,"C",IF(M6<80,"D",""))))

これで後の式は前の式を含んでる。
気に入らなったらAND関数でも調べてくれ。

532 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 16:07:07
突っ込みいれる前に書かれた。複乳さんって複数いるのか。

533 :529:2011/02/06(日) 16:07:50
>>530 さん
ありがとうございます!!!できました!!
まじ感謝です!!
80以上はいらないので完璧です!!


534 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 16:07:50
△後の式は前の式
○後の条件式は前の条件式

535 :529:2011/02/06(日) 16:09:00
>>531 さんもありがとうございます!
参考にさせていただきます!

536 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 16:17:35
実用性の乏しい別解
=HLOOKUP(M6,{0,60,75,77;"A","B","C","D"},2,TRUE)

537 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 16:30:36
>>529
そういうものは対応表を作ってLOOKUPが普通。

0   A
60  B
75  C
77  D
80  E

この範囲が対応表と名前定義されてれば
=LOOKUP(検索値,対応表)
VLOOKUPやINDEXとMATCHでもできるけどな。

表を作らなければ
=LOOKUP(検索値,{0,65,75,77,80;"A","B","C","D","E"})
=LOOKUP(検索値,{0,65,75,77,80},{"A","B","C","D","E"})
などでできるがVLOOKUPに関しては対応表を作らないと無理。

538 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 16:37:48
>>536は読まずに>>537を書いたが、HLOOKUPは表なしでもいけるとは知らんかったわ。
入力補助で引数が範囲と出るからできないかと思ったよ。

539 :531:2011/02/06(日) 16:40:35
>>537
一応突っ込んでおくけど
=VLOOKUP(M6,{0,"A";60,"B";75,"C";77,"D"},2)
でもできるからねーー

540 :529:2011/02/06(日) 16:45:57
みなさんありがとうございました。

いろんな方法があるんですね。
関数はほとんど使わないので難しいです。

勉強になりました。

541 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 16:46:11
>>539
なるほど出来るのか。
でもまぁLOOKUPが普通だな。

542 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 19:43:59
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 かんたんなら可
別スレより誘導されて来ました。

一行目に列タイトル、二行目以下A〜Fに数字が入っている表があります。
この票で「@A〜F内の数値の最小値」と「A最小値の列タイトル」をG/H列に表示したいです。

@についてはMIN(AX〜FX)(Xは行番号とする)で求められたのですが
Aの@で抽出された最小値の1行目(CXが最小値なら、C1を返したい)の求め方が判りません。

アドバイスいただけると嬉しいです。

543 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 19:57:54
各列の最下行にでも作業セルをつくって、@が自分の列にあれば1になるような式をいれる
Aのセルには、作業セルに1が入ってる列タイトルを表示させる

544 :542:2011/02/06(日) 20:09:40
>>543
早速ありがとうございます。
理屈は判るのですが、それを実現する式が見当もつかなくて・・・。

できれば式で教えていただけると助かります。

545 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 20:57:50
>>542
VBAでするのならMin関数にこだわらず、
普通に2重ループさせて、最小値を保存するときに
いっしょに列数も保存しておくようにすればいいだけです。


546 :複乳:2011/02/06(日) 21:18:14
>>542
アドバイスっていうからアドバイスになった。最初から式っていえばいいのに
=INDIRECT("r1c"&MATCH(MIN(A2:F2),A2:F2,0),0)
まぁこの答えは俺だけだろう。普通どうやるかは知らん。

547 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 22:01:22
>>542
普通は
=INDEX(A1:F1,MATCH(MIN(A2:F2),A2:F2,0))

でも最小値が2つ以上のセルにあるとうまくいかないので注意。

548 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 23:04:48
【1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

三点教えていただきたいのですが

1.セルに画像を貼った時左上はセルの左上に揃うのですが
  画像を伸ばして右下隅をセルの右下隅に合わせるにはどうしたらいいでしょうか?

2.同じブックの中の複数ページの余白サイズを一括で変換する方法

3.同じブックの中のフッター・ヘッダーを一括で変換する方法

明日から急きょエクセルを使う派遣に回され焦っています
何卒宜しくお願いいたします。。。

549 :複乳:2011/02/06(日) 23:22:45
>>548
1.alt押しながらドラッグ。
2.3.ctrl押しながらシート見出しを複数選択。その状態で変更。
シート見出しを複数選択した状態だと複数のシートを一気に変更できるけど、解除忘れると悲惨なことになるぞ
解除だけは忘れないようにな

550 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 23:46:52
【1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

#" pieces"みたいなユーザー定義の書式で#が1の時はpiecesではなくpieceを使う
ようにはできないでしょうか?
やはりpiecesの方は別セルにすべきですか?

551 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 23:53:46
[=1]#"piece";#"pieces" かな

552 :名無しさん@そうだ選挙にいこう:2011/02/06(日) 23:59:51
>>549
ありがとうございました。。。

553 :550:2011/02/07(月) 00:03:03
>>551
できました
ありがとうございます

554 :542:2011/02/07(月) 00:16:44
>>545
ありがとうございます。
今回は応用を余り考えていないので式を使いましたが、別途勉強する必要が出れば使ってみます。

>>546
わざわざお気遣いありがとうございます、聞き方が悪かったですね。
採用させていただきました。

>>547
こちらも動きました!ありがとうございます。
ただ、今回はコピペでOKという点から>>546さん案を採用しました。

555 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 00:34:11
何で悪い方を採用するのかねぇ。

556 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 09:16:59
>>532
Excelスレでは、回答に自信がない時、数式が間違ってるかもしれないけど検証する時が面倒な時は
「複乳」または「fuku」って書くのがルール
つまり書き逃げ用のハンドル

557 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 09:32:43
>>556
そんなルールねーよ

558 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 12:01:05
Excel2003には読み上げ機能があるので、これを利用して「英会話の数字の聞き取り」に特化した訓練マクロ(下記)をつくりました。

Sub Number()
Dim a As Long
a = Int(Rnd * (10000000)) + 1
Range("a1") = a
Range("a1").Speak
End Sub

しかし問題点があります。
(1) 日常でよく使う2けた〜4けたの数(10〜9999)の出現頻度はかなり頻繁にしたい。
(2) 4けたの数字は年代のように2けたごとに発声する方法(1456をfourteen fifty-sixと発話)になっているが、通常の方法(1456はone thousand four hundred and fifty-six)にしてほしい。
(3) 5けた以上の数字は日常では上1〜3けたの概算で使われることが多いので、そのような頻度にしたい。(2456231のような1の位までの細かい数字ではなく、2450000のような日常的な数字の頻度をかなりあげる)
(4) 上の(3)に関してだけど、たまには1の位まで細かい数字(2456231みたいな)も出題してほしい。ただしこれは出現頻度はかなり低くていい。

これら(1)-(4)を満たすマクロをどなたか作っていただけないでしょぅか?

559 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 12:47:32
>>558
ここは制作依頼所じゃない
作り方教えるから、自分で頑張れ

(1) 適当な範囲の乱数(0〜9など)を作り、7未満なら2〜4桁、8以上なら桁指定無しと条件分岐する
(2) 1000以上10000未満で条件分岐し、「and」までは文字出力する
(3) 10000以上で条件分岐し、桁数(Len)-3で四捨五入なり切り捨て切り上げなりをする
(4) (1)と同じ方法で頻度調整を行う

以上

560 :558:2011/02/07(月) 15:10:12
自力でここまでできたさ。
でも(2)が難しい。
だれか助けてくれませんか。

Sub Number()
Dim a As Long
Dim b As Integer
Dim c As Integer
a = Int(Rnd * (10 ^ Int(Rnd * 5 + 3))) + 1
b = Int(Log(a) / Log(10)) + 1
c = Int(Rnd * b) + 1
Range("a1") = Int(a / (10 ^ (c - 1))) * 10 ^ (c - 1)
Range("a1").Speak
End Sub


561 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 15:28:43
If文とFor文が心底嫌いなの?

562 :558:2011/02/07(月) 15:43:01
心底嫌いだ
嫌悪と憎しみを感じる

563 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 15:55:19
>>558
A1-A7に桁数を当てはめ(A7だけ二桁)12000000がでたら
A1 = 10000000
A2 = 2000000
Range("a1").Speak
Range("a2").Speak
とか。試してないからしらんけど。

564 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 16:28:09
桁数を決めるのにLOGを使った方がかっこいい、そう考えていた時期が俺にもありました

565 :558:2011/02/07(月) 16:38:51
>>563
Thaks, but it seems that's not what I'm looking for.

>>564
How else can we do it?

566 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 16:57:56
めんどくさいから日本語で答えて

567 :558:2011/02/07(月) 17:08:29
>>563 なんかちがうようなきがします
>>564 ほかに方法はあるんですか

568 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 17:08:41
>>558
VBAスレで質問した方がいいんじゃないでしょうか?

569 :558:2011/02/07(月) 17:15:34
そんなスレあるのでしょうか

570 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 17:16:37
Excel VBA 質問スレ Part17
http://hibari.2ch.net/test/read.cgi/tech/1289182437/

571 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 18:07:12
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2000
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 いいえ

複数のシートにある複数行列セルに入力されたデータを特定のシート内へコピーしたい
シート内で上から順にコピーされるように並べたいのですが、このような処理を一括することは可能でしょうか?

例) シート01, 02, 03のA10から下の行にデータが入っている
それらデータをシート00に、シート01, 02, 03の順に貼り付けていく

シート中身
 シート01
10  バス
11  ガス
 シート02
10  爆
 シート03
10  発
11  って
12  言えないですよねー

★期待する成果
 シート00
1  バス
2  ガス
3  爆
4  発
5  って
6  言えないですよねー

よろしくお願いいたします

572 :名無しさん@そうだ選挙にいこう:2011/02/07(月) 18:22:43
ルールがようわからんけど、「元シートインデックス」みたいな列を一列作って、
そこにsheet1なら1でsheet2なら2って入れといてコピーしてその列で並び替えれば済む話?

573 :複乳:2011/02/07(月) 18:44:36
>>571
ルールが曖昧すぎたがまーテキトーに作った
B1=INDIRECT("sheet"&INT((ROW()+9)/10)&"!r"&MOD((ROW()-1),10)+10&"c1",0)
シート1の10-20シート2の10-20って感じ。あとは値にして貼り付けで0を抽出して並び替えればok

574 :571:2011/02/07(月) 19:06:10
>>572
まさに>>573みたいなので解決できそうな気がします
ルールは分かりやすく書けず済みませんでした;ω;

sheetをINDIRECT使って呼びだす方法が最善のようですね
コピー元のシートから特定のシートへコピペして解決することばかり考えていて、
別sheetを特定のシートに「呼び出す」アイデアに至れませんでした…情けないorz

>>573を改変してちょっとがんばってみます
何はともあれありがとうございました!

575 :名無しさん@そうだ選挙にいこう:2011/02/08(火) 01:24:36
vlookup関数で、住所の一部分に検索値があった場合、ヤマトとでるよう作りたいのですが、
全てヒットしてヤマトででてしまいます。このような時どうすればよいのでしょうか?
サンプルをアップしましたのでお願い致します
ttp://www1.axfc.net/uploader/Sc/so/202803

576 :名無しさん@そうだ選挙にいこう:2011/02/08(火) 02:04:53
>>575
I列は都道県+市区町村だけどF列は町名+番地だから
わざわざ検索しなくても一つもヒットしないってわかると思うんだけど
何がやりたいの?

とりあえずエスパーしてみると、K1に入れる式は
=VLOOKUP("*"&I1&"*",$F$1:$G$58,2,FALSE)

577 :名無しさん@そうだ選挙にいこう:2011/02/08(火) 20:22:35
>>575
もいっぺんうp

578 :名無しさん@そうだ選挙にいこう:2011/02/08(火) 22:10:14
XP、EXCEL2007です。

競馬のソフトを作成しているのですが、
A列日付、B列馬名、C列種牡馬名、D列オッズ、E列位置取り、F列前走日付〜
などのデータがあり、そのデータを元に同じシートに計算しています。

種牡馬の計算が終わったので、名前を変更して保存をして
新しく出来たファイルを作り、次は調教師を計算したいから種牡馬名(列)を全て削除して
その上から調教師のデータを張り付けました。数式は種牡馬の時と同じ数式です。
そのようにしたら何故か、種牡馬で計算していた時より1.5倍ほど処理が遅くなりました。

一体、何故処理が遅くなったのですか?そして解決策はどのようにしたら良いでしょうか?

579 :名無しさん@そうだ選挙にいこう:2011/02/08(火) 22:23:39
そういう質問は原因となりうるものが多すぎて
ブックをうpしないと特定しようが無い

580 :名無しさん@そうだ選挙にいこう:2011/02/08(火) 22:24:32
>>578
webのデータをそのままコピー&ペーストすると不必要なものまで拾ってきて
重くなることがある。
テキスト形式でペーストすればよいのだが体裁が違ってくるのでそこを考慮しなけ
ればいけません。


581 :名無しさん@そうだ選挙にいこう:2011/02/08(火) 22:40:06
【1 OSの種類         .】 WindowsVista
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 Excel 参照元 セル 番地 返す

シートA、シートBを用意し、シートBに横2、縦nコのデータを配置します。
シートAに、VLOOKUP関数を用いてシートBのデータを抽出して表示しているとします。
ここで、現在抽出しているデータの1個上のセルのデータをシートAに表示したいのです。

AAの書き方が分からないので、ずれる可能性もあるのですが…

シートB
[A] [B]
[1] -9.2 2.5
[2] -4.3 6.2
[3] 0.1 7.8
[4] 5.5 6.9
[5] 11.3 1.9

シートA
アドレスA1に、0.8という値が書いてあり、その値をVLOOKUPに放り込んで、検索をかける。
VLOOKUP(A1,シートBのA1:B5,2,TRUE)として、7.8が表示されている。

ここで、7.8の1個上の行

[2] -4.3 6.2

これを、シートAに表示したいのです。
7.8と表示されたセルの参照元が分かれば、その1個上を検索する事は可能だと思われるのですが、
検索をかけても出てきません。
続きます。

582 :>>581:2011/02/08(火) 22:46:31
試した事です。

MATCH関数とINDEX関数を用いて、表示しようと試みました。
実際のシートでは、シートBのA1:B5に、「hoge」という名前がついており、シートAのI2に、「hoge」という文字列が表示されています。
また、シートAには、7.8の他に、VLOOKUP(A1,シートBのA1:B5,1,TRUE)として、0.1がB2に表示されています。
ここで、MATCH関数を用いて、hogeという検索範囲から、0.1を探し出し、そのアドレスの1個上のデータを表示しようと試みました。

=INDEX(INDIRECT(I2),MATCH(B2,INDIRECT(I2))-1,1)

しかし、エラーが出ており、MATCH(B2,INDIRECT(I2))の所で、データが無いといわれてしまいます。
何故なのかさっぱりわかりません…。

どなたか、良い方法が無いか、ご教示いただけませんでしょうか。

583 :複乳:2011/02/08(火) 22:52:21
>>581
=INDEX(Sheet2!B1:B5,MATCH(A1,Sheet2!B1:B5,0)-1,1)
=INDEX(Sheet2!A1:A5,MATCH(A1,Sheet2!B1:B5,0)-1,1)

584 :名無しさん@そうだ選挙にいこう:2011/02/08(火) 22:53:21
>>581
文章で読むだけよりも、実際のシートがあったほうが分かりやすいので、
ブックをうpしてください。

585 :複乳:2011/02/08(火) 22:56:07
>>582
MATCH関数は確か一列じゃないとダメなんじゃなかったかなー。それで多分エラーがデル
多分な。試してみて教えて。忘れた。


586 :>>581:2011/02/08(火) 23:08:14
>>584
すみません、とある施設のデータを解析しているため、データは公開不可能なのです…。

>>583
>>585
なるほど。

名前をつけた領域が、この場合だと5行2列ですが、これの1列目のみを検索範囲とすればいいって事ですね。

しかし…名前をつけている領域の数が、110個ほどあり、そのそれぞれを2分割にするのは非常に骨が折れますね…T-T
また、抽出したいデータが110個の範囲のドコにあるか?も別のパラメーターにより検索をかけている状況なので、
名前からしか引き出せないのが現状です…。

情報小出しになってますね…すみません。
使用しているシート数自体が18個程あるので…どうしてもうまくモデル化できませんでした。

587 :複乳:2011/02/08(火) 23:29:02
>>586
挿入→名前→定義
で編集が楽。vbaが楽だろうけど、やらないほうがいいだろうなぁ。
100個ぐらいなら終わらん量でもないし頑張れば

588 :584:2011/02/08(火) 23:54:40
>>586
うpしてほしい「実際のシート」というのは、オリジナルでなくても全く構いません。
>>581さんが作ったサンプルでいいんです。


589 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 03:20:03
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 複数のボタン 代入

http://www1.axfc.net/uploader/Sc/so/203161

のような表でボタンを押すと押したボタンの行にあるNoを上の表の空いてるところに
入れたいのですが、ボタンの個数分マクロを作らないで済む方法を教えてください。
VBA、ボタンを使わずとも下の表のNoセルをクリックするだけで上の表に代入出来る方法があったら
その方が嬉しいです。ハイパーリンクでどうにか出来ないかと考えたのですが・・・

よろしくお願いします。

590 :複乳:2011/02/09(水) 03:50:16
>>589
A2=1
など好きな番号
C2=VLOOKUP($A2,$A$7:$F$16,3,0)
ではだめですか

591 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 04:09:11
>>590
レス有難うございます。
Noが入ってからはVLOOKUP使う事になるのですが、Noを入れる過程が重要でして・・・
アップしたxlsは極限まで簡略化してありますが、上の表20枠(随時入れ替え)に
下の表にあたるリストが複数大量にあるので、どうしても1クリックで上に代入していきたいのです。

592 :複乳:2011/02/09(水) 04:50:12
>>591
ウィンドウ枠の固定か新しいウィンドウを開くじゃダメか

593 :複乳:2011/02/09(水) 04:52:53
あとVBAで作れなくもないけど簡略化してると結局つくり直すことになるから
本物のフォーマットがほしいんだよね。作り替えれるならいいんだけど

594 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 05:20:09
>>592
レス有難うございます。
テンプレしっかり読んだつもりだったのですが、知りたい部分以外を端折ってしまった為
後出しっぽくなってしまってごめんなさい。画面の下半分をリストに使う為枠固定します・・・
リストから選んだデータを上の表で比較する といった用途です。
Application.Callerを使ってどうにかできないかなと考えてました・・・

595 :VBA厨:2011/02/09(水) 05:47:20
>>589
ボタンの方が良ければ、疑似コントロール配列使ったり、
TopLeftCellでボタンの位置検出したりって方法もあるが
セルクリックの方が良いってなら、ボタン削除してB列も削除して
シートタブ右クリックして、「コードの表示」選択して↓を貼れ。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  Const 参照値の最上行 = 7
  Const 入力行の末尾行 = 4

  If Target.Column > 1 Then Exit Sub
  If Target.Row < 参照値の最上行 Then Exit Sub

  Target.Offset(, 1).Activate
  Cells(入力行の末尾行 + 1, 1).End(xlUp).Offset(1).Resize(, 5).Value = Target.Resize(, 5).Value
End Sub



No以外はVLOOKUPなどで参照するってなら
  Cells(入力行の末尾行 + 1, 1).End(xlUp).Offset(1).Resize(, 5).Value = Target.Resize(, 5).Value
   ↓
  Cells(入力行の末尾行 + 1, 1).End(xlUp).Offset(1).Value = Target.Value


596 :複乳:2011/02/09(水) 05:49:51
あれ、終わったのか。ねるか。

597 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 06:13:02
>>595
こんな夢のようなコードが・・・
どうもありがとうございます!!!

>>596
こんな時間にお付き合いいただきありがとうございました。
私の説明不足で煩わせてしまって申し訳ありませんでした。感謝していますm(_ _)m

598 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 15:52:43
あげ

599 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 16:02:16
るな

600 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 22:28:58
ExcelとWordが同時に立ち上がるバッチファイルを作りました。
つまり下の2行をメモ帳で書いてtest.batのファイル名で保存しました。
でも同時には開かないんです。
Excelxを閉じないとWordが開きません。
同時に起動させるにはどうしたらいいですか?

"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"
"C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE"



601 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 22:41:16
>>600
詳しくないけど、試してみたらこれで動いた
start "" "C:\Program Files\Microsoft Office\Office14\EXCEL.EXE"
start "" "C:\Program Files\Microsoft Office\Office14\WINWORD.EXE"

http://cmd-pro.com/m_start.html


602 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 22:52:24
>>601
Thank yoou.
じつはさっき自分も同じページを発見してた。

どなたか他に方法は?
これじゃ1か月後にやり方忘れてそう。

603 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 22:53:42
601の中の人はOffice14となってるけど
いつの間にそんなにバージョンアップしてるん。

11=2003
12=2007
13=2010
14=?

604 :複乳:2011/02/09(水) 23:06:53
何故か俺の中で>>602がデーブ・スペクターで再生される。やめてくれ。あんまり英語は使わないでくれ。笑いを堪えるのが苦しい。
>>602
batファイルの内容なんて覚えなくてもいいし検索したらすぐ出てくるからおぼえるひつようもない。
他の方法を探すならベクターで ランチャー でぐぐってみては。ランチャーは何?という質問には答えない。ぐぐってくれ

605 :名無しさん@そうだ選挙にいこう:2011/02/09(水) 23:22:32
>>604
Don't worry, Mr. the breasts. I know what launcher is.

606 :複乳:2011/02/09(水) 23:26:52
>>605
だからやめろとwそのうさんくささがなんかだめだw
>>603
カンだけどmac版も含めてるんじゃないかな。エクセル2006か2008ってなかったっけ

607 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 00:24:51
エクセル2003を使用しているのですがグラフのY軸のタイトル表示させたときに
文字が反転しているのを縦読みの表示にする方法を教えて欲しいです。どなたかよろしくお願いします

608 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 02:54:12
昔のBASICしか知らないのですが

文字列を足すとき
昔のBASICなら、A$="アナタハ"+STR$(B)+"ハ゛ンテ゛ス"となるところを
今のVBAなら、A="あなたは" & B & "番です"で良いのね

文字列と数値をごっちゃにして混乱しない?
混乱とはコンピュータもだけどプログラミングするほうも面食らう。

今のVBAでSTR(B)とすると数値は文字列になるけど数値の前に1文字空白があくので
A="あなたは" & RIGHT(STR(B),LEN(STR(B)-1) & "番です"としたほうがごっちゃにしないという意味でまだ頭がすっきりする

みなさんどうしてます?

609 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 03:23:20
× A="あなたは" & RIGHT(STR(B),LEN(STR(B)-1) & "番です"
○ A="あなたは" & CStr(B) & "番です"

文字列に直すのは[C]onvert[Str]ingでCStr関数。CStr関数は単純な文字列変換だが、
VBAのStr関数は数値を符号付き文字列に変換する関数で、
Str関数のスペースは正数、つまり「+」符号の意味があり、3は[ 3]だが-3は[ -3]ではなく[-3]なので
一文字削ると-3が[3]と正負逆転になってしまう。(何番目って話に限っては負数は無いだろうが)
仮にSrtでやるなら[L]eft[Trim]mingという左側のスペースを削る関数使ってLTrim(Str(B))だな。
これなら負数符号は消えない。

ただ、VBAには、自動型変換の仕様があり、その仕様をきちんと理解していて、なおかつ
VB系しか使わない、あるいは言語によって頭を切り換えられるなら
A="あなたは" & B & "番です"
でも混乱はしない。

俺は自動型変換のある言語、無い言語、そもそも型概念すら無い言語といろいろ使うが、VBAでは
A="あなたは" & B & "番です"
で気にならないよ。

610 :複乳:2011/02/10(木) 04:00:50
>>608
型推論さえ理解すればどうにでもなる
stringなaにa+1とすれば数値として計算してくれるし、
integerなaにa&""とすれば文字列になる
仕様ね
VB→C→VBだとこの仕様がいかに楽なことか・・

611 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 05:40:21
レスくれた方ありがとうございます。

>>579 >原因となりうるものが多すぎる。

そうでしたか。コピーしたら同じものが出来て、動作も同じものだと勝手に思い込んでいました。

>>580 コピペではなくTargetという競馬ソフトからExcelに落としてます。

612 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 08:38:33
>>611
> コピペではなくTargetという競馬ソフトからExcelに落としてます。

そういう場合はそのソフトを作った会社もしくは作った人に聞くのが定石

613 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 12:35:28
>>608
Str関数で1文字空くのは符号の領域が確保してあるからだよ
マイナスの数なら空かない
これは昔のBASICからずっと変わってない

無条件に Right(Str(B), Len(Str(B)-1) なんてやると符号が消えてみんなプラスの数値になってしまう
厳密にやるなら先頭の一文字を切り取る前にマイナスかどうか判定しなきゃいけない

614 :482:2011/02/10(木) 12:41:25
すみません、>>482ですが、もう少し教えてもらえますでしょうか。

>>482ではアクティブセルを基準にしていましたが、
複数選択したセルの場合はどのような記述になるのでしょうか。

セルの選択状態が、
3行目〜8行目、10行目、27行目というように、とびとびの行で選択しています。

操作する人により選択する列は異なります。
(作業のスピード重視の為、特定の列を選択しなければいけない状態は避けたいです)

このような状態で選択したセルがある複数の行を、482と同じようにA:Nで一気に選択、コピーしたいです。

すみませんが、よろしくお願い致します。

615 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 12:50:15
すみません、追記です。

選択した複数行は最終的に、
別シートのセルA1に貼り付けます。

その際は、行を詰めた状態で、連続した行として貼り付ける必要があります。

もしコピーの段階で、上記条件が影響するのならと思いましたので追記致します。

貼り付けに関しては、まだ調べきれていないので、どの方法で行うかは未定です。

すみませんがよろしくお願い致します。

616 :VBA厨:2011/02/10(木) 12:54:44
>>614-615
Application.Intersect(Selection.EntireRow, Columns("A:N")).Copy

でいいかな?

617 :482:2011/02/10(木) 16:22:39
>>616
ありがとうございます、まさにイメージ通りになりました!

618 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 16:24:47
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 送料 エクセル 複数条件

サイズ、重量、県名をそれぞれA2,B2,C2セルに入れると送料がD2セルに出る
というようなものを作りたいです

例)
  A    B     C    D
1
2 60 0〜2kgまで 北海道 600円

重さが2kgまで、5kgまで、10kg増、の区切りでそれぞれ値段が違います
サイズは60、80、100
毎日行が増えます(売上表みたいなものなので)

MATCHでできそうかなとも思ったけど調べてもやりたいことと
違うものしか見つからなかったので…
お手数ですがよろしくお願いします


619 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 16:57:31
条件が曖昧すぎてどうしたものか

大抵、サイズと重量両方に左右される場合は
 「60cmサイズ以下 かつ 2kg以下」で600円
 「80cmサイズ以下 かつ 5kg以下」で800円
 「100cmサイズ以下 かつ 10kg以下」で1000円
って具合にサイズと重量セットの条件で区分が変わるものと思うけど違うの?

これなら単純に2条件の検索だから
 =INDEX(対応表,MATCH,MATCH)
でいけるでしょ

サイズと重量を別々に入力したい場合は、サイズに対する区分、重量に対する区分を

サイズ 区分
  60   1
  80   2
 120   3

 重量   区分
2kg以下   1
5kg以下   2
10kg以下   3

みたいな表からVLOOKUPで拾って、MAXで大きい方を出し、それを条件に
先ほどのINDEX式に当てはめれば良いだけだし

620 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 16:58:38
>>612 そうしてみます。サンクスです。

621 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 19:15:54
>>618
4要素1次元のテーブルをつくる。

key         金額
60_2kg_北海道  1,000
60_2kg_東北   1,200

てな感じで。keyは3つの要素を3列に入力してから&で結合すると管理しやすい。

622 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 19:17:05
↑こうしてつくったテーブルをVLOOKUP()で検索するってことね

623 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 21:51:16
>>578 ですが、Targetという競馬ソフトからCSVでExcelに落としているので
Target側に問い合わせたのですが、以下の返答でした。
>種牡馬と調教師では、データ内の元になる数が違うからだと思います。

種牡馬は例えばサンデーサイレンスなどで、調教師は殆どが日本人の名前、姓名です。
種牡馬のカタカナと調教師の漢字3〜5字では、そんなに違いが出て来るものですか?

624 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 22:16:22
excelで作ったグラフってビットマップに
できる?できない?


625 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 22:19:43
もう来なくていいよ

626 :複乳:2011/02/10(木) 22:37:19
>>623
>>579>>625

>>624
単体で保存は無理だな
コピーしてペイントに貼り付けるしか

627 :608:2011/02/10(木) 23:19:47
>>609 >>610 >>613
レスありがとうございます。よくわかりました。
Trim関数って便利ですね。

しかし「VBAには、自動型変換の仕様があり、その仕様をきちんと理解していて」って
理解するのが大変でしょうね。
VBの本をみても軽く触れてるだけでそれについてしっかり5ページ以上割いて書いてる本がない、という感じで。

とにかく自分ではその自動型変換が使いづらいので、旧来どおり「A="あなたは" & CStr(B) & "番です"」式で行きます。
そうじゃなきゃわけわからんようになりそうで気持ち悪い。

例えば
>stringなaにa+1とすれば数値として計算してくれるし、
>integerなaにa&""とすれば文字列になる
ということなら
aが文字なのにa+1にしたらどうなるかとか、
aが数値でa & "2"としたらどうなるかとか、
いちいち検証しなきゃならないしそれは手間になるし。

628 :名無しさん@そうだ選挙にいこう:2011/02/10(木) 23:59:14
>>627
個人的なこだわりが多いほど、他人にとっては読みづらいコードになるのだから、
そんなところにこだわるべきではないと思う。周囲に合わせるところ。

アルゴリズムとかにこだわるのなら分かるけど。

629 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 00:05:04
>aが文字なのにa+1にしたらどうなるかとか、
>aが数値でa & "2"としたらどうなるかとか、

それは="あなたは" & CStr(B) & "番です"の方法でも同じだよ。エラーになる。
型キャストを理解してれば、かんたんに書ける方がラク

630 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 00:11:25
型キャストを理解したいんです。
それを詳しく解説したサイトか本はございますか?

631 :複乳:2011/02/11(金) 00:21:35
>>630
ttp://www.google.co.jp/

632 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 00:31:58
>>631
あなたは本物ですか?

633 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 00:47:26
>>626 アスペルガーさん、ありがとうございました。

634 :複乳:2011/02/11(金) 00:49:18
>>632
全員本物です

635 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 00:49:46
>>629
後者はエラーにならん。人に教える時はできるだけ嘘を書かないように。教えられる側が混乱するから。

Sub x()
  Dim a As Integer
  Dim i As Integer
  a = 1
  i = a & "1"
  Debug.Print i
End Sub

この例では&演算子が出てきたところでaの内容は自動的に文字列に変換され、
iに代入するところで再び自動的に数値に変換される

>>627
文字列と数値が自動的に変換される言語はVBだけじゃない
現役で広く使われている物の中にも多数あるから、もっと色々な言語を勉強するといい

636 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 07:25:39
>>627
> とにかく自分ではその自動型変換が使いづらいので、旧来どおり「A=\\\"あなたは\\\" & CStr(B) & \\\"番です\\\"」式で行きます。
> そうじゃなきゃわけわからんようになりそうで気持ち悪い。

あなたが正しい

>
> 例えば
> >stringなaにa+1とすれば数値として計算してくれるし、
> >integerなaにa&\\\"\\\"とすれば文字列になる
> ということなら
> aが文字なのにa+1にしたらどうなるかとか、
> aが数値でa & \\\"2\\\"としたらどうなるかとか、
> いちいち検証しなきゃならないしそれは手間になるし。

自動型変換に依存するコードは出来れば書かないでほしい
デフォルトパラメータもきちんと明記したほうがバグの少ないコードが書ける、と思う

637 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 10:08:55
>>635
aが”デカワンコ”だったら a+1 を演算するとエラーになるだろ
それは型キャストだろうと="あなたは" & CStr(A) & "番です"でも同じってことだよ

638 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 10:55:38
>>637
635じゃないが、俺もお前のいうこと意味がわからん。
"あなたは" & CStr(B) & "番です"はエラーにならんぞ?

639 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 11:02:56
つーか、
Dim a As Integer
という前提に置いて、
「aが”デカワンコ”だったら」という話がそもそもおかしいw

640 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 11:17:46
>>629の意味が理解できたエスパーっている?



641 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 11:33:39
>>638
なるほど。勘違いしてた。型宣言してるんなら"デカワンコ"は代入できない。
なら、エラーにはならないんだから、ラクな型キャストつかえばいいんであって
わざわざCStr(A)みたいな変換をかます必要はない、といいたかった。


642 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 21:54:50
ピボットテーブルの値欄に文字列を表示させるのは無理ですか
数値を合計したり平均したりするんじゃなくて、文字列をそのまま表示させたいんですが

やりたいのはカレンダーで、横軸に曜日、縦軸に日にちがあって、その交点に予定を
表示するみたいな感じです。

643 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 22:36:00
>642
「横軸に曜日」ならば日付も横に並べるしかないだろう

644 :名無しさん@そうだ選挙にいこう:2011/02/11(金) 23:16:25
あー、「縦軸に週番号、交点に日にちと予定」
に訂正します

645 :名無しさん@そうだ選挙にいこう:2011/02/12(土) 00:41:07
>>642
自分の知る限りEXCELのピボットではできないな。わざわざそのためだけにVBA書いたことがある
ACCESSのクロス集計だとできるんだけどな。割とありがちなニーズだと思うんだけどね

646 :名無しさん@そうだ選挙にいこう:2011/02/12(土) 20:52:53
あげ

647 :名無しさん@そうだ選挙にいこう:2011/02/12(土) 21:12:38
るのは良いことだ

分からんのがsageるやつ
いったい何がしたいんだ

個人の趣味らともかく、他人もsageることを強要したり
それにさからうとキレるやつ

648 :名無しさん@そうだ選挙にいこう:2011/02/12(土) 22:30:37
sageることを強要してる奴が居るわけでもないスレで
いきなりそんなこと言い出してる奴の方が、余程

> いったい何がしたいんだ

って感じだがw

649 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 01:38:20
コピペに

650 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 08:20:57
対してコピペで返す

651 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 09:57:47
これぞ人呼んで「コピペ返し」 (ただしみんなageろよ!)

652 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 10:26:44
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 否

@小数があれば小数点以下6桁まで表示、正数は小数点表示無し
A桁数の違う数値の1の位を縦に揃える

これを MS Pゴシック フォントで行う方法を教えてください。
以下のような例の場合、5と0を縦にピッタリ揃えたいです。

12345.6
  345
    5.678
    5
    0.67
    0

653 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 10:38:58
0.?????? と 0_._0_0_0_0_0_0 を使い分ける

654 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 11:58:10
>>652
数値の入ったセルをすべて選択し右クリックし小数点以下の表示をお望みの6ケタ
にすれば小数点以下ゼロが表示される以外は希望通りだ。

655 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 12:12:52
>>653
>>654

ageろよ
sageる意味は?

656 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 12:15:14
メール欄にわざわざマウスポインタを持っていって「s」「a」「g」「e」とキーボードから入力するという非常に面倒な労力をおしまず
さらに全く対価として自分有利に働くことがないのに、どうしてみんなsageることをしてるのかが不思議で不思議でしょうがない

657 :複乳:2011/02/13(日) 12:23:42
>>655>>656
他の雑談スレだと昔からの風習でsageが推奨されていることが多く、
ageで書くと新入り扱い・空気の読めない子としてハブられる
「今時sageで書く意味なんかねーだろ」というのが空気の読めない書き込みの典型

質問スレの場合はこの限りではないし、質問者はスレが目立つようにageた方が良い
私の場合は履歴に残ってなかったらageるし残ってたらsageる、というか見てない
履歴で残ってるだけだから逆に消すほうが手間

658 :複乳:2011/02/13(日) 12:27:28
>>652
A1に入力されているとして
B1=INT(A1)
C1=RIGHT(ROUNDDOWN(A1-B1,6),LEN(ROUNDDOWN(A1-B1,6))-1)
とセルを分けるのが早いと思う
一つのセルでやる方法は昔見たような気もするが、忘れた

659 :652:2011/02/13(日) 12:29:42
>>653
回答ありがとうございます。

残念ながら入力者が不特定のため、表示形式の使い分け(数値を
入力する度に表示形式を修正して貰う)は出来ません。


>>654
回答ありがとうございます。

恐れながら、0を表示したくないからこそ、0を表示しない例を挙げて
質問している次第です。また、0だけでなく正数にも小数点が表示
されるため、@の条件も満たしておりません。


VBAが使える環境なら、VBAで桁数判定して使い分けを自動化出来るのですが
先に書いた通りそれも出来ないので、引き続き回答お願いします。

660 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 12:43:17
>>652
=IF(ISERROR(SEARCH(".",A1)),A7&REPT(" ",7),A1&REPT(" ",6-(LEN(A1)-SEARCH(".",A1))))



661 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 21:43:50
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

出納張を作成しているのですが
数値が入っていない場合は何も出力せずに、数値が入っている場合のみ値を出す式がうまくいきません

A3に借方
B3に貸方
を入力したとして

残高を
=IF(AND(A3="",B3=""),"",A3-B3)
この場合はうまくいくのですが

A1に単価、A2に数量を入力し、A3に
=IF(OR(A1="",A2=""),"",A1*A2)

Bも同様な式を組むと

借方、貸方どちらか一方のみ入力すると#VALUE!と出力されてしまいます
式により出力された空白はどのように書けばいいのでしょうか?

662 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 21:46:58
sum(a3-b3)
にすれば大丈夫じゃね?

663 :661:2011/02/13(日) 21:58:11
>>662
回答ありがとうございます。

=IF(AND(A3="",B3=""),"",sum(a3-b3) )
ということですか?
エラーがでてしまいます


=IF(OR(A1="",A2=""),"",A1*A2)
真値の""が
=IF(AND(A3="",B3=""),"",A3-B3)
条件式の""としてみてくれないようです

664 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 22:07:51
そんなことはないよ。

A3=IF(OR(A1="",A2=""),"",A1*A2)
B3=IF(OR(B1="",B2=""),"",B1*B2)
C3=IF(AND(A3="",B3=""),"",A3*B3)

という式があって、A3、A3の両方がNullだったらC3にはちゃんと""が返る。
エラーになるのはA3、B3のどちらかに数値が入ってるからだよ。
それがいやなら

C3=IF(OR(A3="",B3=""),"",A3*B3)

にしないといけない。

665 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 22:08:42
誤 という式があって、A3、A3の両方がNullだったらC3にはちゃんと""が返る。
正 という式があって、A3、B3の両方がNullだったらC3にはちゃんと""が返る。

666 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 22:09:39
>>663
ああ、失礼。ブランクにマイナスをつけるから#valueになるわけ

だから、ちょっと見にくいけど

=IF(AND(A3="",B3=""),"",IF(B3="",A3,SUM(A3,-B3)))

みたいな感じにしないとダメかと

667 :名無しさん@そうだ選挙にいこう:2011/02/13(日) 22:24:44
>>652
スマートじゃないが。

=REPLACE(A1,LEN(A1)+1,,IF(LEN(A1)-LEN(INT(A1))=2," ",IF(LEN(A1)-LEN(INT(A1))=3," ",IF(LEN(A1)-LEN(INT(A1))=4," ",IF(LEN(A1)-LEN(INT(A1))=5," ",IF(LEN(A1)-LEN(INT(A1))=6," "," "))))))

※セルの書式設定を右揃えに。

668 :661:2011/02/13(日) 23:06:07
>>664
回答ありがとうございます
借方、貸方どちらか一方には値が入った状態でエラーがはかない式を探しています

>>666
回答ありがとうございます
どちらか一方の入力でも値がでるようになりました

残高なのでCは一つ上のセルの値も足すようにする場合

A3に借方
B3に貸方
C2に繰越ししたい残高
C3に残高

=IF(AND(A3="",B3=""),"",IF(B3="",IF(B3="",C2+A3,C2+A3-B3),IF(A3="",C2-B3,C2+A3-B3)))

これでできたのですが、後ろの方をもう少し綺麗にできませんか?
重複した記述があって無駄な気がするので・・・


669 :複乳:2011/02/14(月) 00:01:28
>>668
残高ありで貸借両方0だと値なしでいいのか?
=IF(and(A3="",B3=""),"",C2+sum(a3)-sum(b3))
残高ありで貸借両方0だと残高
=C2+IF(and(A3="",B3=""),"",sum(a3)-sum(b3))

670 :667:2011/02/14(月) 01:10:58

コピペしたら数式内の" "←スペースの数が減ってしまったようです。
各 7,6,5,4,3,10個スペース入れると機能します。


671 :名無しさん@そうだ選挙にいこう:2011/02/14(月) 19:18:23
ショートカット キーの一覧はどこで確認できますか?

672 :名無しさん@そうだ選挙にいこう:2011/02/14(月) 19:47:52
>>671
http://office.microsoft.com/client/helppreview14.aspx?AssetId=HP010342494&lcid=1041&NS=EXCEL&Version=14&tl=2&pid=CH010368996&CTT=4

673 :名無しさん@そうだ選挙にいこう:2011/02/14(月) 19:48:16
>>671
ヘルプ

674 :名無しさん@そうだ選挙にいこう:2011/02/14(月) 20:02:24
>>672,673
ありがとうございます

675 :名無しさん@そうだ選挙にいこう:2011/02/14(月) 21:48:23
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 HYPERLINK エクセル VLOOKUP

   A      B      C      D      E     F
1 氏名   履歴書  資格証  顔写真  
2 鈴木   ○     ○     ○
3 田中   ○     ○      なし
4 大橋   ○      なし    ○
5 木村   ○      なし    ○
6 笹木   ○     ○     ○

以上のようなシートを作成して、C2の○をクリックするとPDFに
加工した鈴木さんの資格証にジャンプするようにしたいです。

それぞれ履歴書、資格証、顔写真という別フォルダの中に
鈴木、田中、大橋・・という名称でPDFが保管されているイメージです。

Ctrl + kで、地道にリンクを貼っていたのですが、データが膨大で辛く
なりました・・
名案ありましたらご指導お願いします
パソコン初心者です。よろしくお願いします

676 :名無しさん@そうだ選挙にいこう:2011/02/14(月) 22:14:21
  ┬──┬──┬
  │ C │ D │
  ┼──┴──┼
1. │ 資格証  │
  ┼──┬──┼
2. │ ○ │    │
  ┼──┼──┼

みたいにして、D2に
=IF(B2="○",HYPERLINK("C:\〜\資格証\"&$A2&".pdf","PDF"),"")
という式を入れてフィルコピーする

または、
   A       B      C       D       E     F      G
1 氏名   履歴書  資格証  顔写真  履歴書  資格証  顔写真
2 鈴木   ○     ○     ○

として、E1に
=IF(B2="○",HYPERLINK("C:\〜\資格証\"&$A2&".pdf","○"),"")
と入れてフィルコピーし、B〜D列を非表示にする

VBAがOKなら、「○・なし」セルを直接リンク的に使えるんだが
数式でやる場合は、入力セルと数式セルは別々にせざるをえないからね


677 :名無しさん@そうだ選挙にいこう:2011/02/14(月) 23:51:43
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2002・2000
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 VLOOKUP LOOKUP INDEX MATCH

質問内容
別シートにある情報を、指定した数字(可変)で引っ張ってくるにはどうしたらいいでしょうか?

どのように書けばよいかわからなかったので、ファイルをアップしました。

本物のシートをアップする事はできないので、関数などを全て取り払った文字・数字のみの
サンプルファイルになっています。

よろしくお願いします。

http://www1.axfc.net/uploader/Sc/so/205213.xls

678 :名無しさん@そうだ選挙にいこう:2011/02/15(火) 00:15:11
>>677
とりあえず全ての表を同じシートに置いて式を組んでみな。
で、組み終わったら表をCtrl+Xで切り取って、別シートに貼れば
数式も別シートを参照するように自動で書き変わる。
式自体はINDEXとMATCHだけの至極初歩的な物で事足りる。
特売期間表現の対応も、これを入れ子にするだけで解決する。

あと、サンプル内でも「引っ張る、引っ張る」書いてるが、「引っ張る」
っていう自分用語は使わない方がいい。Excelでは「参照」ね。
他者に伝わりにくいし、検索してもまともにヒットしないから。

679 :複乳:2011/02/15(火) 02:00:25
>>677
F3=IF(INDEX(商品一覧!$E$2:$E$6,MATCH(B3,商品一覧!$B$2:$B$6,0))=0,"特売期間無し",INDEX(特売期間一覧!$C$3:$C$5,(MATCH(INDEX(商品一覧!$E$2:$E$6,MATCH(B3,商品一覧!$B$2:$B$6,0)),特売期間一覧!$B$3:$B$5,0))))
エラーが帰ってきたらデータベース2の特売期間がおかしい。と思う。

680 :677:2011/02/15(火) 11:18:11
>>678さん
一つのシートで纏めて作って、後でC&Pしたらいいというのは思いつかなかったです。
試してみます。ありがとうございます。
確かに引っ張るって言い方は駄目でした。
参照など正しい言葉を使うよう気をつけます。

>>679さん
式ありがとうございます。
今は出先なので、帰ったら早速試してみます。

681 :名無しさん@そうだ選挙にいこう:2011/02/15(火) 19:49:01
【1 OSの種類         .】 Windows**
【2 Excelのバージョン   】 Excel2002
【3 VBAが使えるか    .】 自動記録を 少し弄る程度です
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 OFFSET 保存
Workbooks.Open Filename:="C:\Documents and Settings\USR04\デスクトップ\***\元.xls"
Sheets("新しい").Select
Columns("A:AR").Select
Selection.Copy
Windows("加工.xls").Activate
Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Windows("元.xls").Activate
ActiveWindow.Close
上記マクロを使ってたのですが、元.xlsに OFFSET関数を使い始めたところ
更新を一切しなくても、ファイルを開いて閉じるだけでも「保存しますか?」が
出るようになってしまい
ActiveWindow.Close
では、閉じれなくなってしまいました。
「保存しますか?」の選択肢で「いいえ」を選んで閉じたい時は
どの様に書式を書けば良いのでしょうか?
よろしくおねがします。

682 :名無しさん@そうだ選挙にいこう:2011/02/15(火) 20:37:25
>>681
ActiveWindow.Close SaveChanges:=false

で大丈夫だよん。
http://www.happy2-island.com/excelsmile/smile03/capter00305.shtml
コードをあんまり分からない、と言っている割にちゃんと書けているとは思うけど、
もうちょっと効率化できるから、↑みたいなサイトを見て勉強するといいかも。

683 :681:2011/02/15(火) 20:49:21
>>682
今日は退社しちゃったので、明日にでも直に書き換えてみます。
まだまだ関数もマクロも勉強中で、参考にしてる本やサイトの書式を
コピーして少し改変してるだけの状態ですので、紹介して頂いたサイトも
じっくり今から参考にさせて頂きます。
本当にありがとうございました。

684 :675:2011/02/15(火) 20:52:18
>>676
ありがとうございます!
おかげで作業がスムーズにできるようになりました!

685 :名無しさん@そうだ選挙にいこう:2011/02/16(水) 05:26:53
エクセル2010を使用。

数十からなるリスト表があり
お金に変動があった時に、変動した数だけチェック数が増えるっていう
風にしたいんですが、どうやったら出来ますか?

例えば
A社 0
B社 0
C社 3,000
D社 0
E社 5,000
とした時、金額に変動があったのは
C社とE社の2つだけなので、別の項目に2と表示するといったような。

686 :名無しさん@そうだ選挙にいこう:2011/02/16(水) 05:36:13
COUNT,COUNTIF

687 :名無しさん@そうだ選挙にいこう:2011/02/16(水) 12:21:26
>>686
thx

688 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 12:21:49
XP、エクセル2007です

セルA1に1〜5までの数値が入力されるとします
セルA1に1が入力されていればセルC1にセルB1の値が
セルA1に2が入力されていればセルC1にセルB2の値が
セルA1に3が入力されていればセルC1にセルB3の値が
  :
という処理を行いたいのですが、良い数式はないでしょうか?
C1=B(A1)
みたいなイメージなのですがうまくいきませんでした

689 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 12:42:00
>>688
INDIRECT

690 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 12:42:51
>>688
INDIRECT関数かOFFSET関数でどうぞ
IF関数やCHOOSE関数でもできなくはない

691 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 12:46:02
あ、INDEXでもいいか

692 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 13:11:05
INDIRECTで出来ました
ありがとうございます

693 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 13:27:28
また悪い方法を採用したなw
正解は=IINDEX(A1,B1:B5)I

694 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 13:29:26
Iが2個余計についてたぜ
=INDEX(A1,B1:B5)

695 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 13:48:12
>>694の方がシンプルですが
INDIRECTの方がデータ(B列)の追加に柔軟に対応できそうなので
INDIRECTでいきます
ありがとうございます

696 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 14:05:45
今手元にEXCEL2007英語版があって、それを使ってるんだけど、日本語版EXCEL2007をもらえることになったんだ。
これって、同じパソコンに入れて一緒に使える?
ただでもらえるから使えるならインストールしたいんだ

697 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 14:25:01
>>694
引数の順序が逆だよ。
しかしまぁ初心者にはINDIRECTがすきだよなぁ。
分かってくると使わないんだけどね。
OFFSETもこういう用途ではINDIRECT同様使っちゃいかん。

698 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 15:21:12
693涙目

699 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 15:27:58
以前バッチファイルの質問をした人だけど
バッチファイルでもプログラミング的なこと (for文とかif文) ができるなら
いままでVBAでやってた比較的単純なことはバッチファイルで済ませれなくない?

VBAだとわざわざExcel立ち上げないといけないし、
そもそもExcelが入ってないPCでもできるし。

700 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 15:32:32
>>699
もちろん可能
処理内容によってはVBAより簡単にできる場合もある

こちらへどうぞ↓

VBSで便利なプログラムを作れスレ
http://hibari.2ch.net/test/read.cgi/tech/1170492587/

701 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 18:46:11
このようなデータがあった場合、
グラフで時間軸の間隔が正しいようにしたいのですがどうしたらよいでしょうか?

日付時間       値1 値2 値3
2011/1/1 12:00:00 100 300 400
2011/1/2 18:00:00 150 400 550
・・・・

702 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 18:58:58
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

申し訳ありませんが、どなたか教えて下さい。

EXCELで、例えばセルに

「=SUM(C4:C200)」

と入れると、セルC4〜C200までをサマリーしますが、
このセルの「4」「200」という行の数字を、変数にしたいのです。

スタート 12
エンド  25

という風に、どこかのセルにスタートとエンドの行の数字を手入力すれば、
自動的に「C12」から「C25」までを選び出してサマリーするようにしたいのです。

こういった変数指定はEXCELで出来るのでしょうか?
仮に、スタートとエンドの数字を「E4」「E5」に書いた場合、
「=SUM(C4:C200)」はどのように変更すればよろしいのでしょうか?

初心者なものですみませんが、どうかよろしくお願いいたします。



703 :複乳:2011/02/17(木) 19:11:03
>>701
×グラフで時間軸の間隔が正しい
○グラフで時間軸の間隔を好きなようにしたい
右クリックして、色々試してみてください
>>702
サマリーって何だろう。最近の若者は難しい言葉を使うね。まぁ、参照と受け取るかな
A2A3にそれぞれ4,200といれてる場合
A1=SUM(INDIRECT("C"&A2&":C"&A3&""))


704 :702:2011/02/17(木) 19:17:27
>>703
複乳さん、ありがとうございます!!
さっそく試してみたら、無事に出来ました。
本当に助かりました。ありがとうございました!!!<(_ _)>

705 :複乳:2011/02/17(木) 19:22:49
>>701
もう少し詳しく解説するか
http://www.dotup.org/uploda/www.dotup.org1354307.jpg.html
で、時間のとこを右クリックで書式せってい
目盛間隔をテキトーに変える。一日が1.0。6時間が0.25。見本では0.5にしてる。
で、ok。
>>704
やったね>>704ちゃん!仕事が減るよ!!

706 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 19:32:35
とあるセルを参照させてそこに特定の文字が含まれていた場合、
それに応じた任意の文字列を返させるにはどうすればいいでしょうか?
例えば参照させるセルの文字列に「a」が含まれていれば「リンゴ」と返し、
「b」が含まれていれば「メロン」と返す、という具合にです
その参照させるセルの文字列は例えば「abcd」であったり「dac」であったり「b」であったりと、
文字数や文字列はバラバラですが、同じ文字は1つまでしか含まれていません
VBAは使えません
ご指南よろしくお願いします

707 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 19:38:58
>>703
折れ線グラフといわなかったから誤解を招いたようですが
そういう意味ではなくて>>701をもっと言うと
2011/1/1 12:00:00
2011/1/2 18:00:00
2011/1/5 19:00:00
のように間隔が等しくない日付時刻のデータを横軸にして
正しい折れ線グラフを書きたいのす。
何もしなかったら横軸の感覚が均等になっていました。

708 :複乳:2011/02/17(木) 20:23:40
実に酒がうまい。

>>706
実際のシート次第だけど、大体こーんなかんじかねー
http://www.dotup.org/uploda/www.dotup.org1354475.jpg
B3=IF(ISERROR(FIND(B$1,A3)),A3,SUBSTITUTE(A3,B$1,B$2))
B4=IF(ISERROR(FIND(B$1,A4)),A4,SUBSTITUTE(A4,B$1,B$2))
後は敵とーにおーとふいる

>>707
なんか書式設定に間隔ってなかったっけ。

じゃなきゃ横に
2011/1/1 12:00:00 1
2011/1/2 18:00:00 2
2011/1/5 19:00:00 3
とかやってそれで横軸に表示させればいいん゛じゃないかな


709 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 20:25:56
>>706
=IF(ISERROR(SEARCH("a","abc")),"","リンゴ")

あとは参照に書き換えるなり、複数の結果を返すために&で連結するなりお好きなように

710 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 20:55:37
日時         売上     仕入
2011/01/01     10000    5000
2011/01/02     20000    10000
2011/01/03     15000    20000
2011/01/04     25000    5000
2011/01/05     20000    10000

例えば、上みたいな表があります。
SQLで書くと以下のようなことがしたいのですが、
エクセルの関数でうまく書くことはできないでしょうか?

select max(売上) from table where 日時>=2011/01/02 and 日時<=2011/01/04;

特に、日時の指定部分が可変になっても対応できるような関数が作りたいです。


711 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 21:14:24
>>710
条件を一つ一つクリアさせていけばいいだけじゃん

無知で頭も悪いのに、カッコ付けていきなり一つの式で解決しようとするから混乱する

作業セル使って一つずつ解決していく式を作り、結果が出てから
式を繋げるなり、配列数式にするなり、作業セルを非表示にするなりとカッコを整えればいいでしょ

712 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 21:31:35
>>710
作りたいのは数式じゃなくて関数?

713 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 21:37:36
>>712
すみません、ちょっと誤解を招く言い方でした…
特にVBAとかを使って、>>710のような処理をするfunctionを作りたいわけではないです。
数式のほうですね
>>711さんが仰るような作業セルを使用して、みたいなのでも全然いいです。
とにかく、日時指定が可変であったときに、MAXの集計範囲を変えるようにするやり方がわからないです…

714 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 21:58:38
日時指定の可変に対応させたければ、そこを埋め込みではなく参照にすれば良いだけだろ
で、こんな簡単な問題のいったい何が解らないんだ?

とにかく、可変に出来ないだけなら、可変じゃない式でいいから自分で書いたのをここに貼ってみろ
やりたいことはSQLの構文見れば解るが、>>2・8に有るとおり、自分で出来るところまではやって
それをきちんと示すのがここのルールだからな

715 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 22:10:00
>>710
配列数式
http://pc.nikkeibp.co.jp/pc21/special/hr/hr3.shtml

716 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 22:17:56
>>714
すみません…
自分では埋め込みしか思いつかなかったので、ここで質問させて頂いた次第です…

>>715
おお!
ありがとうございます!参考にしてみます
配列数式というのがあったのですね…
IFだけで対象の範囲も取ってこれるのは初めて知りました

717 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 22:22:42
質問の次レスにも出てきてるが>配列数式

718 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 22:28:07
>>717
相手してもらえないからってすねるなよキモヲタw

719 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 22:31:23
どうしたの、この子?

720 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 23:11:55
アスペは自分が知ってる事は相手も全て知ってると思うから仕方ない
それなのに教えたがるとか本当に病院行った方がいいレベル

721 :名無しさん@そうだ選挙にいこう:2011/02/17(木) 23:50:29
日本はテレビ局が国に支払う電波利用料が不当に安く設定されているぞ。
政府は消費税を上げる前に、電波オークション制度を導入し、税金としてテレビ局にきちんと払わせるべき。

          フジテレビ    テレビ朝日  日本テレビ  TBS
平均年間給与 1534万円     1,213万円  1,263万円   1358万円
従業員数    1431人      1,153人    1,159人

※全テレビ局が支払う電波利用料はたったの7億円


■電波オークションとは
電波帯域の利用免許を各テレビ局や通信事業者に付与する際、一番高い買い取り額を提示した会社に割り振る方式
先進国の約2/3が導入し、問題なく運用されており、大きな税収となっている。

■反対している者たち
 ・各テレビ局(国民の公共の財産である電波を格安で利用し、従業員の給料等にあてているため)
 ・総務省(現状、電波利用料は総務省の管轄であり利権となっている。財務省の管轄として税金化してほしくないため)


722 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 09:01:09
>>710
DMAXを調べたら少し幸せになれるよ。

723 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 09:27:08
XP、エクセル2007です

「開発」タブ>挿入>フォームコントロール からコンボボックスを挿入して使ってるのですが
ボックス内のリストの文字のフォントを大きくすることは出来ないのでしょうか?

724 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 09:35:07
フォームの方は無理
フォームじゃない方のコンボボックスなら可能

725 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 10:03:03
配列数式は覚えると馬鹿になるやつ多いから気をつけろ。

726 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 19:53:08
【1 OSの種類         .】 Windowsxp
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
現在、転職活動中で書類の通過数を計算しています。
例えば、A列に正社員、契約社員、パート。
    B列に合格、C列に不合格にし、別のシートには応募した企業数のリストを作成し、
書類が通過すれば○、通過しなければ×としていますが、計算式はどの関数を使えばよいでしょうか?
宜しくお願いします。

727 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 20:58:36
それくらいできないと正社員は無理

728 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 21:08:48
なんのために集計するんだ?
正社員の合格が1になったら転職活動は終了じゃないんか?

729 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 21:17:56
書類の通過数を計算し、通過数が悪ければ書類を訂正しようと思って・・・。

730 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 21:30:55
訂正の余地を感じているなら、通過率に関係なく今すぐ訂正しろよw

731 :複乳:2011/02/18(金) 21:48:47
いくら私でも今回は手伝う気がしないわ。
あまりに集計が無意味すぎる。

732 :名無しさん@そうだ選挙にいこう:2011/02/18(金) 22:14:05
質問です。
メインの表があって、他にA,B,Cという表(右側の欄外に)があります。
メインの表の一番上のセルに『選択用のセル』があって、
▽をクリックするとプルダウン?(言葉があっているか分かりません)
で、AかBかCが選べて、その選んだ表(例えばA)の値がメインの表に
飛ぶという表があります。(誰が作ったか不明)
これと同じものを作りたいのですがどのようにしたらいいですか?
関数で探しましたがそれらしい物がありません。
(そもそも▽って関数ですか?)
メインの表の数値のところをクリックすると『HLOOKUP…』という
関数が入っています。(しかしこれって列で探すだけですよね?)
プルダウン(▽)のやり方を教えて頂けないでしょうか?
宜しくお願いします。

733 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 00:45:56
>>732
文章の中で「値が飛ぶ」の意味がわからない
もうちょっと別の言葉で説明して

734 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 08:36:29
プルダウン(▽)は入力規則で
入力値の種類>リスト
元の値>A,B,C
じゃないかな

735 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 09:36:17
2007で、マクロを使っていないのにファイルを開いたときに
セキュリティの警告 マクロが無効にされました
のメッセージが出ます
どこにマクロが使われているのか、調べる方法はありますか?


736 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 09:44:07
>>735
Alt+F11でVBE起動して確認

737 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 09:49:49
>>735
こっちが先か
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_01_2007.html
で開発タブ表示して「マクロ」クリックしてマクロが登録されてないか確認

738 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 09:51:28
謎のコードが埋まってました
ありがとうございます


739 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 09:57:21
謎のコードってのがなんだったのか気になる

740 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 10:15:39
前にコンボボックスを配置してみたり色々試してたときの残骸です
コンボボックスチェンジなんちゃらのイベントのみで、中身は空っぽでした


741 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 19:07:10
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 抽出 特定文字列

B列に商品名、C列に担当が書かれているシートに
A1で特定の商品名の担当を抽出することは出来ますか?
たとえば、

B列    C列
ABC   田中
あいう  山田
あいう  中野
AAA   佐野
AAA    佐藤

と言った状態で、
A1にあいうの「山田・中野」
を表示させたい場合はどうすればよろしいですか?

よろしくお願いいたします。

742 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 19:24:16
>>741
数式は不定数の結果(担当が何人になるかは不定)を返すのが苦手なので
数式でも出来るが、VBA可ならVBA使うことを勧める

方法は、
B列のデータ範囲でループ(Endプロパティなどで範囲取得して、ForもしくはFor Each)
B列の内容で条件分岐して(ForループならCells、For Eachならカウンタ変数そのもののValueをIfで)
条件一致したらその行のC列の内容を変数に追加格納していくだけ

しかし、そんなことしなくてもオートフィルタでB列を「あいう」にすれば、
C列にお望みの「山田・中野」という結果が表示されるが、それじゃ不満なのか?

743 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 19:28:04
>>742
なんとなく分かりました。やってみます。

実は、1のシートに書かれている内容を集計シートに飛ばしたいんですよね。

744 :732です:2011/02/19(土) 21:30:42.71
>>733さん >>734さん。レスありがとうございます。
意味が分かり難い文章で申し訳ありません。
下のような感じが言いたかったのです。

選択用セル▽
メイン表  表A  表B  表C
空白    1   2   3
空白    4   5   6
空白    7   8   9

この状態でB選ぶと

 表B▽
メイン表  表A  表B  表C
 2    1   2   3
 5    4   5   6
 8    7   8   9
   
本当はもっと複雑なのですが、
こんな感じの表が作りたいのです。
遅レス申し訳ないです。


745 :複乳:2011/02/19(土) 21:36:56.56
>>744
よくわからん。
データ部分だけ消してファイルをアップロードしてくれたら作れると思う
アップロードしなくても誰かがやってくれるかもしれんけど


746 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 21:40:20.82
>>744
HLOOKUP関数は、範囲内で検索値に一致する列の、任意の行の値を返す関数

HLOOKUP("表B",範囲,2) なら、表Bの列の2行目、
HLOOKUP("表B",範囲,3) なら、表Bの列の3行目を返す

だから"表B"の部分を選択用セルへの参照にして、各空白セルにそれぞれの行番号の式を入れておけば
▽(ドロップダウンリスト)から選択するだけで対応する列の任意の行の値が表示される

747 :732、744です:2011/02/19(土) 22:05:05.44
>>746さん。
それです。
理解できました。

あとはドロップダウンリストのやり方を教えて頂ければ
解決できそうです。
『ドロップダウンリスト』で検索してみればHITしそうですか?

748 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 22:07:11.16
>>747
それについては>>734が既に書いてる

749 :732、744、747です:2011/02/19(土) 22:12:21.38
HITしました!
あああ!本当だ>>734さんが答えてくれていました!
理解できていなくて申し訳ないです。
一応全て解決できました。
関係者の皆様。ありがとうございました。

750 :名無しさん@そうだ選挙にいこう:2011/02/19(土) 22:20:51.34
最近の複乳のレベル低下は酷いな
前は中の下くらいの知識は持ってそうだったのに
最近下の中くらいまで下がってきてる

やはりトリップ無しは偽物が多いのか

751 :複乳:2011/02/19(土) 22:36:27.31
私もそう思う

752 :732、744、747、749です:2011/02/19(土) 23:07:34.50
試しに簡単な表を作ってみたのですが、
皆さんのおかげで完璧に理解できました。
明日会社に行くのが楽しみです。
再度の感謝の言葉で締めくくりたいと思います。
ありがとうございました。

753 :名無しさん@そうだ選挙にいこう:2011/02/20(日) 01:27:27.82
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 時間 差し引き 不特定セル入力
入店時間の19:00や23:40を
出店時間の0:30から差し引いて
19;00の場合5:30ですので4:30の延長時間をちょうだいしたいのですが、
30分単位で延長料金を取る場合の処理と
0時を回った場合の処理の方法を教えてください。

よろしくお願いします。

754 :753:2011/02/20(日) 02:17:00.88
自己解決しました。

755 :名無しさん@そうだ選挙にいこう:2011/02/20(日) 15:33:09.58
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 不可
【5 検索キーワード     】 csv まとめる

100個のcsvファイルをエクセルの100のシートにして一つのブックに
まとめたいのですがどのようにすれば良いでしょうか?
宜しくお願いします。

756 :名無しさん@そうだ選挙にいこう:2011/02/20(日) 15:50:51.95
>>755
VBA不可の場合、手動でこつこつやるしかありません。

757 :複乳:2011/02/20(日) 15:54:33.25
>>755
ttp://www.vector.co.jp/soft/winnt/util/se377447.html
これでも使ってからエクセルで開くとか

758 :名無しさん@そうだ選挙にいこう:2011/02/20(日) 17:01:15.52
それだと
100のcsvを100のシートにではなく
100のcsvを1のシートにとなってしまうのでは?

759 :複乳:2011/02/20(日) 17:49:12.44
>>758
すんまそん。よく見てなかった。

760 :名無しさん@そうだ選挙にいこう:2011/02/20(日) 18:10:58.76
ありがとうございます。
とりあえず手動で地道にやっていきます。

761 :名無しさん@そうだ選挙にいこう:2011/02/20(日) 22:25:02.36
うわ、マジで手でやるつもりかよ
VBA可な状態になるように勉強したほうが
今後のためになる

762 :名無しさん@そうだ選挙にいこう:2011/02/20(日) 23:44:17.34
マクロ禁止の職場かな
そうでなければマクロを覚えた方がいい。捗るぞ

763 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 00:00:38.36
>>762
マクロ禁止なら当然ソフトインストも禁止されているだろうから>>757で反応があったんじゃね。
検索できれば大抵はコードをパクるだけで出来てしまうものだが。

764 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 08:00:16.02
まったくの初心者です
以前一回口座に通ったのですが3日で挫折しました
脳細胞も弱ってきてます飽きっぽいです
こんな私でも一から学べる入門書を教えてください

765 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 08:35:35.91
>>764
「あきらめるという事」CH出版 複乳垂造


766 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 08:46:49.82
基本的な事を聞いて申し訳ないのですが、
A列に=1/3の無限小数で埋め尽くした場合、ファイル容量が3.3MB
同じく=ROUND(1/3,1)で埋め尽くした場合、3.8MBでした。
現在、約30MBほどの単純計算の表があるのですが
もしかして、変に関数を使わない方が軽くできちゃったりします?

767 :複乳:2011/02/21(月) 09:10:55.07
>>766
下手な関数使うよりかは当然軽くなると思う。
ファイルのサイズは文字数で見る。関数は文字列が長いので後者のほうがファイルサイズが大きくなる。
ファイルの重さは計算回数で見る。roundの内部的な計算は知らんが、1/3の後round関数で計算しているので後者のほうが重い。
ファイルサイズと重さはそんなに関係ない

768 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 09:11:17.86
>>766
関数にはエラー処理、例外処理等も入っているから、当然単純演算よりも重くなる。

769 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 09:31:33.92
>>767
>>768
週明けの朝から、素早い返答ありがとうございます。
さて…さっそく必要な関数以外を根こそぎ消滅させようと思います。

770 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 12:25:52.19
意外に盲点なのが条件付き書式 これが多くなるとてきめんに遅くなる

771 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 12:58:56.07
再計算しなくていい保存用の資料なら、値のみ別シートにコピペすれば再計算速度とか気にしなくていいんじゃ。
つか30Mのブックじゃ何やっても無駄なんじゃ。

772 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 13:02:44.91
またアク禁だぜ。困ったもんだな。
しかし重さをファイルサイズと勘違いしてる人いるよなぁ。
配列数式が好きな人にいそうな気がする。
一人だけかも知らんけど。

773 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 15:38:18.80
馬鹿はずっとアク金の方がありがたいのに困ったもんだな。

774 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 16:55:31.92
【1 OSの種類         .】 WindowsVista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 可
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 条件付 足し込み VBA

Sheet1のC列の文字列が"商品A"であった場合、
それに該当するF列の合計をSheet2に出したいのですがどうしたらいいでしょうか

  S = 0

  For N = 2 To Cells(Rows.Count, 3).End(xlUp).Row
    If Sheets("Sheet1").Cells(N, 3) = "商品A" Then
      S = S + Sheets("Sheet1").Cells(N, 6)
    End If
  Next N

  S = Sheets("Sheet2").Cells(11, 3)

このような感じで作ってみたのですが動作せずに困ってます

775 :複乳:2011/02/21(月) 17:36:23.41
>>774
最後が
Sheets("Sheet2").Cells(11, 3) = s
ですな
sumifでも使ったほうが速そうだけど

776 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 18:22:07.96
>>775
ありがとうございます
おまけにUpとDownも間違っていたようで恥ずかしい限りです…

レコードが少ないうちはSUMIFやDSUMでも問題なかったんですが、
レコードが日々増え続けているので最終的にはVBAのほうがいいのかなと

777 :名無しさん@そうだ選挙にいこう:2011/02/21(月) 20:24:57.46
>>772
作業列使うと数式が多くなりサイズが大きくなるから重くなるっていうやつが確かにいる。
多分おつむが足りないんだと思う。

778 :先日質問した者です:2011/02/21(月) 23:19:26.29
ドロップダウンリストとHLOOKUP関数を使って次のような表を作りました。

選択▽
メイン A  B  C  D  E
空白  1  2  3  4  5
空白  6  7  8  9  10
空白  11 12  13 14  15

ドロップダウンリスト(▽)でA~Eを選択すると、
その数字がメインに反映されるという表です。

ところがドロップダウンリストでAを選んでもBの値が反映され、
Bを選ぶと、そのままBの値が反映される。
Cを選ぶとエラーになり、Dを選ぶとDが反映されるという
困った状態です。
実際の表は結合させたり、空白があったりしてもう少し複雑ですが、
今回のように値がずれたり、正解だったり、エラーがでるのは
なぜなのでしょうか?
可能性をあげてもらえれば、そこを修正して、正しい値が飛ぶか
確認してみたいと思います。
宜しくお願いします。


779 :複乳:2011/02/21(月) 23:32:54.01
>>778
第四引数が0になってるかどうか
http://www.kenzo30.com/ex_kisotyu/ex_ks_tyukyu9_9_4.htm
検索の型って奴だな。0じゃないと並べかえをしていないといけない

780 :先日質問した者です:2011/02/22(火) 00:09:45.56
なるほど…。
検索の型を0にして明日試してみます。
自分は空白のままにしていました。
ありがとうございました。

781 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 00:12:22.03
>>778
実際の検索文字はA,B,C,D,Eじゃないんだろ?
A,B,C,D,Eだとそうはならないもんな。
複乳の言うとおりだろう。

782 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 00:46:46.04

エクセルの「アドイン」と「マクロ」とではアドインの方が便利だという掲示板をよく見るのですが、

アドインだとたくさんのファイルを登録しすぎると結構重たくなるという欠点があるのではないですか?
マクロだと1つのファイルにいくつでもコード書けるし、自分一人での利用であれば、
マクロの方が軽いし便利ですよね?

783 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 01:57:00.25
>>782
ケースバイケース。アドインインストと設定が必要だが、以降は普通の関数のように扱えるから
VBAは使えなくても簡単な数式を扱える人になら「何々の集計が欲しければこの関数を使ってね」
というだけで済む。

784 :783:2011/02/22(火) 02:00:26.36
あ、自分だけか。好きにしろよ。

785 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 10:20:56.98
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
質問です。
西暦を二桁で入力したいんですが、うまく入力できなくて困ってます。
例えば2009年を09と入力すると
自動的に0が消えて9だけになってしまいます。
どうすればいいんでしょうか?

786 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 10:41:46.32
>>785
入力?
それは無理だ。表示だけなら書式で 2000"年" にすれば表示されるけど
計算式には使えん。

787 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 10:46:26.75
>>785
セルの書式を文字列じゃあかんの?

788 :785:2011/02/22(火) 10:46:52.69
>>786
そんなこと言わずに教えれ

789 :785:2011/02/22(火) 10:48:56.12
>>787
あかんから聞いておる

790 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 11:10:00.22
>>786-787
書式を文字列で打てました。
教えてくれてありがとうございます。

791 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 11:30:37.86
文字列にするのはあまりおすすめできんな
ここは00にすべきでは

792 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 11:32:30.28
参照式が無効になる事についての質問です。

Excel2003で発生します。
Excel2010では発生しません。

入力用、出力用、保存用の3つの形式で
各シートにテンプレートを作成してあります。
出力用、保存用はそれぞれ入力用のセルを参照するようにしてあります。

入力用に設置したボタンを押すと、
保存用のシート名に日付を追加してコピーを作成します。
その際に日付順にソートをかけて
上記3シートの後方で並び替えをおこなっています。

その後、入力用の値をクリアするのですが、
その値を参照しているはずの出力、保存用シートの値がクリアされません
セルに参照式自体は入力されているため、
いったん参照式を選択→解除の操作をすれば更新はされます。

デバックの結果、ソート後の並び替えの部分
worksheet("xxx").move after:=〜〜
を通過後に発生しました。

当該シートでの再計算、オプションでの再計算などは試しました。

原因、解決策などありましたらご教示いただきたいです。

793 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 11:53:15.44
>>792
とりあえずブックをうpしてね。>>2参照

表に出せないデータがあるなら、そこは適当なものに置き換えてもいいから。

794 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 21:57:31.83
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
質問です。
A〜Dの列を固定して、E以降の列を動かす?スライドさせる方法を教えてください。
よろしくお願いします。

795 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 22:02:25.55
>>794
E列を選択してからウィンドウ枠の固定

796 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 22:04:36.54
>>794
ウィンドウ枠の固定のこと?
F1セルを選択して表示タブのウィンドウ枠の固定を押す

797 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 22:05:08.18
あ、ごめんE1セルを選択の間違い


798 :名無しさん@そうだ選挙にいこう:2011/02/22(火) 22:26:06.08
>>795-796
できました。
ありがとうございます

799 :778,780です。:2011/02/23(水) 01:00:42.33
複乳さんの回答が正解で、修正すると直りました。
ありがとうございました。


800 :名無しさん@そうだ選挙にいこう:2011/02/23(水) 13:51:45.21
このスレッドで質問していいことかどうかわかりませんが、恐る恐る聞いてみます。
A Office97の通常版を所持。
B Excel 2000(単体upgrade版)を購入。Aで認証してインストールできました。
C Office 2003 Personal特別upgrade版を購入Aで認証してインストールできました。

4月-5月ころにPCを更新する予定です。この時点でOffice も2010にする予定
です。

ここで質問です。
Office2010のupgrade版はAまたはCを持っていればインストール可能で
しょうか。MSのサイトを見てもいまひとつはっきりしないし、2007のときにMS
にメールで問い合わせしてもなしのつぶてで返事がなかったような記憶が
あります。
ご存じの方が居られたらお答えをよろしくお願いします

801 :名無しさん@そうだ選挙にいこう:2011/02/23(水) 14:08:02.12
>>800
初心者スレのテンプレに記載されていますが

> ・ ライセンスに関する質問は、基本的に答えません。Microsoftやその他メーカーに直接問い合わせてください。
>   (間違ったことを教えたり、嘘を教えられたりすると犯罪に発展することだし、
>   「こういう不正行為はバレる?」なんてのに答えると、不正行為を手助けする結果になるので)

というわけで答えられません。

問い合わせ方法は、何もメールだけではなく電話でも受け付けてるし、俺はメールで問い合わせてちゃんと回答が
来たから、「メールでの質問に回答は来ない」と決めつけずにまた送ってみるとかしてみな。

802 :名無しさん@そうだ選挙にいこう:2011/02/23(水) 14:51:59.52
>>801
すみません。テンプレよく読んでいませんですた。
MSに問い合わせます。

803 :名無しさん@そうだ選挙にいこう:2011/02/23(水) 15:06:31.16
800です。早速MSに電話しました。一発でつながり必要な情報を得ることができました。
801さんありがとうございました。

2007のときは電話問い合わせ窓口はあったのかな。私の探し方が不十分だったのかな。
今後は先入観にとらわれず公式サイトをよく読むようにします。

804 :名無しさん@そうだ選挙にいこう:2011/02/24(木) 00:54:19.45
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010

セルをクリックすると項目を選べるようにしたい

あらかじめリストをつくり、セルにカーソルをもっていったら逆▼が出てクリックすると
項目を選べて入力できる方法をご存知の方がいらっしゃいましたらご教示ください。

説明がわかりづらくて申し訳ありません。

805 :名無しさん@そうだ選挙にいこう:2011/02/24(木) 00:58:28.21
>>804
それは「リスト」って言うのね
ttp://officetanaka.net/excel/function/tips/tips05.htm

806 :名無しさん@そうだ選挙にいこう:2011/02/24(木) 03:26:07.51
>>805
できました。
ありがとうございます


807 :名無しさん@そうだ選挙にいこう:2011/02/24(木) 22:55:49.21
【1 OSの種類       .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

他人が作ったexcelをwebページとして保存したいのですが、
ブラウザで見た時に横スクロールを使わねばならないほど大きく困っています。
オートシェイプ、ワードアート、画像などが使われております。
それらとフォント、セルを一発で縮小する方法はありませんでしょうか?
ペイントに保存してすべてを一枚の画像にして縮小したところ文字が粗くなってしまって無理でした。

808 :名無しさん@そうだ選挙にいこう:2011/02/24(木) 23:01:29.85
PDFにしたら?

809 :名無しさん@そうだ選挙にいこう:2011/02/24(木) 23:14:49.97
すいません。pdfは無理です。フリーソフトを落とすのもネットを使うのも無理です。
書き忘れ申し訳ないです。

810 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 00:23:45.60
ちょっと聞かせて欲しい。

今日ある講習会で住所録を「excelで作成→はがきに差し込み」
ってのがあった。
それは初心者向けの講座だったんだけど、いまどきexcelで住所録を
作成って実際どうなのよ?
今は宛名ソフトが高機能なのに、なんでexcelなんだかなぁ・・
初心者にセルで入力させる意味がわからん???
どう考えても初心者には宛名ソフトの方が親切だと思う。
「excelで作れば転用できる」という輩がいるんだが、逆に宛名ソフトで
住所録つくってもCSVに書き出しできるから意味ね〜し。

あ、因みに私は初心者じゃありません。_(._.)_
ちょっとexcel信者の意見を聞きたかったもので・・・

811 :複乳:2011/02/25(金) 00:30:14.10
>>810
普通は筆まめとか使うね。そっちのほうが断然便利で早く、キレイ
講習・練習という意味でやったならそれはそれでいいと思うけど

812 :複乳:2011/02/25(金) 00:31:41.79
>>810
へぇ。
でも宛名ソフトはそれを買うか例え無料でもその使いかたを覚えないといけないじゃん。
一番の問題は宛名ソフトが多種ありすぎて使い方を人に聞けない。
Excelならみんな使ってるから汎用性・一般性がある。
例えるなら昔はファコミンしかなかったからクラスで同じゲーム例えばドラクエの金のカギがどこで手に入るかの話題で盛り上れる。
でも今はプレステとかニンテンドウ24とか携帯ゲームとかいろいろ媒体がありすぎて
なかなか同じ媒体の同じゲームの同じ進行度で困ってる人を見つけるのが難しい。

813 :複乳:2011/02/25(金) 00:32:39.99
>>811
宛名ソフトは筆まめが定番なの?

814 :複乳:2011/02/25(金) 00:36:40.24
>>813
定番かどうかは知らない。最初に使ったのが筆まめで、特に問題がないのでずっと使ってる。単に私のお気に入り
未だにバージョン10ぐらいだ。今19ぐらいでてるんだけど。

815 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 00:43:58.37
>>814
複乳族にもいろんな人がいるもんだね

816 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 00:49:41.54
俺も宛名書きはExcel VBAでやるぜ。
ループ回しながら決まったセルに出力してそこをPrintOut
差し込み印刷なんてのがWordにあるらしいが。


817 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 01:11:50.76
>>782
たしかにアドインは、ファイル単位だからいくつも登録したら重くなるのは当然だね。限界がある。
他人に渡す用途ならアドインの方が便利かもしれないが、使うのが自分だけならアドインにするメリットは全くない。
全部VBEに書いた方がいいに決まってるよ! そもそもアドインは他人への配布時に使うためのもだよ。


818 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 03:25:16.59
excel単体でもっている人のほうが少ないだろうから、通常はwordの差込印刷だな。
まぁ、年賀状しか印刷しない人ならプリンター付属の印刷ソフトを使えばいい。
業務だと最低でも1万件とかの住所ラベル印刷をするが、その場合はaccessでデータ管理と印刷だな。

819 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 04:13:57.62
おれはJP(日本郵便)が出している無料ソフトだな。

820 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 07:58:15.12
あれで十分だよね 絵もいいのがたくさんあった

821 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 09:54:10.39
>>812

言いたいことは分かりますが、初心者が覚えるのに宛名ソフトの
使い方を覚えるのと、差し込みを覚えるのとどっちが簡単か
って事なんですよ。
個人的な意見ですができる側が「excelを教えられる自己満足」
としか思えないんですよ。
汎用性を言うなら10月以降の書店にあれだけの宛名ソフト付の
本が並んでいる現状があります。
excelが初心者にとって、そんなに簡単で便利なら、何故あの手の
雑誌が売れるんでしょうね?

>>813

筆まめが定番という事はないと思いますが、講習会などでは使う
事が多いようです。
理由としては「一番使っている方が多い」との事です。
私は筆ぐるめですけどね。(^^;

>>811
>>819
>>820

年賀状に限って言うなら、皆さんの仰有る通りと思います。
初心者に差し込みなんて教えるの大変なんですよ。


822 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 10:07:53.91
宛名ソフトってそんなに便利なの?
excel+wordの差し込み印刷で十分だから導入しようって気にならない

823 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 10:23:35.31
初心者が初歩的な物を作る上では便利だよ
でも融通効かないから、ちょっと凝り出すとたちまち不満だらけになるし
VBAまで使えるなら、Excel+Wordの方が遙かに使いやすいし高機能

824 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 10:42:53.09
>>821
どういう状況でどういうレベルまで教えるのかは知らんが
宛名印刷なんてPC初心者にしろExcel初心者にしろ最終段階だろうよ。
初心者講習なら「あとExcelを使ってこんなこともできますよ〜」と
流してしまってもいいレベルなんじゃないのか?

そもそも筆まめとかの宛名印刷ソフトの使用法を教えても、
ビジネスシーンじゃ役に立たない可能性のほうが高い。
インストされていない可能性のほうが高いし、インストするにしてもいろいろな障害があるからね。


825 :複乳:2011/02/25(金) 10:53:23.89
>>822
出来ることは、excel+wordの差し込み印刷と同じ
逆に俺は差し込み印刷を使えない。
あえて有利不利をつけるなら、宛名ソフトだと転職した時やや不利かもって程度

826 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 11:28:46.33
すみません、DGET関数のことなんですが

★その3:データベース関数を使った集計
ttp://www.geocities.jp/chiquilin_site/data/050208_more_conditions.html#03


>ただ融通が利くので 使い方次第では非常に有効です。例えば条件式をまとめることができます。
>■B15セル
> =AND(C3="A",D3="あ")
>■E15セル
> =DSUM(B2:E12,4,B14:B15)

のところがなぜこれで正しい結果が出るのかわかりません。
お手数ですが解説していただけないでしょうか?

827 :複乳:2011/02/25(金) 11:58:59.91
>>824
最終段階とも言えない。
PCをさわりはじめた人に教えるとき
「なんと年賀状がボタン1つで大量にできちゃいますよ〜」ということを伝えれば
PCが魔法の箱になるからPCを覚えようという強い動機付けを与えてあげれる。

828 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 13:19:41.07
>>826
フィルタオプションでも数式を検索条件にできるだろ?
あれと同じだよ。
なぜって、そういう作りになってるからとしか言いようがないなぁ。

829 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 13:26:56.80
宛名の印刷なんてExcelのみでも充分。
1分でコードが書ける。
For NextとRange.PrintOutさえ知ってればよい。

830 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 15:07:24.82
>>828
ありがとうございます。正直さっぱりわかりませんがよく考えてみます。

831 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 15:27:37.14
PasteSpecialについてなのですが
xlPasteColumnWidthsで列幅は持ってこれます。
行の高さを持ってきたい時ってどうすればいいのでしょうか

832 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 16:12:16.95
>>829
コードは簡単だが、Excelのみだと印刷のズレを修正するのが面倒なので
まともにやるならWordに投げた方が楽できる

833 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 19:12:41.48
仕事にexcelが必須との事で、少しずつ勉強をしてるのですが
関数に付いて、つまらない事かと思いますが宜しければ教えてください。

=IF(A12=0,0,IF(A12<=0.3,1,IF(A12<=0.5,2,IF(A12<=1,3,ROUNDUP(A12*1.5,0)))))
=IF(A4<=1,IF(A4<=0.5,IF(A4<=0.3,IF(A4=0,0,1),2),3),ROUNDUP($A4*1.5,0))

↑関数は同じ結果が出るのですが、どちらのパターンの方が玄人に好まれるのでしょうか?
個人的には下の書式の方が綺麗に見えるのですが、IFの判定を何回も繰り返している分だけ
データの量によっては、処理が重くなったりするんでしょうか?

834 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 19:54:56.35
玄人なら、1以下は対応表作ってVLOOKUP使うな
=IF(A1<=1,VLOOKUP(A1,$対応表,2),ROUNDUP($A1*1.5,0))

素人はなんでも式の中に詰め込もうとする傾向にあるが
仕事で使うなら、自分以外も使ったり弄ったりするので
式の意味を分かりやすく、条件を変更しやすくするのも重要なことだ。

835 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 22:36:02.20
それは=IF(A1<=1,LOOKUP(A1,$対応表),ROUNDUP($A1*1.5,0))と同じだな。
俺は対応表作るならINDEXとMATCHの照合の型-1だと思うけどな。

836 :名無しさん@そうだ選挙にいこう:2011/02/25(金) 22:46:44.13
対応表なしならマイナスを考慮しなければ=IF(C1<=1,4-MATCH(C1,{1,0.5,0.3,0},-1),ROUNDUP(C1*1.5,0))だな。


837 :833:2011/02/25(金) 23:47:12.90
>>834
>>835
>>836
お答えありがとうございます。
何とも自分では逆立ちしても、出てこない様な発想でした…
特に
>素人はなんでも式の中に詰め込もうとする傾向にあるが
がとても衝撃的でした。
色んな関数を試して柔軟な発想が出来るように、精進したいと思います。

838 :名無しさん@そうだ選挙にいこう:2011/02/26(土) 18:13:43.48
アクティブセルの番地を求める関数ない?
VBAだと重すぎて

839 :名無しさん@そうだ選挙にいこう:2011/02/26(土) 18:23:05.66
>>838
関数はないでしょ。vbaだと重い?まあ、ワークシートイベントは重いといえば重いけど

840 :名無しさん@そうだ選挙にいこう:2011/02/26(土) 18:24:23.44
VBAで作ったユーザー定義関数ならまだしも
ワークシート関数にはありませんよ

というかその程度の処理で重くなるって
余程の糞スペックPCか余程の糞コードだな

841 :名無しさん@そうだ選挙にいこう:2011/02/26(土) 23:34:00.85
イベント処理に失敗して無限ループのパターンかな?

842 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 13:59:44.71
>>838
とりあえず
=CELL("address")
が近い

843 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 16:05:30.14
すれ違いかもしれませんが教えてください。
Excelのグラフ機能ではないですが、こういう表の事を
何表と呼べばいいのでしょうか。
http://www.death-note.biz/up/o/17010.jpg



844 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 16:12:33.31
>>843
THE 表。
表以外の表現方法が分からないんだが…
ただの表じゃないか?

845 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 16:16:45.84
>>843
見積もり表とか?

846 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 16:35:09.62
>>843
BOM(部品表)の中の、下リンク先でいうところの購買BOMかな。
http://ja.wikipedia.org/wiki/BOM_%28%E9%83%A8%E5%93%81%E8%A1%A8%29

847 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 16:49:37.15
成る程、部品表(BOM)ですか。
確かにwikiの説明を読む限りまさにそれですね。
ありがとうございました。


848 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 16:53:50.72
それにしても やけに現実感に乏しい部品表だ。まるでドラクエの商人みたいな

849 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 16:57:51.13
なんとなくだが、計算式はN、O、P列にしかない予感。
たぶん力技で作っているんだろうな。

850 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 17:24:41.90
エクセルというよりワードの表みたいだね。
エクセルでああいう表を作っても手計算になる

851 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 18:05:09.31
>>649
http://hibari.2ch.net/test/read.cgi/bsoft/1293162589/

そこそこ賑わってるよ

852 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 18:05:16.91
ゴバ━━━━(゚∀゚)━━━━ク!!!!

853 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 18:16:55.32
ネットゲームで使っているものです。
単価の列は別シートの素材単価からVLOOKUP()で探して表示し
小計は個数と単価をかけて表示
合計は小計をSUM()で表示
販売価格は単純に合計を1.5がけで表示しているだけです。
個数が手打ちです。
今よく見るとK248の個数が間違えてますね…(´・ω・`)
B列〜I列の中から探し出して素材別にK列に表示できればよかったのですが
いい方法が思いつかなくて現在は手打ちです。


854 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 18:22:20.78
>>853
MoEっつうゲームらしいね。

855 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 18:24:13.08
折角Excel使うならVBAくらい使わないと損だろ
今時小学生でもゲームの補助にVBA使う奴居るんだから

856 :名無しさん@そうだ選挙にいこう:2011/02/27(日) 19:54:56.27
VBAだと出来ますけど、そんなに件数がある分けじゃなかったので
VBAまで使う程でもないかなと思っていました。
あとVBAはロジックを書くまでの宣言や前準備が多くてあまり使いたくなかったのですが、
もし使うならA列単位で
I列からB列に向かってなめて行き、最初に見つけた素材を
配列で素材名と個数でカウントしていき
KとL列に上から出力とこんな考え方でしょうか。


857 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 01:06:42.05
VBAの条件式で黒(vbBlack)、赤(vbRed)というのを使ってます
オレンジ = 46の時はなんて書けばいいですか?

vbOrangeじゃだめでした

858 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 01:14:40.98
>>857
オブジェクトブラウザーでColorConstantsのメンバーを見てみろ。
あとは自分でConst。

859 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 01:29:48.00
>>858
ColorConstantsというのは分からなかったんですが

If Sheets("Sheet1").Cells(i, 1).Font.ColorIndex = 46 Then

としたらできました
ありがとうございました

860 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 01:43:04.58
>>859
wwwwwwww d,

861 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 19:26:25.28
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2010
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 式の結果 セル 保護

したいこと
曜日のセルを参照し 月曜日、水曜日、木曜日、土曜日であれば
運用のセルに『休止』という文字列を表示させます。
その他の曜日には数値が入力可能です。
=IF(OR(E$3="月",E$3="水",E$3="木",E$3="土"),"休止","")

ところが、この『休止』とされた部分に誤って入力してしまうと
その入力したものが入ってしまいます。
一旦、表を作成したあと、この『休止』と表示されたセルだけを
保護したいのですが、どのようにすればいいですか。


862 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 19:28:31.80
=VLOOKUP(左横のセル,data,2,0)を=INT(VLOOKUP(左横のセル,data,2,0))に変更するいい方法はないでしょうか?
シートのあちこちにあるので置き換えを使って「=VLOOKUP」を「=INT(VLOOKUP」に変えてから「2,0)」を「2,0))」に
置き換えようとしたんですが「入力した数式にエラーが見つかりました〜」というメッセージが出てうまくいきませんでした。

863 :862:2011/02/28(月) 19:32:03.47
すみません、忘れました

【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 メッセージ 表示しない 入力した数式にエラーが見つかりました

864 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 19:38:40.75
数式を文字列にしてから置換して数式に戻せば?
具体的なやり方はいっぱい例があるからググって

865 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 20:17:15.38
>>861
試してないけどINT→ ROUNDDOWNでもダメかな?



866 :862:2011/02/28(月) 20:26:01.58
>>864-865
ありがとうございます。表示形式を文字列にするのではおなじメッセージが出てうまくいかなかったのですが、
「=VLOOKUP」→「INT(VLOOKUP」、「2,0)」→「2,0))」、「INT」→「=INT」でうまくいきました。

867 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 20:59:42.56
A1からA9までに合計100の数字が書かれているとします
その数字をランダムで選びたいんですが、その数字が大きいほど選ばれるようにしたい
そして選ばれる確率はその数字%にしたい

たとえば
A1=5 A2=10 A3=15 A4=5 A5=10 A6=20 A7=10 A8=10 A9=15
と書いてある場合だとA1の"5"が選ばれる確率は5%になるようにしたい

語彙力無くてすいません、Excel2003です

868 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 21:10:48.27
=IF(RAND()*100)<=A1,A1,"-")
のような式をB列にいれて、B列の最大値が選ばれた数値ってことにすればいんじゃないかな
F9で再計算するたびに数値は変わる

869 :867:2011/02/28(月) 21:12:09.06
自分なりに考えてみました
B列に"=RAND()*A列"
B列の数値がが一番大きい行のA列の数字を取り出す

これでも出来るみたいですので解決しました(間違ってたら教えてください)

870 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 21:13:32.98
0から99までの乱数をつくる

0〜A1-1の数字がでたらA1を選択する
A1〜A1+A2-1の数字が出たらA2を選択する
A1+A2〜A1+A2+A3-1の数字が出たらA2を選択する
・・・

でどうよ?

871 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 21:21:15.48
>>861
休止のセルだけロックして他はロック解除。
で、シートの保護するだけじゃない?もっと難しい話なのかな。

872 :868:2011/02/28(月) 21:57:41.16
>>869
自分の回答もそうだけど、生成される乱数が複数だと正しい比率にならない。
RAND()はひとつだけにして>>868の式をつくらないとだめだね

873 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 22:11:46.55
>>869のやり方の場合は、乱数複数でいいんだよ
乱数一つにしたら、毎回元の値が一番大きい物だけが選ばれちゃう

874 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 22:42:30.51
>>871
それが複数パターンあるんですけど、自動でするにはどうしたら
いいんですか

875 :名無しさん@そうだ選挙にいこう:2011/02/28(月) 22:51:57.01
自動でやるならVBAしかないでしょ
やり方はマクロの記録見れば解るだろ

876 :867:2011/02/28(月) 22:56:56.24
>>872
できました、ありがとうございます
回答してくれた皆さんありがとうございました

877 :名無しさん@そうだ選挙にいこう:2011/03/01(火) 09:44:38.02
例えば、シート1表示時はウィンドウサイズが300x300の時に
シート2タブをクリックしてシート2を表示させるとウィンドウサイズが600x600に変わる。
またシート1に戻すと300x300に戻る。
といった事は可能でしょうか?
要は、シート毎に固定のウィンドウサイズにしたい場合です。

878 :名無しさん@そうだ選挙にいこう:2011/03/01(火) 09:59:04.65
>>877
VBA使えば可能です

具体的には>>3★2に従い割愛します

879 :877:2011/03/01(火) 11:53:19.18
>>878さん
失礼いたしました。
改めて質問致します。
【1 OSの種類         .】 Windows XP SP3
【2 Excelのバージョン   】 Excel 2003 SP3
【3 VBAが使えるか    .】 かなり初心者です
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 EXCEL シート毎 ウィンドウサイズ

シート毎にウィンドウサイズを変更する方法について、よろしくお願い致します。


880 :複乳:2011/03/01(火) 12:41:08.10
>>879
http://www1.axfc.net/uploader/Sc/so/210040.xls
ワークブックに記述
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
a (Sh.Name)
End Sub

標準モジュールに記述。Width = 300とかはテキトーにヘンコーして
Sub a(ByVal sito)

Set window1 = Excel.Application

If sito = "Sheet1" Then
window1.Width = 300
window1.Height = 200
ElseIf sito = "Sheet2" Then
window1.Width = 600
window1.Height = 600
End If

End Sub

881 :名無しさん@そうだ選挙にいこう:2011/03/01(火) 13:06:37.81
If より Select Case の方がいいぞ

882 :879:2011/03/01(火) 13:10:54.66
>>880さん
素早い解答ありがとうございます。
無事希望通りの動作を確認できました!

>>881さん
アドバイスありがとうございます。
C言語の経験はあるので、こちらは自力で出来そうです。

883 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 08:25:15.94
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可

@aaaaa20101231
Aaaaaa20110301
Bbbbbb20101231
Cbbbbb20110301

まず、@とAの日付の前(aaaaaのこと)が同じかどうかチェックし、
同じであった場合、日付の古いほうを隣のセルに【削除】と表示させたい。
(ここだと@が【削除】となる)
次に、AとBが比較されるが、日付の前が違うので、その下のBとCが比較となり、
以下同じ作業を繰り返す。

こんな作業を関数で出来ますでしょうか?

884 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 08:46:28.16
>>883
降順ソートして
=LEFT(A1,LEN(A1)-8)
が、一つ上と同じものだけ削除表示すればいいんじゃね?
あるいは昇順ソートで、一つ下と同じ物を削除でもいいけど

降順ソートすれば、日付の新しい(大きい)ものが一番上になる
その例の場合

bbbbb20110301 bbbbb
bbbbb20101231 bbbbb 一つ上と同じなので削除
aaaaa20110301 aaaaa 一つ上と違うので残し (aaaaaの中で一番日付が新しい)
aaaaa20101231 aaaaa 一つ上と同じなので削除

というように、ソートしておけば、前部文字が同じ物の中では一番新しいものが
一番上、あるいは一番下にくるので、数式で日付の新旧を判定する必要は無くなる

885 :複乳:2011/03/02(水) 12:21:13.89
>>883
A1A2だけは手動になるけど
B2=IF(LEFT(A2,LEN(A2)-8)=LEFT(A1,LEN(A1)-8),1,0)
C2=IF(LEFT(A2,LEN(A2)-8)=LEFT(A3,LEN(A3)-8),1,0)
D2=DATE(MID(A2,LEN(A2)-7,4),MID(A2,LEN(A2)-3,2)*1,MID(A2,LEN(A2)-1,2)*1)
E2=IF(AND(B1=1,D2<D1),"【削除】","")
F2=IF(AND(C1=1,D2<D3),"【削除】","")
後は下にオートフィル

886 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 12:29:07.25
>>885
日付が8桁固定と思っていのなら(LEFT(A2,LEN(A2)-8)の式から推測)
大小関係を調べるのに、DATEで日付にする必要はなかろう。
マジでどうしちゃったの?

887 :複乳:2011/03/02(水) 12:35:55.22
>>886
会社が倒産、というか解散してね。今無職なんだ
腕って意外とすぐ落ちるもんなんだな

888 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 12:36:30.18
はじめまして。ごく最近マクロやVBAについて勉強し始めました。

【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ(これから勉強しようとしています)
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 エクセル マクロ ランキング

A1〜A5にそれぞれ1、4、9、16、25
B1〜B5にそれぞれ1、3、、6、10、15
と数値が入力されているとします。
A6にはAの合計数値、B6にはBの合計数値が出力されるとします。
A3を1回使うと、A6に9、B6に6が加算されます。

上記のようなシステムで、
A1をP回、A2をQ回、A3をR回、A4をS回、A5をT回使い、
なるべく大きな数字を作りたいと思います。
その際、B6が100以下になるという制約を設けています。
B6が100以下という条件下で、
A6のトップ10となる、A1〜A5の組み合わせを、アウトプットとして出したいのです。
こういった処理をするには、どのようにすればよいのでしょうか?

889 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 13:26:33.82
>>888
P、Q、R、S、Tの条件は>=1? それとも0あり?
要はA1を100回でほかは0回とかもいいのか?
単純なプログラム的手法だとエライことになりそうだ。

890 :複乳:2011/03/02(水) 13:56:45.84
NP完全に近くないか。かなり面倒

891 :複乳:2011/03/02(水) 14:09:12.29
A/Bの数値が大きいもので埋めてから後はランダムに埋めて試行錯誤でいくしかなさそう

892 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 14:18:50.13
>>888
「ナップザック問題」だな。パソコンで効率よく解くのはかなり大変
ただ、この条件なら単純なループでも大して時間はかからんが

893 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 14:21:26.13
>>887
偽物だろ

手技とかはまだしも知識はそう簡単に落ちねーよ

トリップ有りで、中の下レベルだった複乳が
いきなりトリップ無しの下の中レベルだもんな

894 :複乳:2011/03/02(水) 15:05:29.27
>>893
何でもいいよ。
知識も知恵も、普段から駆使していないと簡単に腕を離れていく。普段の何気ない仕事って結構大切なんだよな。
後、俺の言いたいこと以上のことを言ってくれる知識の高い複乳がいる。あいつがすごい。

895 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 15:14:58.03
間違って違う板に質問してしまいました・・・

http://www.dotup.org/uploda/www.dotup.org1389349.jpg

上記の画像で○と●それぞれの合計数字(○=4、●=12)を○、●横の空欄に自動入力出来るようにしたいのですが
どのような計算式を用いればよろしいのでしょうか?
○、●が数字の場合なら出来るのですが、特定の文字になるとチンプンカンプンになってしまいます・・・
よろしくお願いします。


896 :複乳:2011/03/02(水) 15:22:13.65
>>895
=COUNTIF(G1:G32,"○")*4
=COUNTIF(G1:G32,"●")*12
countifで個数を求めて、後は点数を掛ける

897 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 15:33:24.85
>>896
非常に早急なレスポンスありがとうございます。
ちなみにこの際色々と聞くばかりでなく、自分で学習したいのですが
初心者レベルから関数などを学習できるサイトありませんでしょうか?
よろしくお願いします。

898 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 15:36:01.71
それを自分で探そうとしない奴には
サイト教えたところで自分で勉強なんて続かないだろうなw

899 :複乳:2011/03/02(水) 15:36:03.58
オフィス田中
インストラクターのネタ帳
でぐぐれ

900 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 15:44:25.88
本庄さんは悪ぅないよ

901 :複乳:2011/03/02(水) 15:45:42.44
そうだな

902 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 15:47:08.75
>>898
勉強しようとする気があるだけいいんじゃね?
お前みたいに罵倒するだけの奴より全然マシだおw

903 :888:2011/03/02(水) 15:51:54.94
返信ありがとうございます。

>>889
0ありです。

最終的にはもっと複雑な条件のもとでこのような処理をしたいのですが、
ほとんどわからない状態なので、
勉強の意味で単純化した処理について質問させていただいています。

904 :複乳:2011/03/02(水) 16:41:37.73
>>903
>>892の通り、ナップザック問題だよ
http://ja.wikipedia.org/wiki/ナップサック問題
条件が決まってない状態だとどうにもならんのよう。

905 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 16:41:51.38
【1 OSの種類         .】 WindowsVista
【2 Excelのバージョン   】 Excel2002
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 漢数字 日付 変換,"漢数字を数字に"

三月二日
十一月二十九日

といったような感じで日付が書かれているのですが、
この列を残したまま別の列に
mm/dd、もしくは月と日を別々の列に数字で出したいのですが、
方法はありますでしょうか?

906 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 16:50:18.45
>>905
一発でやる方法はない
VBAでかなり複雑なプログラムを作る必要がある
とくに「

907 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 16:51:03.41
十」の処理がめんどくさい

908 :複乳:2011/03/02(水) 16:58:28.34
>>905
作業列を使えばfindとsubstituteでカノア


909 :複乳:2011/03/02(水) 17:01:56.16
やべぇ、すげーめんどくせぇ・・

910 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 17:09:45.97
めんどくさいですか…
366日分書いてVLOOKUPでゴリ押すことにします…

911 :複乳:2011/03/02(水) 17:11:54.38
>>910
ああ、その手があったか。それが一番早い
366日分の書き方だけやろう

912 :複乳:2011/03/02(水) 17:14:34.10
うおおおおこれもめんどくさいいあああああ

913 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 17:16:51.22
ところがどっこい
「二九」と「二十九」とか、「十」と「一〇」の違いとか色々あってだな
単純な置換だと泥沼にはまるんだよな

914 :複乳:2011/03/02(水) 17:22:26.05
>>910
A1=TEXT(1,"[DBNum1][$-411]G/標準")
B1=月
C1=TEXT(ROW(),"[DBNum1][$-411]G/標準")
D1=日
E1=A1&B1&C1&D1
http://www1.axfc.net/uploader/Img/so/109396.jpg
こんな感じで作ってくれ
2月は
A1=TEXT(2,"[DBNum1][$-411]G/標準")
とすれば、一月分作れる。まぁ12回だ。我慢してくれ。
これでvlookupの左端の列は作れるから後はなんとかなるだろう
>>913
廿とかな。もうそれは考えないことにした。
これでうまくいけばさ、いいじゃないか。きっとうまくいくよ。信じようぜ。

915 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 17:26:20.90
エラー出たら、そこだけ手打ちします。
ありがとうございました。

916 :名無しさん@そうだ選挙にいこう:2011/03/02(水) 18:12:41.75
閏五月とかあってクソムカつきましたが、
適当にソートができればそこまで正確な日付が必要なわけではないので、
もう366行追加で乗り切りました。

917 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 09:48:24.00
下の表のようにA1からD1のデータを元にE1に式を入力して返させているのですが、
任意の特定のセルが空白の場合、何も返させず空白のままにさせるにはどうしたらいいでしょうか?
例えばB1に何も入力されていなかった場合、
E1のセルに「赤い500円」と返すのではなく、空白のままにしたいのです

  A   B    C  D E
1 赤い リンゴ 100 5 =A1&B1&SUM(C1*D1)&"円"

918 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 10:10:11.26
>>917
IF関数
AND関数、OR関数
=""、<>""、ISBLANK関数

919 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 10:24:28.30
>>917
この文例だとB列が重要なので
=IF(B1="","",A1&B1&SUM(C1*D1)&"円")
とすればよいかと思う。
また、A,Bどちらかの列に空欄がある場合に空欄を返すという場合、
=IF(COUNTBLANK(A1:B1)>=1,"",A1&B1&SUM(C1*D1)&"円")
とか。

920 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 10:42:57.04
>>918>>919
できました。ありがとうございます。

921 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 10:50:01.98
>>917

A,B,C,Dの全てに値が入っている場合に文字列結合、、じゃないのか?

=IF(COUNTA(A1:D1)=4,A1&B1&(C1*D1)&"円","")
 
それから、SUMは必要ないだらう。。。


922 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 12:08:06.00
>>921
それも使えますね。ありがとうございます。
それとSUMは確かに必要ありませんでした。

923 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 13:26:50.71
  A  B  C
1 ○  ○  1  
2 ○     2
3 ○  ○  3
4       4
5 ○  ○  5
6

このように入力されている時
A列のうち○が入力されている行のC列にある数字の合計を求めるにはどうすればいいですか?

この場合A列のA1,A2,A3,A5に○が入力されているので
C1,C2,C3,C5の合計の1+2+3+5=11を求めたいのです

924 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 13:36:33.75
=sumif(A1:A5,"○",C1:C5)

925 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 13:42:08.60
aありがとうございます

926 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 19:12:25.58
3週間分の縦列が用意されていて
ファイルを開いた時に、当日がほぼ中央の位置に
くるような設定はできるのでしょうか。
つまり、それまで入力していた日の分が消え、
新たに新しい曜日分が現れる。
入力は必ず毎日行います。(毎日ファイルは開きます。)

927 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 19:28:55.21
>>926
VBA使えば可能です

具体的には>>3★2に従い割愛します

928 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 19:32:44.84
>926
日付一覧の部分だけなら計算式で可能 
今日の日付を表示したいセルに =TODAY()
前日なら =TODAY()-1、翌日なら =TODAY()+1

それ以外の部分を消したいならVBA必須
http://www.happy2-island.com/excelsmile/smile03/capter00706.shtml

929 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 19:36:20.06

そういえば、テンプレの「★ Excelで出来ないこと」が
2レス分あったのに、だいぶ前から片方貼り忘れたままになってる

次スレ立てる人は、補完よろしく


930 :複乳:2011/03/04(金) 20:12:32.99
>>926
VBAならIA1を選択、ctrl+←、fornextで順に←を選択していき、日付が同じならストップ。
後は必要に応じて←に2.3すすめればよろし

931 :名無しさん@そうだ選挙にいこう:2011/03/04(金) 21:04:58.03
これ↓のことですね>929
5 名前: 名無しさん@そうだ選挙にいこう 投稿日: 2010/05/24(月) 19:42:40
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)

 ▼数式・関数
  ・ 表示形式以外の書式の取得設定、書式情報を条件とする数式 (ユーザー定義関数)
  ・ 関数式でセルの選択状態を取得する (VBA)
  ・ セルの値でパスを補完して、開いてないブックのセルを参照する (VBA)
  ・ 入力したセルに結果を返す (VBA)
  ・ 範囲を引数にしての文字列連結 (ユーザー定義関数)
  ・ 値の書き換え、値の保持 (VBA)
  ・ 複数の結果を抽出、不定な数の結果を返す (VBA、結果の最大数が解っていれば最大数以上の式を論理式で組む)
  ・ 空白のセルの部分を上詰め、左詰めなどで表示する (作業セルを使って別セルに詰めて表示なら可能、それ以外はVBA)
  ・ VLOOKUP,HLOOKUP,MATCH等の関数で、検索語を全半角両方にマッチさせる (ユーザー定義関数)

 ▼VBA
  ・ ExecuteExcel4Macroの参照で空セルと0値を区別する
  ・ セルの値や変数値で直接変数名を指定する (配列、コレクション)
  ・ VBのコントロール配列と同じような操作をしたい
   (イベント以外ならコントロール名を「同名+連番」にしてControls(名前 & インデックス)で処理、イベントはクラスでWithEvents)

 ▼ユーザーフォーム
  ・ フォーム上から変更したプロパティ値の保持 (シートや外部ファイルに書き出して、次回読み込む)

 ▼グラフ
  ・ 棒グラフでひとつだけ突出したデータがあった場合に波線を入れて位置を合わせる
   (オートシェイプなどで見た目だけそうなるように弄る、別アプリでグラフを作り、オブジェクトとして挿入)
  ┌┐
  〜〜
  ||

932 :名無しさん@そうだ選挙にいこう:2011/03/05(土) 00:42:05.59
【1 OSの種類       】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか   .】 いいえ
【4 VBAでの回答の可否 】 可
【5 検索キーワード   】エクセル プルダウン 選択 答え
はじめまして。よろしくおねがいします。
プルダウンを選択して、選択したものによって答えをだしたいです。
※例※
A        B       C         D
カレーライス  福神漬け    食べる      おいしい
カレーライス  アイスクリーム 混ぜる      まずい

というように A列 B列 C列 のプルダウンメニューから項目を選択すると
D列に選択したものによっての答えが出るようなものを作りたいです。

説明へたですいません。よろしくお願いします。

933 :名無しさん@そうだ選挙にいこう:2011/03/05(土) 03:30:42.76
>>932
どの組合せが美味いか不味いかは、味覚の無いPCには自動判断できないし
個々の嗜好もあるので対応表を作るしか無いが、対応表を作った上ではVLOOKUPで出来る

        E               F
カレーライス福神漬け食べる      おいしい
カレーライスアイスクリーム混ぜる     まずい

で、D1に=VLOOKUP(A1&B1&C1,対応表,2,FALSE)

因みに俺はカレーに福神漬けは、乗ってれば食うけど美味しいと思わないから自分では乗せないし
カレーとアイスは、バニラに限って混ぜても美味しいと感じたよ

934 :名無しさん@そうだ選挙にいこう:2011/03/05(土) 08:22:17.89
オートフィルターで代用できるやろ。

935 :名無しさん@そうだ選挙にいこう:2011/03/05(土) 09:13:14.97
>>933
カレーにバニラを混ぜて食べたことがあるんですね??
すごい冒険心だぁ。
カレーと福神漬けはゴールデンカップルですよ!自分はいつもてんこ盛りです。

さて、レスありがとうございます。
やりかたをもう少し詳しく説明していただけると嬉しいです。
対応表ってどういうふうにつくればいいのですか??
別シートを「対応表」という名前にして作成するのでしょうか?
それと(A1&B1&C1,対応表,2,FALSE) ←この部分の「2」という数字は
何のことなのでしょうか??
質問ばかりすいません。よろしくお願いします。
>>934
オートフィルタでやるやりかたを教えていただけると嬉しいです。

936 :名無しさん@そうだ選挙にいこう:2011/03/05(土) 09:28:53.02
>>935
なんでも質問丸投げしないで、ネット繋がってるなら検索したら?
「vlookup」入力すればあっという間に答えが出てくるのに。
京大受験生並みな他力本願は時間もったいないと思う。

937 :名無しさん@そうだ選挙にいこう:2011/03/05(土) 09:36:33.35
>>936
ごめんなさい!!
ネットでしらべてみたら出来ました!
すいませんでした。
そして933さんありがとう。

938 :936:2011/03/05(土) 09:44:54.03
>>937
謝る必要なんて全くないが、素直に受け入れる力と実行する力が
あるんで、物事をすぐ習得できるタイプの方ですね。

こういう人と仕事したいな〜。

939 :名無しさん@そうだ選挙にいこう:2011/03/05(土) 22:17:31.09
すいません。
ExcelのVBAで教えてください。

コントロールのリストBOXに、複数のリスト(1列のみ)が表示されていて、
コマンドボタンを押すことで、これら複数のリストすべてを「Sheet2」のA1セル(以降)に転記したいのですが・・・

下記のように書いてみたのですが、全くダメです。(1つも転記できません。)
アドバイスいただけませんでしょうか。

Private Sub CommandButton2_Click()
Dim i As Integer

With Me.ListBox1
For i = 0 To .ListCount - 1
If .List(i) = True Then
ThisWorkbook.Worksheets("Sheet2").range("A1").Value = .List(i)
End If
Next i
End With
End Sub

940 :名無しさん@そうだ選挙にいこう:2011/03/05(土) 22:29:21.44
>>939
見にくくなっちゃったので、アンダースペース使って書き直してみました。
よろしくお願いします。

Private Sub CommandButton2_Click()
________Dim j As Integer
________With Me.ListBox1
____________For j = 0 To .ListCount - 1
________________If .List(j) = True Then
____________________ThisWorkbook.Worksheets(3).Columns(1).Value = .List(j)
________________End If
____________Next j
________End With
End Sub


941 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 00:05:43.52
>>939
With Me.ListBox1
ThisWorkbook.Worksheets("Sheet2").Range("A1").Resize(.ListCount).Value = .list
End With

でいいんじゃね?

942 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 02:03:26.03
5桁の整数が入っている(例12,345)セルがあり、そのセルの上2桁(例だと12)を同じ場所のセルに表示させるにはどうしたら良いのですか?

943 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 02:53:57.72
>>942
セルの書式設定のユーザ定義で

#,##0,

と打ち込む。

944 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 03:17:06.85
横からすまんけど、そういうことじゃねーだろ

945 :939:2011/03/06(日) 08:57:01.47
>>941
返事のとおりでうまくいきました!できなくて悩んでいたため助かりました。ありがとうございました!


946 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 12:24:01.64
>>942
表示形式のみでは無理。
「#,」で一見うまくいってそうだが、百の位が四捨五入される。
#,[Ctrol] +[J]##0として配置を「折り返して全体を表示する」にすれば
一応それっぽく見える。
ただし行の高さ広くしたりフォントを小さくすると見えてしまうけど。

[Ctrl]+[J]の部分はCtrlキーを押しながらJを押す。

947 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 12:26:23.41
まつがった
#,[Ctrl] +[J]##0


948 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 12:27:32.01
そうじゃなくて表示桁に関わらず上二桁を表示したいってことだろ。俺は分からん

949 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 12:30:29.08
>>943も百の位が死者五入だな。

950 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 12:34:06.65
>>948
ん?
12345→12
987→98
ってことか?
それは同じセルでは無理だなぁ。


951 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 15:25:41.83
文字列にしてセルの幅を2桁分にして右隣のセルを空白にしない、という方法もあるけど
数値のままだとVBAでも使わない限り不可能じゃないか?

952 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 15:27:03.09
書式で下3桁だけ文字の色を白にするとか出来たっけ

953 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 16:25:53.37
おまえら日曜の午後はもっと有意義につかったらどうだ

954 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 16:36:06.15
グリザイアになんで戦場ヶ原さん出てるの?

955 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 16:36:28.55
ゴバクスマン

956 :名無しさん@そうだ選挙にいこう:2011/03/06(日) 20:11:39.79
>>953
エクセルに親しむとか超有意義

957 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 10:00:57.18
>>942 ですが、無理みたいですね・・。
ありがとうござます。
バイトしてるのですが、バイト先にたまたまきてたエリアマネージャーから
これをできるかどうか聞かれて(出来そうな奴がいると店長がいったらしい)
LEFT関数で何とかできるかなと思ったんですが
出来なかったので・・・お聞きしました。(*^_^*)
ありがとうございました



958 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 10:13:53.54
VBA使えない奴には無理です

959 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 12:03:56.10
VBA使ったって、数値データそのままで表示だけ変えるのはけっこう面倒じゃないか?
データを書き換えてもいいなら簡単だけど

960 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 12:21:46.07
>>957
別シート使っていいなら別シートにLEFT関数使って表示し、他のセルはLINK
させてしまえば、体裁は出来た様にはなりますが。

961 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 12:52:19.01
>>957
お前本当に上位2ケタだけ表示したのか?
12→12
345→34
6789→67
23456→23
456789→45
これでいいのか?


962 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 12:59:04.91
>>691
いくらなんでもそんな馬鹿な表示したい奴いねーだろ?

963 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 13:07:53.69
>>962
961だが、俺も案外>>946みたいなことじゃないかと思ってる。

964 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 16:11:26.35
>>961で元の値がいらないというのなら、区切り位置でやるとか。
列削除の作業は入るが。

965 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 20:07:21.89
>>961 のような表示であってます。上2桁です
確かにバカみたいですね…。
聞いた所、渋々500ほどある5桁の整数を1つ1つ直したらしいです。


966 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 20:22:55.36
>>965
お前いい加減にしろよ。
5桁の整数が何で出てくるんだ?
>>961なら5桁だけじゃないだろ?

967 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 20:29:02.93
>>965はもう一度エリアマネージャーにどうしたいか聞いてくるんだな。
多分お前は勘違いしてるから。

968 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 20:56:29.83
1つ1つ直したってことは元のデータを書き換えてもいいって事じゃねーか
そんなもん作業列にLEFT関数書いて値のコピペで一瞬でできる

969 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 21:06:35.92
     ____
     /      \
   /         \
  /   (●) (●)  \  
  |   (トェェェェェェェェイ)   |  クワッ
  \  \ェェェェェ/   /




970 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 21:09:41.83
多分エリアマネージャーの希望は千円単位で表示したいってことだよ。
123456ならおそらく123の筈。

971 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 21:10:52.91
もしや上の方に(千円)って付くようなお話か?

972 :971:2011/03/07(月) 21:12:22.56
>>970
同じこと考えてたな。w

973 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 21:12:49.24
エリアコードと店舗コードなのかも。頭2桁がエリアーコードとか。

974 :名無しさん@そうだ選挙にいこう:2011/03/07(月) 21:56:13.90
意外とエクセルの標準機能で出来ないことって多いもんだな

975 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 00:32:18.50
何もかも出来るようにすると重くなって誰も知らない機能が増えるだけだもんな
使ったことない機能の多い携帯電話みたいにね

976 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 02:15:53.46
俺としてはExcelに標準で備わっているVBAで出来ることまでが
Excelの標準機能だと思ってるが。

外部のWin32APIとかCOMなどまで使ったのは標準機能と言えないけどね。

977 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 02:35:41.70
最初から入ってる物はみんな標準機能
難しいとか高度だとか勝手な判断で線を引くのは自由だが、あるものは使わなきゃ損

※個人の感想です

978 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 03:15:21.59
使うか使わないかって話になればWin32APIやCOM等のAPI類も当たり前に使うけど
いくらWinにExcelインストールすれば最初から使えるAPIでも
そのAPIをExcelの標準機能とは呼べない気がする。

※個人の感想です

979 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 11:30:04.38
標準かどうかの判断は難しいね
たとえばMS-IMEだってExcelとは別の、OSにバンドルされたアプリの一つなんだし、
そうすると標準機能だけでは日本語データの入力すらできなくなってしまう

980 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 13:39:48.93
そもそも言葉がおかしい。
標準機能といったら、普通ににインストすればどのPCでもあるもののことだろう。
ゆえにVBAは標準に含まれ、アドインで提供さそれる機能は外れる。
ここで使うべきは一般機能か否かじゃないか。



981 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 14:33:01.77
【1 OSの種類         .】 WindowsXP SP3
【2 Excelのバージョン   】 Excel2000
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 条件文 

http://www.uproda.net/down/uproda257344.jpg.html
このシートなんですが、R16のセルの計算式を示しています。
内容は補欠の判定をしたいのですが、上の4行分でPのすくない者が次の四行は補欠になるように(1を表示するように)したいです。
Pが同じ合計の場合、着の合計が多い方を補欠に表示したいです。

この条件文では、補欠の者も判定に入ってしまうので、さらなる条件として補欠は除きたいです。

仲間内の競馬の成績をつけているというっちっぽけな内容ですがご教授願います。

982 :複乳:2011/03/08(火) 16:07:46.88
>>981
http://www1.axfc.net/uploader/Img/so/109981.jpg
こんな感じ

983 :複乳:2011/03/08(火) 16:08:12.10
あー、だめだ着の事考えてなかった。

984 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 16:27:49.24
>>983
ありがとうございます。
そうなんです。Pが同じのが他に居た場合さらに着の合計の大きい方に絞り込みたいんです。
さらに問題は前回の補欠は考慮しないので、そこらへんの条件文が思いつきません。

985 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 16:36:38.26
>>981
とりあえずSUMの嵐をやめようよ
15行目の下に行挿入して、そこにSUMを出しておき
R17(元R16)の計算式では既に出してある合計値を参照する
最終的にはその行を非表示にしてもいいからさ

あとそのブック有った方が式組みやすいからブックうpして

986 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 17:03:47.28
>>985
行の非表示ですか。考えてなかったです。
ブック、アップします。お願いします。

http://www1.axfc.net/uploader/File/so/59563.xls

987 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 17:19:12.70
>>985
アップローダ使ったことないんでいまいちわかりませんけどこちらのアドレスでしょうか。。
よろしくお願いします。
http://www1.axfc.net/uploader/File/so/59563

988 :複乳:2011/03/08(火) 18:21:19.82
>>981
R16=IF(SUM(S12:S15)+SUM(O12:O15)/1000=MIN(SUM($L12:$L15)+SUM($H12:$H15)/1000,
SUM($S12:$S15)+SUM($O12:$O15)/1000,SUM($Z12:$Z15)+SUM($V12:$V15)/1000,SUM($AG12:$AG15)+SUM($AC12:$AC15)/1000,SUM($AN12:$AN15)+SUM($AJ12:$AJ15)/1000,SUM($AU12:$AU15)+SUM($AQ12:$AQ15)/1000),1,0)
Pと着*1/1000を足したものをそれぞれmin関数で比べて、上のP+着*1/1000が一番少なければ1
合計だした方がいいけど、もうどっちでもいいや

989 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 18:39:00.33
>>981

ほい
ttp://www1.axfc.net/uploader/File/so/59567.xls

考え方としては、

前補欠 × 100   前が補欠なら100、補欠でなければ0
 +
Pの合計
 −
着の合計 ÷ 100  着の合計が20なら0.2、15なら0.15

の一番小さい奴が補欠

前補欠は100が加算されているから「一番小さい奴」に該当することは無い

Pの合計の一番少ない奴が2名で、それぞれPが3、着の合計が20と15なら
3-0.20=2.8 と 3-0.15=2.85 というように着の合計が多い奴の方が
大きい値を引かれることになるから「一番小さい奴」に該当することになる

Pの合計や着の合計が100以上に成りうるなら、100倍や100分の1ではなく1000を単位にしてね

990 :複乳:2011/03/08(火) 18:57:29.83
>>989
404 Not Found
ファイルが見つかりません

991 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 19:03:22.65

おっと失礼
http://www1.axfc.net/uploader/File/so/59569.xls

あと、DLパス(キーワード)も書き忘れてた:2011


992 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 19:21:59.66
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 VLOOKUP、IFなどの関数

こんばんは質問させてください。

ある表の値を見て一覧表の値と一致していたら項目名を取って、ある表の横に貼り付けて行くと言う動作を自動化したいと思っています。
最初は、VLOOKUPで可能かと思ったのですが、値に重複があるため、上手く検索が出来ません。

どうすれば、自動化出来るのでしょうか?
分かる方がいらっしゃいましたら回答をお願い致します。


ttp://hccweb5.bai.ne.jp/~hee54201/source/up0466.xls

993 :複乳:2011/03/08(火) 20:06:05.91
>>992
http://www1.axfc.net/uploader/Img/so/110009.jpg
こういう表にすれば、後はオートフィルで抽出、コピーペーストで行列を入れ替えを使えば簡単に終わるんだけどねぇ
ちょっと違うけど正規化という概念だね
これが無理なら、vbaしか無い。多分、vbaを覚えたほうが早い


994 :複乳:2011/03/08(火) 20:10:04.93
Excel総合相談所 96
http://hibari.2ch.net/test/read.cgi/bsoft/1299582492/
次スレ立てておいた
今気づいたけどテンプレ改訂なんてあったのか
どうでもいいけどな。どうせ誰もみてないしな

995 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 20:24:32.00
複乳が作った表ならなんとかなりそう。>>992の表は無意味に難しくしている

996 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 20:24:41.97
最近複乳がまともになってきたんだがどうしちゃったんだろ?
以前はアホ回答ばっかだったような記憶が強いよなぁ。

997 :複乳:2011/03/08(火) 20:33:34.12
>>996
転職活動はじめたんだ。こういうところにも影響するのか・・?
まぁ、質問者の役に立てば、それでよい。

998 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 20:57:07.92
>>994
乙 うめ

999 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 21:24:44.49
>>989
前スレッド981の者です。
ぬおー、補欠100倍ナイスです。更なる条件式ばかり考えてました。
本当に助かりました。感謝しておおります。ありがとうございました。
きよっちゃんの成績は気にしないでください。

1000 :名無しさん@そうだ選挙にいこう:2011/03/08(火) 21:36:24.05
1000なら就職できる

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

341 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)