Excel使い方Excelマニュアルをお探しの方へ。Excelって難しいですね。Excelは特に初心者の方にわかりやすく解説してくれるマニュアルが必要だと思います。できればExcelの操作、Excelの講習、Excelの講座、Excel入門、Excelの教室 学校 スクール 講習会の情報も欲しい。わかります、その気持ち。Excel初心者にはなかなか独学でマスターするの難しいですから。このサイトはそんな方々へExcelの使い方、Excelのマニュアル、Excelの操作、Excelの講習、Excelの講座、Excel入門、Excelの教室 学校 スクール 講習会 情報を探すのにお役立てれば光栄です。
日本人男性の、約6割が悩んでます。それは・・・←クリック!
日本人女性の、約8割が悩んでます。それは・・・←クリック!
必見!おトクなバーゲン情報が満載です!!・・・←クリック!
激安格安ノートパソコン比較情報リンク集・・・←クリック!
★Excel 検索はこちら!★
TopExcel 使い方 >Excel総合相談所 98

Excel総合相談所 98

1 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/09(火) 22:32:21.92
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★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総合相談所 97
http://hibari.2ch.net/test/read.cgi/bsoft/1304307841/


2 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/09(火) 22:32:38.72
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
・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 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/09(火) 22:32:48.67
★ルールを無視すると…
 >>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 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/09(火) 22:33:04.20
★ 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 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/09(火) 22:33:14.82
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。
間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。
Excel2010についても未確認な項目が多いので変更点が有ればご指摘下さい。

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

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

以上でテンプレ終わり (Excel総合相談所 94からコピペ、一部改定)。
6 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/10(水) 14:05:44.15
ここの回答者ってほんとに頭いいですよね

7 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/10(水) 19:38:09.92
はい

8 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/10(水) 20:52:14.25
>>6
はい。私以外は皆、頭の良い方達ばかりです。

9 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/11(木) 10:38:07.05
excel2003に「Microsoft数式3.0」をアドオンして使っています。
数式を表示させるため、同アドオンのオブジェクトを挿入しました。
で数式を書いて表示しました。

ここまではOKなのですが、Excel上でオブジェクトのサイズを広げてしまうと、それに併せてストレッチされてしまいます。
例えば縦に伸ばすとそのまんま、縦長になります。香港映画ですよ。

縦横比が狂うと、∫が全部違った角度で寝てしまいます。

オブジェクトのサイズを広げても一定のフォントサイズで綺麗に書かれていてほしいのですが、どうすればよいのでしょうか?
(Excelワークシート上でオブジェクトをリサイズするのが御法度なの?)

10 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 11:10:52.03
オートシェイプのサイズを変更したくない
http://www.relief.jp/itnote/archives/000480.php

11 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 11:15:10.13
【1 OSの種類         .】 Windows Vista
【2 Excelのバージョン   】 Excel 2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 (excel 入力 ジャンプ先) (excel 入力 enter 位置)

ttp://muryoudeai.sumomo.ne.jp/up/src/up1439.jpg
上記画像のように、
Aでenterを押すとBに入力位置が常に自動で移動する方法は
ないでしょうか?
あらかじめctrlでセル選択やジャンプのダイアログではなく、入力するべき欄の
末尾でエンターを押すと、次の入力するべき欄の先頭へ常に自動で
移動するようにしたいのです。
マクロで実現しているのは見かけましたが、当方、教える相手先ともに
マクロは使えないのでできればマクロなしでお願いします。

12 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 14:12:56.55
>>11
簡易に [Ctrl] + 左クリックで、入力したい範囲を指定(反転)させておく
  または
様式が決まっているなら、入力範囲のロックを外してして、シート保護をかける。

13 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 15:30:26.62
>>12
ありがとうございます

>入力範囲のロックを外してして、シート保護をかける。
これでTABキーで入力したい位置にだけ移動は
できるようですが、
入力欄末尾でenterを押すと次の入力欄の先頭に行く
という風にする方法はないのでしょうか?

14 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 16:24:50.55
>>10
ありがとうございます。

どうやらオブジェクトのサイズを変更したりせず、
しかもオブジェクトをダブルクリックして編集するのではなく、
右クリックでコンテキストメニューから「開く」とやって、
専用の数式エディタを起動した後、メニューから「Excelに戻る」みたいなヤツを選んで抜けると
正しいサイズで描画してくれるようです。

ゴミか。。どうしてマイクロソフトの技術はいつもそんなんばかりなんだ

15 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 16:59:56.14
Aファイルのシート1のセルデータを
Bファイルのシート1の元からあるセルデータの末端から
結合して貼り付けるには、どのようなVBAのコードをかけばよいでしょうか?
データはstring型です。

2003です。

16 名前:複乳[] 投稿日:2011/08/11(木) 18:04:04.88
>>15
開始も終了もよく分からないし、最初から末端かけてどういう順序かもわからない
まー大体は
dim 文字列 as string
最後 = ctrl+↑
for 1= to 最後
文字列 = 文字列 & cells(i,1).value
みたいな感じ

17 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 18:14:26.62
>>16
あ、そんな感じでおkです。
セルへの文字列結合の数式が分からなかったので・・・
&でいいのですねー ありがとうございます

18 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 20:47:15.23
僕の家のPCに入っているのはoffice2003なのですが
友だちが使っている2010を使いたいです

友だちのoffice2010のデータをコピーなどで入れることはできないでしょうか?

19 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 21:04:22.90
>>18
無理です。買ってね(`・ω・´)

20 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 21:40:12.30
A列に上から「田中・田中・鈴木・鈴木・伊藤・伊藤」と並んでいるとします。
このA列を利用して、別のセルに「田中・鈴木・伊藤」と3つのプルダウンメニューから選べる方法はありますか?

名前はよく追加されるので(佐藤が追加される。伊藤がなくなるなど)
リストを作らずにA列参照にて出来る方法があればと思っています。

EXCEL2003です。


21 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 21:53:00.61
>>19
そうですか
ありがとうございました

22 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 21:57:23.01
>>18
大学生だったら自分の通っている大学がMSキャンパスアグリーメント
という包括契約をMSと結んでいるかどうか調べるといいよ。そこの
大学生ならOfficeは無償で出来るはず。

23 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 22:08:38.81
>>20
作業列を使うなら、
どっかの列(この場合B列)に、
=INDEX(A:A,SMALL(IF(MATCH($A$1:$A$20&"",$A$1:$A$20&"",0)=ROW($A$1:$A$20),ROW($A$1:$A$20),10^3),ROW(A1)))&""
と入力して、式を編集状態の時に、CTRL+SHIFT+ENTERで確定させる
(式の前後に { } がつく)
適当に下までずるずるっとコピー

リストは
=OFFSET(B1,0,0,COUNTIF(B:B,"?*"))
こんな感じで指定

24 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 22:11:01.37
あ、元の列の途中に空白が出来るとうまく行かないよ

25 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 23:29:21.65
Excel2007から様々な仕様が変更されたのはわかっていましたが,
2007と2010の違いに悩まされています。
関数が少し増えたのと,UIが多少変わったぐらいと考えていたのですが・・・

2010で作った条件書式を使ったファイルを2007で開くと,意図したようになりません。
2010と2007の挙動の違いについて,まとめてあるサイトなど教えていただけないでしょうか?

26 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/11(木) 23:36:50.09
>>25
http://officetanaka.net/excel/excel2010/016.htm

27 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/12(金) 15:12:12.38
EXCEL2010でガントチャートをシェイプで作成したけど、そのシートをコピーしたらシェイプが全くコピーされない謎現象が発生しました。
こんな現象聞いたことありますか?

28 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/12(金) 21:13:10.30
はい。あります。

29 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/12(金) 21:59:22.33
rank関数で出した順位を☆で表示させたいと思い
countif関数で出来そうと試したのけれど失敗しました
分かる方お願いします

178pt 1位 ☆☆☆☆☆
163pt 2位 ☆☆☆☆
145pt 3位 ☆☆☆
120pt 4位 ☆☆
107pt 5位 ☆

こういう感じです。ソフトはExcel2007です。
お願いします。

30 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/12(金) 22:03:36.06
>>29
よく分からないのですが、1位は必ず☆が5個とか決まってるの?
であれば、b1に1と入っているとすると
=REPT("☆",6-B1)

だけど、たぶん違うんだろうなあ

31 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/12(金) 22:11:38.58
>>30
素早い返信に感謝です。
教えて頂いたREPT関数で思い描いていたことが出来そうです。

上記に出した参考例では5人の中でという前提なので☆5個表示でよかったです。
実際は仲間内6人でポイントを競うゲームをしているので1位は☆6個表示になりますが(笑

まだまだ勉強が足りませんでした。ありがとうございました。

32 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/13(土) 00:33:39.44
>>29
対象数が可変する場合の式
=IF(B1="","",REPT("☆",SUM(COUNTA(B:B)+1)-LEFT(B1,LEN(B1)-1)))

※ >>30さんの式を参考にさせていただきました。

33 名前:29[] 投稿日:2011/08/13(土) 19:43:16.49
>>32
帰省中で今すぐには確認できないのですが
後学のため提示頂いた方法は試してみます
ありがとうございました

34 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/13(土) 21:17:57.91
一日一回計測した数値データが数年分あり、これを折れ線グラフにしたいと
思っています。ただし計測をしていなかった日が不定期にあるので、そのまま
折れ線グラフにしてしまうとグラフの傾斜の意味が時期によって異なってしま
います。

これを週平均データとすることで傾斜の意味は一定になると思うのですが(平均
算出のためのケース数が異なることには目を瞑るとして)どのようにすれば効率
的に日データを週平均データとすることが出来るのでしょうか?

ExcelはMac, Winの2004以降の各版があります。
よろしくお願いします。

35 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/13(土) 21:41:24.97
>34
日付データから 年 と その日がその年の第何週目にあたるか を作業列に出して、
ピボットテーブルで週毎の平均だしたらどうですか?
日付データがA列、数値データがB列にあるとして、作業列に=Year(A1)*100+Weeknum(A1)で
6桁の数字が出ます。

36 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/13(土) 22:34:28.24
>>35
早速のご教示ありがとうございます。恥ずかしながらWeeknum関数という便利なものが
あるのを知りませんでした。昔の版でも分析ツールを入れることで動作いたしました。


37 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/14(日) 17:30:39.14
>>34
考えた方法でもいいでしょうけど、
折れ線じゃなくて、散布図で観測された点をつなぐんじゃだめなの?


38 名前:34[sage] 投稿日:2011/08/14(日) 18:02:20.68
>>37
ご教示ありがとうございます。散布図試してみました。これだと横軸=日付の時、観測実施日の
疎密に横軸の間隔が影響されないのですね。勉強になりました。




39 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/14(日) 19:56:32.11
XP、Excel2003使用。
一つのセル内に時間(hh/mm/ss,0)を表す数値が入っていたとします。
00 01 20 160

これを

00:01:20,160

こんなふうにして数字の空白に記号を追加することは可能ですか?
セルの書式設定をしようにもイマイチうまくいきませんでした。
どなたかお知恵を…。


40 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/14(日) 20:28:46.53
>>39
エディタと併用した方が簡単かと思います。
問題となっている列だけを例えば秀丸に書き出します。

置換で正規表現をチェックし次のようにします。spaceは実際にスペースをうちます。

検索:^(..)space(..)space(..)space(...)
置換:¥1:¥2:¥3,¥4

うまく置き換わったら、これをエクセルに読み戻せばいいはずです。

41 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/14(日) 20:56:21.81
>39
>ss,0
ss.000じゃなくて?

42 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/14(日) 20:59:43.64
>>39
2桁(スペース)2桁(スペース)2桁(スペース)3桁

↑絶対にこのリズムが守られているんであれば、一旦数値を4つのセルに分解して、
記号を追加した上で一つのセルに集合させることもできるけど…

43 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/14(日) 21:15:14.68
"160"の手前の文字がコンマじゃなくて小数点なら時間として認識したんだけど↓
A1セル 00 01 20 160
A2セル =MID(A1,1,8)&"."&MID(A1,10,3)
A3セル =SUBSTITUTE(A2," ",":")*1

44 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/14(日) 21:40:55.02
>>39
【A】 時、分、秒、ミリ秒をそれぞれ切り出して、シリアル値に変換する方法
=TIME(LEFT(A1,2),MID(A1,4,2),MID(A1,7,2))+(RIGHT(A1,3)/24/60/60/1000)

 (TIME関数の第三引数に小数を渡してもミリ秒として扱われないので、ミリ秒は算術演算でシリアル値化する)


【B】 「時:分:秒.ミリ秒」形式の文字列を作って、シリアル値に変換する方法
=TIMEVALUE(SUBSTITUTE(LEFT(A1,8)," ",":")&"."&RIGHT(A1,3))

 (シリアル値への変換は、*1などの無意味な算術演算をする方法もあるが、可読性が落ちるのでTIMEVALUE使った方が良い)


「0 1 20 60」を「00:01:20.060」にしたいとかなら、正規表現でも一発では対応出来ない(ミリ秒部が0.060秒ではなく0.600秒扱いになる)ので
正規表現2段重ねかVBAってことになるが、わざわざ「00」「01」と表記してるってことは、各位の桁数というか文字数は揃ってるのだろうから
それならわざわざ外部エディタで正規表現使うまでもない

因みにミリ秒の区切り文字は「,」ではなく「.」が正解ね
文字列として表示だけ整えば良いなら「,」で表示することも可能だが、日時データとしたいなら「.」を使うこと

45 名前:43[sage] 投稿日:2011/08/14(日) 21:58:21.37
>>44が最も合理的な回答で自分の書き込みが恥ずかしい・・

46 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/15(月) 12:58:14.27
文字列0のセルを、空白と認識させる方法はありますか?




47 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/15(月) 13:01:11.28
>>46
ケースによる。

48 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/15(月) 13:42:10.01
>>39です。
>>44が最も合理的とのことですが、浅学のためシリアル値という単語も
timevalueという関数も初めてだったので、自分の頭では
>>43のやり方のほうが理解しやすかったようです。
いずれにせよ、皆さま教えて下さってありがとうございました。
ここには天才がたくさんいらっしゃるんですね…。

もう一つだけ、あとでまた質問するかもしれません。


49 名前:46です[sage] 投稿日:2011/08/15(月) 17:42:57.82
>>47

データの入力規則→入力値の種類→リスト
(空白を無視する、ドロップダウンリストから選択))
としていて、元の値にif関数で作った””(文字列ゼロの空白)があって
それが空白として無視されないのですが

50 名前:複乳[] 投稿日:2011/08/15(月) 17:47:09.32
>>49
エクセルの仕様です
""は、文字列0のセルではない別の何かと認識されます
>>49さんの場合、文字列0は恐らく未使用セルと置き換えたほうが良いでしょぅ

その条件でリストを作るなら作業列に、空きセルのない自作リストを作ると良いと思います
もしくはvba

51 名前:46です[sage] 投稿日:2011/08/15(月) 17:59:05.49
>>50
迅速な回答ありがとうございます!!
やっぱり仕様ですか・・・

""を未使用セルに置き換えたんですが
そしたら空白じゃなくて「0」になってしまいます・・・

52 名前:複乳[] 投稿日:2011/08/15(月) 18:17:52.44
>>51
エクセルの仕様です。
未使用セルは文字列0、数値も0という前提で計算やら何やらされます(エラー値は別です)
式も入ってない未使用セルならisblankでTRUEが帰りますが・・・

式が入ってるセルに、isblankは通用しません

仮にそのifの式の戻り値を"hoge"として、
=COUNTIF(A:A,"hoge")
とかするしかないですねー

53 名前:46です[sage] 投稿日:2011/08/15(月) 21:21:56.87
>>52
結局自作リストにしました
お世話になりました

54 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/15(月) 22:44:34.41
つーか、「空白を無視する」の意味を勘違いしてないか?

なんか

1|AAA
2|BBB
3|
4|CCC
5|DDD
6|
7|EEE

というソースから

3行目、6行目を無視して

[    ]▼]
 AAA
 BBB
 CCC
 DDD
 EEE

というリストを作りたがってるように見えるけど、「空白を無視する」ってのはそういう意味じゃないぞ
たとえ完全な空白(Empty)にしても、こうはならない

「リスト」以外の入力規則でも、この「空白を無視する」ってオプションがあるのを見れば解るとおり
これはリスト表示を行う上でのオプションではなく、入力規則全体の、入力制限上のオプション

リストの使い方で言えば、通常、入力規則のリストを設定したセルには、リストにあるものしか選択出来ず
任意の入力は出来ないが、このオプションを使うとリストからの選択も、任意の入力も出来るセルを作れる
コンボボックスで言うところの、ドロップダウンリストとドロップダウンコンボの違いみたいなものだ

55 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/15(月) 22:45:07.97
因みに
> ""は、文字列0のセルではない別の何かと認識されます
は間違い
""は文字列(長)0のセルと認識される
ただ、文字列(長)0のセルは、Blankと認識されないだけ

VBAで言うと、Emptyは数値にすれば0で、文字列にすれば""で、論理値にすれがFalseだが
0も""もFalseもEmptyそのものではなく、EmptyでなければBlankではないってことだ

ということで
> 未使用セルは文字列0、数値も0
も間違い

未使用セルはEmptyで、Emptyを文字列にすると文字列長0の値になり、数値にすると0という値になるだけで
未使用セルが文字列長0の値や、0という数値を最初から持っているわけではない

56 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/16(火) 02:53:14.91
【1 OSの種類         .】 Windows7 pro 64bit
【2 Excelのバージョン   】 Excel07
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】「VBA セル 入力」など

VBAを使用して、特定のセルに関数を入力したいです。
その際、引数の一部に、VBAで取得した変数を利用したく、

Sub tes()
Dim a As String
Dim b As String
a = InputBox("url")
b = "http://www." & a & ".co.jp"
Cells(1, 1) = "=hyperlink(" & b & ")"
End Sub

のようなコードを組んだのですが、実行時エラー1004のエラーが出ます。
エラー名でググっても解決方法が出ないのでお手上げ状態なのですが、
引数に変数を利用した関数を入れることはできないのでしょうか?

57 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/16(火) 03:16:53.66
>>56
Excel07 で動くかどうかはしらんよ(笑)

Cells(1, 1).Formula = "=hyperlink(""" & b & """)"

58 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/16(火) 12:55:56.75
>>57
できました。ありがとうございます。

office tanakaのダブルコーテーションのtips読んでもあまり理解できないのですが、
両端の"で文字列と認識させて、中の"""ではさむと、エスケープできるってことで良いのでしょうか?

59 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/16(火) 13:26:38.10
【1】Windows7
【2】Excel2007
【4】VBA不可

PHONETIC関数で表示される ふりがな をまとめて編集したい

A列:漢字の名前データ
B列:ひらがなの名前データ

データは多数あり、A列とB列の対応は取れています。
B列のデータをA列の名前の「ふりがなデータ」として一気に流し込むようなことは可能でしょうか?

やはり全部手打ちで入れるか、「ふりがなの表示」から編集するしかないでしょうか?

60 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/16(火) 13:55:28.02
>>58
ちょっと違うような
 >両端の " で文字列と認識させて、中の"""ではさむと、エスケープできる
ぢゃなくて
 >両端の " で文字列と認識させて、中の"" が 文字 " として認識される
だよ
文字列記述  "=hyperlink(""" は
文字列として =hyperlink(" を表している

61 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/16(火) 14:25:32.43
>>59
VBA使えばどうにでもなるけど、VBA無しだと最後の1行のようにやるしかない

62 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/16(火) 20:53:35.90
>>61
質問者じゃないんですが、VBAだとどうなるのか教えてください。

63 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/16(火) 21:12:38.08
>>61 どうも。りょうかいです

64 名前:複乳[] 投稿日:2011/08/17(水) 00:06:44.58
>>62
ttp://www.moug.net/tech/exvba/0050115.htm

65 名前:62[sage] 投稿日:2011/08/17(水) 01:00:17.45
>>64
ありがとうございます。このサイト知りませんでした。

66 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/17(水) 19:47:50.87
質問です
G5セルが○の時A5~G5セルに色をつける、というのを条件付書式でやったのですが、
これをA500~G500セルまでする方法はありますか?
そのまま下げてくとA5~G5の文章が下がっちゃって;;

67 名前: 忍法帖【Lv=29,xxxPT】 【中部電 79.0 %】 [sage] 投稿日:2011/08/17(水) 20:21:48.79
>>66
A5:G5を選択したらG5セル右下の罫線位置にある黒十字をクリックしながらG500セルまで下げるとか。

68 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/17(水) 20:37:59.30
それだと入力してある文字が下がっちゃって・・・

69 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/17(水) 20:41:25.41
XP 2003
横棒グラフについて

牛丼  12
天丼.   7
親子丼. 6
中華丼. 2
その他. 4

上記のような表があったとして、これで横棒グラフを作った場合、
どうしても「その他」が一番上に来る仕上がりになってしまいます。
しかも他のグラフと違って順番の入れ替えができず…

表とグラフを一緒に印刷したいので、縦の並び順が同じになるのが希望です。
今はグラフ用に順番を逆にした表を用意して、その表は非表示にした上で印刷しています。
毎回のことで面倒なので、一つの表で表と同じ並び順の横棒グラフを作成する方法が
ありましたら是非アドバイスをお願いします。

70 名前: 忍法帖【Lv=29,xxxPT】 【中部電 79.0 %】 [sage] 投稿日:2011/08/17(水) 20:46:03.94
>>68
じゃあ、先に入力されている文字をどこかに避難(コピペorカット&ペースト)しておけばいいんじゃないかな?

71 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/17(水) 20:48:30.37
>>69
http://azby.fmworld.net/usage/windows_tips/20081217/

72 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/17(水) 21:07:24.29
>>70
出来ました!ありがとうございます

73 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/17(水) 23:23:52.89
書式コピーじゃダメだったん?

74 名前:69[sage] 投稿日:2011/08/17(水) 23:51:18.27
>>71
うおおおお!出来た、すげええええ!
ありがとう!

75 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 11:05:51.42
>>71の解説作ってる奴も、表題と冒頭の解説見る限り同じような勘違いをしてるけど、
縦棒グラフの縦軸だと、縦軸のデータを下から積み上げるのが正順で、上から吊り下がるのが反転状態だと見るのに
横棒グラフの縦軸だと、縦軸のデータを下から積み上げるのが逆順だと勘違いする奴がたまにいるんだよな

>>69のデータに対して

その他. |]]]]
中華丼. |]]
親子丼. |]]]]]]
天丼.   |]]]]]]]
牛丼.   |]]]]]]]]]]]]

というグラフは、間違いなく「表と同じ並び順」であって、間違っても逆順じゃない

小学校で習うが、棒グラフの基点は縦横基準軸の交差するところで、標準的には左下になるから
その基点から1番目に1件目のデータ、2番目に2件目のデータと「表と同じ並び順」に並べれば、
上記のグラフのようになる

Excelで横棒グラフの基点を左下ではなく左上にしたいと言うならまだしも
縦軸の並びが逆になるからデータと同じ順に直したいとか言い出す奴が出る度に、
「こいつは算数レベルの理解すら出来てないんだなぁ」と思わずにはいられない

76 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 11:23:29.56
ある列全体のセル要素に、シングルコーテーションで囲うのを一気にやりたいのですが、
何か機能的なもので簡単にできますか?

77 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 11:30:56.57
=CONCATENATE("'",a1,"'")

78 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 11:38:52.76
>>77
サンクス!

79 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 12:25:00.77
="'"&a1&"'"

80 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/18(木) 18:46:14.78
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 excel 2010 オブジェクトの位置またはサイズが変更されます

元はexcel2003で作成したブックを2010で使用していたところ、
セルを選択したり、スクロールしたとたんに「オブジェクトの位置またはサイズが変更されます」というダイアログが延々と出続けます。
シート上にはオブジェクトはありません。
OKしか押せない上、×で閉じてもいつまでも出てきます。
どうしようもなく強制終了しています、対策はないのでしょうか。

81 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 19:16:02.78
Excelの使い方を説明する書類を作りたいのですが、参考書にあるようなワークシートやツールバー等のExcelの画面は、どうすればwordに使用できますか?

最近一般の方のHPでも、初心者向けにわかりやすくツール→データを開いた項目が掲載されていますよね。文章のみの説明より実際の画像があればわかりやすくなるので、どなたかアドバイスお願いします。

82 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 19:16:36.80
2つファイルを開かせて、前者のデータを後者のデータにデータを流し込む
作業をしたいのですが、マクロでどのように作ればよいでしょうか?
問題点は、ファイルによって読みだし箇所、書き出し箇所が違います。(読み込み開始の行・列・シート)

[1] 読み出し用ファイルの見出し開始列をユーザが選ぶ。(見出しのある所が1行目と限らないので)
[2]選んだ、もしくは入力した列から最大列を読み込む。
例:見出し開始は、A3だとする。 そこからA3「氏名」 B3「電話番号」 C3「クラス」のように見出しをプログラムがかき集める
[3]それぞれの見出しの内容を、2つめのファイルのどこに書きだすか聞く
  例:1つめのファイルの「氏名」は2つめのファイルのどのシートのどこに書き出しますか?→入力例:シート名を選んだあと「A1」
    上の処理が終わったら、「電話番号」はどのシートのどこに書き出しますか?→シート名を選んだあと「A1」 (ファイルの選択は1度やっているので再度は聴かない)
[4]見出しから一行下にデータが続くのは共通なので、そこから最下部までのデータを流しこんでいく

エクセルは2003です。
ちょっと上の方法しか思いつかないので、他に良い方法があればよいのですが・・・。

83 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 19:36:53.66
>>81
PrintScreen

84 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 19:37:46.50
>>81
それはwordスレで聞いたほうがいいんじゃないかい。

85 名前:複乳[] 投稿日:2011/08/18(木) 19:55:00.98
>>80
コメントを削除するか、オートフィルタを外すか

2010で新しいブックを作って、全シートをコピーするとか
それで無理なら一個ずつコピーするか

イマイチ解決方法が見当たらないね

86 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 21:25:50.84
質問です
Aの1〜30までに空白or文字が入ってます
文字の入っているセルの合計をA31に出すにはどのような方法が簡単でしょうか?

87 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 21:28:33.70
>>86
=COUNTA(A1:A30)

88 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 21:31:36.68
>>87
それでよかったんですね、ありがとうございます

89 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 22:59:32.96
>81
>83さんのPrintScreenで画面イメージを一時的にコピーしたあと
ペイントに貼り付けて、不要な部分を消したり説明書に必要な範囲を選択して
Wordに貼り付けです。
ただし、マウスカーソル(エクセルだと白くて太い十字、黒くて細い十字、メニュー
から選択してるときの矢印など)は、PrintScreenでは取得できないので、自分で
工夫してください。これ以上のことはWord相談スレにてどうぞ。

90 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/18(木) 23:11:48.97
>82
Q1 列の見出しの文字列は毎回決まっているんですか?
   例:氏名、電話番号、クラス・・・というキーワードは毎回固定?

Q2 入力側のブック・シートと出力側のブック・シートとで、見出しの文字列は完全に同一ですか?
   例:入力側は 氏名 になってるけど、出力側は 名前 なんてことはない?

91 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 07:22:26.34
>>90
レスありがとうございます。たいへん悩んでいるところです・・・

Q1・・・厳密には、いろんなフォーマットから集計を取る作業と、
集計を取ったDBから、様々なフォーマットへ登録する作業があるのです。
基幹となる統一のDBの見出し文字列は、常に同じです。

(例)集計: [A社フォーマット内容]→[社内DB] 登録:[社内DB]→[B社フォーマット]

各社フォーマットは見出しの位置が違うため、どのフォーマットで合っても
どこに見出しがあるか一旦読みだしてから(ユーザに聞いてから)の形式がよいかなーと・・・

Q2・・・上記のことがあるので、一致していません。例を書いていただいたような状態がよくあります^^;
  そのため、エクスポート時にどの列・行に書きだすか、いちいち聞かないといけないのかなと思います。
(ただし、各社フォーマットも毎度仕様が変わるわけではないので、何らかの方法で出力先ポジションを保存できればよいですが・・・)

92 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 09:41:31.05
>>91
日本語(自然言語)がまともに出来ない奴に
VBA(プログラム言語)は無理だぞ

まずは、自然言語で理路整然とした文章を書けるようになろう

93 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 14:57:37.89
>>92
すんません・・・
フォーマットが違う物同士を、指定した箇所(行・列)にエクスポートできるようなものがほしいのですが・・・

94 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 15:19:13.73
>>93
データの要素は氏名、電話番号、クラスの3つでいいの?

95 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 15:48:11.18
>>94
収集用のデータ要素は、かなりあります。
新しいものを扱うタイミングで、要素が追加になることもあります。
ついでに、エクスポート先のフォーマット次第では、
要素の一部を別のシートへ入れ込んだりもします。

両者一覧化した状態で、ユーザに紐付けさせてからインポート・エクスポートを動的に行う必要があるのでは・・・と思っています。

96 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 17:58:49.47
>>85
ありがとうです
やはりいい解決法は無いみたいですね。

バグっぽい意見もあったようなので、修正アップデートまちます。

97 名前:90[sage] 投稿日:2011/08/19(金) 18:37:46.47
>82,95
入力側と出力側で「項目見出しの文字列」が一致しない場合があるのであれば、
別のシートで対応付けさせる必要がありますね。
>エクスポート先のフォーマット次第では、 要素の一部を別のシートへ入れ込んだりもします
ここまでくると具体例を(データは架空のものとして)画面イメージをどこかのアプロダに示して
もらわないと無理なんじゃないかなあ。

念のため確認しますが、入力側の項目見出しと出力側のそれは、1対多ですか?それとも
多対多ですか?

1対多 とは:入力側は 氏名、電話番号、クラス・・・であるが、出力側は
         「氏名」に対応する部分が氏名、名前、氏名(漢字)・・・
         「電話番号」に対応する部分が電話番号、TEL、Tel・・・

多対多 とは:入力側も「氏名」だったり「名前」だったりバラバラ
          

98 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 19:20:54.23
>>97
うまく説明できずにすいません・・・

■統一用 
※こちらは、項目は変更ありません。

[A1:氏名][B1:電話番号][C1:クラス][D1:出席番号]・・・

■色んなフォーマットDB
※フォーマットの一例

[A3:名前][B3:組名][C3:TEL][D3:成績]

この場合、成績の列は統一用の要素に必要ないので、A3〜C3を、それぞれインポートしたいです。
例 他[A3:名前]→統[B3:組名]

色んなフォーマット側から統一用へ流すときもあります。(過去入力分の集計のため。)
なので、汎用的にデータを相互移動できる仕組みに捉えたほうがいいかもしれません。
(色んなフォーマットには、シートが2あったりするときもあります。)
フォーマットによって見出しの開始位置も違いますので、そのせいで一回見出しをユーザに選んでもらおうかと・・・

99 名前:90,97[sage] 投稿日:2011/08/19(金) 19:34:56.37
>82,95 いくつか質問です。
集計: [A社フォーマット内容]→[社内DB] の部分と
登録:[社内DB]→[B社フォーマット] の部分のそれぞれの処理が必要、ということですか?

それと、[社内DB]における項目数(列の数)は実際にどれだけありますか?
また、集計の方の入力側のフォーマットは何パターンぐらいありますか? 実際にデータがきてからでないとわかりませんか?
同じように、登録の方の出力側のフォーマットは何パターンぐらいありますか? 実際にデータをつくるときでないとわかりませんか?

>82の[3]を見て疑問に思ったのは、出力側シートにはあらかじめ項目見出しがなく、操作する人が
「この項目は○列」って個別に指定しなきゃならないんですか?(出力シートの1行目からデータだけ?)

100 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 19:51:37.04
>>99
>それぞれの処理が必要、ということですか?

必要になってしまいます。
集計とレポートを行うため、といえば通じるでしょうか…?

社内DB(統一DB)の列数は、65あります。

登録のフォーマット側は10パターンほどありますが、まれに仕様変更があります。

82の[3]の部分は大変紛らわしくてすいません。
出力先は必ず見出しはあります。ただ、出力元の要素ごとに書き出し先が順に流し込まれるわけではないので、
出力元の要素(例:氏名)を出力先のどの要素に出力しますか?のようなアナウンスを入れたらよいかなと・・・。(例:名前)

101 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 20:06:01.48
【1 OSの種類         .】 Windows vista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 excel 条件付き書式 削除

ファイルが重いので、条件付き書式によるセル色の変更を維持しつつ条件付き書式を削除できませんか。
数式はコピーして[値]で貼り付けをすることで、結果だけにできたので、書式も同じようにして軽量化したい。

102 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/19(金) 20:16:45.87
>>101
今メモリー価格安いらしいからメモリー増設したら?

103 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/19(金) 23:30:16.40
>>89
ありがとうございます。>>83さんのコメントを見た後にスレチに気づきました。親切に教えてくださったので頑張ります!

104 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/20(土) 00:41:45.19
>>101
今VBA組めないので考え方だけだけど
条件にあてはまるセルを塗るというプログラムを組んで走らせて、
後でも先でもいいから条件付き書式を削除すればいいだけの話だよね

105 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/20(土) 14:07:09.79
WindowsXP
Excel2007
VBA/はい(少し) /可
「EXCEL 検索 個数 含む」や「COUNTIF」

A B C
1あ 1 あいううう
2い 6 いいいいい
3う 3 かかかかか

上記A列に書いてある文字列が、ある範囲内(C1:C3)に何個あるか検索します。
その結果(個数)をB1、B2、B3…とそれぞれの隣の列に表示していきます。

B1に数式を入れ込み、あとはオートフィルタで結果を簡単に出したいです。
どうぞ、よろしくお願い致します。


=COUNTIF(C1:C3,"*"&A1&"*")
とした所、セルの個数はでてきたのですが、文字の個数が出てきませんでした。

106 名前:90,99[sage] 投稿日:2011/08/20(土) 14:09:28.82
>82,100
処理を実行するときに、「この項目はこの列、この項目はこの列・・・」と指定していくなんてこと、
項目数が数個ならともかく、65個もあるのにいちいち指定するのは間違いのもとでしょう。
フォーマットの種類が10パターン程度ということであれば、設定用のシートに統一DBと各社
独自フォーマットの対応一覧を作っておいて、どのフォーマットで入・出力するのかを操作員に
選ばせるのが無難。
対応一覧に載せるのは「列名」ではなく「項目名」の対応とすれば、実際の列が変わっても
柔軟に対応できると思う。対応表をボチボチ作っているので、できたらどこかにUpします。

107 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/20(土) 15:35:04.52
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード     】計算 範囲 

6500という数字があります
1-3000は*5、3001-5000は*3、5001-は*1という計算をして、
それぞれの答えを出したいのです。
   A    B   C   D
1  6,500
2     1-3,000   5  15,000
3   3,001-5,000   3  6,000
4   5,001-     1  1,500
5         合計  22,500
としたいです。
合計はSUMで出せばいいですが、その上の小計をどういう式で書けばいいのか迷っています。
いつも範囲の境目が3000、5000ならいいのですが、その都度変わります。
変更がある点は3点です。
「6500」「範囲の境目(今回なら3000と5000)」「掛ける数字(5、3、1)」です。
範囲の境目については、無い場合もあります。これがややネック。

自分なりに考えた結果、IF関数を使った式を使いました。
D2「=IF(A1>=B2,B2*C2,A1*C2)」
D3「=IF(A1>=B3,(A1-B2)*C3,(B3-B2)*C3)」
D4「=IF(A1>B3,(A1-B3)*C4,0)」
D5「SUM(D2:D4)」
以上です。
ただ、これだと問題点が2点ありまして…。
1、範囲がなくなったときに数式が出せない。
2、A1がB2以下だと、D3がマイナスで計上されてしまう。
助けて下さい。頭こんがらがりました。

108 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/20(土) 16:40:55.61
>>105
回りくどかったらゴメン。
とりあえずこれで希望する結果は出るけど、VBA書き慣れてる人の手直しキボンヌ


Sub A列と同じ文字数をカウント()

Dim 算出する最後の行 As Integer
Dim C列の文字数 As Integer
Dim A列と同じ文字数 As Integer
Dim i As Integer
Dim j As Integer

算出する最後の行 = Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To 算出する最後の行
Range("B" & i).Select
C列の文字数 = Len(Range("C" & i))
A列と同じ文字数 = 0

For j = 1 To C列の文字数
If Mid(Range("C" & i), j, 1) = Range("A" & i) Then A列と同じ文字数 = A列と同じ文字数 + 1
Next j

Selection.Value = A列と同じ文字数
Next i

End Sub

109 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/20(土) 16:42:05.51
>107
A2には0、B2には3000、A3には式=B2、B3には5000、A4には式=B3、B4には99999999とし、
D2セルに  =IF($A$1>=B2,(B2-A2)*C2,(($A$1-A2)*C2)*($A$1>A2))  って入れて、
下にドラッグしてみてください。

範囲の境目がないときは、B2、B3に 99999999 といれたらいいです。
99999999 の部分は、A1に入力する数よりも十分大きな数ならなんでもいいです。

110 名前:109[sage] 投稿日:2011/08/20(土) 17:00:16.18
>107
解説というほどのことではありませんが
>2、A1がB2以下だと、D3がマイナスで計上されてしまう
の問題は  (($A$1-A2)*C2)*($A$1>A2)  の部分で解決してます。

掛け算の右側は条件式で、成立しなければ 0 とみなされるので、
($A$1-A2)*C2) がマイナスになる場合は ($A$1>A2) が 0 になります。


111 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/20(土) 17:23:32.51
PERSONAL.XLSは編集のためロックされています。
使用者は '水嶋夏月' です。
[読み取り専用]で開くか、または、読み取り専用で開き、ほかの人がファイル
の使用を終了したときに通知を受け取るには、[通知]をクリックします。

Excel2003を機動させると、↑のメッセージが出るので、出ないように
するにはどうすればいいですか?
ググってみたら、XLSTARTフォルダ内にあるPERSONAL.XLSを
削除すればいいとかありましたが、もうね(ry


112 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/20(土) 17:25:17.00
>>109
できました!ありがとうございました!!

ちょっといじって、
A2に1、A3には式=B2+1、A4には式=B3+1、B4には999999とし、
D2には  =IF($A$1>=B2,(B2-A2+1)*C2,(($A$1-A2+1)*C2)*($A$1>A2))
にしてみました。
999999の表示も、ユーザー定義で「;;;」にして隠してみました。

本当に助かりました。ありがとうございました!

113 名前:109[sage] 投稿日:2011/08/20(土) 17:32:21.70
>112 結果が変になりませんか?
A1セルに 3001 って入れたとき、D2セルに 3 って表示されないと思うけど。

114 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/20(土) 17:38:21.88
>>105
=LEN(C1)-LEN(SUBSTITUTE(C1,A1,""))

115 名前:109[sage] 投稿日:2011/08/20(土) 17:39:38.17
>112
(($A$1-A2+1)*C2)*($A$1>=A2)
掛け算の右側の条件式に = が必要です。
この場合でも、A1セルに小数点が含まれる場合はへんなことになります。
A1セルに 3000.5 とか 5000.5 など入れてみるとわかります。

116 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/20(土) 18:28:06.31
>>106
おお・・・すいません・・・

117 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/20(土) 19:11:08.30
>>113
あ、本当ですね。>>115の=を入れたら直りました。
お伝え忘れていましたが、A1には整数しか入らないので、大丈夫です。
ご心配ありがとうございました!


118 名前:105[] 投稿日:2011/08/20(土) 19:26:44.90
>>108,>>114
回答ありがとうございました。
頂いたデータを参考に試してみます!

119 名前:114[sage] 投稿日:2011/08/20(土) 19:50:33.41
間違って理解してました。

とりあえず三つのセルだけのようですので下記の式でB列に入れてみてください。

=LEN(C$1&C$2&C$3)-LEN(SUBSTITUTE(C$1&C$2&C$3,A1,""))

120 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/21(日) 11:59:51.27
【1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel 2002
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 チェックボックス 関数 (-コントロール)

チェックボックスのレ点の数を数えたいのですが、すでにレ点があるボックスとないボックスがあり
「コントロール書式設定からTRUEを表示させる」→「設定したものをコピー」が使えない状況です。

関数でカウントしたり、レ点の有無を維持したまま設定をコピーできる方法などはあるのでしょうか?


121 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/21(日) 16:30:40.24
>>120
ワークシート関数では、直接コントロールの状態を取得することは出来ない
しかし、チェックボックスコントロールの状態は、セルにリンクさせることが出来、
そのリンクさせたセルの値を関数・数式で取得・集計することで、目的は果たせるはず

コピーについては、俺語ではなく日本語で説明してくれないと訳わからん

122 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/22(月) 01:11:13.52
【1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel 2003
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

B列に、yyyy/mm/dd(aaa)で日付を入れてます。
2011/08/20(土)や2011/08/21(日)のとき、
"(土)"を青文字、"(日)"を赤文字にするには
どうすればいいでしょうか。

123 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/22(月) 11:32:55.05
セルを分ける。

124 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/22(月) 16:53:23.89
>>122
セル分けたくなければVBAだな
全体なら条件付き書式で出来るけど、一部だとVBAしかない

やり方はマクロの記録で"(土)"だけを青文字にする作業を録れば解るはず
あとはIfかSelect Caseで条件分岐させれば良いだけ

125 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/22(月) 17:47:58.94
>>122
値を入れるセルと表示するセルが一緒だと無理だと思う。
セルが別でいいなら >>124 の通り。

126 名前:90,106[sage] 投稿日:2011/08/23(火) 03:48:13.44
>82,100
遅くなりましたが、列と列の対応の調べ方の部分だけ説明図を作りました。
各社フォーマットのデータを統一DB様式にする方の処理です。
http://www.dotup.org/uploda/www.dotup.org1936618.png.html (パスワードは excel です)
入力側がどのフォーマットかを操作者に選択させても、それが正しいのか間違っているのかを
調べる必要があることに気付いたので、別の方法を検討しているところです。

最初の部分(ブックやシートを指定するところ)から始めるのはそちらの状況をもう少し聞かないと
進められないので、時間がとれたらまとめて質問します。

ところで、この処理って作成期限ってあるの? ここで聞くよりどこかに頼んだ方が早いと思う。
(費用はかかるけど)

127 名前:90,126[sage] 投稿日:2011/08/23(火) 07:25:17.19
126で書いた図を基に列の対応を調べる部分はできました。ただし、入力処理(各社フォーマット→統一DB)のみ。
出力処理(統一DB→各社フォーマット)の方は、>98で書いてあるように複数シートに出力の場合があるらしいので、
2ch掲示板上でのやりとりではちょっとむずかしいと思う。
以下は同一ブック内の3シートを「統一DB」「各社フォーマット」「設定」とし、各社フォーマットシートの
項目名や列の並びをいろいろ変えて試したときのVBAマクロです。
Option Explicit
Dim sh_i As Worksheet, sh_o As Worksheet, sh_s As Worksheet
Dim tate_i As Long, tate_o As Long, yoko As Integer, myAREA As String
Dim j As Integer, kensaku As String, c As Variant, a(100) As Integer
rem 配列aの要素数100は65より十分大きな数というだけ


128 名前:127[sage] 投稿日:2011/08/23(火) 07:27:28.01
続きです
Sub test()
 Set sh_i = Worksheets("各社フォーマット")
 Set sh_o = Worksheets("統一DB")
 Set sh_s = Worksheets("設定")
' 第一ステップ 列対応の設定
  For yoko = 1 To 7  rem 65列から7列に減らしています
  j = 0
  Do
   kensaku = sh_s.Cells(1 + j, yoko).Value
    If kensaku = "" Then
    kensaku = sh_s.Cells(1, yoko).Value
    MsgBox (kensaku & " に対応する列がありません 異常終了します")
    Exit For
   End If
   If yoko = 1 Then
    myAREA = "A1:IV65536"
   End If
   Set c = sh_i.Range(myAREA).Find(What:=kensaku, LookAt:=xlWhole)

129 名前:127[sage] 投稿日:2011/08/23(火) 07:30:13.85
続きです
   If (c Is Nothing) Then
    j = j + 1
   Else
    a(yoko) = c.Column  rem ここで列の対応を設定
    If yoko = 1 Then
     myAREA = c.Row & ":" & c.Row
     tate_i = c.Row + 1  rem見出し行の次からデータがある
    End If
    Exit Do
   End If
  Loop
 Next yoko
 Set sh_s = Nothing
' 第二ステップ 各社フォーマットから統一DBへ
 tate_o = 3  rem出力側(統一DB様式)は3行目から出力するものと仮定
 Do
  For yoko = 1 To 7


130 名前:127[sage] 投稿日:2011/08/23(火) 07:32:31.96
続きです これで最後
rem第一ステップで設定した列の対応を利用して転記
   sh_o.Cells(tate_o, yoko).Value = sh_i.Cells(tate_i, a(yoko)).Value
  Next yoko
  tate_i = tate_i + 1: tate_o = tate_o + 1
 Loop While (sh_i.Cells(tate_i, a(1)).Value <> "")
 Set sh_i = Nothing: Set sh_o = Nothing
End Sub 以上

131 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/23(火) 10:03:15.94
>>127
ありがとうございます!
ただ、途中でどうしても「 の対応表がありません」とでてエラーになるので、
ただしく動く構成のxlsファイルを一回アップしてもらってもいいでしょうか・・・?

132 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/23(火) 10:58:58.75
>131 xlsファイルは個人情報が漏れるので、画面イメージをupしました。
http://www.dotup.org/uploda/www.dotup.org1937185.png.html

○○ の対応表がありません と出るのは、設定シートに入れた項目名と
入力シート(各社フォーマット)の項目名が異なるためです。
英数字やカタカナの全角・半角の違いや、項目名の中にある空白の全角・半角の
違いもダメです。


133 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/23(火) 11:17:45.35
>>132
ありがとうございます。
こちら、例えば各社フォーマットの「名前」「Tel」「クラス」にあたる部分だけインポートすればいい
という場合、他の列は空白状態で実行してしまうとエラーが起きてしまうのですが、
現仕様だとすべてインポートする仕様ということでしょうか?

134 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/23(火) 11:39:12.66
セルA1に次のような入力規則を設定したいのですが可能でしょうか

セルB1が空白なら、特に入力規則なし
セルB1がそれ以外なら10-B1



135 名前:132[sage] 投稿日:2011/08/23(火) 11:39:17.89
>133
そうです。最終的に65列すべて入力シートから持ってくるわけではない、ということならば、
列の対応の設定方法をちょっと変えます。
>106で 65個もあるのにいちいち指定するのは間違いのもとでしょう
と書いたことに対してコメントが特になかったので全項目転記するものと判断して進めてました。
dim b(100) as Integer
kensaku = sh_s.Cells(1, yoko).Value
Set c = sh_o.Range(2:2).Find(What:=kensaku, LookAt:=xlWhole)  rem見出し行が2行目と仮定
b(yoko) = c.Column

sh_o.Cells(tate_o, b(yoko)).Value = sh_i.Cells(tate_i, a(yoko)).Value
こんな感じでいけると思います。午後〜夜間は用件があるので、次は明日にでも書き込みます。

136 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/23(火) 11:56:16.15
【1 OSの種類         .】 Windows XP
【2 Excelのバージョン   】 Excel 2003 + 2010
【3 VBAが使えるか    .】 はい


DB上で重複してる商品番号の列を、1つの列にまとめたいです。
元のデータがexcelで、データは上から新しい順に入っております。
まとめる際、新しい(上から)ものを基準にまとめたいです。
ただし、空白の際は入ったものを固定基準とします。


A001 食品 赤 \100
A002 \200
B001 食品 青
A001 食品 紫 \160
A002 玩具 \200

結果
A001 食品 赤 \100
A002 玩具 \200
B001 食品 青

137 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/23(火) 12:36:21.95
>>134
入力規則?
関数式なら
=IF(B1="","",10-B1)
「10-B1」の表示をA1にさせたい場合は
=IF(B1="","","10-B1")
とすればおK。

138 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/23(火) 13:43:39.40
セルA1に、if関数で真の場合は計算結果、偽の場合は計算結果+メッセージボックスを表示するようにしたいのですが

139 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2011/08/23(火) 14:52:12.37
許可します。

140 名前:名無しさん@そうだ選挙にいこう[] 投稿日:2011/08/23(火) 15:42:20.34
>>138
VBEを開き、目的のセルが存在するworksheetに直接記述。

チェンジプロシージャ

If Range("A1") = "偽" Then
MsgBox("計算結果は偽です")
EndIf
EndSub

タグ:EXCEL
posted by Excel 使い方 at 16:12 | Excel 使い方
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。