Excel総合相談所 32

このエントリーをはてなブックマークに追加
1名無しさん@そうだ選挙にいこう
Excelに関する質問は、ここで!

     /)_/)    ( ・質問する人は可能な限り具体的に書いてね。
    < ゚ _・゚> .。oO( ・Excelのバージョン、OSのバージョンも書くとレスが付きやすい。
  ノ) /   |    ( ・回答がなくてもキレないで。
  \(_,,,_,,,)   ( ・分かる人はできるだけ回答して下さいませ。

前スレ
http://pc8.2ch.net/test/read.cgi/bsoft/1109340075/


過去スレは>>2
FAQ(よくある質問と答え)は>>3-10くらい。
2名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:49:21
=過去ログ=
http://pc.2ch.net/test/read.cgi/bsoft/986283001/
http://pc.2ch.net/bsoft/kako/1004/10044/1004432306.html
http://pc.2ch.net/bsoft/kako/1012/10124/1012439547.html
http://pc.2ch.net/bsoft/kako/1018/10180/1018055390.html
http://pc.2ch.net/bsoft/kako/1023/10238/1023811906.html
http://pc.2ch.net/bsoft/kako/1028/10287/1028725250.html
http://pc.2ch.net/bsoft/kako/1033/10339/1033983470.html
10 http://pc2.2ch.net/bsoft/kako/1042/10429/1042913355.html
11 http://pc2.2ch.net/bsoft/kako/1045/10459/1045997062.html
12 http://pc2.2ch.net/bsoft/kako/1050/10500/1050069432.html
13 http://pc2.2ch.net/bsoft/kako/1053/10530/1053069026.html
14 http://pc2.2ch.net/bsoft/kako/1055/10553/1055342774.html
15 http://pc2.2ch.net/bsoft/kako/1057/10577/1057720306.html
16 http://pc2.2ch.net/bsoft/kako/1060/10603/1060345528.html
17 http://pc2.2ch.net/bsoft/kako/1062/10622/1062260735.html
18 http://pc2.2ch.net/bsoft/kako/1067/10672/1067264540.html
22 http://pc5.2ch.net/test/read.cgi/bsoft/1078930810/ (html化待ち)
23 http://pc5.2ch.net/test/read.cgi/bsoft/1083074470/ (html化待ち)
24 http://pc5.2ch.net/test/read.cgi/bsoft/1085756069/ (html化待ち)
25 http://pc5.2ch.net/test/read.cgi/bsoft/1088690113/ (html化待ち)
26 http://pc5.2ch.net/test/read.cgi/bsoft/1091619391/ (html化待ち)
27 http://pc5.2ch.net/test/read.cgi/bsoft/1096068933/ (html化待ち)
28 http://pc5.2ch.net/test/read.cgi/bsoft/1099232633/ (html化待ち)
29 http://pc5.2ch.net/test/read.cgi/bsoft/1102922371/ (html化待ち)
30 http://pc5.2ch.net/test/read.cgi/bsoft/1106829956/ (html化待ち)
3名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:49:46
= FAQ: 列の表示について =
Q.列名がA,B,C,D,Eではなく、1,2,3,4,5になってしまいました。
 アルファベットに戻すにはどうしたらいいですか?
A.ツールメニュー:「オプション」 -「全般」タグで
 『R1C1 参照形式を使用する(C)』のチェックを外せば直ります。

Q:列を256個(IV列)よりたくさん広げることはできませんか?
A:エクセルのシートは65536行×256列が仕様上の上限です。
 シートを分けるとか、行と列を入れ替えるとか、データの方をまとめるとか、
 列数を増やさない方向で工夫するしかありません。
4名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:50:05
= FAQ: 印刷プレビュー =
Q:印刷プレビューではセル内に収まっていた文字が
 実際に印刷してみるとはみ出してしまうのですが、
 何とかなりませんか?
A:「印刷プレビューと印刷結果が一致しない」のは
 昔からのExcelの弱点で、どうにもなりません。
 セルの幅や高さに余裕を持たせるか、
 書式設定で「縮小して全体を表示する」にチェックを入れましょう。


= FAQ: マクロの”””削除””” =
Q.マクロを削除したのに、ファイルを開くたびにセキュリティの確認が出ます。
A.モジュールの解放が必要。
 【モジュールの解放方法】Alt+F11→Ctrl+R→Module1を右クリック→解放
5名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:50:18
= FAQ: 計算したい。角度とか =
Q.例えば、一つのセルに1803329と入力すると
 180度33分29秒と表示されるようにするには
 どうすればいいのでしょうか?
 ついでに計算もしたいです。
A.「1803329と入力すると180度33分29秒と表示される」
 というのと、計算できるというのを両立させるのは無理。
 書式を
 [h]:mm:ss や [h]"度"mm"分"ss"秒".00
 などにしておき、入力するときには
 180:33:29.99
 などとすれば、表示も計算もできる。

その他時間とか日付とかの計算について
 勤務時間を計算するには
http://support.microsoft.com/default.aspx?scid=%2Fdirectory%2Fworldwide%2Fja%2Fkblight%2Ft009%2F3%2F46.asp

 日数および日付の表示方法と計算方法 - 基本編
http://support.microsoft.com/default.aspx?scid=%2Fdirectory%2Fworldwide%2Fja%2Fkblight%2Ft009%2F3%2F45.asp
6名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:50:40
= FAQ: 合計から元の数を逆算 =
Q:たくさんの数値のリストがあって、
 リスト中のいくつかの数の合計と思われる数値が与えられました。
 リスト中のどれとどれの合計か調べることはできますか?
A:ナップザック問題(knapsack problem)として知られている難問です。
 一般的には総当りで調べるしかありませんが。
 しかし、データに特徴がある場合(桁数が限られているなど)には、
 うまい方法があって、速く解けることもあります。
 下記のページを参照してみてください。
  ナップザック問題をExcelで解く
   http://www.geocities.co.jp/SiliconValley-Oakland/8139/


= FAQ: 条件によって表示を変更するには? =
Q:セルの内容を判断して、表示を変えたい
A: IF関数を使います。
 =if(条件,条件が成立した場合,成立しなかった場合)

例1:基本
 セルA1が1の場合○、それ以外の場合×を表示
 =IF(A1=1,"○","×")
例2:if文の中にif文
 A1が、1の場合○、2の場合△、それ以外×。
 =IF(A1=1,"○",IF(A1=2,"△","×"))
例3:ANDやOR活用
 A1が、4〜6の場合は、普通と表示
 =IF(AND(A1>3,A1<7),"普通","少ないか多い")
例4:計算も出来る
 A1が10までなら、A1を10倍して表示、それ以外なら2を引く。
 =IF(A1<11,A1*10,A1-2)

詳しくはヘルプを参照しましょう。
7名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:51:00
= FAQ: グラフについて =
Q1:データの空白部分があって、そこで折れ線が切れてしまいます。
  繋げたいのですが如何したらいいでしょうか?
A1:グラフを選択>ツール>オプション>グラフ>空白セルのプロット「補間してプロットする」にチェック

Q2:棒グラフに重ねて、折れ線グラフを表示するにはどうしたらいいのでしょうか?
A2:最初、すべてのデータを棒グラフで作成。
 次に、折れ線で表わしたいデータ系列のどこかを、グラフ上で右クリック
 サブメニュー>グラフの種類>折れ線>OK

Q3:ある系列だけ、縦軸を別にしたいです。
A3:その系列のどこかを、グラフ上で右クリック
 データ系列の書式設定>軸>使用する軸「第2軸」にチェック>OK


= FAQ: 入力した値が変わる? =
Q.セルに入力した値が勝手に変わってしまうのですが
 入力したままの形で表示させるにはどうしたらいいですか?
A.数字でよくあるケース(先頭のゼロが消えてしまう、日付として解釈されてしまう)
 入力する時、先頭にアポストロフィ(')をつけるか、
 該当するセルで右クリック−「セルの書式設定」−「表示形式」で「文字列」を選択。
 文字列ではなく数値として扱いたいときは
 「セルの書式設定」−「表示形式」で「ユーザー定義」を選択し、工夫する。
A.文字でよくあるケース(i⇒I、teh⇒the、cna→can など)
 ツール→オートコレクト→入力中にオートコレクト
 の該当する箇所を削除。
8名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:51:19
= FAQ: 行列の入れ替え =
Q.エクセルで作った表が横方向に多くなってきたので
 行と列を入れ替えたいのですが。

A.コピーして、適当なセルで右クリック。
 形式を選択して貼り付け→行列を入れ替える。


= FAQ: 参照するセルをセルの値で指定する =
Q.A1に「5」とか「6」とか指定する値を変えたら
 B1の関数で「C5」とか「C6」とか参照先が変わるようにできませんか?
A.INDIRECT関数を使ってみましょう。
 詳しくはヘルプで「INDIRECT」を検索
9名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:51:37
= FAQ: ブラウザの変更 =
Q.Excelでアドレスをクリックした時に開くブラウザをIEからSleipnirなどに変更したい。
A.スレ違いです。
 開きたいブラウザの設定画面でそのブラウザを通常使うブラウザに指定してください。


= FAQ: セル内での改行 =
Q:セル内で改行したいんですがどうすればいいでしょうか

A:改行したい位置でAltを押しながらEnterを押せばセル内改行できます。
10名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:51:48
= FAQ: ワイルドカード文字の検索・置換 =
Q:* 、 ? で検索するとワイルドカードとして認識されてしまいますが、
  * 、 ? の文字自体を検索するにはどうすればよいですか?

A: ~* 、 ~? のように、頭に ~ を付けることでエスケープ出来ます。

A:全角で*と入力し「半角と全角を区別する。」のチェックを外して検索する
 (全角なのでワイルドカードとしては使われないが
  全半角を区別しないので文字として"*"にはヒットする。)
11名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:58:52
少し質問が。OSはXPでエクセルは2003です。
内容はについてですが
B1のセルに「セブンイレブン」と入力するとA1のセルに「コンビニ」C1のセルに
「24時間営業」と返すように作りたいのです。
他にいうとB1に「ダイエ−」と入れるとA1には「ス−パ−」C1には「10時間営業」
というふうに関数を作りたいのですが、うまくいかないのです。教えて下さい


 −−−−−−−−−−−−−−−−−−
|   A  |  B  |  C  |
 −−−−−−−−−−−−−−−−−−
|コンビニ  |セブン・・|24時間・|
 −−−−−−−−−−−−−−−−−−
|ス−パ−  |ダイエ−・|10時間・|
 −−−−−−−−−−−−−−−−−−
12名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:06:25
A1に =IF(B1="セブンイレブン","コンビニ",IF(B1="ダイエー","スーパー",""))
C1に =IF(B1="セブンイレブン","24時間営業",IF(D1="ダイエー","10時間営業",""))
13名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:12:37
>>11
対応表を別シートに作ってVLOOKUP/HLOOKUPでそれを参照させちゃ駄目?

SHEET2にこんな表を作ってHLOOKUPで参照
     A      B   
1|セブン… |ダイエー |
2|コンビニ |スーパー|
3|24H…  |10H… |
14名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:17:55 BE:73597267-
前スレ >994
もう少し条件を判りやすくすれ。

読むからに、単純に10分繰り上げすればいいんじゃねーの?
それと、深夜労働時間(午後10時から午前5時まで)というのは、単純に基本給(時給換算)から1.50倍すればいいだけだと思う。
15名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:19:02
質問です。
外部データの取り込みでインポートする取り込み先を相対参照にするかして
カレントディレクトリを参照させたいのですがどうすればいいのでしょう。
OS:WinXP、Excel2002使用
16名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:21:44
excel2000を使ってますが、
名簿に生年月日をのせた(A列には名前、B列には生年月日)
表示形式で、例えばB列に入力した「平成17年3月31日」から月日(3月31日)だけを抜き出し、
しかもその月日を月毎に並べ替え出来るようにするには、どういった方法が
考えられますでしょうか。ご教授下さいませ。
17名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:22:07
>>12ありがとうございます。

>>13行自体が数百になる予定なので、対応表を作った方が非常にやりやすいです。
逆に
   A     B      C
1  セブン・・ コンビニ   24時間
2  ダイエ−・ ス−パ−   10時間
とシ−ト2に入れて、
シ−ト1のBセルにセブンと入れると自動的にAとCに返すような方が非常に助かります。
出来れば・教えてください・・○TL
18名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:24:39
リンクの移動先  追えるけど
>>5
勤務時間を計算するには
http://support.microsoft.com/default.aspx?scid=kb%3bja%3b880980
日数および日付の表示方法と計算方法 - 基本編
http://support.microsoft.com/default.aspx?scid=kb%3bja%3b880979
19名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:31:31
>>16
生年月日はセルの中は2005/3/17とかになっていて表示だけ
平成〜になっているのか、セルの中に初めから平成〜となって
いるのか?
それによって対処の仕方が違います。
20名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:32:48
>>17
VLOOKUP
21名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:35:55
>>19
ちなみに、前者であれば
Month()
Day()
Text()
などをつかえばできるでしょう。
2212:2005/03/30(水) 23:37:48
>>17
何がしたいのかやっと分かった

Aiセルに =IF(Bi="","",VLOOKUP(Bi,Sheet2!$A$1:$C$n,2,FALSE))
Ciセルに =IF(Bi="","",VLOOKUP(Bi,Sheet2!$A$1:$C$n,3,FALSE))
23名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:38:18
>>16
前者でございます。
基本的に、h17.3.31と打って平成17年3月31日と表示されるように
しています。
2423:2005/03/30(水) 23:38:55
×>>16
>>19
25名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:42:24
>>23
例えばC列に
=TEXT(MONTH(B3),"00") & TEXT(DAY(B3),"00")

などとして、C列に月日の文字列を表示させてからソートしる

26名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:48:28
>>22
何をしたいか人に伝えることができない人は、まず、伝えることを
学ぶ必要がある。それができれば自然とExcelの関数、VBAも
できるわけで、、、
2711:2005/03/30(水) 23:51:17
ありがとうございました。何とか成功しますた
>>26え〜っと、ちなみに22さんは僕ではないんで^^;;
28名無しさん@そうだ選挙にいこう:2005/03/30(水) 23:54:20
>>25
=TEXT(B3,"MMDD")

でよかったな。
2923:2005/03/31(木) 00:05:34
>>28
大変有難うございます! 勉強不足でスマソ。
30前スレ997:2005/03/31(木) 09:43:24
新スレ乙です。
どなたか前スレ終了間際の質問にアドバイスいただけますでしょうか。
よろしくお願いします。

--------
ところでリストボックスから検索結果を選択して表示フォームに渡したいのですがうまくいきません。
自分で試してみたのは、アドレス格納用に配列(a(256))を用意しておき、
For文でi=2から初めて条件にヒットしたときに該当アドレスを上記配列に格納し、
さらにそのときのiの値も別の配列(b)に保存しておき、
詳細表示ウィンドウを呼び出すボタンをクリック時に呼び出すフォームに
アドレス格納用配列をa(b)という形で引数として渡したのですがうまくいきませんでした。
こういう場合はどうすべきなのでしょうか。
31名無しさん@そうだ選挙にいこう:2005/03/31(木) 09:48:12
>>30
おまえが書いたコードと処理の具体例を書け
32名無しさん@そうだ選挙にいこう:2005/03/31(木) 10:41:17
質問させていただきます。
OS:WinXP Pro
Ver:Excel2002

複数の人間で扱うデータなので、会社のネットワークグループに
新しくフォルダを作り、そこにExcelデータを格納しています。
それを開いて使用後に上書保存しようとすると
「他のユーザーによって変更された可能性があります。
 操作を選択して下さい。」
と言ったメッセージが出て、名前を付けて保存か上書保存かを
指定する。といったことが起こってます。

以後、このメッセージを出さないようにする方法はありますか?
ツール−オプションでも解りませんでした。
ご存知の方、宜しくお願い致します。
33名無しさん@そうだ選挙にいこう:2005/03/31(木) 11:42:44
winXP,Offece2000です。
メニューをプルダウンしたときに普段使わないような機能は下向き不等号が
2つ重なった●をクリックしないと展開されませんよね?
これをメニューをプレスしただけでフル展開されるように出来ますでしょうか?
よろしくお願いいたします
34名無しさん@そうだ選挙にいこう:2005/03/31(木) 11:47:06
表示 > ツールバー > ユーザー設定 > オプション
□常にすべてのメニューを表示する
35名無しさん@そうだ選挙にいこう:2005/03/31(木) 11:56:20
セル内で段落わけすることってできますか?
1234
じゃなくて
12
34
みたいに表示したいんです。
36名無しさん@そうだ選挙にいこう:2005/03/31(木) 12:00:27
12{Alt+Enter}34
3733:2005/03/31(木) 12:05:49
>>34
できました!ありがとうございました!!
38名無しさん@そうだ選挙にいこう:2005/03/31(木) 12:54:35
こういう機能ありますでしょうか?XP,2003です。
A1セル:手入力の数値
A2セル:手入力の数値
A3セル:A1+A2
A4セル:A1*A2
A5セル:(A3+A4)*(A3/A4)---A4は0ではありません
のときワンタッチでA5をA1とB1だけであらわしたいのですが、出来ますでしょうか?
もっと複雑な式でこういう悩みを持っていまして、分けがわからなくく
なってきました。こういう機能需要がありそうなのですが。
ご存知の方お教え願えせんでしょうか。よろしくお願いいたします。
39名無しさん@そうだ選挙にいこう:2005/03/31(木) 13:05:39
Win2000,Excel2000です

行ごとまとめてコピーしてどっかべつのところに貼り付け、という時、左側の行番号を選択しますよね
で、複数の行をまとめてコピーして……という時は、行番号のところをカーソルでなぞりますよね

それで、画面の外に出ちゃうくらいの、数十行の行をまとめて……という時は
行番号をクリックして、例えばそのまま下にドラックするとどんどん行が下に行ってくれますよね

その時、しばらく行って「ここだ」という時にドラッグを止めるんですが
勢いがついてなかなか止まってくれないんです
100で止めよう、と思っても、200くらいまでバババババって行っちゃうんです

なんかExcelの設定で直せるんでしょうか?
SCRLかと思ったんですが、それも違いました

4030:2005/03/31(木) 13:09:36
>>31
以下のように記述しました。
プロパティの指定に問題があるとエラーがでるのですが・・・。
まずいところがありましたら指摘してください。
詳細表示用のプロシージャで該当アドレスを参照させることさえできればあとは何とかなると思うのですが・・・。
よろしくお願いします。


検索ボタンには
Private A(256)
Dim b

Sub CommandButton1_Click()
Search.ListBox1.Clear
N = 3'検索用
b = 0'アドレスを配列に0から順番に格納する
41名無しさん@そうだ選挙にいこう:2005/03/31(木) 13:12:02
>>38
=(A1+A2+A1*A2)*((A1+A2)/(A1*A2))
=((A1+A2)+(A1*A2))*((A1+A2)/(A1*A2))

>>39
設定では変えられませんが、作業領域下限から離れた距離によって
速度が変わるので(離れるほど早くなる)適当に調整しましょう。
または100〜500行を選択するなら、先ず100行目を選択して
500行目が見えるところまでスクロールし、Shiftを押しながら500行目の
インデックスをクリックすれば100〜500行の選択になります。
または「名前ボックス」に100:500を入力してEnter
42名無しさん@そうだ選挙にいこう:2005/03/31(木) 13:14:40
>>40
おまえが書いたコードと処理の具体例を書け
4340=30続き:2005/03/31(木) 13:21:46
Do
'検索条件と比較
If InStr(1, Cells(N, 2).Value, Search.TextBox1.Value) > 0 And InStr(1, Cells(N, 4).Value, Search.TextBox2.Value) > 0 And InStr(1, Cells(N, 6).Value, Search.TextBox3.Value) > 0
And InStr(1, Cells(N, 7).Value, Search.TextBox4.Value) > 0 Then
'ヒットしたらリストボックスに追加
Search.ListBox1.AddItem Cells(N, 2) & " , " & Cells(N, 6) & " , " & Cells(N, 7)
'アドレスを配列に格納
Set A(b) = Application.Cells(N, 2)
b = b + 1
End If
N = N + 1
Loop While Cells(N, 2) <> ""
End Sub

詳細表示ボタンには
Private Sub CommandButton2_Click()
MsgBox (A(b).Address)
ViewRecord A(b).Address
Unload Me
End Sub
4440=43:2005/03/31(木) 13:24:17
間が開いてしまいました。申し訳ありません。
検索ウィンドウのテキストボックスに入力した値が各行の対応するセルに含まれているかどうかで検索しています。
ヒットしたものをリストボックスに表示させ、
そのアドレスをアドレスに0から順番に格納し、
詳細表示用ウィンドウ(ViewRecord)に引数として渡したいのです。
よろしくお願いします。
45名無しさん@そうだ選挙にいこう:2005/03/31(木) 13:33:15
>>39
100〜500行を選択する>>41以外の方法としては

行番号100を選択した後→Shiftキーを押しながらPageDownを押す
500行付近に行ったら上下キーで調整(Shiftキーは押したまま)

慣れてくるとマウスよりキーボードでの操作の方が早くなってくる
46名無しさん@そうだ選挙にいこう:2005/03/31(木) 13:37:47
CommandButton2_Clickの配列Aの引数は
bではなくListBox1.ListIndexでは?
4738:2005/03/31(木) 14:16:42
>>41 レスありがとうございます。
実際にはこの式ではなく色々関数を使ったりした長い式なのですが、何か
エクセルの機能で、ボタン一発あるいは関数か何かで一括自動でA1,A2だけの
式にしてもらえるとたすかるなあと思いまして。
ないのでしょうね。ありがとうございました。
48名無しさん@そうだ選挙にいこう:2005/03/31(木) 14:19:55
>>47
VBAでできるけどね
詳しくはヘルプでも嫁
4938:2005/03/31(木) 14:25:46
>>48
ええ〜、そうなんですか!ありがとうございます。調べてみます。
使いこなせないかもしれませんが勉強します!
50名無しさん@そうだ選挙にいこう:2005/03/31(木) 15:04:16
>>39
Macの場合だと、
方法1:
 100行目を選択
 右側のスクロールつまみで、500行目が表示されるまでウィンドウをスクロール
 shiftキーを押しながら500行目を選択
方法2:
 100行目を選択
 shift + page downで一画面ずつ選択範囲を拡大する。
 500行目が表示されたところで(行きすぎていてもよい)shiftキーを押しながら500行目を選択

というような手順で、100〜500行が選択されるよ。
Winだとキーが違うかも知れないけど、大体同じ事ができると思う。
「ショートカットキー」でヘルプを見てみ。
51名無しさん@そうだ選挙にいこう:2005/03/31(木) 15:10:17
>>50

> 方法1:
>>41が書いてる

> 方法2:
>>45が書いてる
52名無しさん@そうだ選挙にいこう:2005/03/31(木) 15:17:48
>>48
Excelで、そんな数式処理のようなことができるのか。
俺も知りたい。
探したけど見つからなかったので、ヘルプの項目とか参考ページなどを教えて下さい。
5350:2005/03/31(木) 15:20:04
>>51
ごめん。見落としてた。
なぜこんなにはっきり書いてあるのを見てなかったのか自分でも不明。
頭を冷やしてきます。
54名無しさん@そうだ選挙にいこう:2005/03/31(木) 15:34:23
>>52
ついさっき出たばかりのことで「探したけど」って
実は全然探してないだろ。
55名無しさん@そうだ選挙にいこう:2005/03/31(木) 16:05:25
>>38
>もっと複雑な式でこういう悩みを持っていまして

それを書いた方がいいように思う
56名無しさん@そうだ選挙にいこう:2005/03/31(木) 16:26:19
>>38

B1がどこから出てきたのかその説明では解らないんだけど

A5 =((A1+A2)+(A1*A2))*((A1+A2)/(A1*A2))

じゃ駄目なの?
57名無しさん@そうだ選挙にいこう:2005/03/31(木) 16:34:41
続きがあったのね…

置換は使えないの?
58名無しさん@そうだ選挙にいこう:2005/03/31(木) 16:34:47
>>56

>>41読め
もしかしてまた>>50か?
59名無しさん@そうだ選挙にいこう:2005/03/31(木) 16:38:45
ゴメン。気づがなった…orz
60名無しさん@そうだ選挙にいこう:2005/03/31(木) 16:59:22
ひょっとして>>48は、Replace関数でこつこつ置き換えろと言いたいわけかな。
そりゃワークシート関数のREPLACEでやるよりはVBAだろうが…。
6139:2005/03/31(木) 17:07:14
いろいろありがとうございました
確かに慣れるとキーボードの方がラクかもしんないですね

基本的な話なんですが
ドラッグをしてからピタっと止めても、狙った位置には止まんないということでいいんでしょうか?
>>41
>設定では変えられませんが、作業領域下限から離れた距離によって
>速度が変わるので(離れるほど早くなる)適当に調整しましょう
というのはあまくでもドラッグ速度で、ドラッグをやめたあとの「余韻」の話ではないように思えるのですが

私の現在の環境では、例えば5秒くらいドラッグを続けると
ドラッグを止めてもそのまましばらく動きつづけます
これが、100で止めようとして110くらいで止まる、というのであれば単純に個人の反射神経の問題なんでしょうが
目で確認できるくらい動きつづけてしまうので(「おい、おいおい……まだいくかこら……」みたいな感じです)
62名無しさん@そうだ選挙にいこう:2005/03/31(木) 17:19:32
>>60
Replaceでだめな理由がわからない。
私は48ではないですが、ちょっと気になったもので。

>>61
それはExcelの問題でなく、PCの処理が遅いだけ。
63名無しさん@そうだ選挙にいこう :2005/03/31(木) 17:19:46
Excelはラベル印刷に対応しているのでしょうか?
巷の参考書等ではなかったのもですから。
64名無しさん@そうだ選挙にいこう:2005/03/31(木) 17:24:54
>>60
俺もReplaceじゃダメな訳がわからない。
VBAの場合「こつこつ置き換え」ではなく「一瞬で一気に置き換え」できるし。
6560:2005/03/31(木) 17:29:09
>>60 >>64
あー。そうじゃないすまんすまん。
48はもっと違う方法を知っているのかと思っただけ。
6661:2005/03/31(木) 18:11:13
>>62
SHARPのMURAMASA(PC-MM1-H1V)なんですが……ダメか……orz
Excelの問題ではないという切り分けができただけでもよしとして、PC板いってきます
67名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:19:23
Replaceで例えばA1をA2+A3と置き換えるとして
A10とかA11とか判別するのめんどくない?
68名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:25:09
すいません、教えて下さい。

(例)3+5+2=10

上のような計算式で、加算数の「2」を入力しないときは「=8」
と表示しない(=が無表示のまま)方法を教えて下さい。

違う言い方をすると、左から「3」と「5」を入力しておくだけで、
最後に「2」を入力したときに、初めて「=10」と計算(表示)
される方法はありますか?
69名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:30:46
>>67
LookAt:=xlWhole
70名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:32:33
>>68
A1が3、B1が5、C1が2ってことなら
=IF(ISBLANK(C1),"",A1+B1+C1)
で出来るけど、質問が曖昧すぎて意味がよくわからない。
71名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:34:02
>>68
A1に3を入力
B1に5を入力しておいて
C1に2を入力したときに
D1に=10と表示されればいいのか?

その場合は
D1に
=IF(C1="","",SUM(A1:C1))
書式を
"="#,##0
とする
72名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:36:32
>>38
>エクセルの機能で、ボタン一発あるいは関数か何かで一括自動でA1,A2だけの
>式にしてもらえるとたすかるなあと思いまして。

ユーザー定義で関数作れば?
73名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:36:56
>>69
そうしたら、A1/B1を(A2+A3)/B1にできなくならない?
74名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:40:18
>>70-71
お付き合いいただき、恐縮です
また説明下手ですいません

要するに
A1に3を入力
B1に5を入力しておいて
C1に2を入力したときに
D1に=10と表示したいのですが、

C1の2が未入力のときは、D1は無表示(または0)
のままにしておきたいのです。

どうか今一度ご指導ください、お願いします。
75名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:47:31
>>74
if(C1<>"",A1+B1+C1,"")
76名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:51:52
>>74
回答されたものは試したのか?
その要望なら>>70-71で問題ないと思うが。
7774&68:2005/03/31(木) 18:52:46
>>75
ありがとうございます。

ただ、ご指導とおり
if(C1<>"",A1+B1+C1,"") をコピペしたのですが、
やはりA1に3を入力した時点で、D1も=3と表示さ
れてしまいます...

どうかアドバイスお願いします。
7874&68&77:2005/03/31(木) 18:58:53
>>76
ありがとうございます。

ただ70-71も試(コピペ)したのですが、やはり最初のA1に3を
入力した時点で、すでにD1=3と表示されてしまいました、、、

C1を入力するまでは、D1を無表示のままにしておきたいのです。

何度もほんとうにすいませんが、お願いします。
79名無しさん@そうだ選挙にいこう:2005/03/31(木) 18:59:43
だれか超能力者が必要だ
80名無しさん@そうだ選挙にいこう:2005/03/31(木) 19:04:18
うちではその3つとも、C1を入力するまで結果は空白のままだが。
なんか根本的に使い方間違ってないか?
ちなみにどの式もC1=0なら合計が返るけど。
8168 ◆gkGvMnGzh. :2005/03/31(木) 19:15:55
74&68&77&78です

>>80
皆さんの教えていただいたものをコピペしたのですが
何度やっても、A1またはB1を入力した時点で、既に
D1も表示されてしまいます...

どうかアドバイスをお願いします。
82名無しさん@そうだ選挙にいこう:2005/03/31(木) 19:22:58
C1に0(0値非表示で)とかスペースとか入ってるんじゃないの?
C1でDELキー押してみな。それでもだめなら解らない。
というか、こっちで再現しない問題はアドバイスのしようがない。
8368 ◆gkGvMnGzh. :2005/03/31(木) 19:39:01
ほんとーーーにすいませんでした

>>82氏の予想通り、C1に0を表示したままでした
もちろんそれを消したら、すぐに出来ました!

0、、、、そんなことも知りませんでした、、、トホホ


みなさんの貴重な時間に、ほんとうに申し訳なかったです

どうもありがとうございました
84BUGかなー?:2005/03/31(木) 19:39:08
エクセルのシート間でデータの移動を行っています


Dim Ws3 As Worksheet
Dim Rng As Range
Dim i As Long

Ws3.Cells(i, 1).Resize(1, 30).Value = Rng.Offset(0, -1).Resize(1, 30).Value

こんなプログラムを実行すると

'81534','0000001',0,0 が

81534',0000001',0,0 とCOPYされ ’’シングルクオートで囲んだ
文字列の 左のシングルクオートが外れるんです

なんでしょうかね? RngはCSV形式のファイルから読んだシートです

Excel2000 On WindowsXPでごぜーます

85名無しさん@そうだ選挙にいこう:2005/03/31(木) 19:49:55
>>84
BUGじゃないよ。
Excelの場合、入力の最初に ' を付けると「文字列」に
指定する演算子になります。
'2 と入れると文字列の 2 と認識されます。
頭に ' を入れたければ ''2と入力する必要あり。
86名無しさん@そうだ選挙にいこう:2005/03/31(木) 19:58:10
>>85
ありがとうございます

私が2ちゃんに初めて助けられました
感謝
87994:2005/03/31(木) 21:41:15
>>14 レスありがとうございます。長くなってすいません。
・9:00に出勤するパターンの人は、6:00でも9:00でも9:00の出勤とされる。
・9:01は遅刻となり、9:10の勤務開始とみなされる。11:23に出勤したら11:30とされる。
11:29は11:30。11:30は11:30。11:31で11:40となる。
以上出勤は9:00以前と9:01以降で処理が違う:
9:00以前は何時に来ようが9:00勤務開始とされる。
9:01以降は10分単位で労働者に損な感じで丸められる。

・18:29に退勤したら、18:20とみなされる。18:30は18:20。18:31で18:30.
退勤は労働者に損な感じで10分単位で丸められる。

・深夜残業は22:00以降翌5:00まで。
・残業は出勤してから8時間働いてから。
・12:00から一時間は昼休みで労働時間にカウントされない。
なので、例えば9:02に出勤、23:30まで働いた人は
丸められた出勤 : 9:10
丸められた退勤 : 23:20
昼休みが12:00から一時間。
総労働時間 : 23:20-9:10-1:00=13:10
通常残業 : {9:10から9時間後(昼休みを考慮)の}6:10から22:00までの3時間50分。
深夜残業 : 22:01から23:20までの1時間20分(1時間19分と思われるが…)。
という感じになります。
で通常残業と深夜残業を求めよ、というわけです。
会社入ったばっかであんまりよく分かってないのですが、たしかこういう条件だったと思います。
88名無しさん@そうだ選挙にいこう:2005/03/31(木) 21:48:58
>>87
それなら前スレの回答で解決してるね。
89名無しさん@そうだ選挙にいこう:皇紀2665/04/01(金) 09:20:02
日付 みかん りんご 日付 みかん りんご
3/1 2 3 → 3/1 3 5
3/1 1 2 3/2 0 0
3/3 2 0 3/3 2 0
・ ・
・ ・
・ ・
左がもとデータで右が完成表(日付ごとの合計)です
3/2はデータがないので 0 を表示させたいのです
ご教授宜しくおねがいします




90名無しさん@そうだ選挙にいこう:皇紀2665/04/01(金) 09:42:42
>>89
VBAで。
9189:皇紀2665/04/01(金) 09:48:21
>>90
なんかスペースが消えておかしな表になってしまいましたスイマセン
で、やっぱりVBAでやるしかないのでしょうか?
VBAは自動記録くらいしかできないもので・・・・
92名無しさん@そうだ選挙にいこう:皇紀2665/04/01(金) 10:28:50
>>91
Sub hoge()
 Dim myDate As Date, i As Long, j As Long
 j = 2
 myDate = Cells(2, 1).Value
 Cells(j, 5).Value = myDate
 For i = 2 To Cells(65536, 1).End(xlUp).Row
  Do Until myDate = Cells(i, 1).Value
   j = j + 1
   myDate = myDate + 1
   Cells(j, 5).Value = myDate
   Range(Cells(j, 6).Address, Cells(j, 7).Address) = 0
  Loop
  Cells(j, 6).Value = Cells(j, 6).Value + Cells(i, 2).Value
  Cells(j, 7).Value = Cells(j, 7).Value + Cells(i, 3).Value
 Next i
End Sub

日付はシリアル値で、各項目は数字ではなく数値で入力してあればこれでいけると思う。
セル位置は元データの「日付」がA1、「みかん」がB1、「3/1」がA2に、
出力は同シートのE〜G列にしてあるのであとは勝手に調整して。
93名無しさん@そうだ選挙にいこう:皇紀2665/04/01(金) 10:41:21
>92がVBAでやってくれてることと同じようなことを手動でやるんだったら
実際に販売(?)されたデータの行のほかに月初か月末に毎月1日〜末日分の
空データ(というかゼロ)を入れた行を挿入してピボットテーブル使って集計するとか。

日付  みかん  りんご
3/1   0      0
3/2   0      0
3/3   0      0
(中略)
3/31  0      0


自分だったら>92のを使わせてもらうけど。
9492:皇紀2665/04/01(金) 12:13:17
>>91
関数でやる方法も一応書いておく。
E2に3/1と入力して、A列の最後の日付と同じになるまでオートフィルでコピー。
F1に「=SUMIF($A:$C,$E2,B:B)」と入力して
列範囲は右に2列、行範囲は下にE列の最終行までオートフィルでコピー。
9589:皇紀2665/04/01(金) 12:32:18
皆さん親切にありがとうございました
やってみます。
96名無しさん@そうだ選挙にいこう:皇紀2665/04/01(金) 15:08:50
Excel2002を使っています。
Range("A1").Addressで$A$1が得られますが、
A1を得るにはどうしたらよいでしょうか。
セルに式を代入するときのアドレスを$のつかない形にしたい。
97名無しさん@そうだ選挙にいこう:皇紀2665/04/01(金) 15:57:10
>>96
Range("A1").Address(RowAbsolute:=False, ColumnAbsolute:=False)
ヘルプ見れ
98名無しさん@そうだ選挙にいこう:皇紀2665/04/01(金) 15:58:30
>>96
Range("A1").Address(0, 0)
9996:livedoor06/04/01(金) 16:19:50
>>97-98
ありがとうございました。
100名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 16:45:45
1行ごとに1レコードを入力してあるリストがあるのですが、
各行の先頭セルにチェックボックスを貼り付け、同行の特定セル(あるいは同先頭セル)の内容を0と1で切り替えたいのですが、
このようなことは可能でしょうか。
ワンクリックで切り替えさえできればチェックボックスである必要はありません。
Wordで差込印刷をする際の判別用に必要なのです。
どなたかアドバイスお願いします。
101名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 16:46:48
???なんか日付けがおかしなことになってる???
102名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 17:01:39
>>100
右クリでA列が1と0が置き換わる。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim a As Range
For Each a In Selection
If a.Column = 1 Then
a.Value = 1 - a.Value
End If
Next
End Sub
103名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 17:16:59
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 Dim a As Range
 If Selection(Selection.Count).Column = 1 Then
  Cancel = True
  For Each a In Selection
   a.Value = 1 - a.Value
   a.NumberFormat = ChrW(9745) & ";;" & ChrW(9744)
  Next
 End If
End Sub

>>102を改造してみた。
104100:livedoor06/04/01(金) 17:28:38
>>102,103
どうもありがとうございます!
ばっちり行きました。
条件付書式と組み合わせて見やすくなりました。
って右クリックのイベントで書式も変更できるようなのでこっちでやったほうがいいのかな?
ともかくありがとうございます。

ところで>>102を先に見てそれでうまくいったのですが、>>103は何が違うのでしょうか?
ChrW云々とはどのような記述なのでしょうか?
105103:livedoor06/04/01(金) 17:41:43
>>104
1.A列のみを選択してる場合は、右クリックしても右クリックメニューを表示しない。
2.選択範囲にA列以外が含まれる場合は処理をキャンセル
3.A列以外を範囲選択した場合のキャンセル処理を高速化(B〜Z列あたりを選択して右クリックすれば違いが解ると思う)
4.A列の表示をチェックボックス文字で表示(セルの値は0と1のまま)

ChrW(9745)は□の中にチェックマークが入っている記号
106104:livedoor06/04/01(金) 18:01:31
>>105
なるほど。
チェックボックスに見えるのはすごくいいカンジです。
どうもありがとうございました。
107('A`):livedoor06/04/01(金) 20:46:23
ちょっと、質問させて下さい。
本気で悩んでます(泣)
Excelのバージョン:2003 personal
OS:Win2k

ある、それぞれの各商品コードに、不変の単価が対応付けられてるとします。


商品コード      単価
1000    →   \3,200
1001    →   \2,700
1002    →   \5,000
1003    →   \1,900
1004    →   \6,340
(ちなみに、商品コードは増える可能性があるものとします)


などのように、決まっていた場合に、例えばセルA4に

  セルA4     セルA7
| ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄|
|    1003| |  \1,900 |
|______| |______|

1000と入力したら、セルA7に\1,900と自動的に入ってくるようにしたいのです。
どうかお力添え、お願いしますm(__)m
108('A`):livedoor06/04/01(金) 20:47:21
すみません、下げ忘れました
109名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 20:53:36
>>107
A7で以下の数式
=VLOOKUP(A1,商品コード,0,FALSE)

商品コードは増えるとの事ですので、
名前の範囲を多めにして、名前の定義をしておくとよい。
110('A`):livedoor06/04/01(金) 20:58:56
>>109
ありがとうございます。やってみます!
111('A`):livedoor06/04/01(金) 21:06:28
ちなみにこの式は、どこのセルに入れたらいいのでしょうか?
式の中の商品コードは商品コードが入っているセルの範囲ということでしょうか?

すみませんm(__)m
112('A`):livedoor06/04/01(金) 21:07:13
>>111

>>ちなみにこの式は、どこのセルに入れたらいいのでしょうか?
は無視してくださいm(__)m
113名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 21:10:45
> ちなみにこの式は、どこのセルに入れたらいいのでしょうか?
「A7で以下の数式」って書いてくれてるじゃん

> 式の中の商品コードは商品コードが入っているセルの範囲ということでしょうか?
「商品コードは増えるとの事ですので、名前の範囲を多めにして、名前の定義をしておくとよい。」
って書いてくれてるじゃん。

せっかく答えてくれてるんだからちゃんと読めよ。


ちなみに俺なら範囲可変参照使うけど、コードと単価の表の位置が解らないと掛けないからな。
114('A`):livedoor06/04/01(金) 21:17:22
>>113

確かに、そうですよね、すみません

セルA1に商品コード     セルB1に単価
セルA2に1000       セルB2に\3,200
セルA3に1001    セルB3に\2,700
セルA4に1002     セルB4に\5,000
セルA5に1003     セルB5に\1,900
セルA6に1004     セルB6に\6,340
とし、
115('A`):livedoor06/04/01(金) 21:18:27
A7に商品コードを自分で入力、B7に、表示ということがしたいのです。
116名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 21:25:50
つーか、>109が書いてくれてることで十分答えになってるんだから
あとは検索するなりちっとは自助努力もしてくれ。



117名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 21:27:53
A7、B7を入力、表示セルに使ったら
表を広げられないじゃん・・・
118名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 21:55:17
どうか皆様のお知恵を貸してください。
商品が売れると、1行から順番に、A列に売れた商品の商品番号(a01とかb30とか)、B列に売れた個数(1〜10)が入力されたcsvファイルがあり、
このファイルを使って、1ヶ月にどの商品が何個売れたかを集計したいのですが、
とりあえずどの商品が売れたかを集計する方法は判りました。
新しいファイルに各商品番号を上から順番に列に入力し、その隣の列全てに、
=COUNTIF(上記csvファイルをコピー&ペ−ストしたシート名(仮にmoto)!A:A,商品番号が入力されたセル)
を記入することで解決できました。
この方法では、1回に付き1個だけ買った場合は問題ないのですが、2個以上買った場合、何回買われたかは判るのですが、全部で何個
買われたかは判りません。
手作業でmotoシ−トのB列の数字分だけ、A列に該当商品番号の入力されたセルを挿入すればよいのですが、
売れた商品数が多くなった場合面倒になりますので、csvファイルのデータだけを利用して集計を実現する方法はないでしょうか?
Windows98、Excel2000を使用しています。
よろしくお願いします。

119名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 22:34:03
VLOOKUPとHLOOKUPをあわせたようなことは、できないでしょうか?
左端の列から特定の内容を検索して、行を選び
上の行から特定の内容を検索して、列を選んで、
特定の行と列の交点にあるセルの値を取得したいのですが。
120名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 22:47:35
>>119
indexとmatch関数を組み合わせるのが定法
例: =INDEX(リスト範囲,MATCH(列条件セル,列リスト範囲),MATCH(行条件セル,行リスト範囲)) 
みたいに書く。
式中の項目は勿論セル範囲やセルを指定。
121名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 22:53:01
あ、リスト範囲はデータ部分のトコだけんね。
項目部分は要らんよ。
122名無しさん@そうだ選挙にいこう:livedoor06/04/01(金) 23:24:07
>>118
ピボットテーブル
123名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 07:59:20
助けて…
シートに表示する日時とファイル名を「○○4月分」に変更させるマクロを組んだのですが
なんだかPCの日付自体も変えられてしまうのです。
ファイルを保存後PCを再起動すると、マクロで指定した月日に変更されるようです。
最初は電源が外れて狂ったのかと思いましたが、時刻は変わりません。
Win98SE、XPとも同じ現象が起こりました。
使用する度にこれではたまりません。どなたかお知恵を…ちなみに↓のように書いてます

Private Sub CommandBox月年_Click()
For i = 1 To Worksheets.Count
Worksheets(i).Cells(1, 3).Value = TextBox月.Value
Worksheets(i).Cells(3, 2).Value = TextBox日.Value
Next
Mytuki = TextBox月.Value & "/" & TextBox日.Value & "/1"
With Sheets("data")
.Range("Q2").Value = TextBox年.Value
.Range("N2").Value = Mytuki
End With
TextBoxFILE.Value = ThisWorkbook.Path & "\予定表" & Format(Mytuki, "ggge年mm月")
End Sub

Private Sub CommandBoxFILENAME_Click()
ThisWorkbook.SaveAs Filename:=TextBoxFILE.Value
End Sub

上記で5月1日と指定すると、PCの日付も5/1になってしまう
124名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 08:37:32
原因はこのコードじゃないと思われ。
125名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 09:10:58
>>124
解決しました、このコードでない、ということで別のとこを見てたら
「Date」を変数として使っていたところがあって、MyDateとかにしたら治まりました
ありがとうございます
126名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 11:40:56
Dictionaryオプジェクと(oDicとする)なんですが、Keyとして
存在しない例えばHogeをoDic("Hoge")とするとEmptyが
返ってきます。まあ、それでよいのですがこれをやると
勝手にoDicのKeyにHogeが追加されてしまい以降
oDic.exists("Hoge")がTrueになってしまうのはどうして
なんでしょ?

If oDic.exists("Hoge") And oDic.exists(oDic("Hoge”)) Then

なんて誤った使い方していて発見しますた。
Andの前がFalseでもAndの後を評価してしまうんですね、とほほ。
127名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 13:35:00
セル内で段落をつけると同じ行の表示が下につめられてしまうんですが、
どうやって上につめればよいのでしょうか?
例えば

山田太郎 東京
      渋谷区

って表示させたいんですけど、東京渋谷区に段落つけると

      東京
山田太郎 渋谷区

ってなってしまうんです。
わかりずらくてすいません。
128名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 13:44:51
>>127
わかりませんよ何がいいたいのか。
セル内改行のことですか?

東京
_渋谷区(_は空白)

と表示したいのなら、初めから空白を入れるしかありません。
あるいはセンタリングするぐらいでしょうか。
129名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 13:50:30
>>127

山田太郎のセルの「セルの書式設定」で「配置」を選んで
縦位置を調整する。
130127:livedoor06/04/02(土) 13:57:39
>>128>>129
お二人とも即レスありがとうございます。
わかりずらかったようで申し訳ありません。
自分のやりたいことは129さんのレスで解決しました。
ありがとうございました。
131名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 14:23:50
>>126
oDic("Hoge")と記述することで、新たなkeyである Hoge を宣言し、
""(空白)と関連付けたことになるからですよ。

宣言してない変数Hogeをいきなりマクロの中で使っても0や空白として
認識されるのと同じです。
132名無しさん@そうだ選挙にいこう:livedoor06/04/02(土) 14:31:19
>>131
それは分からないでもないですが、existsというプロパティ
があるにも拘らずなんのために?
そもそもitemを指定しないでkeyだけ追加されることが、add
ではkey,item両方省略できないわけで何でだろうと。
というか、なんかいいことあるんでしょうか。

dim a as integer
とするとaに値を代入しないばあい0になるのとは違うと思ったです。

まあ、そういう仕様だということなんでしょうが、仕様とするメリット
が分からないです。という疑問ですた。
133名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 15:04:13
>>132
>dim a as integer
>とするとaに値を代入しないばあい0になるのとは違うと思ったです。

そういう意味ではない。
「代入しなくても」じゃなくて、「変数を宣言しなくても」だ。
dim a as integerを記述しなくても、aは0または空白と認識される、
といってるんだよ。

厳格な変数宣言をプログラムが肩代わりしてくれるのがメリット。
良くも悪くも「Basic」なんだよ。

134名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 15:39:23
どなたか知恵を貸してください。
当方、Excel2003を使用しています。

VBAを利用したフォームボタンでブックの保存を行いたいのです。
そこで、ファイル名をそのブック内の特定のセルの文をそのままファイル名にしたいのですが出来ません。
(例えば、A1に「顧客リスト01」とあればファイル名を自動的に「顧客リスト01.xls」とするように)
以下は或るサイトでコピーしたもので、これを利用したいと考えています。

Sub Sample()

Const myPath As String = "C:\TEST\"

Dim myFileName As String

ChDrive myPath
ChDir myPath

myFileName = Application.GetSaveAsFilename _
(ActiveWorkbook.Name, "Excelファイル,*.xls")
If myFileName = "False" Then
Exit Sub
Else
With Application
.DisplayAlerts = False
ActiveWorkbook.SaveAs myFileName
.DisplayAlerts = True
End With
End If
End Sub

宜しくお願いします。
135名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 15:45:14
>>134
おいおい、全然違うもの引っ張ってきたな。
特性セルの文字をファイル名にして保存するなんて
腐るほどサンプルコード転がってるからまともなもの拾ってこい。
136名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 15:57:08
>>134
そのサンプル中で必要なのは後半だけ。
SaveAsメソッドを調べてみな。
137名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 16:19:56
ユーザーフォームを作成する際にラベルに文字を表示するとき、
横位置の設定はTextAlignで設定できるようなのですが
縦位置の設定(上詰め下詰め等)はどこかで設定できないのでしょうか?
138名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 17:01:52
>>102-105
で書いてあるように、チェックボックスみたいなことを、僕もしたいのですが、
右クリックでメニューがでてしまいます。

次のようにしたのですが、おかしいところがあれば、指摘してください。
ツール>マクロ>Visual Basic Editor
その後、visualu basic editorで 挿入>標準モジュール
として、>>102>>103をコピー&ペーストしました。

A列に0と入力したり、右クリックしても、いつもどおりです。
右クリックすると、メニューが出てしまいます。なぜでしょう??

versionはExcel2003です。
139103:livedoor6年,2005/04/02(土) 17:17:21
>>138
標準モジュールじゃダメです。
シートタブ(シートの左下でSheet1などと書かれてる部分)を
右クリックして「コードの表示」を選択してそこに貼ってください。

しかし、この程度の使い方も解らない方が、他人の書いたコードをコピペして使うのは危険です。
自分で書けないまでも、コードを見て大まかな内容と使い方が解るようでないと
悪意のあるコードを実行して泣きを見るはめになるかもしれませんよ。
140138:livedoor6年,2005/04/02(土) 17:30:09
>>139
どうもありがとうございます。
一応、プログラミングの経験はあります。
Sheetオブジェクトのメソッドとして、定義するってことですね。

いや、Excelって今まで使ったことなくて、この4月から、使わないといけなくなったので。。

ありがとうございました。
141138:livedoor6年,2005/04/02(土) 17:35:57
あと、もしよければ、
a.NumberFormat = ChrW(9745) & ";;" & ChrW(9744)
この意味を教えてもらえませんか??
a.valueが、1なら、ChrW(9745)で、0なら、ChW(9744)ってことですよね。
真ん中の";;"って、どういう値に対するものなのでしょうか??
しかも、1、0っていう順番で定義するんですか???

もう一つ、おすすめのリファレンスってないですか?
142103:livedoor6年,2005/04/02(土) 18:01:55
>>141
NumberFormatはセルの表示形式を操作するプロパティ
そして表示形式の書式には「正数;負数;0値;文字列」という規則がある
つまりChrW(9745) & ";;" & ChrW(9744)は
正数 → ChrW(9745)
負数 → 表示なし
0値 → ChrW(9744)
文字列 → 指定なし
ということ。たとえば「;;;」なら、セルにどんな値を入力しても表示はしない。

このコードではセルの値は0か1なので0なら「ChrW(9744)=チェックなし」
1なら「ChrW(9745)=チェックあり」となる。
視覚的な表示のみを求めてるなら、セルに直接ChrW(9745)とChrW(9745)を
交互に入力するようにしてもいいんだが、今回は質問者が「0と1で切り替え」を求めているので
セルの値は0と1のままで、視覚効果のみチェックボックスになるように表示形式を使っただけ。


んで、オススメなんてのはここで聞くことじゃない。
とりあえずヘルプでも読み漁っておけ。
ヘルプにも金出してるんだから使わなきゃ損だよ。
143名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 18:06:51
>>142
丁寧にありがとうございます。
ヘルプも活用してみます。ありがとうございました。
144134:livedoor6年,2005/04/02(土) 18:21:38
>>135 >>136
ありがとうございます。
が、サンプルコードが見つからず、SaveAsメソッドもヘルプで調べたのですが、
全くわかりませんでした。
当方、VBAは全くの初心者です。
可能であれば、希望するサンプルコードが置いてあるサイトを教えて頂けないでしょうか。
145名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 18:34:32
>>144
Sub CommandButton1_Click()
ActiveWorksheet.SaveAs Filename:=Range("A1").Value & ".xls"
End Sub
146名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 18:37:05
ゴメン
ActiveWorksheetじゃなくてActiveWorkbookです。
147名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 19:36:33
>>146
これだとパスはMy Documentsになるんか?
148名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 19:39:22
>>147
設定をいじってなければね。
149名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 21:57:50
AからCのセルを結合し業務日報という文字を均等割付にて書き込みました。
そして下線をつけたのですが、均等割付をしているせいか
業 務 日 報
 ̄  ̄  ̄  ̄
というふうになってしまいます。
業 務 日 報
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
としたいのですが良い方法はないでしょうか?
150名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/02(土) 22:08:21
>>149
・均等割付ではなく中央揃えでスペースで字間調整
・アンダーラインではなく罫線やオートシェイプを使う
151名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 00:20:26
abcdefg というセルの値と、hijklmnというセルの値(ハイフンは、下線のつもり)
--- --
を結合させて、別のセルに
abcdefghijklmn
--- --
という風に表示したいです。
つまり、下線の情報を持たせたまま、つなげたいのですが、いい方法はありますか??
152名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 00:27:43
偶数行と奇数行のセルの背景を、それぞれ別の色にすることって可能ですか?
153名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 00:32:07
154名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 02:09:48
Excelで、入力したとおりに表示するには、どういう、表示形式にすればいいんでしょうか??

最低、数値に関して、そのまま表示して欲しいです。
13.0は13.0。13は13という感じに。
155真夜中のさまよい人:livedoor6年,2005/04/03(日) 02:51:28
シート1上にボタンを作って、クリックしたらマクロが動くようにしているのですが
このボタンの表題が、たとえば別シート2のA1セルに書かれている文字列である
ようにすることは可能でしょうか
シート2のA1セルに「モナー」と入力→シート1のボタンの表題は「モナー」。
またシート2に戻って、今度はA1セルに「モナー」から「age」と入力し、またまたシート1に
戻ったら、ボタンの表題は「age」になってるという具合に。
ちなみに当方は、いまだにエクセル97を使用しています
156名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 03:17:21
>>152

一番簡単な方法は、A列にでも連番振って
条件付き書式で「MOD(A1,2)=0」と設定してあげる。
あとの行はコピーすればOK。
157名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 03:24:51
>>154

書式設定を文字列にするぐらいしか思い浮かばない。
158名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 08:25:25
>>155
下のマクロをシート2に書く。

Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Worksheets("シート1").CommandButton1.Caption = Target.Value
End If
End Sub
159名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 14:47:39
Webページの表をExcelXPに取り込んだのですが、
ハイパーリンクがウザくて仕方ありません。
シート単位でまとめて解除するには、どうすれば
よいのでしょうか?
160名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 14:56:09
>>159
Sub ハイパーリンクを削除()
 Dim hoge As Hyperlink
 For Each hoge In ActiveSheet.Hyperlinks
  hoge.Delete
 Next
End Sub
161名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 15:10:58
>>160
コードの内容がわからないのですが、出来ました。
ありがとう。
162名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 17:54:52
>>161
ちょっと上にも書かれているけど、自分で理解できないコード
を安易に実行しないほうがいいよ。

破壊工作的なコードだったらどうするの?
実行は自分で理解してからにしな。
163名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/03(日) 20:35:09
>>162
俺は理解していないコードを実行してることのほうが多い。
164名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 01:03:44
どなたか、お知恵をお貸しください。

Windows2000 と Office2003な職場で仕事をしています。

手書き帳票の清書→入力会社に出荷→パンチ入力会社から納品→納品されたデータを確認しDB登録
という流れのバックオフィス系の業務がメインの職場です。

上記 「→」の部分は、データの受渡しを表します。そしてそのタイミングで、受渡し件数の確認が必要です。

現状は、「→」の部分では、紙に印刷したエクセルのファイルに、ボールペンで記入して相互参照するという
時代錯誤なことをしております。時代錯誤ですしなによりも帳票を物理的に移動させなければならないという
面倒くささもあります。

これをなんとか、WEB上でやりたいと考えております。 

エクセルにこだわる必要性などないと思われるのですが、
1.セキュリティ上の制約から、mysql等、一切のDBアプリが使えない。
2.なによりも、従業員のスキルが低いので、エクセル以外使えない。
という制約から、 エクセルにこだわらざるをえません。

イメージとしては、
「エクセルでフォーマット作成→WEBで公開→ブラウザから入力&保存→一日の終わりにエクセルファイルとして出力&保存」
なんてことをイメージしております。

こういうことは、可能なのでしょうか? 可能であればどのような方法があるのでしょうか?

よろしくお願いします。
165名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 02:05:01
Excelでセルに = で始まる式を入力すると
数式になるはずですよね。

なぜか、数式を編集したりするうちに、計算結果を表示してくれないで、
単に、数式を文字列のように表示するだけのように、なってしまいました。
一度、消して、入力しなおしても、セルの属性??が、文字としてしか認識してくれないようで、
数式として、計算してくれません。

どうしたらいいでしょうか??
166名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 04:29:21
>>165

セルの書式を「標準」し、一度セルをアクティブにする。
167名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 08:56:43
>>164
Webでやりとりするってことは、全世界に公開するってことですよ。
それでもいいのですか?

PCの知識のあまりない人が間にかむなら、面倒くさがらずに
紙運用がbestと思いますが。
168名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 09:32:18
>>164
状況がよくわからない。
ブラウザから入力するのは誰?
入力代行依頼をやめるってこと?
169164:livedoor6年,2005/04/04(月) 10:01:29
ご回答ありがとうございます。

>>167
外部公開されていない、社内イントラ上のWEBですので、大丈夫です。
確実に大丈夫とまでは言い切れませんが、確か、アパッチの入っているサーバー自体が
グローバルIPを持っていないはずです。
現状、WEBは、マニュアル類の掲示や部署内掲示板の運用にのみ使っています

>>168
入力代行依頼はやめません。
ブラウザから入力するのは、それぞれの工程の責任者です。そしてその責任者たちは
同じフロアにおります。ただし、そのフロアが自動車工場なみに極めて広大です。
そのフロアの中を、紙に出力した管理台帳をもって行ったりきたりしているというのが、現状の運用です。


170名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 10:22:17
社内事情をあまり晒さない方がいいよ。
ブックの操作やVBAに関してならここで聞くのもいいけど
それ以上のことは社内で解決しようね。
171名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 10:26:48
>>169
ワークシートに直接チェック入力させれば?
入力可能なWeb形式が希望ならDBソフトは不可避だし。
このあたりはソフト屋に聞くほうがいいと思う。
具体的なデータ形式がわからないと、あいまいな回答しかできない。
172名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 10:35:05
Webと書いてたからインターネットで使うのかと思ったら違うのかよ…
いずれにしてもDBのプログラムを使えないんじゃ話にならないと思うが。
素直に

1:入力用のフォーマットを作ったExcelファイルを作成、共有フォルダに保存
2:そのファイルを各部署の担当者が開いて入力

ってしたら?同時に複数の人間が入力するようなら、

1:マスターになるファイルを共有フォルダに保存
2:各担当者がそれをコピー。コピーしたファイルに日計データを入力。
 日計データの入ったファイルを共有フォルダに保存
3:>164なり誰かがそれぞれの日計ファイルを集計

って形にするとかさ。

173名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 10:52:41
>>169
外部には漏れないみたいだけど、内部の人には?
責任者以外のひとはLANにさわれないの?

記入できるということは消すこともできるってこと。
素人が触ればミスでとんでもない処理をすることだってある。
それを確実に管理する自身と責任を取る覚悟がおありですか?

なければPC処理なんてやめたほうが「楽」ですよ。
174名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 11:43:03
超初歩的な事ですいません。
グラフの凡例って、順番を並べ替える事できますか?

office2000 OSはXPの環境です。
175164:livedoor6年,2005/04/04(月) 11:50:47
みなさん、ありがとうございます。

私の書き方が悪かったようで、なにやら誤解を生じさせているやもしれません。
まず、エクセルに書き込む必要のあるデーターは、単に、「やり取りしたデータの件数」の数字だけです。
特殊なデータ形式のやり取りは必要ありません。ぶっちゃけ、件数がわからなくなってもなんとかなるのが実情です。


>>172氏 ご指摘の方法が、実をいうと、以前の運用でした。だた、集計記入者の作業負荷が高すぎるのと
どうしても情報のタイムラグが生じるために、現状の紙ベースの運用になりました。

>>173
イントラ上のファイルは、責任者しかさわれません。一般作業員は、WEBのみ閲覧可能です。そもそも一般作業員の
クライアントマシンは、ほぼ、シンクライアントです。 

176名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 14:10:36
複数のシートに備品の購入したものを書いたのですが、
   A     B     C     D     
1 えんぴつ   2こ   3月12日 
2 にんじん   3こ   3月13日
3 けしごむ   4こ   3月16日



・つづく


こんな表が12枚で一年分あるのですが、実際はものすごい縦長の表で、
これを一括して集計したいのです。
sumifだと、一枚のシートしか集計できないと思ったのですが、複数の
シートにわたって集計する方法はないものでしょうか?

ご教授のほどよろしくお願い申し上げます。
4
177名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 14:51:55
>>176
できればぐぐってから聞いてほしいなぁ。
Excel SUMIF 複数シートでぐぐって1番目のページ

ttp://www.moug.net/skillup/buef/kn003-1.htm
178名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 14:56:45
>175
集計くらいVBA使えば労力ってほど手間はかからんような気がするけどな。
じゃなきゃ串刺し集計使うとかさ。

>176 177が書いてくれた他にも「複数 シート 集計 Excel」でググってみるとかな
ピボットテーブル萌え
179名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 17:13:10
>>175
件数くらいなら簡単なCGIで集計可能。
結果もExcelに取り込める。
172の方法でタイムラグが出る原因が不明だけど。
180おながいします:livedoor6年,2005/04/04(月) 18:09:39
エクセルで『このセルがこの金額以上ならいくら割引』ってのをやりたいのですが、

たとえば
10000円以上なら1000円引き
20000円以上なら2000円引き
30000円以上なら4000円引き

みたいにする場合どういった式になるんでしょうか?

心優しい方のお返事お待ちしております。。
181名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 18:13:53
IFをネスト
182おながいします:livedoor6年,2005/04/04(月) 18:30:11
ネストって方法を知らなかったのでググッて下のように書いてみましたが
見事に失敗しますた。どの変が悪いんでしょうか?

=IF([値引き前のセル]>=10000,[値引き前のセル]-1000,IF([値引き前のセル]>=20000,[値引き前のセル]-2000,IF([値引き前のセル]>=30000,[値引き前のセル]-4000,IF([値引き前のセル]>=40000,[値引き前のセル]-6000,[値引き前のセル]-0))))
183おながいします:livedoor6年,2005/04/04(月) 18:37:29
読みにくいんで書き直しました。。
もうセルも表記しておきます。


=IF(D79>=10000,D79-1000,
IF(D79>=20000,D79-2000,
IF(D79>=30000,D79-4000,
IF(D79>=40000,D79-6000,D79-0))))
184名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 18:47:54
>>183
4万円でも5万円でも、最初の1万円以上という条件に引っかかっている。
順序を逆にする。
185おながいします:livedoor6年,2005/04/04(月) 19:05:16
出来たー!!
184の方ありがとうございました。
順序を逆にするという方法がまったく頭にありませんでした。

とても勉強になりましたです♪

本当にありがとうございました。
186名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 21:40:27
コントロールで、「クリア」と言うボタンに
コンボボックス.ListIndex = -1
というのをつけてボックスの内容をクリアしているのですが、
その後コンボボックスをクリックすると「プロパティの値が不正です」と出てしまいます。
この警告が出ないようにするには、どうすればいいでしょうか
ちなみにMatch Requied はtrue にしてないとまずいんです
187名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 21:49:12
コンボボックス.Clear
じゃダメなの?
188186:livedoor6年,2005/04/04(月) 22:00:43
>>187
そうすると、「予期せぬエラーが発生しました」となって
デバック画面になってしまうのです。ビビリます
189名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 22:15:58
>>188
(´-`).。oO( なぜそれを最初に書かないんだろう・・・ )

まあ、情報後出しにする奴には教えないのがお決まりなので以下ヌルーで
190名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 22:45:47
>189=>187? エラーになんのはあたりまえだろw何を逆切れてるのやらwww
191名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/04(月) 22:56:03
春の妄想
192186:livedoor6年,2005/04/04(月) 23:38:28
>>186
これって後だしになるんですか?す、すいませんそんなつもりではなかったです。
何かお知恵をいただければと思っています。
193名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/05(火) 00:16:16
>>186
新規ブックにコンボボックス(Match Requied = True)とコマンドボタンを用意して
1.ブックOpen時にコンボにAddItem
2.コンボから適当に選択
3.ボタンClickでコンボのListIndex = -1
4.コンボを再度クリック
の手順でやってみたけど
「プロパティの値が不正です」は再現しなかったな(当方Excel2000 SP3)。
コンボボックスのClickイベントとかでListIndexを使って何か処理していないかい?
もしあるなら、その辺を見直してみては?
194名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/05(火) 00:37:10
どなたかお知恵を頂けないでしょうか。

あるExcelファイルを開いた直後は動作は普通なんですが、
同ファイルの別シートを次々表示していくと動作が急に重くなり、
セルの内容を変更するだけで10〜20秒ぐらいbusy状態になってしまいます。
重いですが、セルの変更は可能です。
Excelを終了して、再度同ファイルを開いても既に重い状態になっています。
普通の動作をするのは初回起動のみでした。
マクロ、VBAのモジュール等はありません。

OS:WindowsXP-Pro SP2
Excel:2003

どうかよろしくお願いします。
195名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/05(火) 00:55:42
>>194
変なフォント使っているとか、、、
全てのフォントをMS Pゴシックとか極普通のにしたらどうなる?
196名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/05(火) 01:58:14
ブックの共有ができなくなっている。。。
なんらかの保護はしていないのになぜだろう。。
197名無しさん@そうだ選挙にいこう:livedoor6年,2005/04/05(火) 02:26:11
リスト機能を使用していたためでした。
198名無しさん@そうだ選挙にいこう:2005/04/05(火) 10:29:20
EXCEL2002以降でEXCEL95とかのファイルを開くと
改ページ位置がずれるのですが、
(EXCEL95では1ページにおさまる行数が2002以降ではおさまらない)
双方で同じ書式で扱うのは無理なんですかね。
199名無しさん@そうだ選挙にいこう:2005/04/05(火) 11:02:56
テンプレに
「情報の後出しをするな」と付け加えてほしいなぁ
200名無しさん@そうだ選挙にいこう:2005/04/05(火) 11:17:02
シ−トごとに分離して一つずつのファイルに保存できないのでしょうか?
201名無しさん@そうだ選挙にいこう:2005/04/05(火) 11:21:15
すみませんが2ページ目ってどうやって設定するのですか?
こんな初歩的なこと知らないオレって、、、、orz
202名無しさん@そうだ選挙にいこう:2005/04/05(火) 11:43:28
はじめまして。ご教示ください。

得意先からFAXで送られてきた内容をスキャナで読んで、
その内容に上書きしてプリントアウトして、それをFAXで送って
回答したいのですが、
そのFAXを図形で読み取った場合だと、テキストボックスの重ね方は
わかるのですが、セルというかワークシートが重ねられません。

あるいは、読み取って背景化して、そこにかさなるようにワークシートで
作業をすることも考えましたが、プリンタでズレたらばアウトなので
やっていません。

これに関して、便利な方法がありましたらご教示ください。



203名無しさん@そうだ選挙にいこう:2005/04/05(火) 11:44:25
>>200
面倒臭がらずにシート一つすつ、
シート名右クリック→シートの移動・コピーで
新しいブックにコピーすればどうすか?
>>201
改ページの挿入なら行選択で挿入→改ページ
ただ単純に入力行(または枠)増やせば自然とページ増えるが?
あるページをコピーしたいなら元のページの行を全て範囲選択して
コピーする場所の行を選択して右クリック→コピーした行の挿入だが
204201:2005/04/05(火) 12:03:01
自己解決しました。お騒がせです(  ̄ー ̄)
205名無しさん@そうだ選挙にいこう:2005/04/05(火) 12:15:09
>>203
THANK YOU!
206名無しさん@そうだ選挙にいこう:2005/04/05(火) 13:07:30
御教授ください。
例えば1番上の行に四月、五月…と書いていって
下に会計を入れていく。
行がどんどん下にいって
どの列が何月だか分かりづらい!
こんなとき1番上の行を常に表示する方法
教えて下さい。
207名無しさん@そうだ選挙にいこう:2005/04/05(火) 13:11:41
>>206
うーん釣り?
取りあえずその1番上の行選択してウィンドウ→ウィンドウ枠の固定で
やれっけどこれはマニュアルレベルでしょ
208名無しさん@そうだ選挙にいこう:2005/04/05(火) 13:22:22
207続き
他人のこと答えてる場合じゃないですから!
誰か198教えてくれエロイ人
209名無しさん@そうだ選挙にいこう:2005/04/05(火) 13:38:05
>>208
印刷の設定で頑張ってみるか文字を小さくする
あとは「EXCELだから」とあきらめる
210名無しさん@そうだ選挙にいこう:2005/04/05(火) 13:41:31
>>207
釣りじゃないっす!ありがとう!
助かりました!
211名無しさん@そうだ選挙にいこう:2005/04/05(火) 13:46:36
>>209
orz…あきらめるのかオイ、俺の人生こればっか
鬱だ死脳(ナツカシイ)
212名無しさん@そうだ選挙にいこう:2005/04/05(火) 15:12:12
前スレの686の件ではお世話になりました。
再びで恐縮ですが686関連で質問があります。

セルA1に「=INDIRECT("B1")-INDIRECT("C1")」
という関数を設定し、以降にコピーにて
A2 「=INDIRECT("B2")-INDIRECT("C2")」
A3 「=INDIRECT("B3")-INDIRECT("C3")」
というようにしたいのですが、カーソルを引っ張っただけでは出来ません。
どのように行えば出来ますか?
213名無しさん@そうだ選挙にいこう:2005/04/05(火) 15:40:11
>>212
=INDIRECT("B"&ROW())-INDIRECT("C"&ROW())

フィルコピーしても数式の内容は変わらないが、返る結果はきちんと行ごとに変わる。
214名無しさん@そうだ選挙にいこう:2005/04/05(火) 16:08:35
>>212-213
しかしこれは単に
A1に=B1-C1
と入れるだけじゃないか?
別シートや別ブックの場合でも、相対参照にしとけば、セルのコピーでできるから、
あまり必要ないんじゃないの?
215名無しさん@そうだ選挙にいこう:2005/04/05(火) 16:26:34
>214
絶対参照の意味が理解できてないようだな
216212:2005/04/05(火) 16:32:51
申し訳ありません。
例が実状にあっていませんでした。

C2 「=INDIRECT("C1")+INDIRECT("A2")-INDIRECT("B2")」
以降に
C3 「=INDIRECT("C2")+INDIRECT("A3")-INDIRECT("B3")」
C4 「=INDIRECT("C3")+INDIRECT("A4")-INDIRECT("B4")」
という感じにコピーしていきたいのですが、
どのようにすればいいのでしょうか?
重ね重ね申し訳ありませんがよろしく御願いいたします。
217名無しさん@そうだ選挙にいこう:2005/04/05(火) 16:43:34
=INDIRECT("C"&ROW()-1)+INDIRECT("A"&ROW())-INDIRECT("B"&ROW())
218212:2005/04/05(火) 16:48:03
解決できました。
御教授ありがとうございました。
219名無しさん@そうだ選挙にいこう:2005/04/05(火) 19:04:24
Excel2002を使っています。
書式設定で、日付が
2005/ 4/ 5
のように一桁だったらスペースにしたいんですが、どう指定したら
よいのでしょうか。
220名無しさん@そうだ選挙にいこう:2005/04/05(火) 19:48:34
>>219
表示形式だけではでは無理だと思う。
だって表示形式の書式記号には「一桁だったら」という条件を判断できるものが無いから。
年と月のみの表示なら「yyyy/* m/」としてセル幅を調整することで
月が一桁の場合のみスペースが入ってるように見せかけることも出来るけど、
日も表示させたいなら、別セルに
=YEAR(A1)&"/"&IF(MONTH(A1)<10," "&MONTH(A1),MONTH(A1))&"/"&IF(DAY(A1)<10," "&DAY(A1),DAY(A1))
と入れるとか、VBAで↓みたいにするとか
Private Sub Worksheet_Change(ByVal Target As Range)
 If Month(Target) < 10 And Day(Target) < 10 Then
  Target.NumberFormat = "yyyy/ m/ d"
 ElseIf Month(Target) < 10 Then
  Target.NumberFormat = "yyyy/ m/d"
 ElseIf Day(Target) < 10 Then
  Target.NumberFormat = "yyyy/m/ d"
 Else
  Target.NumberFormat = "yyyy/m/d"
 End If
End If
221219:2005/04/05(火) 21:24:43
帰宅しました。
>>220
ありがとうございます。やはり数値の場合の#のようなものはないのですね。
222名無しさん@そうだ選挙にいこう:2005/04/05(火) 21:25:42
>>215
Excelの絶対参照($A$1とか)は理解してるけど、
>>212>>216はただ相対参照したいだけのように見えるんだけど
INDIRECTを使う意味はどこにあるの?
223名無しさん@そうだ選挙にいこう:2005/04/05(火) 21:48:31
>>222
絶対参照はオートフィルを使っても参照先が変化しないというだけで、
セル・列・行の挿入・削除・移動など参照先そのものの位置が変化した場合は
参照先が相対変化する。
そういう場合でも参照先が変化しないのがINDIRECTによる参照。
ただしオートフィルでコピーしても参照先が固定されるので
複数の相対変化式を使いたい場合は
ADDRESS、ROW、COLUMNまたはINDEX、OFFSETなどを使う。

これが絶対参照(絶対(固定)位置を参照する) と 固定参照(参照先を固定する)の違い。
224名無しさん@そうだ選挙にいこう:2005/04/05(火) 22:04:28
225名無しさん@そうだ選挙にいこう:2005/04/06(水) 00:02:05
>>223
内容は理解しました。
どういうときに必要になるのかは、よくわからないけど。
226名無しさん@そうだ選挙にいこう:2005/04/06(水) 09:29:41
瓶レスですが、>212さんは単にオートフィルで数字を増やしたいだけみたいだから
D2に '=INDIRECT("C1")+
E2に INDIRECT("A2")-
F2に INDIRECT("B2")
C2に =D2&E2&F2
と入力してオートフィル、C列コピー→値貼り付け
データ→区切り位置→完了、DEF列削除。でわ?
227名無しさん@そうだ選挙にいこう:2005/04/06(水) 09:32:21
   A    B   C
1  10cm  ≧   5cm
(A1、C1はユーザ設定でcm表示させている)
を別セルに例えば&を使って結合すると、10≧5 となり、cmは
反映されません。これをうまく単位まで反映される方法はあるでしょうか。
228名無しさん@そうだ選挙にいこう:2005/04/06(水) 10:32:25
>>227
ユーザー定義関数でも使えば?
.Valueで取得すると「10」になるけど
.Textで取得すれば「10cm」になる。
あとは繋げればいいだけだし。

ワークシート関数は値を取得する物なので
文字列値ですらないcmは取得されないし、
ユーザー定義の表示形式書式を取得するものも無い。
あとはそれぞれの値を10、5から10cm、5cmにするか
結合式の中で"cm"を付加するかだな。
229名無しさん@そうだ選挙にいこう:2005/04/06(水) 11:13:02
質問です エクセル2000で WindowsXP上で動かして
います

文字列の検索なんですが 旨くマッチしてくれません
文字列の最後に’(シングルクオート)がある文字列
を探したいのです

セルの中にたとえば abc' や 123'' などのセルを
ピックアップしたいのですが 旨く行きません

Dim RE, strPattern As String
Set RE = CreateObject("VBScript.RegExp")
Dim r as Range

strPattern = "$'"
With RE
.Pattern = strPattern
.IgnoreCase = True
.Global = True

 If .Test(r.Value) Then
      見つけた! これだ!
   End If
END With
230名無しさん@そうだ選挙にいこう:2005/04/06(水) 11:30:09
>>226
手間かけすぎ
スマートに行こうぜ
231名無しさん@そうだ選挙にいこう:2005/04/06(水) 11:41:34
>>229
ttp://www.officetanaka.net/excel/vba/tips/tips38.htm
ここらへんからコード引っ張ってきたんだろうけど
全然意味理解してないみたいだね。

とりあえず末尾に ' があるセルを検索したいなら
Find("*'", , , xlWhole)
Right(.Value, 1) = "'"
で出来る。
要望のみで情報が全く書かれてないので
それ以上のことは教えられない。
232名無しさん@そうだ選挙にいこう:2005/04/06(水) 11:45:35
>>229
strPattern = ".*'$"じゃないの?
233名無しさん@そうだ選挙にいこう:2005/04/06(水) 12:04:48
スマートじゃないのは認めますよ。だったら
"C"&ROW()-1←これはスマートかっつー事です。
手間も大してかからない。
これが手間に思えるならもう少し訓練した方がいい。
要は最終形をいかに楽して実現するかです。
234名無しさん@そうだ選挙にいこう:2005/04/06(水) 12:14:58
かわいそうな奴┐(´ー`)┌
235名無しさん@そうだ選挙にいこう:2005/04/06(水) 12:26:20
>>233
操作としては>>226より遙かにスマートだろ
式入れたらオートフィルでコピーするだけだし
236かわいそうな奴:2005/04/06(水) 12:44:54
ここは厳しいインタネツですね
237名無しさん@そうだ選挙にいこう:2005/04/06(水) 12:54:17
あんまり粘着するなよ
238名無しさん@そうだ選挙にいこう:2005/04/06(水) 13:31:53
スマートな方法が常に最良とは言えんがな。
一緒に働く人たちの環境や自分のかかわり方によっては、
泥臭いやり方が最善なこともある。ケース・バイ・ケース。
239227:2005/04/06(水) 13:48:27
227です。228さんありがとうございます。結局
   A    B   C
1 10cm   ≧  5cm
を別セルにtext関数で10p、5pと表示させ、
&でつなげるという方法をとってみました。しかし、
text関数の表示形式で
10p(cとmでcmはなくp)ならうまくいきますが、cmで分けると
うまくいかないのと、mの単位はうまく表示させることができませんでした。
根本的にやりなおす必要があるのでしょうか。
240名無しさん@そうだ選挙にいこう:2005/04/06(水) 13:49:11
227です。228さんありがとうございます。結局
   A    B   C
1 10cm   ≧  5cm
を別セルにtext関数で10p、5pと表示させ、&でつなげるという方法をとってみました。しかし、
text関数の表示形式で10p(cとmでcmはなくp)ならうまくいきますが、cmで分けるとうまくいかないのと、
mの単位はうまく表示させることができませんでした。根本的にやりなおす必要があるのでしょうか。
241227:2005/04/06(水) 13:56:38
ちょっと補足させてください。
text関数の表示形式に例えば#.00あや#.00a
なら反映されるのに、#.00mとか#.00cmのように入力すると
#VALUE表示になってしまいます。どうやら単位になり得る
アルファベットはNGみたいな雰囲気ですが、対処法はあるでしょうか。
242名無しさん@そうだ選挙にいこう:2005/04/06(水) 13:59:52
>>240
=A1&"cm"&B1&C1&"cm"
じゃだめなの?
243227:2005/04/06(水) 14:08:05
>>242
ありがとうございます。
mのところはその方法でしのぎます。
244名無しさん@そうだ選挙にいこう:2005/04/06(水) 14:30:45
>>241
>>228はTextプロパティを使えといってるんだと思うけど。
245名無しさん@そうだ選挙にいこう:2005/04/06(水) 14:35:54
>>241
=TEXT(C1,"#.00""cm""" )
246名無しさん@そうだ選挙にいこう:2005/04/06(水) 14:53:37
|←    a    →|
       |←    b    →|
. _____________
1|     c       d
2| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

このような表で、1行目は月を、2行目は日を入れて
a の範囲を表示しているときは c の位置に
b の範囲を表示しているときはd の位置に月を表示させたいのですが、
どのようにすれば良いでしょうか?
つまり↓みたいな感じです。

. ________
1|     4月
2| 1 | 2 | 3 | 4 | 5 | 6 |
    ↓横にスクロールしても月の表示位置は同じ
. ________
1|     4月
2| 4 | 5 | 6 | 7 | 8 | 9 |

1行目には「4月」などという文字を複数入れたくないので
どうかご教授ください。Excelは2002です。
247名無しさん@そうだ選挙にいこう:2005/04/06(水) 15:11:30
初めて質問します。

当方、Wndows2k sp4・Excel2k sp3(VB6.0)で、VBAを使って開発しています。
(MS OfficeサイトでUpDate済み)

開発しているのは割と単純な業務支援アプリなのですが、
保存するたびに何故かファイルサイズが肥大化して困っております。

もちろん、何か編集を加えていれば当然増えるのは分かっていますが、
ブックを開いて何もせず即保存して確認してもファイルサイズが増えているのです。

増えるのは約200KB〜400KBほどですが、何度もヴァージョンを更新していくと
とんでもないファイルサイズとなり、クライアントのスペックによっては
開くだけでフリーズする恐れも考えられます。(現在550KB程度)

何かわずかな情報でもかまいません、原因や解決にお心当たりのある方
どうかアドバイスをお願いいたします。
248名無しさん@そうだ選挙にいこう:2005/04/06(水) 15:31:48
>>247
すべてエクスポートしてインポートしてみれば?
249名無しさん@そうだ選挙にいこう:2005/04/06(水) 15:39:53
>>246
無理
250名無しさん@そうだ選挙にいこう:2005/04/06(水) 15:54:08
>>246
アクティブセル位置にラベルを追従させるとかならいいけど、
スクロールはイベントが無いからむずいな。
251247:2005/04/06(水) 16:58:40
>>248
アドバイス大変ありがとうございます。
さっそくやってみましたが状況は変わりませんでした。

VBA側ではなくてExcel側の問題かな?と思い、
使用している6枚のシートを順番に削除しながら保存してみましたが
これでもサイズが増えます…。
シート自体を削除しているのに、なぜでしょうか?

>>246
無理やり作るならこんな感じだと思いますが、
多分意図するものではないと思うのでご参考までに。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Select Case ActiveWindow.ScrollColumn
Case Is < 20
Cells(1, 10) = Format(Now(), "m") & "月"
Cells(1, 30) = ""
Case Else
Cells(1, 10) = ""
Cells(1, 30) = Format(Now(), "m") & "月"
End Select

End Sub
252名無しさん@そうだ選挙にいこう:2005/04/06(水) 17:04:12
>>251
Wordでは差分保存にしているとどんどんファイルサイズ増えますが、
Excelには差分保存の設定ないですしねぇ。

他のファイルはどうなのですか?
Excelの問題なら、どのファイルでも同じ現象が起こると思うのですが。
253名無しさん@そうだ選挙にいこう:2005/04/06(水) 17:06:27
エクセル2000です。ご伝授お願いします。

A1セルにオートシェイプが有ればB1セルに”1”を無ければ”0”を返したいのですが
特定セルにシェイプが有るのか、無いのか調べる方法ってありますか?

よろしくお願いします。
254247:2005/04/06(水) 17:42:47
>>253
ちょっと原始的ですが、こんな感じはどうでしょう?

Privete Sub cmdBtn1_Click() ←適当にボタン作りました

  Dim objShp As Shape

  For Each objShp In Sheet1.Shapes 'そのシェイプが存在するかどうかのループ
    If objShp.Name = "シェイプ名" Then '存在したとき
      If ActiveSheet.Shapes("シェイプ名").Top = 0 And _
        ActiveSheet.Shapes("シェイプ名").Left = 0 Then '例)セルA1の左上端の座標
        Range("B1") = 1 'セルB1に1を入れる
        Exit Sub
      End If
    End If
  Next
  Range("B1") = 0

End Sub


>>252
他のブックで同様の操作(開いて何もせず保存、即閉じる)をしたところ、
 ・マクロありブック → サイズの変動あり
 ・マクロなしブック → サイズの変動なし
となりました。時間もなかったのでサンプル数は少なめですが…。

ちなみにマクロありブックでは、逆にサイズが減ったブックもありました!
いよいよ私には不可解になって参りました。

とりあえず更新内容は、エディタでコーディングして保存しておき、
ブック自体を更新させないようにしておくことで緊急回避しています。
255247:2005/04/06(水) 17:44:29
×Privete Sub → ○Private Sub
ヤッチマッタ…
256227:2005/04/06(水) 18:04:44
>>245
ありがとうございます。解決しました。
257名無しさん@そうだ選挙にいこう:2005/04/06(水) 20:48:08
WinXP上でOfficeXPでエクセルを用いてグラフを作成しております。

これまで、グラフ作成ののち、プロットエリアの書式設定、目盛り線の書式設定、
凡例マーカーの書式設定などでグラフの書式を変更してきました。
グラフの作成後にこうした作業をひとつひとつ繰り返すのは若干面倒なので、
事前に何らかの方法でこうした設定はできないものでしょうか。
258名無しさん@そうだ選挙にいこう:2005/04/06(水) 21:09:31
設定済みのグラフをアクティブにし、
グラフの種類>ユーザー設定>ユーザー定義>標準 で登録すると良いよ。
259名無しさん@そうだ選挙にいこう:2005/04/06(水) 21:31:30
お願いします。WinXP、OfficeXP、Excel2002です。


GETPIVOTDATA関数を使い、ピボットテーブルのフィールドごとの総計を
取得しようとして、フィールド・アイテムを一つだけ指定したのですが#REF!
が出てしまいます。(2つ目の行フィールドだけを指定したせいでしょうか)
[GETPIVOTDATA("金額",SHEET1!$A$3,SHEET1!$B$4,"三月")]?→#REF!

ピボットテーブルに総計を表示させて、それをアイテムとして指定しようにも、
フィールド名にセル参照を使ってるのでどうしたものか見当がつきません
[GETPIVOTDATA("金額",SHEET1!$A$3,SHEET1!$B$4,SHEET1!$B$4+" の合計")]?→#REF!

なんとか、ピボットテーブルのフィールド2の総計を取得したいのです。
同データを元にした別のピボットテーブルを作って、行を一つに減らすことを
考えましたが、ページフィールドを一括管理したいのでできればこれはさけたいです。
260名無しさん@そうだ選挙にいこう:2005/04/06(水) 22:22:35
>>259
値を表示したいセルをクリックして「=」だけ入力し、
そのままピボットテーブル内の取得したいセルをクリック。
…であかんの?
GETPIVOTDATAは、それ以外の方法で使ったことない。
261名無しさん@そうだ選挙にいこう:2005/04/06(水) 22:29:18
>>251
新しいブックにインポートするんよ。
262名無しさん@そうだ選挙にいこう:2005/04/06(水) 22:39:34
>連続するデータ入力についてです。
>「1,3」と入力して下へドラッグすると「5,7,9」と連続データが入力されるし
>「第1章、第3章」を下へドラッグしても「第5章、第7章」となります。

>それなのに「=債権者一覧表!B3、=債権者一覧表!B5」を下へドラッグすると
>「=債権者一覧表!B5、=債権者一覧表!B7」となってしまい
>同じような「3,5,7,9・・・」というような連続データができません。
>いちいち入力していかないといけないんでしょうか?
>やり方がわかる方いらっしゃれば教えていただけませんか、お願いします。

誘導されてきました。
職場のPCで、多分EXCEL2002の前のバージョンだと思うのですが
どうぞよろしくお願いします。
263名無しさん@そうだ選挙にいこう:2005/04/06(水) 22:51:07
>>262
「"=債権者一覧表!B3、"=債権者一覧表!B5」

置換「"= → =」
264名無しさん@そうだ選挙にいこう:2005/04/06(水) 23:00:46
>>263
!!!
できました!!
目から鱗です、どうもありがとうございましたヽ(´∇`*)ノワーイワーイワーイ
明日が楽しみです♪
265名無しさん@そうだ選挙にいこう:2005/04/06(水) 23:02:00
>>262
え?
当然ですけど、、、
数式とデータでは違いますよ。
266257:2005/04/06(水) 23:06:55
>>258
神降臨!!できますた。ありがとうございます。これでグラフ作成が楽になります。
267名無しさん@そうだ選挙にいこう:2005/04/06(水) 23:26:47
>>265
何もわかっていなくてすみません。
>>263以外の方法もあるんでしょうか?
268259:2005/04/07(木) 00:18:52
>>260
・・‥考えつきませんでした。ありがとうございます、明日試してみますね。
269パニクリ:2005/04/07(木) 10:48:57
エクセルのVBEを起動しようとするとEXCELのページ違反です
モジュール VBE6で強制終了します
OSはwindows98でoffice2000premium
オフィスの再インストールを行いましたが直りませんでした
対処方法を知っている方がいたらお願いします
270名無しさん@そうだ選挙にいこう:2005/04/07(木) 11:00:57
>>269
新規ブックでVBE立ち上げても?
271名無しさん@そうだ選挙にいこう:2005/04/07(木) 14:10:15
http://j-sound.k1.xrea.com/vmelo/melo/no127.zip

2005/5/1分だけの数の合計の出し方、計算式教えて下さい
272名無しさん@そうだ選挙にいこう:2005/04/07(木) 14:21:27
>>271
=SUMIF(A2:A10,DATE(2005,5,1),B2:B10)
273パニクリ:2005/04/07(木) 14:48:39
>>270
新規ブックでもなります
274名無しさん@そうだ選挙にいこう:2005/04/07(木) 15:21:50
WINXP,2003です。
17年度のある日の勤務時間と16年度の同じ日の時間の差を求めたいのです。
シート17---A1には20時間
シート16---A1には23時間30分が入っているとします。
='17'!A1-'16'!A1
で-2:30と表示させたいのですが。#####になってしまいます。
IF(("'17'!A1-'16'!A1")>=0,'17'!A1-'16'!A1,"-ABS('17'!A1-'16'!A1)")でも
だめですし…。文字としてのマイナス記号のあとに時刻の絶対値がつづけば
表面上は体裁がととのうかと思いましたがダメでした。
セルの書式は出来るだけどのPCに持っていってもいいように、ユーザー
定義を使わなければそれにこしたことはありません。
どなたかお知恵を授けてください。お願いします。
275名無しさん@そうだ選挙にいこう:2005/04/07(木) 15:35:04
>>274
=IF('17'!A1>'16'!A1,TEXT('17'!A1-'16'!A1,"h:mm"),"-"&TEXT('16'!A1-'17'!A1,"h:mm"))
276名無しさん@そうだ選挙にいこう:2005/04/07(木) 15:41:18
>>272サンクス

すいません追加です
日付   名前 数
2005/5/1 Aさん 1
2005/5/1 Bさん 2
2005/5/1 Cさん 3
2005/5/1 Aさん 4
2005/5/1 Aさん 5
2005/5/6 Bさん 6
2005/5/7 Bさん 7
2005/5/8 Bさん 8
2005/5/9 Bさん 9

すいません追加です。
2005/5/1分のAさん
      Bさん
      Cさんのそれぞれの合計はどうすればよいでしょうか?
日付を打ったら自動でA,B,Cの合計が出るようにしたいです。

また教えて下さい  
http://j-sound.k1.xrea.com/vmelo/melo/no128.zip
277274:2005/04/07(木) 15:44:59
>>275
神!助かりました。
今度はその結果を計算してみたいと思いますが、データ形式を変換すれば
できそうな予感がしてきました。
本当にありがとうございました>>275さんにいいことがありますように!
278272,275:2005/04/07(木) 16:16:49
>>276
そういうことは最初に書こうよ。
条件が2つになると配列数式使わないとならないので
=SUM(IF(A2:A10=DATE(2005,5,1),IF(B2:B10="Aさん",C2:C10,0),0))
これを入力してCtrl+Shift+Enter。数式が { } で囲われればOK。

「日付を打ったら自動で」としたいなら、日付の部分である「DATE(2005,5,1)」を
実数ではなく参照にすればいいだけ。
名前の部分も参照にしてもいいし、あとはお好きなように。
279名無しさん@そうだ選挙にいこう:2005/04/07(木) 16:26:18
>>273
メニューの「ヘルプ」→「アプリケーションの自動修復」はやってみた?
それでも駄目なら
1.Office2000をアンインストール
2.アンインストール後に
  <インストールしたドライブ>:\Program Files\Microsoft Officeと
  <インストールしたドライブ>::\Program Files\Common Files\Microsoft Shared\VBA\VBA6
  が残っていたら削除
3.再インストール
でやってみたら?
280パニクリ:2005/04/07(木) 18:59:28
>>279
ダメでした
281名無しさん@そうだ選挙にいこう:2005/04/07(木) 19:25:24
>>280
うーん、正直お手上げ。
識者の登場を待つしかないっすね。
自分ならOS再インストールするけど…
282247:2005/04/07(木) 19:30:34
>>261
大変遅くなりました。

エクスポートしていたら、あることに気づきました。
1つのVisual Basic Form Binary File(.frx)が
ファイルサイズのほとんどを占めるサイズになっておりました。

このバイナリファイルを使用するフォームは、いたって普通の作り方だと思うのですが
他のフォームと違う点を挙げるとすれば、FlexGrid6.0を使用しているだけです。

どのファイルかは突き止めたものの、解決策まで思いつかず未だに困っております。
バイナリファイルをスリム化させる方法や、別のものと差し替える方法などないのでしょうか?

どうかご教授くださいませ。
283259=268:2005/04/07(木) 21:49:43
報告です。

>>260
すいません、やってみましたが関数の指定がおかしなことになって駄目でした。
今ははINDEX関数で無理矢理気味に指定して何とかしてます。(今日思いついたんですよ)
[ INDEX(ピボットテーブル,MATCH(CONCATENATE(フィールド2," 合計"),ピボットテーブル!$B:$B),MATCH("総計",ピボットテーブル!$4:$4)) ]
284名無しさん@そうだ選挙にいこう:2005/04/07(木) 22:06:44
質問です。
EXCEL2002を使っているのですが、
個人用マクロブックにマクロを新規登録しようとすると
「起動フォルダにある個人用マクロブックは、記録のために開かれた状態でなければなりません。」→「記録できません」
というメッセージが出て、登録できません。

personal.xlsを一旦削除すると登録できるのですが、保存して終了後再度エクセルを起動すると
使用できるマクロには個人用マクロが表示されず、また新規登録しようとすると上記のメッセージがまた出てしまいます。
このスレの過去ログを調べたら、
「エクセルがpersonal.xlsのパスを忘れてしまっていたので、ファイル名を指定したら直った」
なるものを見つけたのですが、何をどうしたらいいのかさっぱり分かりません。どうか教えてください。
285名無しさん@そうだ選挙にいこう:2005/04/08(金) 03:54:26
他人が作ったexcelデータファイルを貰いました。
そして、そのexcelデータファイルの中にボタンが使われていて、
邪魔なのでそのボタンを消したいのですが、ボタンの消し方がわかりません。

ボタンの上で右クリックしてみたり、
ボタンを選択してdelキーを押したりしましたが、
全然消えません。
これはmicrosoftの嫌がらせかなんかですか?
286名無しさん@そうだ選挙にいこう:2005/04/08(金) 05:45:39
>>285

いまいちよく解らないけど、オートフィルタなら
ツールバーの「データ」→「フィルタ」の
オートフィルタのチェックを外せば消えるはず。
コマンドボタンとかだったら右クリックして
切り取りで消せるはず。
後者に関しては削除後、動作の保証はできないけどね。
あとヴァージョンによって多少の表記の違いがあるかもしれないことを
頭の片隅においといてね。
287名無しさん@そうだ選挙にいこう:2005/04/08(金) 05:47:42
連続カキコですみません。

あと、シートの保護とかされているから削除できないのかも。
288名無しさん@そうだ選挙にいこう:2005/04/08(金) 10:22:38
日付 名前 数
2005/5/1 Aさん 1
2005/5/1 Bさん 2
2005/5/1 Cさん 3
2005/5/1 Aさん 4
2005/5/1 Aさん 5
2005/5/6 Bさん 6
2005/5/7 Bさん 7
2005/5/8 Bさん 8
2005/5/9 Bさん 9


2005/5/1Aさん 数の合計
2005/5/1Bさん 数の合計
2005/5/1Cさん 数の合計
それぞれの条件での数の合計を出すにはどんな計算式が必要ですか?
http://j-sound.k1.xrea.com/vmelo/melo/no129.zip
289名無しさん@そうだ選挙にいこう:2005/04/08(金) 10:33:33
290名無しさん@そうだ選挙にいこう:2005/04/08(金) 10:36:18
>>289


>>278の実数ではなく参照の意味がわかりません
291名無しさん@そうだ選挙にいこう:2005/04/08(金) 10:42:26
>>290
書かれている通り配列数式という使い方。
278のやり方で入力していろいろ試してみるとか、
ヘルプで「配列数式」を引いてみるとかしてください。
292272,278:2005/04/08(金) 10:43:24
>>288
C13をクリック → 数式バーをクリック
=SUM(IF(A2:A10=$A$13,IF(B2:B10=B13,C2:C10,0),0)) を張り付け
CtrlキーとShiftキーを押しながらEnterキーを押す
C13セルの黒枠の右下の点をC15の位置までドラッグ

すべての式が
{=SUM(IF(A2:A10=$A$13,IF(B2:B10=B13,C2:C10,0),0))}
のように { } で囲われてればOK。

つーか、解らないことがあるなら>>288の時点で書こうよ。
回答付けてるのに無視して催促質問されるとかなり傷つく・・・_| ̄|○
293名無しさん@そうだ選挙にいこう:2005/04/08(金) 10:48:22
>>292
すいません
解決しました
ありがとうございました
294名無しさん@そうだ選挙にいこう:2005/04/08(金) 11:28:06
横に長い表を折り返して一枚に印刷したいのですが
どのようにすればよいでしょう?
295名無しさん@そうだ選挙にいこう:2005/04/08(金) 11:30:58
ここで質問していいものかわからないけど、
IE上にあるアドレスからExcelを直接開くと、Excelが立ち上がらずに、
ブラウザ上で立ちあがるよね?
で、上がってきた時に、マクロが入ってるとエラーが出るんですよ。
どなたか、IE上で立ち上がるExcelと通常起動のExcelの違いとか
分かる方いらっしゃいますか?
296名無しさん@そうだ選挙にいこう:2005/04/08(金) 11:34:05
>>294
カメラ

>>295
日本語でよろしく
297名無しさん@そうだ選挙にいこう:2005/04/08(金) 11:44:47
>>292

一つ質問ですが
{ } で囲む意味は何なのでしょうか?
298272,278:2005/04/08(金) 11:48:37
>>297
{ } で囲うことに意味があるんじゃなくて。
配列数式として扱われてることの証明として { } が付加されるだけの話。
ただ単に { } で囲っただけでは文字列扱いになってしまう。
299295:2005/04/08(金) 11:48:41
IE上のリンクでExcelを立ち上げようとすると、ExcelがIE上で
立ち上がると思います。
そのとき、マクロが入ったExcelを立ち上げようとすると、
一部の命令がエラーになりました。
上記のような、IE上でExcelが起動された際の通常起動のExcelとの
違い(制限?)をどなたかご存知ないでしょうか?
300名無しさん@そうだ選挙にいこう:2005/04/08(金) 11:54:36
>>299
マイクロソフトが知ってるよ。
IE(Windows)もExcelも金払って購入したんだから
きちんとMSにサポートしてもらいな。
301名無しさん@そうだ選挙にいこう:2005/04/08(金) 11:57:12
>>300
やっぱり、そっちの方が早いですかね・・・

すみませんでした
302285:2005/04/08(金) 12:06:30
>>286-287
レスありがとうんこ。

ボタンは、オートフィルタじゃなくて「データ初期化」と書かれているボタンで、ボタンを押すアクションも出来ました。
あと、シートの保護とかはかかってないみたいでした。
303名無しさん@そうだ選挙にいこう:2005/04/08(金) 13:05:33
>>300
すみません、MSに回答を求めると
大体何日くらい返答に掛かりますか?
304名無しさん@そうだ選挙にいこう:2005/04/08(金) 13:14:40
質問です。
Excelの関数の中に、文字列をコピーするという関数はありますか?
Excelで伝票を発行する際に、発行した内容をコピーしておきたいと思っています。
ただ、入力するフィールドは決まっており、伝票を発行したら、内容をクリアして
また次の…となるので、手間になってしまいます。
ネットで関数一覧を見てみましたが、見つかりませんでした。
305名無しさん@そうだ選挙にいこう:2005/04/08(金) 13:17:09
>>303
MSに聞いてください
306名無しさん@そうだ選挙にいこう:2005/04/08(金) 13:20:03
>>304
日本語で具体的に要望を書いてください。

ちなみにワークシート関数は、関数を入れたセルに値を返す以上のことは出来ません。
307名無しさん@そうだ選挙にいこう:2005/04/08(金) 13:22:48
>>305
それ聞くだけで、1インシデント取られたりしてorz
308名無しさん@そうだ選挙にいこう:2005/04/08(金) 14:01:04
初歩的な事で質問ですがお願い致します。
CEILING関数またはROUNDUP関数を用いて、
小数点以下を切り上げて整数にしたいのですが、
少し問題が起こって困っています。

まず元のデータを、入力した割合で計算させます。
(下は不具合が出てる部分の実際の数字)
    A     B    C     D
1|1,320,000|4.2%|55,440| ?

(C1はA1×B1を計算させてます。)
ここでD1に、CEILING(C1,1)を入力すると、
何故か55,441が返ってきます。
C1に、実数で55,440を入力すると、
当然D1は55,440を返すのですが。

どうしてこのような現象が起こるのでしょうか。
また、どうすれば回避出来ますか?
当方Excel 2000です。
309名無しさん@そうだ選挙にいこう:2005/04/08(金) 14:08:41
>304
コピーして保存しときたいセルが決まってるならマクロで
コピー→別シートに貼り付け(値のみ貼り付け)すればいいのでは。
ついでにコピペが終わったら元のシートの入力用のセルの値を
クリアするとこまでマクロにいれればラクだろうに。
310名無しさん@そうだ選挙にいこう:2005/04/08(金) 14:37:42
質問です。

OSはXPでExcel2000を使っているのですが、確かエクセルってセルに直接URLを打ち込むと
勝手にハイパーリンクに変換される筈なんですが、WWWだと変換されるのにhttpだと何故か
変換されないんですけど何でなんでしょう?

XPとの相性問題のせいでしょうか?
HPチェック用の一覧表がわりに使いたいもので不便で仕方が無いのですが・・・
311名無しさん@そうだ選挙にいこう:2005/04/08(金) 14:41:14
>>310
ツール >オプション > スペルチェック > オートコレクトオプション
312名無しさん@そうだ選挙にいこう:2005/04/08(金) 14:43:12
>>308
自分の環境では55,440が返ってきたけど(Excel2000 SP3)
313名無しさん@そうだ選挙にいこう:2005/04/08(金) 14:51:16
>>312
あぁっ!すみません。少し状況が間違っていました。
実際には、B1の値が95.8%で、
C1の計算がA1×(1-B1)となっています。
この状態だと上記のような現象が起こると思います。
314名無しさん@そうだ選挙にいこう:2005/04/08(金) 14:51:19
>>310
自分の環境では55,440が返ってきたけど(WinXP SP1a、Excel2002 SP3)
315名無しさん@そうだ選挙にいこう:2005/04/08(金) 14:58:42
>>313
「Excel 浮動小数点」でググれ。
316名無しさん@そうだ選挙にいこう:2005/04/08(金) 15:02:00
>>313
C1の表示形式を数値にして小数点以下の桁数を10桁にすれば理由がわかるよ
317名無しさん@そうだ選挙にいこう:2005/04/08(金) 15:07:39
>>313
Excel内部の数値計算の誤差によるもの。
95.8%とかの割り切れてるんだか何だか分からないような数字を使って計算して、
かけ算の答えが整数にならないと文句を言うのは筋違いだと思う。
318名無しさん@そうだ選挙にいこう:2005/04/08(金) 15:08:12
>>315-316
ありがとうございました!仕事の書類で少し急いでいたので助かります。
(1-B1)自体の端数をCEILING関数で整えたら改善することが出来ました!
実際にはもっと複雑な数式で(初心者の私にとっては、ですが)、
IFをつかったり、データをインポートしたりと、いろいろやっているので、
どこがおかしいのかもわからなかったんです。
本当にありがとうございました。
319名無しさん@そうだ選挙にいこう:2005/04/08(金) 15:20:02
>>311
やってみたけど駄目でした・・・・・・というか、「半角英数」で打ち込むと認識するのですが
「直接入力」だと駄目なんですよね。

理解不可能です・・・・・

直接入力でも、wwwで始まるものはちゃんと認識するんですよ。
アドレスなんてコピーしたものを貼り付けるのではなければ、面倒でやらないだろうに、コピー
して張り付けたものは直接入力扱いみたいだし・・・・

なんかわけわかりませんよ本当。
320名無しさん@そうだ選挙にいこう:2005/04/08(金) 15:21:44
いっその事、ハイパーリンクを張ろうかと思ったら、ハイパーリンクの入力画面では
右クリックも貼り付けも出来ない仕様だし・・・・・・

舐め天の課と。
321304:2005/04/08(金) 15:37:58
>>309
一度、それを試したのですが、新しいデータを次の行に
コピーするところで詰まってしまいました。
コピー元が同じでコピー先は1行ずつ下へずれる感じです。
単純にマクロの記録だけでできると良いのですが…。
322名無しさん@そうだ選挙にいこう:2005/04/08(金) 15:51:03
>>321
行挿入してペーストすれば?

新しいのが上に来てしまうが
323名無しさん@そうだ選挙にいこう:2005/04/08(金) 16:30:38
範囲内でのグループ化した件数を取得したいのですが
ワークシート関数で実現出来ますか?

11
11
22
22
33
44
44

↑を 4 と取得したいです。

SQL で表現すれば、
select count(*) from range(hoge) group by range(hoge)
ってな感じです。
324名無しさん@そうだ選挙にいこう:2005/04/08(金) 16:42:51
>>323
データがソートされてるなら
{=SUM(IF(A1:A6=A2:A7,1,0))+1}
とかで4を取得できるけど。

あとはユーザー定義関数を使うとか
325名無しさん@そうだ選挙にいこう:2005/04/08(金) 20:05:47
>321

>新しいデータを次の行に
>コピーするところで詰まってしまいました。
意味がわからん。次の行にペーストするところで、の間違いか?
マクロの記録だけで無理なら、マクロの記録で書かれたVBAのコードを見て
いろいろ勉強して修正すればいいだろ。
326名無しさん@そうだ選挙にいこう:2005/04/08(金) 20:44:31
If文の2重構造の書き方を教えてちょ♥

If hage=0 Then
  If hoge=0 Then

  Else
  End If

Else
End If

で委員ですか?
327名無しさん@そうだ選挙にいこう:2005/04/08(金) 21:04:19
>>326
別に問題はないけど、Elseの処理が必要無いなら
If hage=0 Then
 If hoge=0 Then
  処理
 End If
 処理
End If
とか、2つの条件を満たしてる場合のみ処理するなら
If hoge=0 and huga=0 Then
 処理
End If
とか
If hoge=0 and huga=0 Then 処理
みたいな感じでもOKだよ。
あとはヘルプなりWebの解説なり読んで勉強しよう。
328323:2005/04/08(金) 21:29:43
>>324
なるほど!!

データはソートされてます。
ありがとう、ございました。
329326:2005/04/08(金) 21:57:01
>>327
d!
330名無しさん@そうだ選挙にいこう:2005/04/08(金) 22:54:25
ピボットでは、登場しない項目を集計できませんよね

a 1
a 2
b 1
c 2
b 1

とかだと
 1 2
a 1 1
b 2
c  1

とかなるけど、登場しないけど0とか3とかdとかもテーブルにして欲しい時はどうしたらいいですか?
 0 1 2 3
a  1 1
b  2
c   1
d

みたくにしたいです
331名無しさん@そうだ選挙にいこう:2005/04/08(金) 23:12:02
>>330
フィールドを右クリック→「フィールドの設定」→[データの存在しないアイテムを表示する]をオンに
332名無しさん@そうだ選挙にいこう:2005/04/09(土) 01:07:09
自分は330じゃないけど、330のデータの場合「データのないアイテムを表示する」を使うのは
無理じゃないか?
自分とこでもためしにやってみたら、月日ならその方法で補完されるけど
330のようなデータだと補完されなかったんだけど(Excel2003)。俺のやり方に問題があるのか?

自分なら表示用に0やDの行を入れる。
333331:2005/04/09(土) 01:11:21
あ、意味読み違えてたスマソ>>330 >>332
334330:2005/04/09(土) 07:29:25
>>332さん、表示用に入れるというのをもう少し説明してくれませんか?
a 0とかd 0とかを入れるということですか?でもそれだと表に集計されてしまうと思うんです
335332:2005/04/09(土) 08:02:28
>334
仮に>330で出してる例が販売レポートみたいなもので、
A列=科目 B列=商品コードなんだったら、
C列に販売数を入れて、実態のあるレコードの行に1を入れる、

んで、表の最初か最後にA列にa,b,c,dの値を入れた行を挿入、
それぞれのB列に0,1,2,3を入れる。

それでピボットテーブル作るときに列側にA、行側にB、
集計するレコードにCを入れる。
集計の方法はレコードの個数でも合計でもいい。

A列   B列     C列
科目  商品コード 販売数
a     0       
b     1
c     2
d     3
a     1     1
a     2     1
b     1     1
c     2     1
b     1     1

スマートじゃないけど、自分の求める表が簡単に欲しいなら自分ならこうするだけ。
もっと楽でスマートな方法があれば別の方法をつかう。
336330:2005/04/09(土) 20:29:06
なるほど!よくわかりました
項目数を数えるための列をもうひとつ用意するのか〜
表示しないようにしたら表面上変わらないですね
337名無しさん@そうだ選挙にいこう:2005/04/09(土) 22:13:41
質問ですが
エクセル2003で
行列を入れ替えてリンク貼り付けできないでしょうか?
338名無しさん@そうだ選挙にいこう:2005/04/09(土) 22:20:24
できる
339名無しさん@そうだ選挙にいこう:2005/04/09(土) 22:23:33
どうやればいいですか?
340名無しさん@そうだ選挙にいこう:2005/04/09(土) 22:27:29
できるって単なる願望とか妄想ですよ w
341名無しさん@そうだ選挙にいこう:2005/04/09(土) 22:33:19
やっぱ無理ですかねー
ヤフーで検索したら
「嫉妬されるほどエクセルが上手くなる222の技」って本の目次に
行列を入れ替えてリンク貼り付け って項目があったので
もしやできるのかと思ったんですが...

342名無しさん@そうだ選挙にいこう:2005/04/09(土) 22:48:53
あえてやるなら、まずリンク貼り付けをする。
それから貼り付け先を選択してコピー。
形式を選択してコピーで、行列の入れ替えにチェックを入れて
数式をコピー。

行列の縦横の数が一致していないとできない。
343名無しさん@そうだ選挙にいこう:2005/04/09(土) 23:06:18
すいません
形式を選択してコピーってどうやるんですか?
コピーじゃなくて貼り付けでしょうか?
一応貼り付けでやったんですが
リンクもとの数値を書き換えても
反映されないんですが
344名無しさん@そうだ選挙にいこう:2005/04/09(土) 23:23:40
http://weather.crc.co.jp/weatherchart/src/0501_47409.htmをエクセルに
コピーペーストすると天気の気温が-1.0/-2.0のように頭に-がつくところだけ
かってに=-1.0/-2.0と=が入った計算式となり
0.5となってしまいます。
WEBのデータをそのままとるにはどうすればいいでしょうか
345名無しさん@そうだ選挙にいこう:2005/04/09(土) 23:28:26
貼り付ける前に、準備段階で貼り付け先の書式を文字列に変更しておく、とか。
346名無しさん@そうだ選挙にいこう:2005/04/09(土) 23:31:01
貼り付けたら、該当箇所の"="を""に置換。
347名無しさん@そうだ選挙にいこう:2005/04/09(土) 23:43:08
どうもありがとうございます
1 "="を""に置換はできました。が、
2 あらかじめ書式を文字列にするやりかたがうまくいきませんでした。
最終的にはクエリの編集でデータの更新ボタンで1アクションで取り込みたいので
2がうまくいってほしいんですけど。
348名無しさん@そうだ選挙にいこう:2005/04/09(土) 23:58:59
>>343
Book Aがリンク元
Book Bがリンク先とする。

AをBに「リンク貼り付け」する。
Bの表をコピーしてそれから)右クリックをして「形式を選択
して貼り付け」を選ぶ。
(別の場所に貼り付けないと駄目のようだ)
そして、「数式」をチェック、更に下のほうにある「行列を入れ替える」
にもチェックしてからOKする。

結果は単に数式をしこしこリンクさせたものとなるだけだが、
作業は楽になる。
349名無しさん@そうだ選挙にいこう:2005/04/10(日) 00:05:55
>>347
クエリで取り込んで置換で=を取るマクロを登録すればよし
350名無しさん@そうだ選挙にいこう:2005/04/10(日) 00:28:02
>347
webクエリ使って取り込むんだったら文字列に指定云々は無理っぽかったね。スマソ。
自分も>349の置換をマクロでやるのに賛成。
WebクエリをRefreshした直後に置換させるマクロ組んでボタンに割り当てるか、
Worksheet_SelectionChangeで処理させるとか。
351名無しさん@そうだ選挙にいこう:2005/04/10(日) 00:50:43
347です
置換をマクロの記述は知らないのでマクロの記録でしてみました。
ボタンの登録も今はじめてできました。
これならなんとかいけそうです。VBAはまるでわかりませんが
Worksheet_SelectionChangeの意味をちょっと調べてみました。 
今回はこのやりかたはあきらめます。だいぶ助かりました
ありがとうございます


352名無しさん@そうだ選挙にいこう:2005/04/10(日) 02:24:45
テキストエディタにある一覧表のデータを
Excelにまるごとコピーしたら、
行ごとにすべてが一列に丸め込まれてしまいました。

1 69.891 SG 8.609^SG 8.688^SG 8.469^SF 8.109^SE 9.047 SI 7.859^SD 9.453 SJ 9.657 A 19 05.04.08
2 72.125 SI 8.360^SF 8.281^SF 9.750 A 9.188 SI 9.000 SI 9.468 SJ 9.610 A 8.468^SF 13 05.04.09
3 73.422 SI 11.047 C 7.890^SD 8.266^SF 10.344 B 9.047 SI 8.921 SH 9.344 SJ 8.563^SG 14 05.04.06
3 73.422 SI 9.391 SJ 9.156 SI 9.250 SJ 8.344^SF 9.406 SJ 9.125 SI 9.438 SJ 9.312 SJ 9 05.04.09
5 73.438 SI 9.719 A 9.313 SJ 8.078^SE 8.937 SH 8.000^SE 8.860 SH 10.000 B 10.531 B 19 05.04.06
6 73.734 SI 8.343^SF 9.297 SJ 10.641 B 8.625^SG 8.469^SF 8.781 SH 10.000 B 9.578 A 6 05.04.09
7 73.937 SI 8.375^SF 9.516 A 8.984 SH 8.828 SH 9.672 A 10.344 B 8.953 SH 9.265 SJ 13 05.04.09
8 73.953 SI 10.109 B 8.016^SE 9.609 A 9.500 A 10.328 B 7.875^SD 9.281 SJ 9.235 SI 13 05.04.09
9 74.000 SJ 9.625 A 7.703^SC 8.203^SE 8.359^SF 9.563 A 10.500 B 10.406 B 9.641 A 12 05.04.08
10 74.063 SJ 9.188 SI 8.719^SG 10.031 B 8.547^SG 9.765 A 8.782 SH 9.859 A 9.172 SI 21 05.04.09
11 74.157 SJ 8.000^SE 10.422 B 7.625^SC 11.203 C 9.766 A 9.500 A 9.312 SJ 8.329^SF 13 05.04.08
・・・

こんな感じのデータなんですけど、
スペースごとに、セルを変えて一気に入力することは可能でしょうか?
353名無しさん@そうだ選挙にいこう:2005/04/10(日) 02:31:19
>>352
メニューバー、データ→区切り位置
354名無しさん@そうだ選挙にいこう:2005/04/10(日) 02:47:09
スペース区切りのデータならCSVとして扱えるから
メニューから [ファイル] -> [開く] でスペース区切りとして開くべし
355名無しさん@そうだ選挙にいこう:2005/04/10(日) 03:14:10
>>354
スペース区切りはprnね。
タブ区切りがtsvでカンマ区切りがcsv
356名無しさん@そうだ選挙にいこう:2005/04/10(日) 03:15:23
おおっ、できました!
>>353 >>354 >>355
ありがとうございました。
357名無しさん@そうだ選挙にいこう:2005/04/10(日) 03:26:37
オートフィルで、質問!

1   1
2   2
    3
    4

    ↑は出来るんですが、

1   1
1   1
2   2
2   2
    3
    3
    4
    4

    ↑は出来ないんですか?
358名無しさん@そうだ選挙にいこう:2005/04/10(日) 03:57:28
>>357
1
空欄
2
空欄

このA1:A4の4セルを選択してA7までフィルコピー
A1:A7を選択してコピー、A2を選択して形式を指定して張り付け
「□空白セルを無視する」にチェックを入れるか演算を「○加算」にして[OK]

1
1
=A1+1

A3を選択してフィルコピー
フィルコピーした範囲を選択してコピー→値の張り付け
3591/2:2005/04/10(日) 20:33:14
Excel 2000(XP)です。

A(日付) B(分類) C(社名) D(電話番号)の入ったデータを使って名簿を作成したいのですが、
重複するデータを削除する方法を教えてください。

・D(電話番号)が同一の場合のみ重複と判定(社名が同じでも電話番号が違えば別データ)
・元のデータは1行目からデータです
・名簿は一行目をタイトル行にしたいです


元のデータ

A列B列C列D列
4/7○A社111-1111 ←(1行目データ)
4/8△B社222-2222
4/6□C社333-3333
4/5△B社222-2222
4/8△B社444-4444
4/9○A社111-1111
3602/2:2005/04/10(日) 20:33:38
名簿

A列B列C列D列

日付分類社名電話番号 ←(1行目タイトル行)
4/7○A社111-1111
4/8△B社222-2222
4/6□C社333-3333
4/8△B社444-4444

よろしくお願いします。
361359:2005/04/10(日) 20:36:58
すみません、なんか見にくいですね。
もう一度書きます。

A列  B列  C列  D列
4/7  ○   A社  111-1111 ←(1行目データ)
4/8  △   B社  222-2222
4/6  □   C社  333-3333
4/5  △   B社  222-2222
362名無しさん@そうだ選挙にいこう:2005/04/10(日) 21:43:20
>>348
よくわかりませんでしたが
違うやり方でできました。
363名無しさん@そうだ選挙にいこう:2005/04/10(日) 21:45:38
その違うやり方ってやつをスレ住人にも教えなさい
364名無しさん@そうだ選挙にいこう:2005/04/10(日) 22:03:15
>>359
社名の重複は許すってこと?
B列、C列、D列のうちひとつでも違う場合は残したいってこと?

ワークシート関数でできるかなぁ。
マクロ使ったらかんたんだけどね。
365359:2005/04/10(日) 22:21:55
>>364

おお、レスありがとうございます。

>社名の重複は許すってこと?

はい。
社名は支店名が省略されている場合などがあり、同じ社名なのだけれど実は違う会社ということがあるので、電話番号(D列の違い)で判断したいです。
よろしくお願いしますm(。_。;))m ペコペコ…

366359:2005/04/10(日) 22:25:18
>>364
>マクロ使ったらかんたんだけどね。

そうなんですか?
教えていただけると嬉しいです。
367名無しさん@そうだ選挙にいこう:2005/04/10(日) 22:32:48

CSVファイルから必要な数値だけを、
あらかじめエクセルで作った表に現すにはどうするんですか?
師匠方、教えてください!
368名無しさん@そうだ選挙にいこう:2005/04/10(日) 22:39:49
>>366
自動でばんばん削除したいのか、重複データに印をつけて
手動で削除したいのか。
369名無しさん@そうだ選挙にいこう:2005/04/10(日) 22:42:14
>>367
マクロで読み込んで表に配置させる
370名無しさん@そうだ選挙にいこう:2005/04/10(日) 22:48:50
371359:2005/04/10(日) 22:55:11
>>368

自動でばんばん削除したいです!
372名無しさん@そうだ選挙にいこう:2005/04/10(日) 23:08:30
>>371
なら、
1) D列でソート
2) D列を上から順番に、一つしたのセルと同じなら行削除
  というマクロ
でやればいいんでないの?

2)の部分は


dim i as integer
i=1
while cells(i,4)<>""
if cells(i,4)=cells(i+1,4) then
rows(i+1).delete
end if
i=i+1
wend

つう感じでいいでしょ。
(試してないからどっか間違ってるかもしれないが w)
373名無しさん@そうだ選挙にいこう:2005/04/10(日) 23:09:08
>>363
リンク元をコピーして
行列を変えて張りつけて
transpose関数を使って
ってかんじで
374名無しさん@そうだ選挙にいこう:2005/04/10(日) 23:27:08
エクセルでスクロールする時、
セルが大きいと、いっきにスクロールしてしまい何かと不便です。
セルの影響を受けずにスムーズにスクロールする方法はありますか?
375359:2005/04/10(日) 23:35:57
>>372
>(試してないからどっか間違ってるかもしれないが w)

なぜか一度では削除できず1回実行する毎にデータが少なくなっていき
5〜6回マクロを実行すると重複がなくなりましたw

今まで手作業で消すのに時間がかかっていましたが、これでかなり作
業時間を短縮することが出来ます。すんごい便利だー。
どうもありがとうございました。
376名無しさん@そうだ選挙にいこう:2005/04/10(日) 23:42:54
質問があります。
XP Excel 2000 2002

ユーザーフォームで最小化、最大化といったことは、出来るのでしょうか?
ヘルプを見ると(勘違いかもしれませんが)それらしい事が、書いてあります。
もし出来るとしたら、どのように、するのでしょうか?

よろしくお願いします。
377名無しさん@そうだ選挙にいこう:2005/04/10(日) 23:45:20
>>375
ああ、重複データが最大2つしかない前提で作ったから w
378名無しさん@そうだ選挙にいこう:2005/04/10(日) 23:48:27
>>375
試してないけど。
dim i as integer
i=1
while cells(i,4)<>""
if cells(i,4)=cells(i+1,4) then
rows(i+1).delete
else
i=i+1
end if
wend
379名無しさん@そうだ選挙にいこう:2005/04/10(日) 23:53:38
>>375
直しました。
ソートもマクロにしています。

Sub test()
Dim i As Integer
Cells.Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
i = 1
While Cells(i, 4) <> ""
While Cells(i, 4) = Cells(i + 1, 4)
Rows(i + 1).Delete
Wend
i = i + 1
Wend
End Sub
380359:2005/04/11(月) 00:15:21
>>378-379

>>378は実行したところ動いていない様子?で削除されませんでした。
>>379は「アプリケーション定義またはオブジェクト定義のエラーです。」とのメッセが表示され、
デバックボタンを押すと下記の部分が黄色表示となっていました。

Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal

ホント何回もありがとうございます。
見も知らぬ方に親切にしていただき感謝です。
先に書きましたが最初に作っていただいたもので十分助かりますので、
あのマクロを使わせていただきますm(_ _)mデハデハ...
381名無しさん@そうだ選挙にいこう:2005/04/11(月) 00:20:51
>>380
へんだな?
せめて下のを使ってけろ。

Sub test()
Dim i As Integer
i = 1
While Cells(i, 4) <> ""
While Cells(i, 4) = Cells(i + 1, 4)
Rows(i + 1).Delete
Wend
i = i + 1
Wend
End Sub
382名無しさん@そうだ選挙にいこう:2005/04/11(月) 00:41:03
>>380
すでに削除してあってダブりがないとかソートし忘れとか。
383名無しさん@そうだ選挙にいこう:2005/04/11(月) 10:24:45
多分faqな内容な気もするのですが、ググッても分からないので教えてください。

横に(1行に)入っている数値を
縦に(1列に)変換するマクロはどのような設定になりますでしょうか?
384名無しさん@そうだ選挙にいこう:2005/04/11(月) 10:25:30
Excel2002でセルに入力を開始したとき、状態を「入力」ではなく最初から「編集」にするにはどうすればいいですか?
たとえばB1を選択してhogeと入力すると、状態は「入力」になり、B1内のキャレット位置が「hoge|」となりますが、
ここから←キーを押すと、A1が選択されるのではなくB1内のキャレット位置が「hog|e」となるようにしたいのです。
つまり、セルの内容を入力・編集してるときは方向キーでキャレットを移動し、そうでないときは方向キーでセルの移動がしたいのです。
毎回F2を押すのは煩わしいしいので、どなたかお助けください。
385名無しさん@そうだ選挙にいこう:2005/04/11(月) 10:28:53
>>383
形式を指定して張り付け
□行列を入れ替える
386名無しさん@そうだ選挙にいこう:2005/04/11(月) 10:38:53
>>385
おおお。そんな簡単に出来たんだ。dクス
387359=380:2005/04/11(月) 11:43:13
うわー、ごめんなさい。
すでに削除済みのデータで試してました。
もう消すものがないから動かなかったんですね(大汗

今日他のデータで試したところ一発で決まりました!
本当にありがとうございました。
388359=380:2005/04/11(月) 11:44:31
>>387>>381さんへの返信ですm(__)m
389名無しさん@そうだ選挙にいこう:2005/04/11(月) 13:15:40
>>359さんへのレスについて。
せっかくマクロを使うんだったら1回ですべて処理できる
マクロにすべきだと思うのですが。

While使わずにFor〜Nextで最下行からまわした方がよくない?
例えば、

Dim Rn As Integer, i As Integer, KW As Variant, C As Range
Rn = Sheets(1).UsedRange.Rows.Count
For i = Rn To 2 Step -1
  KW = Cells(i, 4).Value
  Set C = Range("D1:D" & i - 1).Find(KW, LookAt:=xlWhole)
  If Not C Is Nothing Then
    Rows(i).Delete
  End If
Next i
390389:2005/04/11(月) 13:22:40
スマソ
ちゃんと処理できるのもかかれてましたね。
・・もっとちゃんとレス読むです。
ほんとにごめんなさい
391名無しさん@そうだ選挙にいこう:2005/04/11(月) 22:23:44
すいません
=(SUM(G47:I47)=0,"",SUM(G47:I47))
これって、どう解釈するのでしょうか?
392名無しさん@そうだ選挙にいこう:2005/04/11(月) 22:28:15
>>391
If式じゃないの?
=IF(SUM(G47:I47)=0,"",SUM(G47:I47))

IFが入らないと何の意味も持たないと思われ
393359:2005/04/11(月) 22:49:53
>>389
作ってくれてありがとう〜
マクロって便利ですね!自分でも勉強してみようかと思います。

ホント皆いい人だねー。
394名無しさん@そうだ選挙にいこう:2005/04/11(月) 22:56:29
>>392
すいません、おっしゃるとおりIFが抜けてました。
どういう意味なのでしょうか?
395名無しさん@そうだ選挙にいこう:2005/04/11(月) 23:00:21
>>394
ヘルプでIFとSUMを見ろ。
396名無しさん@そうだ選挙にいこう:2005/04/11(月) 23:04:18
>>394
G47+H47+I47 の結果が0なら何も表示しない
それ以外なら G47+H47+I47 の結果を表示する。
397名無しさん@そうだ選挙にいこう:2005/04/11(月) 23:09:03
>>396
ありがとうございます。
助かりました!
398>>367:2005/04/12(火) 00:32:00

マクロがまだ組めないんですが、
簡単な策がありませんか?
読み込んで表に配置させる方法。
ぶしつけな質問で、すいません。
399名無しさん@そうだ選挙にいこう:2005/04/12(火) 00:38:25
だったらもっと情報を出せば?どんなデータが入ったCSVから何をどう取り出したいのか。
今のままじゃ情報が少なすぎる。検算も出来やしない。
400>>367:2005/04/12(火) 00:51:57
定食屋四店舗分のメニュー名、単価、売上数、売上金額、
等の日報数値データです。
401名無しさん@そうだ選挙にいこう:2005/04/12(火) 01:21:30
で、その日計データから何をとりだして、どんな表を作りたいのよ…
単に店舗別の集計ならCSVで読み込ませた後ピボットテーブル作れば済むだろうけど
400の話だけじゃ何もできない。他人が読んで理解できるように書いてくれ。

つーか、マクロも使えないんじゃ、DBソフト使った方が楽なんでないか?
402名無しさん@そうだ選挙にいこう:2005/04/12(火) 05:06:40
こんばんは。どなたか教えてください。

住所のデータ、
例えば
横浜市円円区祖師谷1-2-1
というものを
横浜市
円円区
祖師谷
1-2-1
の4つに分割する方法を教えてください。
もしくはセルの数字部分だけ削除する方法を教えてください。
郵便番号をあてるソフトをみつけたのですが、
番地が入っていると正しく検索してくれないので。

よろしくお願いします。
403402:2005/04/12(火) 05:11:16
連続ですみません。
数字を消すというのは以下のマクロで出来たのですが、
シートの数値が全部消えてしまうんですね。
なんとか任意のセルの数字部分を消せれば(一番いいのは
セルの分割)と思ってご相談しています。

Sub Sample()

Dim myCell As Range
Dim i As Integer

For Each myCell In ActiveSheet.UsedRange
For i = 0 To 9
With myCell
.Replace CStr(i), vbNullString
.Replace StrConv(CStr(i), vbWide) _
, vbNullString
End With
Next
Next

End Sub

404名無しさん@そうだ選挙にいこう:2005/04/12(火) 05:43:29
>>402
分割は先頭から「3文字、3文字、3文字、残り」の4分割でいいの?
それとも「先頭から"市"まで、その次から"区"まで、その次から数字の前まで、残り」の4分割?

データベース無しに市区名で正確に区切りを入れることは出来ないからどちらかになるけど
前者は市区村名の文字数が揃ってないと狂ってくるし、
後者は市区町に"市・区"が入ってると狂ってくる。

で、数字を削除ってのは「横浜市円円区祖師谷--」となればいいの?
それとも「横浜市円円区祖師谷 - - 」とか「横浜市円円区祖師谷」?

どちらもマクロで出来るけど、条件をきちんと書いてくれないとこっちでは何にも出来ない。
対象セルも固定単一セルなのか固定範囲なのかアクティブセルのものなのか、選択範囲のものなのかはっきりして。

ちなみにExcelで検索してるなら、完全一致じゃなくて部分一致にすることで、
「横浜市円円区祖師谷」を検索しても「横浜市円円区祖師谷1-2-1」がヒットするようになる。
ついでに言うと>>403のマクロでは「For Each myCell In ActiveSheet.UsedRange Next」が
全セル(使用範囲)を対象にさせてる部分。
405名無しさん@そうだ選挙にいこう:2005/04/12(火) 11:28:15
htmlの表をコピーしてExcelに張り付けると、既定ではHTML張り付けになり、
表形式で書式(フォント、背景色、罫線など)も一緒に張り付けられますよね。
で、テキスト張り付けにすると、文字列のみを1列に繋げたものが張り付けられる。
(テキスト張り付けの場合5行*5列の表をコピペしても5行*1列になってしまう)

そこで質問なのですが、表形式で文字列のみを張り付けるにはどうしたら良いのでしょうか?
一度HTML形式で張り付けてから、もう一度コピーして値の張り付けをするのではなく
最初から文字列のみを表形式で張り付ける方法を教えてください。
環境はWindowsXP、Excel2002です。
406名無しさん@そうだ選挙にいこう:2005/04/12(火) 12:28:42
>>405
Excel2002がインストールされているなら
Internet Explorer(またはそのコンポーネントブラウザ)のHTML表の部分で
マウス右クリックし「Microsoft Excelにエクスポート」で出力する方法は?

もっとシステマチックにやりたいのなら
VBAからHTMLDocumentオブジェクトを使って、HTMLテーブルセルの値を直接Excelのセルに書きこむ方法もある。
407名無しさん@そうだ選挙にいこう:2005/04/12(火) 12:37:47
>>405
貼り付けた後でスマートタグをクリックして「貼り付け先の書式と一致させる」を
選べば済むことなのでは?
408405:2005/04/12(火) 12:38:25
>>406
回答ありがとうぞざいます。
前者は、張り付け位置を既存のブックのの任意位置に指定したいので無理です。
後者は5*5の表をコピーしてB3:F7に張り付ける場合は具体的にどうすれば良いのでしょうか?
409405:2005/04/12(火) 12:40:06
>>407
既存の書式を壊したくないので、「貼り付けた後で」という方法ではダメです。
410名無しさん@そうだ選挙にいこう:2005/04/12(火) 13:04:22
>>409
?????
411名無しさん@そうだ選挙にいこう:2005/04/12(火) 13:12:01
>>410
?!?!?!
412名無しさん@そうだ選挙にいこう:2005/04/12(火) 13:26:09
前スレで回答が無かったのでもう一度質問させていただきます。

WindowsXP SP1a、Excel2002 SP3
入力規則のリストに関する質問なんですが、
通常、ドロップダウンリストは
|___|___|___|
|___|___[▼]___|
|___|項目1    |___|
|___|項目2    |___|
|      | ̄  ̄  ̄| ̄   |
こんな感じに表示されますが、これが
  |___|___|___|
_|___|___[▼]___|
|項目1         |___|
|項目2         |___|
 ̄| ̄ ̄ ̄| ̄  ̄  ̄| ̄   |
こんな風になってしまう場合があります。
リストの値をa,b,cなどと短いものにしても変わらないし
一度入力規則を削除してから再設定しても、幅はそのままです。
これを通常のように「セル幅+ボタン」の幅内で表示させるにはどうすればよいですか?
413名無しさん@そうだ選挙にいこう:2005/04/12(火) 13:50:44
>>409
いったん貼り付けるとHTMLの書式通りになるように見えるが、
その後で「貼り付け先の書式と一致させる」を選べば、
HTMLの書式は無視されてもとのセルにあった書式になる。
ご要望通りだと思うが?
414405:2005/04/12(火) 14:06:17
>>413
一回でも書式が変わるとイベントマクロが動いてしまうので問題ありです。
操作上Application.EnableEvents = Falseも使えないし。
なので今までは「別シートに張り付け→コピー→値を張り付け」とやってました。


HTMLDocumentオブジェクトの方を調べてるんですが、
コピーしたデータってどういう風に取得させればいいのかわからない。
Dataオブジェクトを使ってクリップボードの値を取得する方法ならわかるけど
これではテキスト張り付けと同じ全列繋がった文字列になる。
>>406氏の再降臨を待ち望みます。
415名無しさん@そうだ選挙にいこう:2005/04/12(火) 14:06:30
若槻千夏がS○Xしてるときの声と顔を実演してるサイトみつけました!
いくら売れてないときだからって、アンアン言い過ぎなんじゃ・・・
http://waraiameba.ameblo.jp/
416名無しさん@そうだ選挙にいこう:2005/04/12(火) 14:12:22
>>414
なるほどね。
405や409ではそんな理由は一言も書いてないが。
後出しはやめてくれ。それなら最初から無駄な答えは書かないから。
417405:2005/04/12(火) 14:25:18
「何がやりたいか」は>>405
「最初から文字列のみを表形式で張り付ける方法を教えてください。」
ってはっきり書いたんだけど・・・。
要望以外の回答(代用案)に対しても万全な情報なんて書ききれないですよ。

まあ、あんまりゴネると教えてもらえる物も教えてもらえなくなりそうなので
HTMLDocumentオブジェクトについて検索しながら>>406氏か
「最初から文字列のみを表形式で張り付ける方法」をご存じの方の降臨を待ちます。
418名無しさん@そうだ選挙にいこう:2005/04/12(火) 14:37:40
まあ、一理あるな。


>>403
Sub 数字以降を削除()
 Dim hoge As String, i As Byte
 hoge = ActiveCell.Value
 Do
  i = i + 1
 Loop Until Mid(hoge, i, 1) Like "#"
 ActiveCell.Value = Mid(hoge, 1, i - 1)
End Sub

Sub 数字を削除()
 Dim i As Byte
 For i = 0 To 9
  ActiveCell.Replace CStr(i), vbNullString
 Next
End Sub

対象はアクティブセルね。
419名無しさん@そうだ選挙にいこう:2005/04/12(火) 14:38:21
>>417
ならキミの書いた409に410のような反応があったのはなぜか
よく考えることやね。断っとくが410は私じゃないよ。

答える側は書かれた情報だけで判断して知恵を絞っている。
たとえキミの気にいらない答えでもね。そこらもよく考えや。

スレ汚しになるのでここらで消えるよ。
420名無しさん@そうだ選挙にいこう:2005/04/12(火) 14:46:13
>419   ____
    i´-======-`i
    } . .. ..::;:;;;;;彡{
    i . .. (,,゚Д゚);;;|  ∬
    }  (ノ .::;:;;;;彡{つ旦<まぁ、茶でも飲んでもちつけ
    !,  .. .:.::;:;;;彡j
    ヽ、.. ....::::;;;ジ
     └∪゙∪┘
421名無しさん@そうだ選挙にいこう:2005/04/12(火) 14:51:41
>>414
>>407をマクロに登録してその中でApplication.EnableEvents = False
をすればいいんじゃない?
書式が変わるのをトリガにしてるイベントあったっけ?
422名無しさん@そうだ選挙にいこう:2005/04/12(火) 15:41:49
負けず嫌い?
423名無しさん@そうだ選挙にいこう:2005/04/12(火) 15:56:13
漏れも>>406のは知りたいな。漏れの場合書式云々じゃなくて、
単に普通に張り付けするとでかい表の場合時間が掛かるから。
htmlから表を張り付ける場合に書式ごと張り付けたいことなんて
ほとんどないから、テキストのみ張り付ける方法があるなら
使いたいもんだな。
424402:2005/04/12(火) 16:42:00
>>404さん、>>418さん
ありがとうございます。
私が使わせてもらおうとしているozzipというソフトは番地が
入っていると綺麗にあたってくれないので、数字を削ろうと考えました。
ただ、番地は最終的には必要なので分割できないものかと
ご相談申し上げました。
分割は市、区、地名、番地で分けられたらいいんですけど
むずかしいですよね。
数字を削る方にします。マクロ使わせて頂きますね。
お世話になりました。またお願いします。
425名無しさん@そうだ選挙にいこう:2005/04/12(火) 17:08:24
>>424
とりあえず番地(アラビア数字)以降を右に分けるなら

Sub 数字以降を右に移動()
 Dim hoge As String, i As Byte
 hoge = ActiveCell.Value
 Do
  i = i + 1
 Loop Until Mid(hoge, i, 1) Like "#"
 ActiveCell.Value = Left(hoge, i - 1)
 ActiveCell.Offset(0, 1).Value = Right(hoge, Len(hoge) - i + 1)
End Sub


下3行を
 ActiveCell.Offset(0, 1).Value = Left(hoge, i - 1)
 ActiveCell.Offset(0, 2).Value = Right(hoge, Len(hoge) - i + 1)
End Sub
とすれば、元の住所はそのままで、対象セルの1つ右に番地の前、2つ右に番地を振り分けられる。

市区町村名に"市・区・町・村"の文字がある場合に区切り位置がおかしくなることを承知してくれるなら
"市・区・町・村"の文字位置で分割するマクロくらい書いてもいいけど。
全て手動でやるよりはマクロで処理した後、修正した方が早いだろ。
もし欲しかったらデータの範囲を書いてくれ。
426402:2005/04/12(火) 17:55:23
>>425さん
わあ、ありがとうございます。
一個のセル、番地前後で分離できました。
ぶっ飛ばされそうなんですけど、列全体を指定する時は
どのようにしてかくんですか?activerow?
427名無しさん@そうだ選挙にいこう:2005/04/12(火) 18:11:15
>>426
Sub 数字以降を右に移動()
 Dim hoge As String, i As Byte, r As Long
 Const c As Byte = 1 '列番号を指定
 For r = 1 To Cells(65536, c).End(xlUp).Row
  i = 0
  hoge = Cells(r, c).Value
  Do
   i = i + 1
  Loop Until Mid(hoge, i, 1) Like "#"
  Cells(r, c).Value = Left(hoge, i - 1)
  Cells(r, c + 1).Value = Right(hoge, Len(hoge) - i + 1)
 Next r
End Sub

列番号は1ならA列、2ならB列、
開始行が1行目からじゃないなら「For r = 1〜」の1を書き換え。
んで、元データそのままで処理するには
  Cells(r, c + 1).Value = Left(hoge, i - 1)
  Cells(r, c + 2).Value = Right(hoge, Len(hoge) - i + 1)
でよろしく。
428名無しさん@そうだ選挙にいこう:2005/04/12(火) 18:57:52
住所を県市区町村などで分けたいというのは時々あるけど、
八日市場市とか十日町市とか市川市市川とか今市市今市とかあるので、
データベースを参照しながらじゃないと無理でしょう。
429名無しさん@そうだ選挙にいこう:2005/04/12(火) 19:00:28
>>428
既にその件は>>404で書かれてる。
430402:2005/04/12(火) 19:17:03
>>427さん
ほんとにあほ丸だしですみません。
列指定してできました。700件くらいのデータなんですが、
オーバーフローといって50件目で止まってしまいます。
これは50件ごとにマクロをしていくしかないのでしょうか。
お時間あったら教えてください。
431名無しさん@そうだ選挙にいこう:2005/04/12(火) 19:25:06
>>430
50件の制限というわけではなく、
数字のない住所の位置でオーバーフローしますね。
i = i + 1
の下の行に
If i > Len(hoge) Then Exit Do
を入れてみてください。

これでダメなら止まってしまう位置の住所を貼ってみて。
432402:2005/04/12(火) 19:28:27
>>431さん
早速のご回答ありがとうございます。
できました!これで、郵便番号がふれます…。

ここの方たちみなさんに感謝します。
また教えてくださいね。
433名無しさん@そうだ選挙にいこう:2005/04/12(火) 19:34:43
>>432
Do
 i = i + 1
Loop Until Mid(hoge, i, 1) Like "#" Or i > Len(hoge)

もう見てないかもしてないけどこれの方が良かったかも。
結果は同じはずだけど、こっちの方がちょっと処理早いかな。
434名無しさん@そうだ選挙にいこう:2005/04/12(火) 19:36:33
ついでに気が向いたら、最初に
Application.ScreenUpdating = False
最後に
Application.ScreenUpdating = True
を入れておくとより処理が早くなる。
435402:2005/04/12(火) 19:37:33
>>433>>434
みてます!
そちらに変更します。
ありがとうございました。
436名無しさん@そうだ選挙にいこう:2005/04/12(火) 23:11:58
>>423
406じゃないけど、ググって作ってみた。
自信は無いけどどうだろう?
文字を取り出してもテーブルの区切りがわからんので、
スペースがセルの中にあると思った結果にならない。
MSFormsを参照してるのと、
クリップボードの形式を事前に調べてはいない。

Dim cc As New MSForms.DataObject
Dim s, t
Dim i As Integer
Dim j As Integer

cc.GetFromClipboard
s = Split(cc.GetText(1), vbCrLf)
For i = 0 To UBound(s)
t = Split(s(i))
For j = 0 To UBound(t)
ActiveCell(i + 1, j + 1) = t(j)
Next j
Next i
437名無しさん@そうだ選挙にいこう:2005/04/12(火) 23:15:00
----------------------------------------------------
ここまで読んだ。ここまで読んだ。ここまで読んだ。ここまで読
----------------------------------------------------
Dim oHttp As Object
Dim s
Dim i
Set oHttp = CreateObject("MSXML2.XMLHTTP")
oHttp.Open "GET", "http://www.yahoo.co.jp", False
oHttp.Send
s = Split(oHttp.responseText, vbCrLf)
For i = 0 To UBound(s)
Cells(i + 1, 1) = s(i)
Next i
----------------------------------------------------
んだ。ここまで読んだ。ここまで読んだ。ここまで読んだ。ここま
----------------------------------------------------
438名無しさん@そうだ選挙にいこう:2005/04/13(水) 04:42:27
前スレで質問しましたが、誰も知ってる方がいなかったので、再度質問させてください。

他人に貰ったエクセルファイルを加工してます。
問題は、下のような邪魔なボタンがあります。どうやって消せばいいのでしょうか?
http://up.nm78.com/data/up091070.jpg
439405:2005/04/13(水) 07:36:20
>>436
また情報後出しとか言われそうだけど、自分が以前書いたマクロです。
Dim myData As New DataObject
Dim w As Variant, i As Integer

myData.GetFromClipboard
w = Split(myData.GetText, vbCrLf)
For i = 0 To UBound(w) - 1
Range(ActiveCell.Offset(i, 0), ActiveCell.Offset(i, UBound(Split(w(i))))) = Split(w(i))
Next i
>>436と同じような物ですが、>>414でも書いた通りDataオブジェクトを使って
クリップボードの値を取得すると繋がった文字列になってしまいます。
区切り位置に半角スペースが入るのでそこで分割しただけだけど、
自分がコピーしたい表には半角スペースが含まれないことの方が希なので全く使い物になりませんでした。

>>423の言うとおり、速度面の問題もあるのでなんとか
「VBAからHTMLDocumentオブジェクトを使って、HTMLテーブルセルの値を直接Excelのセルに書きこむ方法」
を実現したいのですが、コピーしたhtmlデータをどうやってテーブル区切りで取得させるかが全く解らない状況です。
440名無しさん@そうだ選挙にいこう:2005/04/13(水) 07:40:48
かなり頻繁に検索を使うのですが、グーグルの検索ツールバーのようにツールバーに検索窓を追加
するようなことは出来るのでしょうか?
441405:2005/04/13(水) 08:16:05
>>440
田中亨に検索ツールバーのアドインがあるので使ってみては?
ttp://www.officetanaka.net/library/

リンクフリーなのでスクリーンショットも貼っておく
ttp://www.officetanaka.net/library/sample/tbf-1.jpg
ttp://www.officetanaka.net/library/sample/tbf-2.jpg
SSでは単体になってるけど、もちろんツールバーに埋め込むことも出来る。
442名無しさん@そうだ選挙にいこう:2005/04/13(水) 10:02:54
>>441
おお。ありがとー。
443406:2005/04/13(水) 15:02:00
>>439
405さんに質問です。
コピー元(HTML)のセルは1つのテーブル<table>〜</table>全体ですか?
それともテーブルの中の一部分のセルですか?

前者であれば表示中のHTMLDocumentからtableエレメントオブジェクトを特定し、
Rows(i)Cells(j).innerTextでエクセルライクに値を取得できますが、
後者だとdocument.selection.createRange().htmlText等で
選択範囲のHTML文字列を取得し、<tr><td>タグを解析して縦横の値を
自力で取り出す必要があるかと。

なお、これらの方法ではクリップボードは不用です。
いずれにしてもコピー元のHTMLの構造が一定であればプログラミング可能ですが、
不特定のHTMLのテーブルセル文字列を汎用的にExcelの選択セル等に埋め込むような
ルーチンを作るのはかなり大変だと思いますです。
444405:2005/04/13(水) 15:42:14
>>443
テーブルの中の一部分のセルです。
Webブラウザから表の一部をコピーしたあと、どのようにすれば良いのでしょうか?
VBAは初歩的なことしか解らないので>>443の解説だけでは
無能な自分には全く理解出来ません。
ローカルのhtmlから表全体を取得するならなんとかなるけど
いちいちローカルに保存するくらいなら、今までの方法の方が早いし。

コードを書いていただけるとありがたいのですが、
失礼ながら406氏も具体的なコードは書けないというなら、ここで期待して待つのはやめて、
何とか出来るところまで足掻いてみます。最後にはあきらめることになるだろうけど・・・
445名無しさん@そうだ選挙にいこう:2005/04/13(水) 15:51:47
WindowsXp・Excel2003ですが
新規のシートの状態から29行、E列ぐらいでセルを埋めて表を作ったんですが
そのまま普通に印刷すると29行目ぐらいがA4の真ん中ぐらいになるのですが
これの縦横をA4の用紙にいっぱいに自動で合わせて印刷するには
どう操作すればよいでしょうか?
446名無しさん@そうだ選挙にいこう:2005/04/13(水) 15:51:52
>>444
具体的にURLとどの部分をコピーしたいのか書いたほうが早いと思うよ。
447405:2005/04/13(水) 15:59:22
>>446
Webページから表をコピペしたいことが多いというだけで、
利用するサイト、ページは特に決まってません。
でも、ExcelにHTML張り付けした場合はどの表でもWebブラウザの表示と同じになるので
ソースの記述が多少違っても、1つで可能なら理論上は全てに通ずるはずですよね。
ExcelにHTML張り付けしても崩れるようなものは例外かもしれないけど。
448名無しさん@そうだ選挙にいこう:2005/04/13(水) 16:00:12
お伺いしたいのですがEXCELのシート数の制限は何枚でしょうか?
ある競技の集計ソフトを作成中でVBAで成績速報を新規シートで出力していますが
種目が多く枚数が増えるため速報のシートが31枚以上は追加出来ません
本体のシートは参照データベースや入力シート等で既に59枚あります
一度保存し再度ブックを立ち上げるとリセットされる見たいですが
私が運用するのではなく競技大会のの運営者が使用するので
なるべくトラブルを回避したいと思い質問させて頂きます
OS WindowsXP HOME
Microsoft Office Excel 2003です
449名無しさん@そうだ選挙にいこう:2005/04/13(水) 16:08:24
>>448
物理メモリ容量、及びシート内容依存です。
シートが追加できないなら、それがおそらくあなたの環境でのシート数限界です。
450名無しさん@そうだ選挙にいこう:2005/04/13(水) 16:13:19
>>449
ご回答有り難うございます
うっかりしていましたメモリ512Mです

>物理メモリ容量、及びシート内容依存です。
判りました対策を考えます
451名無しさん@そうだ選挙にいこう:2005/04/13(水) 16:19:23
VBAの質問です。
For i = 10 To 1 Step -1
 For j = 1 To 10
  If Cells(i, j).Value = hoge Then
   処理
   Exit For A
  End If
 Next j
 @
Next i

このようにForを2段使っていて、ある条件を満たしたら何らかの処理をして
Forを抜けたい場合、上のコードだとFor jは抜けられるけどFor iは抜けられませんよね。
この場合、Gotoを使ったりこのFor文以降の処理を別プロシージャにしたり@の部分にコードを入れたりせず、
Forの2段目のIf文内(Aの位置)だけのコードでFor iを抜けるにはどうすれば良いでしょうか?

実用上困ってるというわけではなく、興味があっただけなのですが、
何か方法があるなら知っておきたいのでご存じの方が居りましたらご教授ください。
452名無しさん@そうだ選挙にいこう:2005/04/13(水) 16:24:22
>>451
ねえよ。
453名無しさん@そうだ選挙にいこう:2005/04/13(水) 17:46:33
>>451
go to じゃ不都合でもあるのか?
454名無しさん@そうだ選挙にいこう:2005/04/13(水) 17:53:15
>453
「実用上困ってるというわけではなく」
って書いてあるぢゃん
ちゃんと嫁よw

なぜgoto以外の方法が知りたいのかはわからんが
455名無しさん@そうだ選挙にいこう:2005/04/13(水) 18:10:56
>>451
ダイクストラ先生におこられろ
456名無しさん@そうだ選挙にいこう:2005/04/13(水) 18:15:16
>>447
Excelのクリップボードの内容って、
Webページを入れた場合も、テキスト入れた場合も同じじゃない?
457名無しさん@そうだ選挙にいこう:2005/04/13(水) 18:40:21
>456
をいをい・・・
同じだったらhtml形式での張り付けすら出来ないだろ
つーか「Excelのクリップボード」って何よ?
クリップボードは全ソフト共通ですが、何か?
奴も言ってる通りDataObjectで取得した場合はテキスト扱いになるけどな
458名無しさん@そうだ選挙にいこう:2005/04/13(水) 18:49:01
>>451
その部分をFunctionに記述してExitするぐらいかな。
そうするメリットは感じられないが。
459名無しさん@そうだ選挙にいこう:2005/04/13(水) 18:55:36
>>457
Excelはhtml、xmlで処理してなかったっけ?
htmlのソースコードをExcelに貼り付けてみて。
460名無しさん@そうだ選挙にいこう:2005/04/13(水) 21:50:57
関数の質問です。OSはXPでエクセルは2003です。
質問の内容ですが・・
   A      B      C      D      E
1 SH900i  ドコモ    999
2 902SH   ボータ    223
3 W31SA   au     582
4   ・      ・
5   ・      ・
このような形でA・B・C列に400行データが入っています。
Aが商品名でBがメーカーでCが販売数となっています。これをD・E・F行
にTOP10だけ出したいのですが、対応出来る関数はありますでしょうか?
   D     E     F
1 ドコモ   SH900  999
2 ドコモ   D900   870
3 ドコモ   N900   825
・  ・      ・    ・
11 ボーダ   902SH  999
12 ボーダ   802SE  650
13 ボーダ   603SH  540
・  ・      ・    ・
21 au    w31SA  920
22 au    w21H   650
23 au     ・     ・
みたいな感じにしたいのです
 
461名無しさん@そうだ選挙にいこう:2005/04/13(水) 23:32:20
体重測定のExcelをつくりたいと思っているのですが

流れ的には
-------------------------------------
        4月  5月  6月 〜
スズキイチロウ 55kg  57kg  54kg
ヤマダハナコ  44kg  45kg  42kg
タナカタロウ  32kg  30kg  36kg
-------------------------------------
というデータを作成して、
200名分くらいをA5の紙に一人一人グラフで
出力するという感じで考えているんですけれど、

Sheet1部分がデータベース部分
Sheet2にグラフを表示、印刷部分

という風に考えたのですが、
どうもあきらかにSheet2の部分が能率的ではなさすぎるなあという感じです。
マクロとかがよくわからないので、下地は地道にコピペでつくるという(泣)感じなのですが。

こういうものをつくろうとした時に参考になりそうなページはございませんでしょうか?
またこれをすっきりさせるためにはどういう方法がありますか?
462名無しさん@そうだ選挙にいこう:2005/04/13(水) 23:49:17
> こういうものをつくろうとした時に参考になりそうなページはございませんでしょうか?
ヘルプ
463名無しさん@そうだ選挙にいこう:2005/04/13(水) 23:54:54
>>438
前スレ950までしか見てないんだけど、
デザインモードは試したの?
464名無しさん@そうだ選挙にいこう:2005/04/14(木) 00:02:51
>>463
してないにちがいない、、、
465名無しさん@そうだ選挙にいこう:2005/04/14(木) 00:21:02
>>460
Dをドコモの列: =if(B1="ドコモ",C1,"")
Eをボーダの列: =if(B1="ボーダ",C1,"")
FをAUの列: =if(B1="AU",C1,"")
として、キャリア別の台数を抜き出す。

次にRANK()関数でそれぞれのキャリア内での順位を出しておく。
(G列とかね)

最後にVLOOKUPで順位からデータの並べ替えを行なう。
この場合、同じ台数となっているデータはうまくいかない w

素直にソートを使って加工するのが早そうでつ。
(別にVBAでもいいが)
466名無しさん@そうだ選挙にいこう:2005/04/14(木) 00:25:05
エクセルはADOを使ってMDBにアクセスできるけど

ファイルメーカーのデータベースにアクセスする方法ってある?
467名無しさん@そうだ選挙にいこう:2005/04/14(木) 01:33:53
エクセルで作った表を印刷しようとすると横に長いために二枚組になってしまいます。
用紙を90度回転させて印刷すれば解決できるのですが、
回転させないでそのまま「用紙の横サイズに合わせて縮小する」みたいな
便利なコマンドってないのでしょうか?
468名無しさん@そうだ選挙にいこう:2005/04/14(木) 01:49:20
>>467
ページ設定>ページ>次の次数に合わせて印刷 横「1」×縦「1」 
469463:2005/04/14(木) 06:35:52
>>463-464
その通りでした。どうもありがとうございました。
470名無しさん@そうだ選挙にいこう:2005/04/14(木) 07:01:43
>>465
やはり、そうなってしまいますか・・現状は同じような設定をしてたもので
自分でももうちょい、VBAとかで試してみます。ありがとうございました
471名無しさん@そうだ選挙にいこう:2005/04/14(木) 08:20:45

VBAで指定セルの文字のバイト数を取得したいんですが
VBA関数のLenBでは半角文字も2バイトになってしまうし
なぜかWorksheetFunction.LenB()も使えない。
作業セルを設けて.Formula = "=LenB()"とやるのではなく
VBAコードのみで文字列のバイト数を求めるにはどぷすればいいでしょうか?
Excel97〜2002まで使える方法を教えてください。
472名無しさん@そうだ選挙にいこう:2005/04/14(木) 09:46:09
>>471
StrConvを使うといけますよ。
473471:2005/04/14(木) 09:58:43
>>472
LenB(StrConv(Cells(1, 1).Value, vbFromUnicode))
でバッチリいけました。ありがとうございます。
474名無しさん@そうだ選挙にいこう
エクセルのエンコードはどこで指定したらよいのでしょうか。