Excel総合相談所 30

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

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

前スレ
http://pc5.2ch.net/test/read.cgi/bsoft/1102922371/

過去スレは>>2
FAQ(よくある質問と答え)は>>3-15くらい。
= FAQ: 列の表示について =
Q.列名がA,B,C,D,Eではなく、1,2,3,4,5になってしまいました。
 アルファベットに戻すにはどうしたらいいですか?
A.ツールメニュー:「オプション」 -「全般」タグで
 『R1C1 参照形式を使用する(C)』のチェックを外せば直ります。

Q:列を256個(IV列)よりたくさん広げることはできませんか?
A:エクセルのシートは65536行×256列が仕様上の上限です。
 シートを分けるとか、行と列を入れ替えるとか、データの方をまとめるとか、
 列数を増やさない方向で工夫するしかありません。


= FAQ: 印刷プレビュー =
Q:印刷プレビューではセル内に収まっていた文字が
 実際に印刷してみるとはみ出してしまうのですが、
 何とかなりませんか?
A:「印刷プレビューと印刷結果が一致しない」のは
 昔からのExcelの弱点で、どうにもなりません。
 セルの幅や高さに余裕を持たせるか、
 書式設定で「縮小して全体を表示する」にチェックを入れましょう。
= FAQ: マクロの”””削除””” =
Q.マクロを削除したのに、ファイルを開くたびにセキュリティの確認が出ます。
A.モジュールの解放が必要。
 【モジュールの解放方法】Alt+F11→Ctrl+R→Module1を右クリック→解放


= 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
= 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)

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

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

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


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

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


= FAQ: 参照するセルをセルの値で指定する =
Q.A1に「5」とか「6」とか指定する値を変えたら
 B1の関数で「C5」とか「C6」とか参照先が変わるようにできませんか?
A.INDIRECT関数を使ってみましょう。
 詳しくはヘルプで「INDIRECT」を検索


= FAQ: ブラウザの変更 =
Q.Excelでアドレスをクリックした時に開くブラウザをIEからSleipnirなどに変更したい。
A.スレ違いです。
 開きたいブラウザの設定画面でそのブラウザを通常使うブラウザに指定してください。
以上、テンプレ終わり。
= FAQ: セル内での改行 =
Q:セル内で改行したいんですがどうすればいいでしょうか

A:改行したい位置でAltを押しながらEnterを押せばセル内改行できます。


= FAQ: ワイルドカード文字の検索・置換 =
Q:* 、 ? で検索するとワイルドカードとして認識されてしまいますが、
  * 、 ? の文字自体を検索するにはどうすればよいですか?

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

A:全角で*と入力し「半角と全角を区別する。」のチェックを外して検索する
 (全角なのでワイルドカードとしては使われないが
  全半角を区別しないので文字として"*"にはヒットする。)
1010:05/01/27 22:13:29
>1 スレ立て乙
>2-8 テンプレ乙
>9 テンプレ補完乙
11名無しさん@そうだ選挙にいこう:05/01/27 23:20:46
シート上のある範囲内でクリックしたセルに数値を入れたいのですが、どうしたらよいでしょう。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Selection.Value = 1

これではクリックした箇所全部1になってしまいますので、おしえてください。
If Target.Column = 1 Then Selection.Value = 1
例えばこれでA列のみが対象になる

If Target.Row <= 10 Then Selection.Value = 1
そんで、これだと1〜10行目のみが対象になる。

If Target.Column = 1 And Target.Row <= 10 Then Selection.Value = 1
組み合わせるとA1:A10の範囲のみが対象になる

If Target.Column = 1 Or Target.Row <= 10 Then Selection.Value = 1
Andの代わりにOrだとA列(A1:A65536)と1〜10行(A1:IV10)が対象になる

あとは自分の環境に合わせてお好きなように。
>>11
SelectionChangeだと矢印キーで移動しただけでもイベントが発生するから、
ダブルクリックのほうがいいんじゃない?
>>12
マウスで範囲選択したときはA列のみとかにはなってなくない?
だいじょび?
15名無しさん@そうだ選挙にいこう:05/01/28 00:00:58
Excel2000です。

VBAで、String型変数に格納されている文字列内の特定の文字を別の文字に置換する
関数ってありますか?
普通に
Replace(変数, "検索", "置換")
じゃダメなの?
1715:05/01/28 00:31:10
>>16
ありがとうございました。
Replace関数はワークシート内の文字列置換にしか使えないのかと思ってました・・・
18お金は必要です!:05/01/28 00:32:51
妻の○情報です。
(*^_^*)
良かったら見てあげて下さい!
http://www.paw.hi-ho.ne.jp/nahochan(^з^)
19名無しさん@そうだ選挙にいこう:05/01/28 01:05:21
excel97 access97 OS2000です。

アクセスがらみの質問で恐縮ですが
どなたか助けてください。

アクセスから複数のデータをEXCEL97にエクスポートしまして
その複数のシートに共通の検索値を利用してVLOOKUP関数を利用しようとしたところ
うまく結びつきませんでした。
原因はアクセスからのデータのエクスポートの際、VLOOKUP関数が利かない書式で
エクスポートされているようです。
(エクセルをテキストで吐き出してみたら
VLOOKUPが利くデータは'123456'とカンマがついていましたが
利かないデータは123456とそのままでていました。)


これらエクスポートしたデータをVLOOKUP関数を利用できるようにするには
どうしたらよいでしょうか?

それともアクセスからのエクスポートの時からなにかうまくやらないといけないのでしょうか?

つたない質問ですいません。
どなたかご教示いただければ幸いです。

どうぞよろしくお願いします
ツールバーのフォントからリストが消えたのですが
どうすれば元に戻りますか?
残っているのは4種類だけなのです。
win98でExcel2000です。
フォントからリストが消えた?
フォントリストからフォントが消えたんじゃなくて?

どちらにしても他のフォント設定が出来るアプリでどうなのか調べな。
他のソフトでも同じような状態ならExcelの問題ではなくWindowsの問題なのでスレ違い。
Excelだけの症状なら残ってるフォントの種類と、
リストは4個で終わってるのか4個以外のところが空欄になってるのか書いてね。
>21
レス有り難うございます。今使っているマシンではないので
詳しくは判りませんが、リストに出てくるフォントは日本語
がMSゴシックとMSPゴシックだけであと二つ…英数用のが。
リストは4個で終わりで空欄ではないです。
システムのフォントフォルダの中味は問題なく、それまであった
フォントもずらりとありました。
WINの問題なようですね・・明日、他のアプリで調べてみます。
23名無しさん@そうだ選挙にいこう:05/01/28 07:05:54
>>12さん、13さん、14さん
ありがとうございます。
さっそく組み合わせてやってみます。
またわからなくなったときは、お手数ですがよろしくおねがいします。
>>20
ttfCache を削除して再起動
excel2002 OSxpです

並び替えについて質問なのですが、

1
2
1L1
3
2R1



1
1L1
2
2R1
3
という風に並び替えしたいのですが、できません。
RやLが入ったセルが下に来てしまうのです。
XPのフォルダ内で同じ事をするとうまく並び変わるのですが・・・

どなたかよろしくお願いします。
>25
そのデータ範囲の表示形式を「文字列」にして、並べ替えで
○数値とテキスト形式の数値をわけて並べ替えを行う
にチェック入れて並べ替えすればいいと思うが。

但し数値はセルの書式設定で表示形式を変更しただけでは
文字列データにならないので再入力する必要がある。
まあこれは書式設定も含めてVBAで処理すれば一発だけど。
横レスですが、
> ○数値とテキスト形式の数値をわけて並べ替えを行う
↑はどこにありますか?
前スレ998ですがスレが終わってしまったので再度質問させてください。

グラフを貼り付けたのですが、他の閲覧したいセルと表示範囲がかぶっています。
ワンクリックでグラフの表示/非表示を切り替えるようなことはできないのでしょうか?
よろしくお願いします。
>27
テキスト形式の数値を含む範囲で並べ替えをしたときのみ
表示されるオプションです。
3025:05/01/28 12:27:15
回答ありがとうございます。

しかしまた問題が起きてしまいました
私の説明不足で申し訳ないのですが、

1
10
1L1
2
20
2R2

2桁の場合はどうしたらよいでしょうか・・上のようになってしまうのです。
たびたびすいません。
そういう機能は用意されてないと思います。
マクロの自動記録をして、ボタンにでも登録してみてはいかがでしょうか?
↑は>>28でした。
>30
それは当然の結果だよ。
数値として並べ替えてるんじゃなくて、テキストとして並べ替えてるので「桁」という概念は無視される。
文字列の左から1文字目が第一優先キー、左から2文字目が第二優先キーというような扱い。
つまり数値では 10 > 9 だけどテキストでは 10 < 9 となる。
並べ替えの方法は数値としてか文字列としてかのどちらかなので、
1,1L1,2,2R2,10,20という順で並べ替えたいのなら、作業列を作って
数値はそのまま、文字列は数値を抽出して作業列に代入し、その列で数値として並べ替えるしかない。
>>29
書式を文字列にして見たり、数値の前に’を入れたりして見ましたが
そのオプションに出ませんどういうケースで確認出来ますか?
お手数ですが具体的に教えてくださいませんか。
ちなみにExcel2003で試してます。
>34
> 書式を文字列にして見たり、数値の前に’を入れたりして見ましたが
それで出るはずですよ。
「並べ替え」ではなく「昇順で並べ替え」「降順で並べ替え」を使ってませんか?
標準でツールバーにある縦にAZ又はZAと書かれたアイコンは後者です。
前者は メニューバー > データ > 並べ替え ですよ。(自分はこのアイコンもツールバーに置いてるけど
>>35
ん〜、メニューからやってます。
オプションの中も確認しています。 
バージョンの違いでしょうかね?
恐れ入りますが後学のためにそちら様のバージョンを教えていただけますか?
3725:05/01/28 13:29:59
>>33
回答ありがとうございます
色々いじってみます 
3836:05/01/28 13:33:54
>>35
判りました、OKしてから、オプション画面とは別に出るわけですね。
2002から見た事があったかも・・・でした。
お付き合いありがとうございました。

遅レスだが
>前スレ994
Cだけ左に寄っているのは、フォントのせい。
多くのプロポーショナルフォントは、でかい or 丸っこい文字は左側に寄せて作られているので
Cの他にも G O Q W Z なんかが左に寄りやすい。
コレを防ぐには「MSゴシック」 「MS 明朝」 等の、等幅フォントにすればOK。
40名無しさん@そうだ選挙にいこう:05/01/28 19:22:38
馬鹿な質問ですいません。
Excelでワイルドカード検索ができることは知っているのですが、
ワイルドカードで検索されたテキストを、置換文字列に再利用するには
どうすればいいのでしょうか???

正規表現で言うところの、
(.+),(.+) → \2,\1
のようなことがしたいのですが……。
参照させる際にそのセルのあるシート名を返すような関数はないでしょうか?
たとえばSheet1というシートのA1に、Sheet2というシートのA列のどこかにある
Sheet1という入力されたセルの隣のセルを参照させたいのですが。
42名無しさん@そうだ選挙にいこう:05/01/28 20:04:56
教えてください。

実は、気に入ったスレがあったので、1から1000まで、エクセルに
貼り付けたのですが、メール欄の「sage」にリンクがついてしまい
うかつに触れなくなってます。

リンクの解除って・・・出来ないよね・・・・。
>>42
すべてを選択して、"sage" を "" に置換して削除してしまえばよい。
44名無しさん@そうだ選挙にいこう:05/01/28 20:15:33
>>43さん、ありがと!チュッ!

もし、出来れば、青い文字のリンクを無効するだけでいいのですが・・・
>40
VBAで、検索した文字を変数に格納して、
その変数を置換で使えばいい。
46名無しさん@そうだ選挙にいこう:05/01/28 21:03:21
>>41
CELL("filename",A1)
但しいったん保存して閉じて開かないと、、、
>>46
いったん名前を付けて保存すれば、「F9」で再計算させるだけでも大丈夫。
最初からディスク上に保存されているブックなら、開くだけでCELL関数も使える。
列Aに日付が1/1〜1/31と入っているとして、21日以降の日付が入ってたら値を削除する、というマクロを組みたいのですが、
素人が適当に作ったところ
Dim A As Date
A = ActiveCell.Value
Dim i As Byte
For i = 1 To 31
Sheets("Sheet1").Cells(i, 1).Activate
If Day(A) > Day("2005 / 1 / 20") = True Then
Selection.ClearContents
End If
Next i
これを実行すると列の全ての値が削除されてしまいます。どう手直しすべきでしょうか?ご指導願います。
>>48
> A = ActiveCell.Value
> If Day(A) > Day("2005 / 1 / 20") = True Then
Aに最初代入してから更新してない。しかもこの条件はひどすぎ。
--------------------------------------------
Dim i As Byte

For i = 1 To 31
If Day(Sheets("Sheet1").Cells(i, 1)) > Day("2005 / 1 / 20") Then
Sheets("Sheet1").Cells(i, 1).ClearContents
End If
Next i
5048:05/01/28 22:25:28
>>49
おおー、無事思い通りに削除できました!ありがとうございます
行き当たりばったりでなく今度からちゃんとVBA勉強します…
条件付き書式を設定したいのですが、条件を別のシートのセルの数値に対応させることはできないでしょうか?
たとえばSheet1というシートのA1の色をSheet2というシートにある特定のセルの値に対応させたいのですが。
> If Day(A) > Day("2005 / 1 / 20") = True Then
> If Day(Sheets("Sheet1").Cells(i, 1)) > Day("2005 / 1 / 20") Then
>48も>49もそうだけど、「日」の値だけで比較したいならなぜ両方Day関数使うの?

If Day(Sheets("Sheet1").Cells(i, 1)) > 20 Then

でいいじゃん。逆に「日付」で比較したいなら

If Sheets("Sheet1").Cells(i, 1) > DateSerial(2005, 1, 20) Then

でしょ。なんか無駄だよ。
>>41
> Sheet1という入力されたセル
Sheet1のどこかのセルを参照しているという事だとすると
こんな感じで関数作ってみれば?
セルに"Sheet1"と入力されているだけなら適当に読み替えて。

Dim c As Range
Dim a As String

a = ""
For Each c In Worksheets("Sheet2").Range("A:A")
If InStr(c.Formula, "Sheet1") > 0 Then
a = a & c.Address & ";"
End If
Next c
MsgBox a
>51
定義参照使うか「Sheet2というシートにある特定のセル」の値をSheet1に抽出して参照するかVBA使うかすれば出来る。
5548:05/01/28 22:38:04
>>52
なるほど…こういう意見聞くたび目から鱗です。
>>49さんも>>52さんもありがとう。勉強になります
>>44
Cells.Hyperlinks.Delete
みなさんに、お力を借りたいと思い質問させていただきます。

■■■■■■■■■■■■■■■■
■  ■  ■3時■4時■5時■
■■■■■■■■■■■■■■■■
■2月■2日■44■55■66■
■■■■■■■■■■■■■■■■
■2月■4日■54■23■29■
■■■■■■■■■■■■■■■■
といった感じの大きな表がありまして、これを

■■■■■■■■■■■■■■■■
■  ■  ■  ■  ■  ■
■■■■■■■■■■■■■■■■
■2月■2日■3時■44■  ■
■■■■■■■■■■■■■■■■
■2月■4日■5時■29■  ■
■■■■■■■■■■■■■■■■

といった具合に変換しろと上司から言われました。

けど、どうやっていいものかわからず困っています。

2月2日の3時は44です、といった形に関数などを使って数字を拾っていけないものでしょうか?

どうか、助けてください><。
バージョンはエクセルXPで、OSはWIN XPです。
>>57
変換に規則性がなければ手作業でやるしかない。
>>48-49
Byteってどうだろ?

>>52
日付で比較したいなら

If Sheets("Sheet1").Cells(i, 1) > "2005/01/20" Then

でいいんじゃん。なんか無駄だよ。
>57
VBA使えば出来るけど、自分で書けないなら以下の質問に答えて。

1. 「3時」の位置はC3ってことでいいの?
2. 変換後の表はA2に「2月」、B2に「2日」、C2に「3時」、D2に44、ってことでOK?
  それとも一つのセル(A2)に「2月2日3時44分」って表示したほうがいいの?
3. 変換前の表の値は文字列?それともシリアル値?
4. 変換後の表には2日は3時のみ、4日は5時のみが書かれてるけどこれはどういう規則性なの?
  それとも2日3時、2日4時、2日5時、4日3時、4日4時、4日5時、というように全て変換すればいいの?
5. 表の大きさはどれくらい(何列何行)なの?それとも可変?
6. 4.の回答が全部変換の場合、空欄の扱いは?空欄も空欄として1行入れる?それとも無視する?
6148:05/01/29 00:51:58
>>59
Integerとかのほうが良いですか?
パソがへっぽこなので処理速度が軽くなるかなと思ったのですが・・・素人が作るくらいのレベルじゃ大差ないでしょうが。
>>61
処理速度なんか、8ビット程度減ったって変化ない。
よくわからんがcellsの引数になってる時点で16bitになってないかな?
6348:05/01/29 01:12:05
>>62
なるほど…どうでもいいとこに気を回していたようですね。ありがとうございます
>>59
コードの文字数では>>52の方が無駄(というか多い)けど
処理的には>>59の方が無駄。
>57
2時半までに>60に答えれば、暇を見て夜が明ける前にはVBA書いてみる。
2時半までに回答なかったらさようなら。
>>65
寝るぞーー
>66
いや、寝るわけじゃないんだが・・・
とりあえず一度消える。
>>51
Sheet2の特定のセルが例えばA1で、値が仮に1だったらという条件なら

=INDIRECT("Sheet2!A1")=1

という感じで。
windowsxp home+officexpです。

グラフを書いてその近似式を出し、
そのxに数値を代入する と言う作業をしたいのですが、
いまはいちいちグラフの横に出る近似式をマウスで範囲指定してコピー
、セルにペースト、Xを数値に置換 というふうにしているのですが、
グラフが多すぎて困っています。
マクロ作るにもうまくコピーしてくれません。
どなたかよろしければよい方法をご教授願います。
左側に書かれている「月火水木」を基準して、右側にある表を自動的に埋める方法はないでしょうか?
(図では一緒のシートですが、本当は別シートです。)
http://human.cc.hirosaki-u.ac.jp/keizai/joyful/img/57.jpg
71名無しさん@そうだ選挙にいこう:05/01/29 08:06:58
>>70
hlookupを使え
7236:05/01/29 09:25:50
>>69
グラフは使わない、全てシート上で。
数を使って、式の変数・定数を求める
求まった数値を用いて、計算させる
使う関数は、近似式の種類によるので調べましょう。
7357:05/01/29 09:55:20
すいません、返事が遅れてしまいました。

60さんの回答をします。

2月2日15時はそれぞれのセルでかまいません。

2月でひとつのセル 2日で ひとつのセル 15時でひとつのセルです。
貼り付けでこの文字はなんとかなるだろうと思っていました。
数字を拾うことだけがどうにかならないだろうかっと思っていました。

なので、1と2はそのとおりです。
3については、セルに入っているのは、直接入力した数字や文字です。

4については、1行目をA列に変換して、B列に何月、C列に何日といった
形で結局は名称に関しては全部乗せなければならないです。
というのも、730*500の表で作られていて、印刷をする場合に大きすぎで印刷ができないのがネックになっています。これをA3ぐらいの紙で縦型に整理できたらと考えていました。

そして、6については空欄は無視したいと思います。

どうかよろしくお願いします。
74名無しさん@そうだ選挙にいこう:05/01/29 10:13:35
セルに
以下のように表示するには?
たとえば
+5-6と打って-1(赤)
+5-5で 0(黒)
+5-4で+1(黒)
>73
4.に対する回答が不明瞭です
5.に対する回答がありません。

ので、よくわからないがとりあえずこんな感じで。
変換後のデータを書き込むために「Sheet2」という名前のシートをあらかじめ作っておいてね。
Sub 変換()
Dim r As Integer, c As Byte, x As Integer
x = 1
For r = 2 To 3 '最終行を指定
 For c = 3 To 5 '最終列を列番号で指定(A列なら1、B列なら2、・・・)
  If Cells(r, c) <> "" Then
   x = x + 1
   With Sheets("Sheet2")
    .Cells(x, 1) = Cells(r, 1)
    .Cells(x, 2) = Cells(r, 2)
    .Cells(x, 3) = Cells(1, c)
    .Cells(x, 4) = Cells(r, c)
   End With
  End If
 Next c
Next r
End Sub

コメント入れてあるところは環境に合わせて書き換えて。
データが10行までなら For r = 2 To 10、同じくG列までなら For c = 3 To 7
という感じでToの後の数値を書き換え。要望と違うなら何が違うか具体的に書いて。

>74
"+"0;[赤]"-"0;0
76名無しさん@そうだ選挙にいこう:05/01/29 12:14:47
エクセル(2000)のオブジェクトを用いて、POPを作成しているのですが、
600ぐらいあり、そのどれもが不定期に必要になるため、
どのPOPがどこにあるか探すのに時間がかかってしまいます。

良い、管理方法は無いのでしょうか。
別にPOPの名前を書いた表を作成して、そのタイトルを選ぶと
該当するPOPのあるセルに移動する、というのを考えたのですが
どうもうまくいきません。
>>76
>どうもうまくいきません。
具体的に書いたほうがいい
78名無しさん@そうだ選挙にいこう:05/01/29 12:36:42
>76
ハイパーリンクか?
VBAでセル(A1)に条件「数式が」「=hoge」、書式「文字色を赤(ColorIndex=3)」という
条件付き書式を設定するにはどうすればいいですか?
Excel2002、WindowsXPです。よろしくお願いします。
>>79
その手順を「マクロの記録」で記録すればいいんじゃないの?
81名無しさん@そうだ選挙にいこう:05/01/29 16:02:37
西濃運輸の送り状の入力をエクセルでしたいのですが
用紙を選ぶのはどうしたらいいですか。送り状のサイズは115X255mmです。
82coたろー:05/01/29 16:06:31
質問です
あるセルに入ってる文字列を
別のシートで検索してその位置を返す
にはどうしたらよいでしょうか?
検索される別シートでは検索対象の文字列がある位置は
決まった行や列上にはありません、ランダムに散ってます
こんな感じでよろしいでしょうか...?
よろしくお願いします
83名無しさん@そうだ選挙にいこう:05/01/29 17:35:59
列を固定して表示し続けるにはどうすればいいんですか?
名簿とか作るときに左の列に名前をいれて右に情報の列を。
右のほうに移動していっても名前の列だけは表示し続けるようにしたいんですけど。
>>83
名前のすぐ右隣の列を選択して、ウィンドウ>ウィンドウ枠の固定
>>82
セル番地を返すってこと?

>>83
ウィンドウ枠の固定
>>81
プリンタに依存する。取説嫁。
「ユーザー定義サイズ」みたいのがあるかどうか。
[Enter]キーを押したときの動作が右へ行くように設定してます。
セルA1 A2 A3 ・・・と入力していき、例えばA5セルに数値なんかを入力して[Enter]キーを押したら
セルB1に移動。そしてB2 B3 B4`と入力してB5セルに入力後[Enter]押したら
C1に移動・・・とするにはどうすればよいのでしょうか。
マウスで次の行の1列にクリック移動させるのが邪魔くって・・・
よろしくお願いします。
>>87です。
Excelのヴァージョンは97です。付け加えします。
>87
セルの移動を普通(下)に設定して
Workbook_SheetChange
で5行目の値が変わったらCells(1, Target.Column+1)に移動させるか
Workbook_SheetSelectionChange
で6行目が選択されたらCells(1, Target.Column+1)に移動させるかすればいいじゃん。

ただ、Workbook_SheetChangeだと未入力でEnter押すと普通に移動しちゃう。
逆に、Workbook_SheetSelectionChangeだと6行目が一切選択出来なくなる。
どちらを使うかはお好きなように。
セルの移動を右にしたままでも、これらを使えば望みの動作は実現できる。
90名無しさん@そうだ選挙にいこう:05/01/30 00:49:22
軸ラベルがすべて表示されずに、途中で切れてしまいます。
どうしてでしょうか?  excel2000です。
>>90
グラフを大きくする。
フォントサイズを小さくする。
92名無しさん@そうだ選挙にいこう:05/01/30 01:02:01
>>91
フォントを小さくしても表示されません。
グラフを大きくしても同様です。
>>92
もう少し詳しく状況を書かないと分からないな。
プロットエリア・グラフエリア・フォントサイズを
調整すれば、表示されると思うんだけどな。
>>90
他のグラフや作りなおしたグラフも
同じように切れちゃうの?
95名無しさん@そうだ選挙にいこう:05/01/30 01:16:44
>>93
グラフエリアを大きくしても、表示されません。
フォントを小さくしても、同じ場所で切れてしまいます。

>>94
そうです。すべてのグラフが切れてしまいます。
他のPCでは表示されていたデーターも、今のPC
で表示させると切れてしまいます
96co%82%bd%82%eb%81[:05/01/30 01:30:05
>82
ええ、できれば...何か手はございますでしょうか?
なお検索して位置を知る、ってのを行うのは
検索されるシート側の任意のセル上を考えていますです。
環境はWin2000、office2002のExelです
>>95
グラフオプションの「タイトルとラベル」の「項目軸」を確認してみた?

.ファイル壊れてない?新規のブックにデータをコピペしてグラフ表示してみたらどう?
9857:05/01/30 01:49:07
>>75 さん

先ほど帰ってきて、レスを読みました。

最初はVBAの設定が良くわからなかったので、本を買ってきて読んで、
何とか方法がわかって、早速試してみました。

で、マクロを実行してみたら、
演算に15分ぐらい掛かって、終わったら、
こちらの希望通りに表ができあがっていました。
すごいです!!

あとはちょっと表の体裁を整えればOKなので、本当に助かりました。

びっくりしてしまいました。

途方にくれていたので、本当にありがとうございます><。

感謝しています。

こんなに便利な方法があるとは全然知らなかったので、
難しいかもしれませんが、勉強してみようと思いました。

どんな本を買って勉強していいか、まだわからないのですが、
いつか、仕事で使えるぐらいの学習はしてみたいと思います。

助言をくれた皆様も本当にありがとうございました^^

>>87
まず、普通にenterで下に動くようにしておく。
入力したいセル範囲をマウスで選択して、あとは普通に入力。

もしかして、「A1,B1,C1の順」の間違い?
それならば、enterではなくtabでA1,B1,C1,D1,E1と移動していって、
E1に入力したらenterを押せばカーソルがA2に移動する。
>>82,96
とりあえず、打って見ました。
目的の文字列範囲が飛び飛びでなく、F列と接しないという条件で、
F1に目的の文字列を入力してマクロを実行すると、F2以下にそのアドレスが出ます。
寝ぼけた頭でざっと打ったので余りスマートでないですが。

Sub test()
  Dim a As Integer, i As Integer, r As Integer
  a = Range("A1").CurrentRegion.Cells.Count
  For i = 1 To a
    If Range("A1").CurrentRegion.Cells(i) = Range("F1") Then
      r = Range("F1").CurrentRegion.Rows.Count
      Cells(r + 1, 6) = Range("A1").CurrentRegion.Cells(i).Address
    End If
  Next
End Sub
すみません、少しお聞きしたいのですが

Excel でオフィス2000からXPにアップデートしたんですが
上書き保存をしたときになぜか「名前を付けて保存」みたいに
保存ウィンドウが出てしまうのです。
別に読み取り専用とか設定してないんですが
なにかあるんでしょうか?

一応OSはWINDOWS2000です。
>101
新規作成したファイルに対して上書き保存をすると
「名前を付けて保存」のダイアログが出るのが普通だけど、
一度名前を付けて保存したファイルに関しても上書き保存出来ないの?
>>101
そのファイル、読み取り専用 になってない?
104名無しさん@そうだ選挙にいこう:05/01/30 11:42:23
Excel2002、WindowsXP Pro SP1aの環境なんですが、デュアルモニタ環境で
ユーザーフォームのコンボボックスを使うとフォームとドロップダウンリストが別々のモニタに表示されます。
ディスプレイはどちらもBenQの20.1型で解像度は1600x1200、左がプライマリモニタで右がセカンダリモニタ、
ビデオカードはGF4Ti4200で左がDVI接続、右がD-Sub接続です。
この環境でセカンダリモニタにフォームを表示させドロップダウン用の下矢印をクリックすると
リストが別のモニタ(プライマリモニタ)に表示されてしまいます。(下図参照)
プライマリモニタにフォームを置くとちゃんとボックスの下にリストが表示されます。
入力規則のドロップダウンリストや他のVBアプリのコンボボックスでは全く問題ないので
仕様ではなく設定の問題だと思うのですが、回避策が解りません。
どなたかお力添えをお願い致します。

  プライマリモニタ    セカンダリモニタ
 ┌───────┬───────┐
 │              │              │
 │              │  ┌───┐  │
 │          ┌─┤  │      │  │
 │          │  │  └───┘  │
 │          └─┤              │
 └───────┴───────┘
ドロップダウンリスト↑    ↑コンボボックスを含むユーザーフォーム
105名無しさん@そうだ選挙にいこう:05/01/30 16:18:38
空白のセルを 0 で埋めたいのですが何か方法はないでしょうか?
>>105
表示形式>ユーザー定義で可能
自力でムリポなら、今どんな表示形式にしてるカキコね
>>106
できました。ありがとうございました。
おめ!!と言いたいところだが、今気づいた。
0を空白で埋めたいと読み違いしてた。。。

どうやって解決したの? 良かったら教えて。
109名無しさん@そうだ選挙にいこう:05/01/30 17:48:17
セルに▼(なんていう名前かわからない)があって
選択できるようにするにはどうすればいいですか


入力規則からリスト使うのが一番簡単。
セルをクリックした時だけ▼が表示される。

常時▼表示は、フォームかコントロールツールボックス
ありがとうございました
入力規則をぐぐってしてみます
上記はわかったんですが、
一緒に他のセルの値も連動させることは出来ませんか

例:  F15商品名を選ぶ→J15金額が入力される
     除湿剤   → 800
     サビ止め  → 600
みたいに 
リストの元データ部分、隣のセルに金額を入れとく
このセル範囲をAA10:AB20とすると、
J15=VLOOKUP(F15,AA10:AB20,2,0)
114名無しさん@そうだ選挙にいこう:05/01/30 18:39:20
HPを持っている方必見!登録したら5000円!
http://afj21.jp/adlink.php?adid=1355
>>113
>2,0
の意を教えてください
>>115
先にヘルプでVLOOKUP関数を引きなされ。
>>116
理解できました。
ありがとうございました
118coたろー:05/01/30 21:25:27
>100様
ああ、やはりVBなのですね...
どうもありがとうございます、参考にさせていただきます m(_ _)m
自分的にVLookupとかで解決できないか検討もしていますが...
重ねてお礼もうしあげます
119名無しさん@そうだ選挙にいこう:05/01/30 21:34:23
宜しくお願いします
すべてのシート内のA20を参照して加算したい場合どう入力しればいいのでしょうか?
>>119
3D集計(串刺し集計)or統合
121名無しさん@そうだ選挙にいこう:05/01/30 22:24:20
すみません質問の仕方をまちがえました
1つのファイル内にある複数のシート内の、同一番号のセル内の数字をすべて
加算したいのですが、どうすればいいでしょうか
それらすべてのシートのA20を加算したいのですが・・
偶数(または奇数)行のみコピーして取り出す方法を教えてください。
お願いします。
123名無しさん@そうだ選挙にいこう:05/01/30 22:28:55
解決しました。ありがとうございました
>>122
作業列に =MOD(ROW(),2) これを下までオートフィルでコピー
次にデータ>フィルタ>オートフィルタ で先の作業列にある▼をクリック
リストの中から、1または0を選択
抽出された部分をコピー
>>123
解決したのはいいが、自分が何番の質問者なのか名乗って置け
回答者が混乱するから。(大体は想像付くけど
>>118
元の表に重複したデータはあるの?
同一列上に重複がなければ、ちょっと手間だけどVBなしでも検索できるよ。

たとえば10列10行の重複のない表(A1からJ10まで)なら、
K1に1、K2に2をいれ、K10までオートフィル。
K1からK10をT列までコピー。

A12に検索したいデータを入れる。
A13に =VLOOKUP($A$12,A1:K10,11,0) と入れる。
A13からJ13までコピー。
そうするとほとんど#N/Aと出るが、一箇所だけ数字が出る。
それが探したい文字列の位置。
たとえば、G13に5と出れば、目的の文字列はG5にある。
127122:05/01/30 22:52:07
>>124
ありがとうございます。
無事にできました。
>>126
横からすいません。
同じようにバラバラにある数の位置を探したいと思ってるのですが、
(同じ数は2回出てきません)
ビンゴのカードみたいにでたらめに表になってる時は
その方法では難しいですか?
>>128
最後の ,0) を ,1) にしてみれ
>>129
どうもうまくできないです・・・
EXCELのおすすめ書籍スレってないんかな。あったら誘導してください。。
ttp://dekiru.impress.co.jp/daijiten/exkan/exkan.htm
この本の評判知りたくて。株主優待でもらえるようなんだが、迷ってる。
できるシリーズは悪くないよ。
俺はできる大辞典のExcelVBAを以前買ったけどかなりわかりやすい。
ただ、解説書ってのは読む人のレベルに合ってないと
意味不明で漬け物石になったり簡単すぎて絵本レベルになったりするから
実際に書店で少し立ち読みしてみるのがいい。
簡単なのかもしれないですが、
普通の折れ線グラフを時計回りに90度回転させたような
(上にX軸があって左にY軸があるような)
グラフが作りたいのですがどうやったら出来ますか?
基本的な質問で申し訳ないのですが、
SUM式などで計算した結果の数字をコピペしたいのですが
普通にやると式がコピーされてしまいます。
数字をコピーする事はどうしたら出来ますか?
>134
右クリック→形式を指定して張り付け→値

ショートカットボタンも用意されてるから
よく使うならツールバーに出しておくがよろし。
136名無しさん@そうだ選挙にいこう:05/01/31 01:21:54
>>133
Y軸を右クリックして、「軸の書式設定」の「目盛」で、
「軸を反転する」か「最大値でX軸と交差する」をチェック。
137ミックス:05/01/31 01:24:11
はじめまして これから使いこなせるように勉強予定なんですが 書籍の購入の参考になるような(評価、ランキング等)サイトがあったら教えてください
138134:05/01/31 02:07:02
>>135さん有難うございます。
139133:05/01/31 02:39:06
>>136
有難うございます。
でもそれだとX軸に取りたい項とY軸に取りたい項が逆になってしまうのです。
入れかえるにはどうしたら宜しい?
140名無しさん@そうだ選挙にいこう:05/01/31 05:40:58
Changeで特定のセルの値だけが、
かわった場合に作動するようにしたいときはどうしたらよいですか。
>140
>>12参照。単一セルなら
 If Target.Address = "$A$1" Then
でA1のみが対象になる。
>>139
折れ線グラフにはX軸=項目(not数値)の縛りがあるよ。
X軸を数値にしたいなら、散布図になるけど。
143140:05/01/31 06:21:51
>>141
朝早くの回答どうもありがとうございます。
145133:05/01/31 10:54:35
>>142,144さん有難うございます。
URL参考にして結構近づいてはきたのですが
下のほうにも数値軸をつけて折れ線はそれに対応させたいのです。
無理でしょうか?

y
100|         |20
 75|  / ̄\   |15 と言う状態の折れ線グラフ+
 50| /       |10 ABCDEそれぞれ積み上げ棒グラフ付の物を 
 25|______|5
     A B C D E x

    25 50 75 100
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄y  と言う風に右90℃回して、
 A| \          同じく積み上げ横棒付にしたいのです 
 B|   \
 C|    |
 D|   /
 E|_______   
x 5 10 15 20
146126:05/01/31 11:29:42
>>128
できるはずだけどねぇ。
私の説明の仕方が悪いかもしれない。
文で書くの難しい。

例では10×10表だったが、A1から始まるx行×y列の表なら、
(y+1)列目の1行目からx行目を1〜xで埋めて、y列コピー(2y列目まで)します。

式は
=VLOOKUP([参照セル絶対参照],[A1〜x行(y+1)列までの範囲指定],[y+1],0)
に変わります。
この式を右にy列目までコピー。

わかるかな・・・。
147名無しさん@そうだ選挙にいこう:05/01/31 13:51:40
Excel97を使っています。
仕事で画像の加工をしているのですが、保存時にJpgで保存してくれと頼まれました。
Jpg形式での保存は可能なのでしょうか? 自分なりに色々調べてみましたが使い慣れていない為
わからん事だらけで参ってます。。。 どなたかお知恵をお貸しくださいませ。
148名無しさん@そうだ選挙にいこう:05/01/31 14:03:26
excel2003(WinXP home)を使用しているのですが
ツールバーの「上書き保存ボタン」を押すと
名前をつけて保存になってしまいますorz
!?!?なぜ・・・・

ちなみにショートカットのCTRL+S でも同様ですorz
どなたか解決方法を知っていますか!?
【ソフトウェア】 1必読!★スレッド立てるまでも無い質問Ver.42★
http://pc5.2ch.net/test/read.cgi/software/1105209562/612
612:名無しさん@お腹いっぱい。 []:05/01/31 13:18:01 ID:VsYy+82Z
   フリーソフトを探しています。 どなたかのお知恵をお貸しくださいまし。

   Excelで画像を加工して保存する時にJpgファイルとして保存をしたいのですが、
   変換して保存って可能なのでしょうか? なんか良いソフトがあったら教えて下さい。


マルチなので放置の方向でお願いします。

>148
新規作成したファイルじゃないですか?
もしくは読み取り専用になってないですか?
150名無しさん@そうだ選挙にいこう:05/01/31 14:46:42
>>147
画像を保存→画像編集のソフトで保存
Excelのシートに画像を貼り付けて保存→普通にxlsで保存

ただ、jpg形式は加工保存を繰り返すと、どんどんデータが間引かれて
荒くなっていくので通常はbmpなりpngなりに変換しておく方がいい
151148:05/01/31 15:26:43
>149
新規作成したファイルや読み取り専用ではないです。
一度作成したファイルを読み出して、編集した後ですorz

もーわけわからんorz

>>151
そのファイルのプロパティを確認汁
属性が「読み取り専用」となっていない?

あと、他のファイルや
新規作成していったん保存したファイルで試しても同じなの?
153名無しさん@そうだ選挙にいこう:05/01/31 16:31:43
EXCEL2003を使用しています。質問がございます。

ファイルAのとあるセル(場所は固定)に、ファイルBのセルの値(セルの場所が変わる事がある)を
参照して自動的に数値が入るようにしたいのですが、関数もしくはマクロで可能でしょうか?

ファイルBのセルの位置が変わる事があるというのは、とある数値の合計値を出しているのですが、
ファイルごとに行数が違うため、時にはA10に合計値が、時にはA11に合計値が入っています。
そのため、ファイルBのセルの値を取得する方法を、A列の最後に数値が入っている行を参照する
といった感じで取得したいのです。
なお列の位置は変わりません。

よろしくお願いします。
15474:05/01/31 16:32:02
>75san
ありがとうございます
155名無しさん@そうだ選挙にいこう:05/01/31 16:58:50
>>153
ファイルA、B共にシートは1枚として

    Range("A65536").Select
    Selection.End(xlUp).Copy
    Workbooks.Open Filename:="C:\My Documents\ファイルB.xls" ←フルパスで指定
    Range("b1").Select ←ファイルAのとあるセル
    ActiveSheet.Paste
156155:05/01/31 17:05:01
スマソ勘違いしてた

    Workbooks.Open Filename:="C:\My Documents\ファイルB.xls" ←フルパスで指定
    Range("A65536").Select
    Selection.End(xlUp).Copy
    Windows("ファイルA").Activate
    Range("b1").Select ←ファイルAのとあるセル
    ActiveSheet.Paste

ファイルBのA列の最終をファイルAのとあるセルに格納
157148:05/01/31 17:11:13
>152
はい、属性は読み取り専用じゃないですよ
他のPCでは普通に読み書きできます。

新規に作成したファイルを一度保存した後に再度上書き保存する際にも
やはり「名前を付けて保存」になっちゃいます・・・・
>>157
ツールバーを右クリック>ユーザー設定>コマンドタブ>ファイルのところにそのアイコンをD&Dで一旦戻して
もう一度D&Dで登録しなおしてみたら?
なる!
アイコンとショートカットではどちらも「名前をつけて保存」になると書いてあるけど
メニューからコマンドを選んでいっても、同じ?
>>145
y軸で二軸は試してますか?
棒グラフで一つだけ飛び出てるやつを
よくあるように波形で省略して縮めたいのですが、
EXCEL2000で出来ますか?
162153:05/01/31 18:20:18
>>155 >>156
ありがとうございました。
非常に助かりました。
163148:05/01/31 18:48:53
>158
はい、ユーザー設定の部分も同様の操作を行ったのですが
ダメでしたT_T
CTRL+Sのショートカット自体、上書き保存になっていないので
もっと内部的な設定があるのかな・・・と
164名無しさん@そうだ選挙にいこう:05/01/31 18:48:57
>>158>>159

>>148
>ちなみにショートカットのCTRL+S でも同様ですorz

ってあるからアイコンだけの問題じゃなさそう
>>153,162
今回は>>156のコードで十分だけど、、今後いろんなコードを書くのなら
copyとpasteより変数を使うのになれたほうがいいと思うよ。

Sub test()
   Workbooks.Open Filename:="C:\My Documents\ファイルB.xls", ReadOnly:=True
   buf = Range("A65535").End(xlUp)
   ThisWorkbook..Sheets(1).Range("B1") = buf
   ActiveWorkbook.Close
End Sub
>>163
んじゃあ、共有フォルダに入ってるファイルということはありませんか?
それも違うなら、Excelの修復か再インストール
167名無しさん@そうだ選挙にいこう:05/01/31 20:56:28
>>165
そだね
でもそれなら、変数の宣言をおわすれなく
Excel2003を使用しているのですが、

VBAを使い始め、コードを書き増やしていくうちに
msgboxの中で使っていた Chr(13) & Chr(10) が突然認識してくれなくなりました
vbCrLf という表し方もあることを知ってこれで代用してみたところ、これが動いてくれました
OnKeyメソッドも OnKey "{13}" という表記では動くのですが、
OnKey "{Enter}" では動いてくれません

今まで自分でエラーに応じて使い分けしてきたのですが、
何かコードの書き方に統一性のようなものがあるのでしょうか
基本的なことなのかもしれませんが、ご教授願います
169名無しさん@そうだ選挙にいこう:05/01/31 23:35:00
>168
マイクロソフトの仕様。
旧バージョンの関数や定数を継承しない。
 社長にA4縦に印刷できるよう顧客名簿と関係データの表を作ってくれと言われて、作ったのですが、
横2行で一人の顧客名簿と関係データという形式でデータを作ったのですが、3ヶ月間仕事の合間を
見つけては入力していたデータを社長に渡した途端、横一列に作ってくれないと困るといわれました。

縦が約一万行ぐらいの膨大な縦の行のデータを一つずつコピペしていったら、物凄い時間が掛かるし、何かいい方法がないかとご教授お願いに
参りました。

1 2 3
4 5 6という2行のデータで一つの顧客とした場合、

1 4 5 2 3 6というスタイルか、

1 2 3 4 5 6というスタイルに直す方法はないでしょうか?

どなたか助けてくださいTT
171170:05/01/31 23:45:36
間違えました。
1 4 2 5 3 6 若しくは

1 2 3 4 5 6 の間違いでした。

連続投稿すいません。
172名無しさん@そうだ選挙にいこう:05/01/31 23:53:01
123456は、簡単
>170
1がA1なら、
1 2 3 =A2 =B2 =C2
という風にして、D1:F2を範囲選択して下方にフィルコピー。
D:Fの3列を列全体選択してコピー、そのまま「形式を指定して張り付け → 値」
あとは不要になった偶数行を>124の要領で削除。

VBA書けるなら123456も142536も簡単なんだけど、
>170の情報だけではこっちで書くことは出来ないし。
174名無しさん@そうだ選挙にいこう:05/02/01 00:06:25
こうなっているセルを

 ABCDEF
1●●●●●●
2●●●●●●
3●● ●  
4●

このようにしたいのですがいい方法はないでしょうか?

 ABCDEF
1●
2●● ●
3●●●●●●
4●●●●●●

天井(1)にぶらさがっている●を地面(4)に付けたみたいにしたいです。
>174
G1に
=INDIRECT(ADDRESS(5-ROW(),COLUMN()-6))
と入力してL列までフィルコピー、更にそれを4行目までフィルコピー。
空欄に0が返るのでそれを表示したくなければ表示形式を変えるか
=IF(ISBLANK(INDIRECT(ADDRESS(5-ROW(),COLUMN()-6))),"",INDIRECT(ADDRESS(5-ROW(),COLUMN()-6)))
を使う。これは同じシート内で元データの右に表示する方法だが、別シートの同じ位置に表示したければ
=INDIRECT("元データのシート名!"&ADDRESS(5-ROW(),COLUMN()))
で、同じようにフィルコピー。数式から値に変えたければ「形式を指定して張り付け → 値」
以上。
因みに>174もVBAで簡単に出来るけど処理的には>175で書いた関数と同じように
「5-行数」の値を返すってやり方になるね。
VBAなら「右に表示」、「別シートに表示」だけでなく、二次元変数使うことで
上書き(書き換え)もできるからその方がいいなら簡単だから書いてみれば?
>>170 ABC列に1行目からデータがあるとして
@ABC列コピーDEF列にペースト
AD1:F1選択 削除、上方向へシフト
BG1に1を入力 G1:G2選択 下へオートフィル
CG列をキーに並べ替え、下半分重複データを捨てる。
1分もかかりません。
列の順番を変えるのは 列選択、Shift+ドラッグで。
178名無しさん@Vim%Chalice:05/02/01 11:05:44
エクセルで赤文字色のセルだけ検索もしくは選択ってできますか
ジャンプ画面でいろいろ選択はできるのだが・・・
>>178
バージョンが2002以降なら「検索」の「オプション」ボタンでできます。
180名無しさん@Vim%Chalice:05/02/01 14:43:01
>>179
ショック!2000です。残念!
んじゃ、VBAで検索。
>>180
ヘェ〜2000だと出来ないんだ。知らなかったww
複数のシートに記入したデータを一つのシートにまとめる事はできますか?
そのまとめシートを変更すれば元データも変更されるように相関させたいです
内容は住所等顧客データです、よろしくお願いします
どういう風にまとめたいのかも元データがどんなものなのかもしらんからアドバイスのしようがないが
まとめたいなら好きなようにまとめればいいじゃん

んで相関させるなら、まとめシートと元シートでWorksheet_Change使って
交互リンクのようにすればいいんじゃないの?
ただApplication.EnableEvents使わないと永久ループするから注意ね。
185183:05/02/01 16:40:07
解りにくくてごめんなさい
市区郡別に顧客の名前等のデータを各シートに記載してます
それを一つのシートに自動でまとめたいのです
各元データのシートへデータを追加すると、まとめデータの方が行追加されていく。また、まとめデータをで修正すると各元データも修正される。
まったく私には解らないので助けて下さい
186名無しさん@そうだ選挙にいこう:05/02/01 16:52:55
>>185

まとめシートを作って各元データを集計
データの変更は通常まとめシートからはやらない、元シートのデータを変更汁
>185
自動でやるならまとめ用に空シートを再後尾に1枚作って置いてVBAで
Worksheets(1)の全内容をまとめシートに張り付け、
Worksheets(2)の全内容をまとめシートの最終データ行の次の行から張り付け
以後Sheets.Count-1までこの繰り返し。

> 各元データのシートへデータを追加すると、まとめデータの方が行追加されていく。また、まとめデータをで修正すると各元データも修正される。
は>184で書いたようにWorksheet_Changeを使ってリンクさせればいい。
ただそのまま書き込むと永久ループするのでApplication.EnableEvents = Falseの状態で書き込んで
書き込みが終わったらApplication.EnableEvents = Trueに戻してやる。

あとは解説サイトでも見ながらVBA書きな。
VBAを調べるのと全て手動でやるのとどっちが面倒かは自分で決めればいい。
>>185
Access等リレーショナルデータベースを導入すると楽。
>各元データのシートへデータを追加すると、まとめデータの方が行追加されていく。
>また、まとめデータをで修正すると各元データも修正される。
まさに、これがリレーションシップというモノだから。
189185:05/02/01 17:29:44
うおーありがとうござます
むむむ
191148:05/02/01 19:01:34
上書き保存が名前を付けて保存になる件ですが
結局、修復セットアップで解決しました・・・
しょうがないといえ、何故こーなったのかorz

ありがとうございますた
はじめて、そのExcelファイルを保存するときはそうなるけど、そんなまさかね?
それらについては散々既出
データの並び替えをしたいのですが、
いちいち「データ」-「並び替え」からやるのではなく、
ドロップダウンリストからソート方法(基準とする列)を選択できるようにして
メニューを開くことなくリストを並び替えることは可能でしょうか?
くだらない質問で申し訳ないんですが
数名が使う環境でだれがいじったか定かじゃないんですが
Excelファイルをダブルクリックで起動した場合
そのファイルのほかに新規ファイルも必ず開くようになってしまいました
なぜそうなってしまったか分からないのでアンインストールしてから
再インストールしたのですが直りません
むだな新規ファイルを開かないようには出来ないでしょうか?
OfficeXP ProfessionalのエクセルでOSはXPです
196名無しさん@そうだ選挙にいこう:05/02/01 21:31:41
01 02 02 04 ...
02 32 43 11
.
.
.

のような行列があったとして、これを

0101 0202 0202 0404 ....
0202 3232 4343 1111
.
.
.

というようにセルの中身の数字を反復するように変換する関数ってないでしょうか?
どなたかご教授頂ければ幸いです。
>>196
REPT関数
198196:05/02/01 21:52:04
>>197
おお神よ!ありがとうございます!
199名無しさん@そうだ選挙にいこう:05/02/01 23:06:21
ひとつの列に
「松平」(A1)「水戸」(A2)「松平」(A3)「徳川」(A4)「松平」(A5)「水戸」(A6)などと
縦に並んでいるデータがあります。
これを手動以外で、「松平」計3「水戸」計2「徳川」計1などと数える方法はありませんでしょうか?
ageてしまいました、ごめんなさい..
>>199
COUNTIF
DCOUNTA
集計
ピボットテーブル
202199:05/02/01 23:42:11
>>201
ピポットテーブルでうまく並び替えられたのであとは手動で数えちゃえました
スマートな解決方法ではないだろうけど、ずいぶんと楽になりましたありがとうございます。
>>202
ピボテの行フィールドにA列の項目名をドラッグ
データアイテムにも同じA1列の内容を入れてみなされ
204104:05/02/01 23:49:48
>>104が解る方居たらお願いします。
仕様だという場合はsourceもお願いします。
205名無しさん@そうだ選挙にいこう:05/02/01 23:55:45
>>195
c:\Programfiles\Microsoft\Office11内の
XLSTARTフォルダかSTARTUPフォルダ内にファイルがないか?
206170:05/02/02 00:15:29
170です。今帰ってきてレスを読みました。返事を書いてくれた方、
ありがとうございます。

173さんと177さんの2通り書いてあったので、明日会社へ行って実験してみます。

操作のやり方を書いてくれて、感謝です^^
>>204
善意の回答スレで催促した上にソースまで要求するなよ。
そんなに重要ならMSに電話でもしたら?
>>205
Documents and Settings\Administrator\Application Data
にある該当フォルダ内のファイルを消して解決しました
ありがとうございました
>>204
ちょいとぐぐっただけでこんなのが出てきたが。 それもしなかったの?

http://support.microsoft.com/default.aspx?LN=JA&scid=kb;JA;jp326585&
Office 2000 SP-3 を適用すると、「サポート技術情報」 (Microsoft Knowledge Base) に
これまで記載されていなかった以下の問題が修正されます。
  :
[XL] コンボ ボックスのドロップダウン リストが必ずプライマリモニタ上に表示される
デュアル モニタ ディスプレイで、コンボ ボックスがセカンダリ モニタ上にある場合でも、
そのドロップダウン リストが必ずプライマリ モニタ上に表示されます。

少なくともバージョン2000で確認され解決済みの事象ということ。
Excel自体のアップデート(2002もSP3まで出てたな)で解消されるかもしれんし、
ダメならMSに問い合わせてみな。
オートシェイプで正方形を書いて印刷して定規で測ってみると、
縦の寸法が短くなってます。
サイズ通りに印刷するには、どうすればよろしいのでしょうか?
作成者欄にデフォルトで自分の名前を表示させるには
どこを設定すればいいでしょうか?
>>211
ツール→オプション→全般→ユーザー名でできるとおもう。
213名無しさん@そうだ選挙にいこう:05/02/02 17:25:25
二つ教えてください。
1、Excelで配列変数を動的に取ることは出来ないでしょうか。
内容が書かれているセルの数の半分だけ変数を確保したいのですが、
aにセルの数を代入した後で
Dim b(a/2) as single
と言う形で宣言してもエラーになってしまいます。

2、配列変数の数を数を取得する方法を教えてください
上の例で言うとbの領域をいくつ確保しているか知りたいです。

以上、よろしくお願いします。
>>212
ありがとうございます。

いろいろ試してわかったのですがデスクトップ上で右クリック→
新規作成→Microsoft Excel ワークシートでは作成者は出ないようですね。
お聞きしたいのですが、
AutoFilterでフィルタリングする時に条件に変数を使いたいんですがうまくいきません。
↓こんな感じで記入してます。

Sub 金額でフィルタリング()
Dim k_kagen As Variant '金額下限を入れる変数k_kagen宣言
k_kagen = Range("A2") 'k_kagenにA2セルの内容を入力
Columns("D:D").Select 'D列を選択
Columns("D:D").AutoFilter 'D列をフィルタリングする
Selection.AutoFilter Field:=1, Criteria1:=>=k_kagen, Operator:=xlOr, _
Criteria2:="=*無指定*" 'F列をk_kagenと無指定でフィルタリングする
End Sub

ちなみにCriteria1:=">=1000"(1000はA2に入っている数字)にするとうまくいきます。
Criteria1:=">=k_kagen"にしたら条件が「k_kagen以上」になっているみたいだし・・・
ご教授よろしくお願いします。
>>214
ホントだ!ビクーリ
>>213
Dim b() as single
ReDimで大きさを設定。
UBound、LBoundでぐぐれ
218名無しさん@そうだ選挙にいこう:05/02/02 21:16:09
Excel2002のVBEのオプションで、コードの表示色を設定する項目がありますが
標準では文字色、背景共に16色内からしか選べないんですが、
ここで標準で用意された16色以外から指定するにはどうすればいいですか?
メニューからの変更が無理なら、ここのパレットデータを書き換える方法でもいいです。
どなたかご存じの方、お教え下さいまし。
>>215
Criteria1:=">=" & k_kagen
220エクセル奥深いです:05/02/03 02:07:48
ちょっと教えてほしいのですが、散布図を作る際y軸がx軸の0でないところで交差するよう出来ますか?
一応x軸とy軸の交点の値をずらすと出来るのですが、そうするとx軸上の目盛りの値もめちゃめちゃになるのです。
>>219
ご教授ありがとうございます。
うまくいきました!

一度同じ記述をしてだめだったんですが、そのときは他が間違ってたんですね(汗
助かりました。ありがとうございました。
>>220
簡単にやってみたけど、当方問題なし。
再現できないとアドバイスも出来ないよ
>そうするとx軸上の目盛りの値もめちゃめちゃになるのです
具体的に書いて。出来れば具体例があるとなおよしです。
223名無しさん@そうだ選挙にいこう:05/02/03 11:25:29
EXCEL97です。
009と入力すると9となり、(009)と入力すると‐9と勝手に
変換されてしまいます。どうすればよろしいのでしょうか。
よろしくお願い致します。
224223:05/02/03 11:44:55
ごめんなさい。
文字列としても、ユーザ定義としてもできるんですね。
225名無しさん@そうだ選挙にいこう:05/02/03 12:10:22

ある条件が揃ったときに、条件があったことを最初の1回だけ表示する方法はないでしょうか
状態が常に変化する状況で使いたので、条件が揃ったりはずれたり
226名無しさん@そうだ選挙にいこう:05/02/03 12:12:43
↑の続き
ある条件が揃ったときに、条件があったことを最初の1回だけ表示する方法はないでしょうか
状態が常に変化する状況で使いたので、条件が揃ったりはずれたりします
マクロ使えばできそうですが、関数で実現するにはどうしたらよいでしょうか
>>225-226
「ある条件」を具体的に

「最初の1回」は何を基準に「最初」とするのか
シートが作られてから最初の一回目なのか
ブックが開かれてから最初の一回目なのか・・・etc

なぜマクロではなく関数でなくてはならないのか


を書きましょう。
シートをまるごとコピーしようとすると「コピー先のシートには既にある名前○○が定義されています」というメッセージが出ます。
ブックの中にはマクロも名前定義もなにもしていません。
これを出なくするためにはどうすれば良いのでしょうか?
教えてください。よろしくお願い致します
>>228
そのブックの中に名前定義を参照しているセルがありませんか?
どこから丸ごと、あるいは一部をコピーまたは移動してきたシートが
あったりすると、知らずに紛れ込んでたりする事があります。
名前の○○を使って検索すると、いいでしょう。
見つかったら、書き換えるか削除します。
230名無しさん@Vim%Chalice:05/02/03 18:00:37
現在のセルに色をつけることはできますか?
エディターとかで、現在行の下に色つきアンダーバーが出るやつみたいに。
いつのセルが改行とかででっかくなっているときに、1行下がるだけで
大きく画面が移動するので、たまに選択している行を見失ってしまいます。
231名無しさん@Vim%Chalice:05/02/03 18:02:50
選択セルと同じ値のセルを選択ってできますか?
ジャンプコマンドの現在セルと相違の逆がやりたいです
232418:05/02/03 18:08:49
一つ教えてください。
第2項目軸を追加したいですけど、どうすればいいですか?
ヘルプに書いていた“[書式] メニューの [選択したデータ系列] ”を見付けないが、
教えてください。お願いします。
233名無しさん@そうだ選挙にいこう:05/02/03 18:25:49
識者の方にお伺いしたいのですが、
Excel2003のVBAで
Workheets("hogehoge").copy After:=Worksheets(Worksheets.Count)
みたいな感じで一つのワークブック内でバンバンワークシートをコピーしていたら
256枚コピーしたところでそれ以上ワークシートが作成できなくなってしまいました。
1つワークブック内にはワークシートは256枚までしか作れない等、
何らかの制限があるのでしょうか?

もし、そういった制限事項がないのであれば、私の作ったプログラムのバグということになりますので
改めてプログラムを見直したいと思います。

よろしくお願いします
234228:05/02/03 18:29:47
229さんありがとうございます。
やってみます
235229:05/02/03 18:39:31
検索したけれどありませんでした。正確には」
「移動またはコピーする数式またはシートには,移動またはコピー先のワークシートに既にある名前○○がふくまれています。この名前を使用しますか」とでてきます。
エクセルは2000です よろしくお願いいたします。
>>233
97以前はたしか256だったと思ったけど、
2003はメモリに依存するみたいです。
ttp://office.microsoft.com/ja-jp/assistance/HP051992911041.aspx
メモリが足りないか、Worksheets.Countを8ビットの変数に
入れちゃってるとかぐらいしか思いつかん。
>>236
今、手元のExcel2000でいろいろ試してみたのですが
メモリオーバーとは別に、一つのワークブック内に作成できる
ワークシート数が限られてるようです。
ある程度のワークシート数を超えたら、新しいワークブックを開いて
そこに続きをコピーするようにコーディングすることで回避できました。

ありがとうございました。
>>237
2000もメモリに依存するから他のPCでは動かないかもよ。
複数のシートがあり、そのシート名がA1から横に並んでいるのですが、
それぞれのシートの特定セルに入力されている数値の平均を出したいのですが、
何かスマートにやる方法はないでしょうか?
現状では
=AVERAGE(INDIRECT(A$1&"!F"&ROW()+20),INDIRECT(B$1&"!F"&ROW()+20)・・・)
などとシート名の入ったセルの数だけ繰替えすことしか思いつきません。
どなたかアドバイスお願いします。
> メモリオーバーとは別に、一つのワークブック内に作成できる
> ワークシート数が限られてるようです。
2000はメモリ依存で変数制だよ。
ただ、メモリを使い切るまで作れるってものじゃなくて
メモリが〜MBなら256、〜GBなら1024とかって感じみたいだけど。

とりあえずうちの環境では空のワークシートなら5000まで作れたよ。
VBA使っても時間掛かるので5000でやめたけどまだまだ作れそうな感じ。

>239
VBAで処理するのがスマートだと思う。
関数のみでやりたいなら全シートの「特定セル」に名前を定義するとか。
>>239
その特定セルってのがどのシートでも同じ位置なら話は簡単だけど。
たとえばF25の平均を取りたいならシートの並びを見て、
=AVERAGE( '最初のシート名:最後のシート名' !F25)
>>240
Excel起動直後にワークシートをコピーする分には
なんか相当数コピーできるみたいです。
めんどくさいので500枚で止めました。

作業していくうちに、最大ワークシート数が動的に少なくなっていくようです。
243名無しさん@そうだ選挙にいこう:05/02/03 22:50:14
初歩的な質問なんですけど
印刷したときに結合したセルが2ページに分かれてしまう場合があります
この時、その結合したセルに入力した文字をぞれぞれ両方のページに印刷させることはできないでしょうか?
よろしくお願いします
たくさんのexcelファイルが合って
それぞれで 同じグラフを作りたいのですが、一つ一つ作るのが大変です。
一度に作成する方法とかありますか?

または、datファイルからグラフを一発作成するような方法はあるのでしょうか?
宜しくお願いします。
>>244
VBA
246エクセル奥深いです:05/02/03 23:43:36
222さん、レス有難うございます。
ちょっと舌足らずでした。例えばx=0,5,10,20の各ポイントでデータがあったとします。
そこで普通に散布図を描くとx=0のデータはy軸に重なって見えにくいのでy軸をすこしマイナスの方へ
動かしたいとします。ちなみにグラフのx軸のメモリはx=0, 5 ,10, 15, 20でつけておきます。ここでy軸を
x=-2で原点に来るようにずらすと一緒にx軸上の目盛りもx=-2, 3, 8, 13, 18で打たれてしまって困っているのです。
目盛りをx=0, 5 ,10, 15, 20のままでy軸をうごかせますかねぇ。
よろしくお願いします。
247名無しさん@そうだ選挙にいこう:05/02/04 00:17:00
二等辺三角形の底辺の長さと高さを入れるだけで、
その三角形の5mm内側の三角形の高さを出す
式って可能ですか?
> 可能ですか?
可能です。

というか中学レベルの話でしょコレ。
式が解らないから式自体を教えてくれとか言わないでね。
249名無しさん@そうだ選挙にいこう:05/02/04 00:29:46
>>248
すまんが教えてくれ。
板違いなら誘導してちょ。
>249
=高さ-内-内/(底辺/2)*SQRT(高さ^2+(底辺/2)^2)
=高さ-内-内*(SQRT(高さ^2+(底辺/2)^2)/(底辺/2))
で良いのでは?

5mmという値は固定なら"内"は"5"に置き換えてね。
というかピタゴラスの定理って中学だっけ?
>>250
ピタゴラスは厨3だよ。
だから>>247が厨2以下なら解らなくても仕方ない。
工房かそれ以上なら義務教育やり直してこいって感じだな。

高校以上の数学は専門分野に進まない奴には役に立たないことが多いけど
中学までの算数、数学は結構生活の中で役に立つよ。
ピタゴラスの定理なんて使わなそうだけど、家具の配置だの日曜大工だのと
平凡な生活してても使えると役に立つことが結構多い。(使えなくてもなんとかなるけど

ついでに平方根を関数ではなく演算子でやるとこんな感じ。
=高さ-内-内/(底辺/2)*(高さ^2+(底辺/2)^2)^0.5
252名無しさん@そうだ選挙にいこう:05/02/04 08:01:36
>>232
ヘルプにどう書いてあったのか良くわからないけど、
2つ以上の系列があるグラフを作成し、
そのうち一つをクリックか上下カーソルキーか何かで選択した状態で、
書式メニューからその系列の書式設定を変更できるはず。
253名無しさん@そうだ選挙にいこう:05/02/04 09:50:58
関数入りのファイルを貰ったので確認をしていたのですが、
関数の構成を見ようと思ってセルをクリックして入力状態にしたら
そのセルの関数が動かなくなってしまいました。
製作者がおらず復旧したいのですがどうしらいいか教えて
頂けないでしょうか?

関数には{}の括弧が付いていたみたいで、クリックして入力
する状態にしたら消えてしましましたが、これが関係あるのでしょうか?
>253
そのセルの選択して
F2 → Shift+Ctrl+Enter
255253:05/02/04 10:19:04
>>254
おお、直りました。
ありがd
256名無しさん@そうだ選挙にいこう:05/02/04 11:08:37
環境
Excel:Excel97(2000でも良い)
OS:Windows XP

VBAでの処理をBook1で作成しています。
処理の途中でデータが必要になるのですが、データの場所・ファイル名が
いつも決まっている訳ではない状態です。
VBAの処理の途中で、データのパス指定させるようなボックスを表示させたいのですが、
どのようにすれば良いのでしょうか?
「ファイルを開く」ダイヤログボックスの出し方は分かるのですが、指定したパスを
取得する方法が分かりませんでした。

よろしくお願いします。
257名無しさん@そうだ選挙にいこう:05/02/04 11:42:01
どやってダイアログ出してるの?comdlg32.dll使ってる?
どっちにしても多分ダイアログ開く関数の戻り値がファイルパスだと思う。
258名無しさん@そうだ選挙にいこう:05/02/04 15:13:04
VBAで教えて下さい

自分で作ったシートのマクロの表示にパスワードをかけているのですが、
マクロでこれを解除してVBEを表示させることは可能ですか?

毎回長いパスワードを入れて表示させるのが大変なので
シート上の少しはずれたところにボタンを配置して、
それを押したらコードが表示されるようにしたいのですが出来るのでしょうか?
>>258
パスワードかける意味ないじゃん
260sokusya:05/02/04 18:26:04
はじめまして
エクセルのセルで文字変換をしたいのですが、どなたか良い方法
教えていただけませんか?(勤務表をエクセルで作っています。)

・あるセルに「hh:mm」(10:43)の形式で入力した場合の表示を
 @15分単位で時刻を切り上げ、(10:45)
 A切り上げ後の時刻(分)を60進法⇒100進法(?)に変更し、(45分⇒75)
 A「hh:mm」⇒「hh.mm」のように表示する。(10.75)

そもそもエクセルでできるのでしょうか?
お知恵お貸しください。よろしくお願いします。
261名無しさん@そうだ選挙にいこう:05/02/04 18:48:06
A1に7:42って入ってたなら

=24*A1

で7.7とか十進で出る。時間は24時間を1とした値で表されているから。
これを.25単位で切り上げればえーんじゃね?
4倍して切り上げて4で割ればえーじゃん。まとめると

=round(24*A1*4)/4

こうだな。よかーたな。


262名無しさん@そうだ選挙にいこう:05/02/04 18:50:06
いや、roundupだた。間違えた。つかぜんぜんちがた。

=ROUNDUP(24*A1*4, 0)/4

こうだ。いや、ところでexcelのroundup関数て信頼できるんだっけ?
それは忘れたので調べてろ。
263名無しさん@そうだ選挙にいこう:05/02/04 19:03:44
Excel2000です。

枠線あり設定で使用しているシートの一部セルを枠線なしにする方法を教えてください
>>263
枠線を一部だけ消す方法はありません。
ただし背景色と同じ色(初期状態のシートなら白)の罫線を引けば、
見た目には一部だけ枠線が消えたように見えます。
265名無しさん@そうだ選挙にいこう:05/02/04 19:11:37
excel2000で、もし、このセル1に○(丸)がある場合
セル2にセル3の値をを参照し、○(丸)が無い場合は
セル4の値を参照する

と、いった書式できますでしょーか?
266sokusya:05/02/04 19:21:08
ありがとうございます。261のヒント助かりました。
ラウンドアップに変えてと桁数設定したらOKでしたYo。
=ROUNDUP(24*J10*4,0.1)/4

あともう一つ教えてもらいたいのですが・・・
この方法は入力したセルと別のセルに表示させるのには有効ですよね。
入力したセル自体にさっきのように表示させることはできないものでしょうか?
>>266
入力したそのセルの表示を変えたいならマクロ
268名無しさん@そうだ選挙にいこう:05/02/04 19:52:44
>>266
表示だけ変えて値はそのまま?っつーこと?
それとも、入力した時点で値自体を変えたいっつーこと?

後者はVBA使わないと無理っぽい。というかVBAならできる。
前者の方法は

>265
IF(セル1="○",セル3,セル4)
をセル2に入れる

というかテンプレ読めよ。>>5
270tetsu:05/02/04 20:45:38
現在Windows XPを使っていてOffice 2002のExellが入っています。このパソコンの中にバージョンの違うExell(Exell2000)を入れる事は出来ますか?
Exellはわかんねえなぁ・・・
2つ質問です。

1. ある列・行の任意の箇所から検索し、最初に内容が入力されているセルの内容を返すような関数ってありますでしょうか?
vlookupやhlookupだと検索文字列を設定しなければいけないようなのですが、
ある列の最初と最後に入力された文字列を探して引っ張ってきたいんです。

2. 複数のシートの特定セル(すべて同じ位置)の入力規則をまとめて設定することはできないのでしょうか?
試してみたところ、複数のシートを選択した状態だと入力規則の項目がグレーになって選択できません。
一つずつやればできるのですが結構量があるのでちょっとしんどい・・・。

>>270
とりあえず恥ずかしい誤字は置いといて、
内のWinXP ProにはOfficeXP Pro(Excel2002)とExcel97が入っていて
それぞれ正常に動いてるので問題ないと思われ。

ただ、同じ場所にインスコして「ダウングレードになっちまったよゴルァ」ということにならないようにね。

>>271
1. End関数(VBA)

2. VBAでやればいいじゃん。同じ場所なら簡単でしょ。
274名無しさん@そうだ選挙にいこう:05/02/04 21:04:29
>>270 Exellは俺も使ってるんだけど、違うバージョンの混在は可能
だよ。最初に古いバージョンから入れるのさ。
275名無しさん@そうだ選挙にいこう:05/02/04 21:39:20
>>250-251
サンクス
板違いとは思うが、ついでに解説もしてくだしゃい。
わかりやすいように1辺を100mmの正三角形に例える。
内側に5mmの所の正三角形の1辺の長さとか
外側の三角形の頂点から内側の三角形の頂点までの長さってどう求める?
ついでに教えてください。
276名無しさん@そうだ選挙にいこう:05/02/04 21:44:21
>>275
>内側に5mmの所の正三角形の1辺の長さとか
100-10√3mm

>外側の三角形の頂点から内側の三角形の頂点までの長さってどう求める?
10mm

板違いというか義務教育くらい受けるといーよ。
いや、そういう話じゃないのか、、、正三角形にしてしまうとダメすぎじゃね?
>>276
ありがとうございました。
文系の私ですが一応世間一般ではエリート扱いです(w

>278
      /|┐
     a./ |
     / | c
     /\|┘
    /b./|┐ 高さ
斜辺 / / .|
   / / .| x
   / /  .|
  / /  .|┘
  /  . ̄ ̄| y
   ̄ ̄ ̄ ̄
  底辺/2

これは2等辺三角形を縦半分にした図(直角三角形)です。
そして線b(右下がりの一番短いやつ)は斜辺に対して直角で内三角の頂点に接する線です。
ということは▲(ab,c)も直角三角形でそれぞれの辺の長さの比は
図に示した外側の直角三角形と同じです。(この辺が解らなければ小学校やり直してください

とりあえず外三角のサイズは 底辺:60 高さ:40 、内縮は 3 とします。(つまり、b及びyは3です
内三角の高さというのはxですが、これを求めるためには外三角の高さから
cとyを引くわけだけど、yは3という値が解っている。
ということはcの長さが解ればxは出る。(この辺は>275の質問からしても理解してるみたいだけど

で、cを出す方法だが、上図の▲(高さ,底辺/2,斜辺)と▲(ab,c)は線の長さは比例するので
「底辺:斜辺」=「b:c」です。まず斜辺を求める公式がSQRT(高さ^2+(底辺/2)^2)です。
これがピタゴラスの定理で、これが解らなければ中3?からやり直してください。
結果として「斜辺=50」という値が出るので
「底辺/2:斜辺」=「30:50」=「b:c」という式が成り立ち、b=3なのでc=5になります。
そして「高さ(40)-y(3)-c(5)=内三角の高さ(32)」となります。
これらを最初から繋げたのが>250の式です。
今回はわかりやすいように「直角の2辺がそれぞれ3と4の直角三角形の斜辺は5」
という整数のみで計算出来る比率の三角形を使いましたが、対象が二等編三角形なら
どんな比率でもこの式は当てはめられます。

最後に、文系でも義務教育内の数学知識くらいはきちんと身につけましょう。
因みに自分の最終学歴は中卒です。なのでもっと簡単にこの値を出す方法もあるかもしれません。
スレ違い長文失礼しました。
>>279-280
とてもわかりやすいです。
マジありがとうです。
282名無しさん@そうだ選挙にいこう:05/02/04 22:49:05
>>258
つまり、普通の人はコードを見られないけど、自分は見えにくい所に隠したボタンで
パスワードを入力しないでもコードを編集できるようになる。ということね

>>259
で、出来ないのかい?
>>257
ありがとうございます。
>ダイアログ開く関数の戻り値がファイルパスだと思う。
知らなかったです。

FilePath = Application.GetOpenFilename で取得出来ました。
エクセルVBAなんですが、スレ違いだったら誘導おながいしまつ。

ボタンをクリックするとエクセルを上書きして終わらせるマクロがあります。
これに書き込みのパスワードをつけておき、パスを入れずに開いたときは
そのまま閉じ、パスを解除して開いたら上書きして終わらせるには、
どういうマクロを書けばいいですか?

Sub 終了ぼたん_click()
  Application.DisplayAlerts = False
  ActiveWorkbook.Close
End sub

これだと、パスを入れずに開いてボタンをクリックすると、「同じファイル名が
あんねんけど上書きするんか?」と聞いてきます。
ウザいので、これも出さないマクロを教えてくだちい。
>284
説明が下手で、何がやりたいのかよくわからないが
パス入力の可否によって処理を振り分けるなら
いふ いんぷっとぼっくす = ぱすわーど
で処理分けすればよろし。
上書き確認は せーぶ 使えば出ないよ。
286284:05/02/05 01:12:01
>>285
すんまそん。自分で読み返しても質問がヘタだなぁ〜と思いますた。

まず、保存オプションで書き込みパスワードを付けて保存しまつ。
次にそれを開くとき、パスを入れて編集したときは終了ボタンで上書き保存し閉じる。
パスを入れないときは、そのボタンをクリックしても上書きしないで閉じる。
というのをやりたいんでつ。
>286
パス入れずに開くと読み取り専用モードで開かれるんだから
ブックが読み取り専用モードで開かれてるか否かで処理を振り分ければよろし。
288284:05/02/05 01:56:55
>ブックが読み取り専用モードで開かれてるか否かで処理を振り分ければ

って、IF のあとが分かりません
>288
If ActiveWorkbook.ReadOnly = True
 読み取り専用の場合
ElseIf ActiveWorkbook.ReadOnly = False
 読み取り専用ではない場合
End If
290284:05/02/05 03:15:11
>>289
ありがとん、出来ますた。

------------------------------------------
Sub 終了()
  If ActiveWorkbook.ReadOnly = True Then
    Application.DisplayAlerts = False
    ThisWorkbook.Saved = True
  ElseIf ActiveWorkbook.ReadOnly = False Then
    Application.DisplayAlerts = False
    ThisWorkbook.Save
  End If
    ThisWorkbook.Close True
End Sub
------------------------------------------

ただ、
ThisWorkbook.Saved = False
と書いても反応しないんでつけど、間違ってまつか?
291名無しさん@そうだ選挙にいこう:05/02/05 05:50:35
95でvlookupで他のブックから参照し保存しようとしましたが保存できません。
データが4万件なのでメモリにもんだいがありますか?
292名無しさん@そうだ選挙にいこう:05/02/05 06:50:13
ユーザー定義関数の引数に配列を指定するにはどうすればいいですか?
Function hoge(x(20) As Long) As Long
イメージ的にはこんな風にしたいんだけど、これだとエラーになるので対処法を教えてください。
x0 As Long, x1 As Long, x2 As Long・・・とやるのはいろいろ不都合があるので。

あと、データの形式を新たに定義するにはどうすればいいのでしょうか?
例えば時刻データは「24進数:60進数:60進数」で、「24:00:00 = 1」というデータですが、
「100進数:60進数:75進数」で「100:00:00 = 1」というデータを扱いたいです。

以上2点、よろしくお願いします。
293名無しさん@そうだ選挙にいこう:05/02/05 10:41:59
>>292
要素数は入れないんでなかた?

あとデータ形式は、単なる表示の問題ですよね?データそのものは
450000を1として扱えばいいだけであって、実際の入出力時に
12:11:10の形から変換してやればええだけですよね?その関数を作れば
いいだけやと思いますが。

function aTob(a as String) as Integer
function bToa(b as Integer) as String

書くの面倒臭いから辞めた、、、
次の人頼む
294名無しさん@そうだ選挙にいこう:05/02/05 11:12:54
英語式(?)で日付を入れたいので、今はThisWorkBookモジュールに以下のように記述しています。

Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.RightHeader = Format(Now(), "d/mmm/yyyy")
End Sub

この部分にフォント指定してやりたいのですが、どのように記述したらよろしいのでしょうか。
具体的にはArialの8にしたいです。
よろしくお願いいたします。Excel2002.
295名無しさん@そうだ選挙にいこう:05/02/05 11:40:13
>>291
vlookupを4万件もやったら計算終了していますか?
なんか、多すぎという気が、、、
というかvlookupは結構負荷が大きく、マシンパワーが
必要です。
なんでエクセル? なんで95? って、釣り?
297名無しさん@そうだ選挙にいこう:05/02/05 21:19:56
計算される数字を入れないと
#DIV/0
とか表示されるのですが、
それを空白にする方法はありますか?
>>297
・条件付き書式でiserror関数を使用して、文字の色を白(背景色と同じ色)に設定する。
・IF関数を使って空文字にする。

どっちかかな
299名無しさん@そうだ選挙にいこう:05/02/05 21:27:43
>>298
それだと計算された数字も消えませんか?
大阪府大阪市北区
大阪府大阪市東区 該当
大阪府大阪市南区
大阪府大阪市西区

と言う文字列が各行一つのセルに入っている場合、そのセル内に
「東区」と言う文字があった場合B列に「該当」と書き出しのですが・・・

以前はサクっとできた記憶があったのですが、全く思い出せません。
if関数とワイルドカードの併用ではどうも上手く働いてくれません。

他の関数使うのでしょうか?すみません、教えて下さい。
FIND関数かな
>297,299
それは数値を0で割ってますよってエラーなわけだが、
 =IF(ISBLANK(除数のセル),"",本来の計算式)
とすれば、除数のセルが空欄の場合は結果も空欄、0の場合は#DIV/0
 =IF(除数のセル=0,"",本来の計算式)
なら、除数のセルが空欄でも0でも結果は空欄
303300:05/02/05 21:53:30
>>301
これは>>300への回答でしょうか?
もしそうなら、findって開始文字列の検索関数ですよね?
A列に東区と言う文字列が含まれている → B列に該当
A列に東区と言う文字列が含まれていない → B列空白
としたいので、今回はちょっと使えないと思うのですが。
>303
=IF(ISNUMBER(FIND("東区",検査対象セル)),"該当","")

使い方を考えろ。
FIND関数は検索文字があれば位置を数値で返す。
つまり検索して数値が返ったら"該当"、数値が返らなかったら空欄。
>>304
できました。ありがとうございます。
306名無しさん@そうだ選挙にいこう:05/02/05 22:28:37
>>302
ありがとうございます。
IFは偉大だ。
307名無しさん@そうだ選挙にいこう:05/02/05 23:21:19
質問なんですが、エクセルで数学のシグマ計算、例えば何か関数f(k)に対して
Σ(k=1...1000)f(k)
とかって出来るんですか?
もちろんf(1)とかf(2)の値を具体的にセルにA1,A2,A3・・・と並べてSUMをすれば出来ることは出来るんですが、
この方法ではk=1...10000ぐらいになると厳しくなるんで、そうやってセルに出さないで、内部でシグマ計算は無理なのですか?
308catfish:05/02/05 23:21:55
Excelをデータベース作成に用いる上での欠点ってなんですか?
309名無しさん@そうだ選挙にいこう:05/02/05 23:25:44
sheet1で作った表を、sheet2にコピーしたいんですが、
内容だけしかコピーされずに、行列の高さや幅がデフォルトのままです。

どうしたらsheet1で決めたセルの幅や高さにできますか?
310名無しさん@そうだ選挙にいこう:05/02/05 23:43:44
>308 使いにくいと感じたとき、それが欠点。
>309 シート全てを選択して貼り付けor[Ctrl]+ドラッグ
311309:05/02/05 23:48:25
>>310
なるほど!多謝です!
>>309
■A B


■の所をクリックすると、シート全選択。
313catfish:05/02/05 23:53:32
で、ですよねー。ありがとうございまーす。
314291:05/02/06 07:44:23
エクセル95でvlookupデータを4万件処理しようとして処理できなかったものです。
ロータス2000で同じような処理をしましたら出来ました。
最新のエクセルではないからムリなのでしょうか。
エクセルからロータスにしても
うまく変換できないので95版で作りたいのです。
エクセルは95しか持ってません。
そこでVBA初心者が調べた結果配列を使うまではわかりました。

Dim C As Variant, Ans As Long, j As Long
C = Range("A1:B10000")

For j = 1 To 10000
If C(j, 1) = "田中" Then Ans = C(j, 2)
cells(3,3).value=ans
Next j

しかしこの式だけでは田中を見つけたあとでも探しているようです。
どうしたらよいでしょうか?
315名無しさん@そうだ選挙にいこう:05/02/06 07:51:12
>314
exit for
>314
Dim j As Long
For j = 1 To 10000
 If Cells(j, 1) = "田中" Then
  Cells(3, 3).Value = Cells(j, 2)
  Exit For
 End If
Next j

又は

Dim j As Object

For Each j In Range("A1:A10000")
 If j.Value = "田中" Then
  Cells(3, 3).Value = j.Offset(0, 1).Value
  Exit Sub
 End If
Next j

って感じで良いのでは?
317291:05/02/06 08:28:26
>>315さん。316さん。
ありがとうございます。
おかげで処理できそうです。
これからもよろしくお願いします・。

この配列とvlookUp
どちらが処理速度早いのでしょうか
Vlookupは2003版ならもっと処理できるのでしょうか。
318名無しさん@そうだ選挙にいこう:05/02/06 14:15:07
>>307
「表計算」ソフトなので、普通のシートと関数では無理だと思う。
VBAでループを回せば出来る。
319名無しさん@そうだ選挙にいこう:05/02/06 14:31:40
仕事でexel2000を使うことになりました
=+P10-Q10 と式を入れましたが数値があいません
同様の計算を求める =+P8-Q8 は数値があってます
私はなにか基本的なミスをしていると思うのですが
わかる方教えて頂けないでしょうか

それぞれのセルにどういう値が入っていて
それぞれどういう結果が返ってるのか書こう。
321名無しさん@そうだ選挙にいこう:05/02/06 15:01:56
すいませんでした
P10 =sum(P20,P28)  P10=31423
Q10 =sum(Q20,Q28)  Q10=43892
R10 =+P10-Q10 でR10=0になっています
8列目はSUM関数が参照するセルは違いますが0にはならず正しい数値が
表示されています
後10列目は8列目をコピーして数値変えましたがこの操作がおかしかったのでしょうか
322名無しさん@そうだ選挙にいこう:05/02/06 15:02:57
>>317
というかPCはどの程度のもの使っていますか?
CPU 200-300Mhz程度じゃお話になりませんが、、、
なお、データが多くなるとvlookupよりはVBAの方が早いと
思われ。
323名無しさん@そうだ選挙にいこう:05/02/06 15:06:34
>>321
数式がどっかで循環(相互参照)してるんでないの?
Excelの一番したの右のほうに(セルの外にある枠)に
循環だかなんだかが表示されていませんか?
>>321
式的には間違いは無さそうだけど。
とりあえず表示形式が「標準」になってることを確認して
数式を1から書き直してみそ。
325名無しさん@そうだ選挙にいこう:05/02/06 15:26:02
循環していると出てました。単にコピーしていいものでは無いみたいですね
標準にして書きなおしたら直りました。
仕上た後で、ヘルプ見てちょっと参照について勉強して見ます。
>>320>>323>>324さんありがとうございました
326名無しさん@そうだ選挙にいこう:05/02/06 15:35:31
>>317
P600MHZのノート(WinXP)+Excel2002(XP)に対して
1列    2列    3列
田中1  1   vloolup(略)
田中2  2   vlookup(略)
以下43000行同じように作成。
結果は3列に2列の番号がそのまま表示されるはずだが、
殆どハングアップ状態で、計算不能
vlookupが一個だけでデータベースから値を持ってくるなら
まだ使えるが、vlookupを4万個も使ったら殆どお話になりま
せん。
CPUが2GBであってもやはり駄目そうな気がしますな w
327名無しさん@そうだ選挙にいこう:05/02/06 15:41:46
>>325
普通はコピーしても大丈夫ですが、他人が作った表などは
どんな数式が入っているか分からないから注意。
(さすがに自分で作っていれば循環参照するかどうかは
 分かるだろうしって意味です)
328317:05/02/06 18:45:12
>>322さん>>326さん
ありがとうございます。
326さん実際に行っていただきありがとうございます。
そうですか。私のパソコンでは当然お話になりません。
VBAを研究していきます。
これからもよろしくお願いします。
>>328
こんなのはどう?
MsgBox Range("A1:B10000").Find("田中", LookIn:=xlValues, LookAt:=xlPart).Address
>>319
もちっと具体的に書いてみれ。
セルに数式が入ってる? 小数?整数? 文字列になってねーか?とか

331330:05/02/06 21:20:59
スマソ。リロードしてナカタ。
332名無しさん@そうだ選挙にいこう:05/02/07 12:46:08
Win XPでExcel 2000を使用しています。
よく使うグラフの書式を「グラフ」→「グラフの種類」→「ユーザー設定」タブで
ユーザー定義のグラフに追加したところ、
軸線やプロットエリアの書式設定はうまく設定できたのですが、
グラフエリアの書式設定(輪郭なし)が反映されず、輪郭つきのグラフができてしまいます。
グラフエリアの書式設定はどこか別のところにデフォルトの設定があるのでしょうか?
お教えくださいませ。
FI押したときに出るヘルプが邪魔+見づらいです。

前のほうが良かった。

334名無しさん@そうだ選挙にいこう:05/02/07 18:30:18
オフィスXPのエクセルのブックで100M近くなると保存するのに以上なほど時間がかかるのは、パソコンのスペックが低いからなんでしょうか?
335kei:05/02/07 19:31:59
新しく買ったWin Xpに前のPC(Win 98)に入れていたOffice 2000を入れ、Excel2000を開いたらセルの高さと幅がWin 98の時と違っていて印刷の時困っています。同じOffice 2000のExcelなのに...
セルの高さと幅をWin 98でもWin XPでも一緒にする方法は無いでしょうか?
どこかに設定するところがあるのでしょうか?教えて下さい。
336名無しさん@そうだ選挙にいこう:05/02/07 20:54:03
>>335
ツールのオプションから「全般」を選んで標準フォントとサイズを
調整すれば多少はましになるかもしれない。
ただ、これはいじらない方が普通は吉。
他の人は普通いじらないから、ファイルのやり取りの際の互換性
が悪くなる。
>>335
見た目はどうあれ、困るのが印刷のときということでしたら、
「ファイル」→「ページ設定」の拡大縮小印刷とかを使えば、
不都合ない程度に合わせられると思いますけど。
画面の見た目が気になるなら、「表示」→「ズーム」で
拡大するか縮小するかすればよいし。
338名無しさん@そうだ選挙にいこう:05/02/07 21:26:04
WIN2000でExcel2003を使っています
今までのバージョンではすんなりVLOOKが使えたのですが
2003へバージョンUP直後、使用出来なくなりました
なぜなんでしょうか?教えて下さい

なぜかって?
それは VLOOK ではなく VLOOKUP だから。
340名無しさん@そうだ選挙にいこう:05/02/07 22:06:24
>334
100メガのエクセルって何か間違えていないか?
Excelで100MBものファイルって何さ。
何万行ものシートが何枚も入ってるのか? おっかねぇ・・・
そのぐらいの規模になると、目的の行を探し出すのも大変だから
素直にDBMSで管理汁。 個人使用ならAccess程度でもいいから。
画像を大量に貼り付けてるとかじゃないか
343kei:05/02/08 00:49:57
ありがとうございました。
何とか仕事が間に合いました。これからも解らない事があったら聞きにきますのでよろしくお願いします。
344ヤワラー:05/02/08 10:02:49
334の者ですけど、IFって7つしか分岐できないみたいだけど、一つのセル内で20くらい分岐する方法はないんでしょうか?
あれば50MB位まで減らせると思うのですが、、、すべて独学なものでかなり偏ってるみたいで(;^_^A
>344
VBA使えば何百回でも分岐出来るし、一度に2分岐じゃなくて10分岐とかもできる。
関数をオートフィルでコピーするような使い方してるならVBAにすれば相当容量減るぞ。

というか、その関数ここにコピペしてみそ。
>>344
定番はVLOOKUPかVBA。
でも、VLOOKUPで4万件なんてのは止めろよ。
それにしても、50Mだって間違ってるに変わりないと思う。
win98のPCの共有フォルダに置いてるEXCELブック
をwin2000のPCからネットワークで開こうとすると、誰も開いてないのに
〜.xlsは編集のためロックされています
使用者:自分のユーザー名

と言うメッセージが開くたびに出ます。
何回かキャンセル→開くでようやく普通に開けます。
前回開いたときは保存も出来て正常終了したのに
何故こういうメッセージが出てくるのでしょうか。
tmpファイルが残っているのが原因かと思って
両方のtmpファイルを削除したのですが変わらず出ます。
win2000にはウィルスバスター2005
98には2004を最近入れましたががこれの設定がおかしいのでしょうか。
>>348
ありがとうございます。
350ヤワラー:05/02/08 12:40:45
345、346ありがとうございます
365日の出勤表で50人分で 訪問先を月20件別位にして集計してたんですけど
データ変更が多く時間がかかるため関数にしてました。
ちなみにVBAのNEXTで関数コピーしてましたが120MBあたりから反抗期になりました(;^_^A
普通だとどれくらいにおさめるのでしょうか?
>>350
普通かどうかは知らんが、うちには2MBを超えるブックはない。
たいていは1MBを超えそうだったら分割する。
352名無しさん@そうだ選挙にいこう:05/02/08 14:02:05
>>350
>>351が言うように、
日毎とか月毎とか個人毎とか、使いやすいようにブックを分割して、
集計した結果だけをまとめのブックで参照するようにしたらいいと思う。
Excelだと5MB超えたあたりでだんだん遅くなり始め、10MBまで来たら我慢の限界。
ネットワーク越しに編集・保存するとたまに死ぬ。

分割して管理し、いちいち繋いで集計するんだったら
もうDBにしたほうが手っ取り早いと思うよ。
Excelのデータがマトモなものなら、そのまま流し込めるし。
354名無しさん@そうだ選挙にいこう:05/02/08 14:38:52
Ctrl+↓でデータが入っているセルの最後まで移動できますが、途中に空白のセルがあると
そこで止まってしまいます。

データが入っている一番下のセルまで移動するにはどうすればいいのでしょうか?
>>354
何度も繰り返す。
1番下に移動して逆向きやる。
VBAでコード書く。
>>354
右クリで最後の行を選択。複数範囲を選択されている状態は考慮していない。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Cells(65536, Target.Column) = "" Then
Cells(65536, Target.Column).End(xlUp).Select
Else
Cells(65536, Target.Column).Select
End If
End Sub
357名無しさん@そうだ選挙にいこう:05/02/08 15:58:16
教えてくださいまし。
エクセル(Office 2K)で、入力途中のテキストの色を
変更できるショートカットってありますか?

たとえば、「鈴木 太郎」と入力する場合、
「鈴木」までは通常の黒色で、「太郎」からを赤色で入力したいのです。
入力した後で、いちいちテキストを選択して、色アイコンを押すのが
煩わしくて。。
「CTL」+「C」のように簡単に切り替わるショートカットがあればなぁと。

ご存知の方、よろしくお願いします。
>>357
VBAで出来る。
ただ、入力中には無理なので、入力した後にショートカットキーで切り替えることになるが、
「何文字目から」という指定になるので、例の「鈴木 太郎」なら、スペース位置を検索して
そこから後ろの文字の色を変えればいい。
そういった特定文字の後ろからという規則性がないなら、通常色にしたい部分を入力したら
Ctrl+Enter(セルを移動しないため)で確定、ショートカットキー1で変数にセルの文字数を格納
F2を押して色を変えたい部分を入力してCtrl+Enterで確定、ショートカットキー2で
文字数(変数)以降の文字色を変えればいい。条件分岐を上手く使えば文字数を変数に格納するのも
文字色を変えるのも、同じショートカットキーで操作できる。
VBA記述が解らなければ「マクロの記録」とVBA解説サイトを使ってね。
359名無しさん@そうだ選挙にいこう:05/02/08 17:49:51
>>355
>1番下に移動して逆向きやる。
を使ってやりたいのですが、この場合にマクロを使って一番下のセルを選択したままで
一番上のセルまでを選択するにはどのようにしたら出来るのでしょうか?
>>359
Range(Cells(セルA), Cells(セルB)).Select
セルAからセルBまで選択する。
最後のセル位置の取得は356が参考になるんじゃないか?
361ヤワラー:05/02/08 18:09:41
ありがとうございます
最近になってIT化し始めた会社なもので(^^;
362名無しさん@そうだ選挙にいこう:05/02/08 18:31:58
>>360
それでやってみたのですが、選択しているセルから選択しているセルの1行目まで
というのをselectionを使ってやっているのですが、どうしてもできなくて。
>>356も試しましたがtarget.columnが無いとエラーになります。
>>362
356はセル上で右クリしたとき用なのでTargetが空って時があるのかなぁ?
selectionは必ずしも1つのセルとは限らない。
複数セルが選択されているときはどう選択すればいいかわからん。

If Selection.Count = 1 Then
Range(Selection.Address, Cells(65536, Target.Column).End(xlUp)).Select
End If
>363
> 複数セルが選択されているときはどう選択すればいいかわからん。
Selection.Address → ActiveCell.Address
>>364
いや、そういう意味じゃなくて結果として
selectionされているセルの、
どの列の最後の行まで選択するのかが決められない。
>>363
まちがえた
If Selection.Count = 1 Then
Range(Selection.Address, Cells(65536, selection.Column).End(xlUp)).Select
End If
367名無しさん@そうだ選挙にいこう:05/02/08 19:00:17
FOR TOにより
ワークシートに番号入力
その番号に基づきデータからVLOOKUPで抽出、
ワークシートで計算後印刷
まで繰り返し処理するのですが、この場合計算処理
が複雑になると、印刷のみ先走りする可能性がありますか?
最近2回目以降の質問で、自分の最初の質問のレス番を名乗らない奴多すぎ。
質問者は捨てハンやレス番でいいからきちんと名乗ろう。

>365
>362は「選択しているセル範囲からから」ではなく「選択しているセルから」なんだから
単一セル選択状態からの操作と見ていいんじゃないの?

とりあえず>359を見る限りだとこれでいいような気がするのだが。
Range(Cells(1, ActiveCell.Column), Cells(65536, ActiveCell.Column).End(xlUp)).Select
>354
一応こんなの作ってみた
・ThisWorkbookに
Private Sub Workbook_Open()
Application.OnKey "^%{DOWN}", "EndCellSelect"
End Sub

・標準モジュールに
Sub EndCellSelect()
Cells(65536, ActiveCell.Column).End(xlUp).Select
End Sub

これでAlt+Ctrl+↓でお望みの動作になると思う。
キーを変えたければ"^%{DOWN}"の部分を書き換えてね。
セル内でAlt+Enterを使って改行を入れているのですが、
INDIRECTを使って最終的にこのセルの内容をほかで表示させると
改行のみ反映されず、1行の文章になってしまいます。
どなたか解決策をご存知でしょうか?
>370
数式を入れたセルの書式で「折り返して全体を表示する」を
チェックすれば元セルと同じ位置で改行されると思うけど。
それでダメならこんな感じで強制的に改行文字入れてやる。
=LEFT(A1,FIND(CHAR(10),A1,1)-1)&CHAR(10)&RIGHT(A1,LEN(A1)-FIND(CHAR(10),A1,1))
372370:05/02/08 21:04:05
>>371
数式を入力したセルのチェックを入れたらうまくいきました。
どうもありがとうございました。
373名無しさん@そうだ選挙にいこう:05/02/08 21:09:39
A君  100   C君  400
B君  200   D君  300


と言うよなセルが合って最大値を求めるには
=MAX(B1,B2,D1,D4)ってやるのは分かったんですが、
最大値も持つ人がC君であるというのを
セルに表示させるのにはどのようにやれば宜しいのでしょうか?

よろしくお願いします。
374373:05/02/08 21:11:23
D4→D2です。すいませんでした。
375名無しさん@そうだ選挙にいこう:05/02/08 21:18:38
>>373
=OFFSET(D1,0,-1,1,1)
でどう?
376名無しさん@そうだ選挙にいこう:05/02/08 21:20:03
あっ、MAX使ってないやゴメン
>>375
有難うございます。
つまり=OFFSET((MAX(B1,B2,D1,D2),1,0,-1,1,1)
でいいんですか?
378373:05/02/08 21:27:27
エラーが出た・・・orz
379名無しさん@そうだ選挙にいこう:05/02/08 22:03:57
ダメだ〜
俺の知識じゃできなかったよ
力になれなくてすまん
380名無しさん@そうだ選挙にいこう:05/02/08 22:13:35
A1セル:住所1  A2セル:住所2  A3セル:合成住所
B1セル:東京都  B2セル:豊島区  B3セル:=A1&A2  ・・・として、

データ>>フォーム で表示させると、B3セルのような計算結果が表示された
セルはフォーム上では表示はされますが(編集できないのは当たり前ですが)
コピーすることができません。

とりあえず表全体をコピーして違うシートに【形式を選択して貼り付け】
で【値】を貼り付けたあと、フォーム上でコピーするという手順を取っていますが
もっとスマートなやり方はないでしょうか。
>>373
データがこういう感じで縦に並んでいる状態にしたらあかんかな。
A君  100
B君  200
C君  400
D君  300
    :
仮にこれがA1:B4にあれば、
=INDEX(A1:B4,MATCH(MAX(B1:B4),B1:B4,0),1)
という調子で求まるんだが。
>>380
↓みたいなアドイン使うとか
http://penguin-f.hp.infoseek.co.jp/pages/excel/addin.html
>>379
有難うございます。みなさんとても優しくて、本当にうれしいです
>>381
有難うございます。なるほど。そうやるんですね。
もう少しがんばって見たいと思います。
>>381
それが出来たら誰も悩まないと思うんだが。

というか今思い返してみるとワークシート関数ってセルアドレスや行番号など
セルの位置を返すものが極端に少ないよね。
VBAならRangeオブジェクトに対して .ADDRESS でアドレス返してくれるのに。
>>373はVBAで処理したらダメなの?
385373:05/02/08 22:57:54
>>384
VBAありっす。というかVBAあまり分かってないんです。
最近色々やり始めたもので。
よろしくお願いします
>>385よし!VBAならまかせろ!

Sub 最大値を探す()

Dim MaxValue As Variant

MaxValue = WorksheetFunction.Max(Range("B1:B4"))

Cells(5, 2).Value = MaxValue

End Sub
ごめん勘違いした
>385
Sub hoge()
Dim o As Object, i As Long
For Each o In Range("A1:D2")
 If IsNumeric(o.Value) = True Then
  If o.Value > i Then
   i = o.Value
   Range("E1") = o.Offset(0, -1).Value
  End If
 End If
Next o
End Sub

3行目の"A1:D2"に検索範囲を、7行目の"E1"に結果を表示するセルを入れてください。
マクロ名(hoge)は自分が解りやすい名前付けてね。
但し、A君などの名前の部分に数値として扱えるものがあると問題あり。
389373:05/02/08 23:42:31
>>388
有難うございます。
計算方法を教えて頂ける上に極め細やかな解説まで(涙)。
早速取り入れましたです。これからもExcel、VBAに精進していきたいと思います。

>386
Range("E1") = Range("A1:D2").Find(WorksheetFunction.Max(Range("A1:D2"))).Offset(0, -1).Value

そういうやり方するなら、こんな感じでOKな気がする。
あえて無駄な検索範囲を含んでるのはVBAよくわからない奴でも修正しやすいようにと考えたから。
それほど遅くなる訳じゃないし、無駄に気付くレベルになれば自分で修正するでしょ。
でも、俺はWorksheetFunction使うの好きじゃないんで。
391名無しさん@そうだ選挙にいこう:05/02/09 07:56:49
VBAで、フォーム表示中にシート上の任意のセルをダブルクリックしたら、そのセルに入っている値をフォームのテキストボックスに入れるにはどうすればいいでしょうか?
>>391
Worksheet_BeforeDoubleClickに
Ifで目的のフォームの表示状態でなら目的のテキストボックスに
Target.Valueを代入するコードを書けばいいと思うけど。
あと、フォームはモードレスで表示すること。
個々の記述が解らなければググってね。
393hoge:05/02/09 10:38:19
>391
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If フォーム.Visible = True Then
  フォーム.コントロール.Value = Target.Value
  Cancel = True
 End If
End Sub

こんな感じかな?
フォームとコントロールはそちらの環境に合わせて書き換えて。
>388
余分な範囲を含めるべきではないね。
i は慣習的に、、、まいっか

Sub hoge()
Dim r As Range, tmp As Range
Set tmp = Range("B1")
For Each r In Range("B2:B2")
  If r.Value > tmp.Value Then Set tmp = r
Next
For Each r In Range("D1:D2")
  If r.Value > tmp.Value Then Set tmp = r
Next
Cells(1, 5) = Cells(tmp.Row, tmp.Column - 1)
End Sub
>394
コレクションにはRangeで複数範囲指定できるよ
Sub hoge()
Dim r As Range, tmp As Range
Set tmp = Range("B1")
For Each r In Range("B2,D1:D2")
 If r.Value > tmp.Value Then Set tmp = r
Next
Cells(1, 5) = Cells(tmp.Row, tmp.Column - 1)
End Sub

まあ、この程度の範囲なら分けてもたいして処理が遅くなるわけでもないけど。
教えてください。
book1のデーター(B列に50件)をbook2に(B3から横に50件)データーをリンクさせたいのですが
手間がかかってどうも上手くいきません。
「=」でデーターをもってきても縦にならそのままドラッグでコピーする事が可能なのですが
それを横にすると・・・元のデーターがコピーされるだけなのです。
「形式を選択して貼り付け」で「行列を入れ替える」とあるのですが、そこをチェックすると
「リンク貼り付け」が出来なくなるので・・・何か上手く簡単に出来る方法ないですか?
>>396
=INDEX([Book1.xls]Sheet1!$B$1:$B$31,COLUMN()-1)
book2のB3に ぬるぽ=[book1]Sheet1!$B$1
と入れて右へ50個オートフィル
ぬるぽ を空白に置換。
399由希:05/02/09 14:27:41
回帰分析で有意水準が五パーセントの時って、有意Fの値と0.05を比べて、有意Fの方が大きければいいんですか??
400名無しさん@そうだ選挙にいこう:05/02/09 15:40:36
グラフで右横に表示される凡例の表示文字を変えるにはどうすればいいのでしょうか?
標準だと系列1かグラフの名前がそのまま凡例の名前になってしまいます。

グラフウィザードでは設定する項目が無いみたいなので教えてください。
401名無しさん@そうだ選挙にいこう:05/02/09 15:44:27
400です。解決しました。すみませんでした。
402名無しさん@そうだ選挙にいこう:05/02/09 17:17:27
どなたか教えてください。
Excel2000なのですが、
たとえば複数のJPGデータがあり、セルの数値によって
複数のJPGデータから一つのJPGデータを指定の場所に
貼り付けることは可能でしょうか?
マクロに関する質問もこちらでいいでしょうか?

今選択しているセル範囲とそのセル範囲から3つほど左のセルを指定する方法ってないでしょうか?
例えばD1:D5を選択している状態でA1:A5とD1:D5を同時に選択状態にする方法です。

a = Selection.Row
b = Selection.Column
c = Selection.Row
d = Selection.Column - 3
Sheets("Sheet1").Range(Range(Cells(c, d), Cells(c + Selection.Rows.Count, d)), _
Range(Cells(a, b), Cells(a + Selection.Rows.Count, b))).Select

と書いたのですが駄目でした。
>>403
Selection.Offset(0,-3).Select
>>404
レスありがとうございます。
それをやってみたのですが、3つ左のセルに選択範囲が移るだけでした。

Sheets("Sheet1").Range(Selection.Offset(0, -3), Selection).Select
としてもやってみたのですが、間のセルも含めてすべて選択されてしまいます。
離れたセルを複数選択することはマクロでは絶対アドレスじゃないと出来ないのでしょうか?
>>404
同時に選択するってのを読んでなかった。

Dim s As String
s = Selection.Address
s = s + "," + Selection.Offset(0, -3).Address
Range(s).Select
>>403
Union(Selection, Selection.Offset(0, -3)).Select
>>406-407
できました。ありがとうございました。
Excel2003で作った表を2000の入ってるパソに移して作業しているのですが、
「図が大きすぎます。入りきらない部分は切り捨てられます」というメッセージが出てしまいます。
図のリンク貼付けをしようとすると表の半分くらいしか貼り付けられないし、
セルにデータ入力するたびにメッセージが出てOKを何回か押さないと消えません。
リンク貼付けとメッセージを出なくする方法があったら教えてください。お願いします

410名無しさん@そうだ選挙にいこう:05/02/09 21:50:54
教えてくださいませ。
Excel2000
例えばC列からO列の範囲内として
C1+F1+I1+L1+O1というように2列おきに計算するのに
スムーズな方法はないでしょうか。
1列おきなら
偶数列の合計:=SUMPRODUCT(C1:O1*(MOD(COLUMN(C1:O1),2)=0)) 
奇数列の合計:=SUMPRODUCT(C1:O1*(MOD(COLUMN(C1:O1),2)=1))
となるようなのですが・・


411名無しさん@そうだ選挙にいこう:05/02/09 21:58:21
>>410
MODの意味を考えれば同じようにできますね。
COLUMN : 列番号
ROW     : 行番号 ですよ。
>>411-412
ひらめきました!!!!ありがとうございました!!!ニコニコ
414名無しさん@そうだ選挙にいこう:05/02/09 23:16:47
Excel2003のVBAで、最小化して裏で計算させておいて
計算が完了したら、最大化して前面に持ってきてmsgboxを表示する。
ということをやりたいのですが、そのうち「前面に持ってきて」というのが
どうのようにすればいいのかわかりません。
以下のような感じです。

Application.WindowState = xlMinimized
ここで計算
Application.WindowState = xlMaximized
「前面に持ってきて」
MsgBox "計算が完了しました"

Workbooks("hogehoge.xls").Activateというのは試してみたのですが
前面には出てきてくれませんでした。
また、某所で
AppActivate "Microsoft Excel - " & ThisWorkbook.Name
というのを見つけたのですが、これもタスクバーのExcelのところが
チカチカ点滅するだけで、最前面には来ませんでした。
どのようにすればよいのか、ご教授お願いします。
> AppActivate "Microsoft Excel - " & ThisWorkbook.Name
うちはこれでうまくいくけど。
とりあえずウインドウタイトルを文字列のみで指定してみれば?
Excel2003を使っています。
関数の検索条件にセルの背景色を指定したいのですが、どうやったら良いのでしょうか?
「=COUNTIF(A1:A100,bgcolor=red)」等と試しているのですが、カウントしてくれませんし、
ヘルプやネットで検索しても検索の仕方が悪いのかヒットしません。
どうかよろしくお願いします。
>>416
ワークシート関数では背景色を指定、取得することは出来ない
なのでVBA関数で処理するしか無い
418名無しさん@そうだ選挙にいこう:05/02/09 23:46:18
>>415
>ウインドウタイトルを文字列のみで指定
とはどういう意味でしょうか??すいませんorz
>>417
指定する事はできないのですか。分かりました。
VBA関数は使ったことないので諦める事にします。ありがとうございました。
>418
AppActivate "Microsoft Excel - " & ThisWorkbook.Name
の意味解ってないで使ってたの?
意味が分からないのに、適当に見つけてきたコードを使うのはやめた方がいいよ。
とりあえず文字列のみで指定ってのは
AppActivate "Microsoft Excel - hogehoge.xls"
ってこと。
421名無しさん@そうだ選挙にいこう:05/02/10 00:06:50
「文字列のみ」ってそういう意味ですか
意味は十分分かってますよ
「文字列のみ」っていう日本語が分からなかっただけです。
"Microsoft Excel - " & ThisWorkbook.Name
も十分「文字列のみ」だと思いますけどね。
ThisWorkbook.NameはString(文字列)型の取得値ですよ。
423名無しさん@そうだ選挙にいこう:05/02/10 00:41:18
このスレにThisWorkbook.Nameと書いたら文字列だけど
VBEにThisWorkbook.Nameと書いたら文字列ではない。
424名無しさん@そうだ選挙にいこう:05/02/10 02:46:22
間抜けな質問で申し訳ないのですが・・・
<ツール>→<マクロ> でマクロを実行しようと思ったのですが
メニューには <新しいマクロの記録>
       <セキュリティー>
       <Visual basic Editor>
       <Microsoft script Editor>
と4つしかなくマクロの実行ができません。新しくマクロを作ればメニューが
増えるかなと思ったのですが作っても表示はかわりません。
マクロを実行するためのメニューの表示方法を教えてください。
>>424
F5
426名無しさん@そうだ選挙にいこう:05/02/10 03:13:42
>>425
F5?ジャンプ機能ですよね?もう少し詳しくお願いできれば助かります。
427名無しさん@そうだ選挙にいこう:05/02/10 08:28:43
>>424マジレスするとAlt+F8F5はVBEの場合だ。
マクロの実行はメニュー以外では
Alt+F8
または
VBのツールバーを表示させといて、右向きの▼ボタン

ところで、>>424はマクロ無効の設定になってる悪寒
入力規則のリストで
候補文字をセル範囲ではなく直接指定した場合に
先頭に空白を入れるにはどうすればいいですか?
候補文字パターンはいくつか有るのですが、とりあえず「空白,-1,0,1,2,3」の場合、
「"",-1,0,1,2,3」とやっても「,-1,0,1,2,3」とやっても先頭に空白項目使えません。
もちろん「空白を無視する」のチェックは外してますが、これはセル範囲指定用みたいだし。

因みに用途上、スペース文字、値の削除操作、コンボボックス(VBA)
候補に-2を追加して表示形式「[<-1]"";[<0]"-"0;0」、等での代用は不可です。
とにかく入力規則のリストの一番上を選択したらそのセルの値が空になる方法を探しています。
環境はWindowsXP、Excel2002です。よろしくお願いします。
430名無しさん@そうだ選挙にいこう:05/02/10 10:05:45
ちょっとおせーて。

空文字は""と入力できるけど、空白にしたいときってどうやんの?

=if(A1=0, "", A1)

とかはよくやると思うけど、空文字じゃなくて空白セルにしたいとき。
無理?

>>430
未だ無の境地に至らぬ世俗は数多あるが、
無とは唯一にして他には在らず。
初歩的な質問ですみません。
エクセル2003をXPで使ってます。
セルの書式設定を「規定値」にすることってできないんでしょうか?
毎回毎回配置や表示形式を変更するのが大変で。
規定値 エクセル 書式設定 でググってみたもののわからなかったので、
もしよかった教えてください。お願いします。
433名無しさん@そうだ選挙にいこう:05/02/10 10:59:40

おしえてください。
Excel97のファイルで一列に文章が入っています。
全部半角で、「英文だけの文章」と「半角カナの文章」が混ざっています。
行数は約30,000行です。
文字数は、最大で512文字です。

これで「半角カナの文章」が必要なので
「英文だけの文章」の内容を「***」に置き換えたい。

どのように処理すれば良いでしょうか? 
>空白にしたいとき
何も入力しない

式を入れたら空白セルではなくなる。
435名無しさん@そうだ選挙にいこう:05/02/10 11:47:10
>>434
ではでは、空文字列が入っているセルを空白セルにしたいときは?
置き換え。
>433
アルファベットで始まる半角カナ文章が無ければ、並び替え。
元の順番に戻す時の為に連番を忘れずに。
>435
セルを選択してDELL
439名無しさん@そうだ選挙にいこう:05/02/10 11:55:10
>>433
VBAじゃないと無理??こんな感じかな、、A1列からA2,A3...と文が入っているとして、その文の英字を*に置換するだけという、、単純な奴。もっとスマートな方法あるんかな、、、

Public Function hoge()
Dim i, j As Integer
With ActiveSheet
For i = 1 To .Range("A65536").End(xlUp).Row
j = 1
Do Until Mid(.Range("A" & i).Value, j, 1) = ""
If isAlpha(Mid(.Range("A" & i).Value, j, 1)) Then
.Range("A" & i).Value = Application.WorksheetFunction.Replace(.Range("A" & i).Value, j, 1, "*")
End If
j = j + 1
Loop
Next i
End With
End Function







440名無しさん@そうだ選挙にいこう:05/02/10 11:58:19
isAlpha忘れてた。

Private Function isAlpha(str As String) As Boolean
isAlpha = str Like "[A-Za-z()]"
End Function
441名無しさん@そうだ選挙にいこう:05/02/10 11:59:46
ありゃ、、、一行に英文とカナ文まじってんのかとおもてた。一行全てがカナ文とか
なら>>433さんのが楽じゃん。
442403:05/02/10 12:01:06
>>406-407
やってみたのですが、どうもグラフのマクロの中ではSelection文は使えないみたいです。
これって何かいい方法は無いでしょうか?
データはDなどの列に入っていて、名称や番号などは3つ左側の列に入っています。
443433:05/02/10 12:14:58
433です。回答ありがとうございます。

全部半角で、「英文だけの文章(行)」と「半角カナの文章(行)」が混ざっています。
「英文だけの文章」英文字、数字、記号
「半角カナの文章」英文字、数字、記号、カナ
文章の始まり文字は何が来るかわかりません。

半角カナが含まれている場合は、その文章の全文を「***」に置き換える。
でよいとおもうのですが、、、 どうやったらよいのでしょうか?
444名無しさん@そうだ選挙にいこう:05/02/10 12:29:31
>>433

>>437さんのでいんじゃね?
連番つけて、並びかえたらいんじゃね?アルファベットで始まるカナ文は
手で修正。もしかなーりあるようなら考えたほうがいいけど。

445433:05/02/10 12:50:16
>>444 かなーりある んです。 文頭は数字と英文字が半分くらい、全部で3万行なので
446名無しさん@そうだ選挙にいこう:05/02/10 13:30:19
>>433
じゃぁVBAでがんがれ。暇あったら俺もがんがる
447名無しさん@そうだ選挙にいこう:05/02/10 13:37:38
>>433 じゃぁこれで。
Public Function piyo()
Dim i, j As Integer
Dim bDirty As Boolean
With ActiveSheet
For i = 1 To .Range("A65536").End(xlUp).Row
j = 1
bDirty = True
Do Until Mid(.Range("A" & i).Value, j, 1) = ""
If isKana(Mid(.Range("A" & i).Value, j, 1)) Then
bDirty = False
Exit Do
End If
j = j + 1
Loop
If bDirty Then
.Range("A" & i).Value = Application.WorksheetFunction.Replace(.Range("A" & i).Value, 1, Len(.Range("A" & i).Value), "***")
End If
Next i
End With
End Function
448名無しさん@そうだ選挙にいこう:05/02/10 13:38:16
これが半角カナ判定ね。
Private Function isKana(str As String) As Boolean
If (Asc(str) >= 161 And Asc(str) <= 223) Then
isKana = True
Else
isKana = False
End If
End Function
先を越されたけど一応貼っておくね。

Sub hoge()
For Each r In Range("A1:A30000")
  For i = 1 To Len(r.Value)
    If Mid(r.Value, i, 1) Like "[ヲ-゚]" Then GoTo KANA
  Next
r.Value = "***"
KANA:
Next
End Sub
450名無しさん@そうだ選挙にいこう:05/02/10 14:28:51
#N/Aとか#DIV/0とかってそのまま入力できる?

例えば、=if(A0=0,#N/A,A0)とか有効?つか、こういう使い方したら何かいいことある?

EXCEL2000でグラフをつくっったときに、タイトルがある程度長いと
スペースが余っているのに二段になってしまいます。
タイトルの枠を大きくしたいのですが出来ません。
一段にするには文字を小さくするしかないのでしょうか?
452433:05/02/10 14:48:30
433です。
カナ判定ルーチンが必要なのですね、
VBAが得意でないけど、がんばります。

みなさんどうもありがとうございました。
453名無しさん@そうだ選挙にいこう:05/02/10 14:51:30
>>451
グラフのタイトルの辺を適当にクリックしたら枠が見えてこない?
その枠をドラッグして広げればいーよ。

まぁこの枠馬鹿には見えないと言われているけどね。
Exce2002でExcellファイルからxmlファイルへ変換し、
そこからセル内のデータを取り出すxsltを作成しようとしているのですが、
名前空間が邪魔してさっぱり上手くいきません。
先駆者のかたいましたらアドバイスください。
>>442
Selectionがだめなら、Rangeで範囲指定したら?
とにかく、具体的にグラフで何がしたいのかが
わからないので答えようがない。
456403:05/02/10 17:19:17
変数に代入してやれば出来ました。
愚かすぎてすみません。

あと、どなたかもう一つ教えていただけないでしょうか。
グラフの位置を絶対位置で表示するにはどうしたらいいのでしょうか?
通常は
ActiveSheet.Shapes("グラフ 2").Top=0
などとやればいいと思いますが、いくつもグラフを追加しているとグラフの名前が取得できずに
困っています。
>>456
グラフ追加するたびに1からカウントしていきますので
Shapes(1)とかShapes(n)とかで取得したら?
例えば

n = ActiveSheet.Shapes.Count
For i = 1 To n
ActiveSheet.Shapes(i).Top = 50 * i
Next i

とかどう?
458403:05/02/10 18:16:03
>>457
教えていただいた方法で出来ました。
手動マクロで育成されたコードを援用していて、検索でひっかかったDebugコードも駄目だったので、"Graph 1"などとタイプしまくって
総当たり戦をやっていました。

どうも速レスありがとうございました。
459451:05/02/10 20:46:18
>>453
勿論普通はその方法で広げられますよね?
でも枠は見えるし(w)ドラッグもできるのですが
移動するだけで広がらないんですよ。
(端っこドラッグしても広げる矢印←→が出ない)
何ででしょうか?

後もう一つ便乗質問なんですが、グラフの凡例中の文字を
セルには下付きで書いているのですが、
グラフにしたら下付きじゃなくなってしまうのですが
これも仕様ですかね?解決法ありますか?

EXCEL2000です。何個もすいません。
460名無しさん@そうだ選挙にいこう:05/02/11 00:27:20
PC初心者板ではレスがなかったので,こちらで質問させていただきます。マクロはちょっと作れるレベルです。 excel2002 OSxpです。

エクセルで職場の書籍のデータベース作ったのですが,
他の職員にもかんたんに検索できるように,
マクロを組みたいと思っています。
例えば,入力ボックスにキーワードを入力したら,
そのキーワードを含む行のB列とC列の内容を全て
出力するというようなのを作りたいのですが,
どうしたらよいでしょうか?
>>460
> どうすればよいでしょうかって?
もっと具体的にどこがわからないか書かないとなんとも・・・
>>438
パソコンのメーカーは関係ないと思う。
>>460
FindかVLookUp使えばええのんとちゃうの?としか言えない。
>460
> 入力ボックスに
ユーザーフォームの?
それともシート上に入力用セルを設けるの?

> そのキーワードを含む行の
そのキーワードはどの列にあるの?

> 出力する
何処に?

やろうとしてることは凄く簡単なことだけど
どうやりたいかがハッキリしないと何にも出来ないよ。

>463
マッチではなく挙列なのでFor Nextの方がいいと思う。
>>464
あ、そう?
書籍のデータベースってデータ多そうだからFindのほうが良いと思ったんだけど
簡単だし
>465
別にFindでもいいんだけど、For NextとIfで処理する方が
初心者には視覚的に解りやすいと思っただけ。
467460:05/02/11 01:27:37
いろいろアドバイスありがとうございます。
データベースは,sheet1のa列に蔵書番号,b列に本のタイトル,
c列に出版年,d列にキーワードとあり
2000行くらいあるのですが,
例えば「法」をタイトルもしくはキーワードとして
含む本を探したいとき,
「法」とダイアログボックス(InputBox)に入力すれば,
b列かd列(タイトルか内容紹介)に「法」が
含まれているセルがあれば,そのセルを含む行の
本のタイトルと出版年つまりb列とc列を
エクセルの別シートに出力する,というようにしたいのです。
よろしくお願いします。
(本当は分類記号の列などいろいろあるのですが,あるていどの
ことがわかればあとは自力で処理できると思います)
エクセルVBAなんだけど、BASICみたいに

Goto 1000

って行番号をつけて飛ばすこと出来ますか?
469名無しさん@そうだ選挙にいこう:05/02/11 01:35:32
聞く前に、やってみな
>>467
VBAだったらそんなに難しいことではないと思うけど。
>>460
蔵書番号:タイトル:出版年:キーワード
データー 2000件
タイトル+キーワードで検索して、結果をタイトル、出版年にしたいのですね。

たとえばですね、データーベースを以下のように変更する。
蔵書番号:タイトル:出版年:タイトル&キーワード
すると「タイトル+キーワード」で検索することができる。
手作業で行えない事をプログラム化することは出来ないので、手作業で行う。
重複する検索をフィルターと言いますが、自動記録マクロで作って改造するように
考えた方が簡単でしょう。

だれかが、VBAのプログラムを書いてくれると思うけど。
472468:05/02/11 01:54:53
>>469
それ、漏れ宛のレスですか?
行番号はどこに書けばいいですか?
473460:05/02/11 02:00:31
>>471
ありがとうございます。データの融合は
concatenate関数を使えばよさそうですね。
いろいろこちらも考えているところです…
>467
Dim r As Integer, i As Integer
For r = 1 To Worksheets("sheet1").Cells(65536, 1).End(xlUp).Row
 If InStr(1, Worksheets("sheet1").Cells(r, 2).Value, コントロール.Value) + _
 InStr(1, Worksheets("sheet1").Cells(r, 4).Value, コントロール.Value) <> 0 Then
  With Worksheets("出力シート")
   .Cells(i + 1, 1).Value = Worksheets("sheet1").Cells(r, 2).Value
   .Cells(i + 1, 2).Value = Worksheets("sheet1").Cells(r, 3).Value
   i = i + 1
  End With
 End If
Next r

「コントロール」には、キーワードを入力するコントロールの名前を。
「出力シート」はそのままだけど出力したいシート名を
出力位置は7,8行目の (i + 1, 1) の部分で指定。
このままだとA1から下方向にタイトル、B1から下方向に出版年を出力。
475名無しさん@そうだ選挙にいこう:05/02/11 03:00:09
標準ツールバーにCOMアドインの機能を登録したいのですが、
以下のようにやると、文字の無いボタン[ ]は出るんですが、
[COMアドイン]というように、文字のあるボタンが出ません。
文字出す方法、ありますか?
EXCEL2003, WinXP Proです。

Sub Macro1()
Application.CommandBars("Standard").Controls.Add Type:=msoControlButton, ID _
:=3754, Before:=24
End Sub
476名無しさん@そうだ選挙にいこう:05/02/11 09:04:50

識者の皆様ご存知であれば教えてください

例えば、B3セルにその都度数字を入力し、
C5セルには「=B3*1.05」という計算式を入れておいて、
消費税込みの金額が自動表示されるようにしたいのですが、
この時、C5セルに計算表示される数値は小数点以下を全て切り捨てた形にしたいのです。

通常ですと、B3セルに50と入れたような場合、
C5セルにはB3×1.05=52.5で、四捨五入されて53として表示されます。
こういう物を小数点以下は全て切り捨てて52として表示されるようにしたいのですが、
そのするには、どういう計算式を入れれば良いのでしょうか?
477名無しさん@そうだ選挙にいこう:05/02/11 09:51:18
>>476
=rounddown(B3*0.5, 0)
>>476 こんなのもあるよ。
TRUNK(B3*1.05)
479476:05/02/11 10:43:31
>>477
>>478

ありがとうございます
色んなやり方で出来るようですね
教えて頂いたそれらの方法を参考に自分で調べた所

=int(B3*1.05)

というので大丈夫そうですが、これもOKですか?
480476:05/02/11 10:50:10
truncとintの働きは似てるが、異なる点が分かりました
単純にtrunc使う方が良さそうです

解説
TRUNC 関数と INT 関数は整数を返すという点で似ていますが、
TRUNC 関数が 数値 の小数部を単純に切り捨てるだけであるのに対し、
INT 関数は 数値 の小数部の値に基づいて、数値 を最も近い整数として切り捨てます。
INT 関数と TRUNC 関数の働きの違いは、数値 が負の数であるときにだけ現れます。
TRUNC(-4.3) = -4
INT(-4.3) = -5 (-5 の方が小さい数であるため)
行番号プログラム

Sub TEST_PROGRAM()
10 Rem TESTPROGRAM
20 For I = 1 To 10
30 If I < 5 Then GoTo 40
40 Debug.Print I
50 Next I
60 End
End Sub
482名無しさん@そうだ選挙にいこう:05/02/11 11:49:30
>>481
まじでうごいて超びびった。こんなんできたんだ、、、
良く考えたらBASICだもんな、、、
行番号30の条件分岐が無意味な点について。
485名無しさん@そうだ選挙にいこう:05/02/11 14:03:00
セル参照で、書式も一緒に参照させる方法はないの?
フォントとか文字の大きさとか全て
Excel2000で、DSUMとかを利用するときに、複数の範囲にある条件を指定できますか?
例えば、A1:B2にある条件とC3:D4にある条件を満たすDSUMなんていうのは可能でしょうか?
>>486
そのままでは無理。
そのA1:B2とC3:D4の条件を、DSUM関数の仕様に合うように
別の場所にリンク貼り付けで並べてやれば可能。
488名無しさん@そうだ選挙にいこう:05/02/11 14:56:12
8人で麻雀をやっておりまして、excelで点数を集計しています。
下のような表を作って点数を整理しているのですが、例えば
「Bさんと同卓しているときのAさん点数の平均値」を計算することは可能でしょうか?
ゲームに参加していないときは空欄として表を整理しています。
よろしくお願いします。

A B C D E F G H
10 -5 6 -11
25 5 10 -40
7 5 -2 10
489468:05/02/11 15:11:13
>>481
おぉ! そぅか、VBAはビジュアル・ベーシック for アナルセクースですたねぇ。
ありがdございマスターベーs(ry
490名無しさん@そうだ選挙にいこう:05/02/11 16:02:31
Excel2000です。
Excel特有の機能みたいで、数字を打ち込むと勝手に半角にされたり、セルの右端に寄せられたりします。
その機能の解除方法が解りません。
セルの書式設定をいろいろ触ったのですが結局解らずじまいです。
どうか、教授お願いします。
FAQの>>6を参考に。
492490:05/02/11 16:12:44
>>491
やってはいけない事をやってしまいました。
申し訳ありません。

どうも有難うございました。
>>488
配列数式使ってIFとAVERAGEを組み合わせれば可能。
仮にA列のA2:A10にAさんの点数、B列のB2:B10にBさんの点数が
入ってるとして。
=AVERAGE(IF( (A2:A10<>"")*(B2:B10<>"") ,A2:A10, ""))
という数式をどこかのセルに入力する。

この際、必ず「Enter」ではなく「Ctrl」+「Shift」+「Enter」で入力する。
両脇に自動的に{ }がついて。
{=AVERAGE(IF( (A2:A10<>"")*(B2:B10<>"") ,A2:A10, ""))}
となったらOK。これで計算できるはず。

もっと簡単なやり方もあるような気はするが思いつかなかった。
SUMならなんとでもなるのだが、AVERAGEは妙に難しい。
494名無しさん@そうだ選挙にいこう:05/02/11 16:27:35
>>488
=AVERAGE(IF(B1:B3<>"",A1:A3,""))
B1:B3 と A1:A3 の 1と3はデータの範囲によって適当に変える。

数式入れたらEnterではなくctrl+shift+Enterとする。
495ぼるじょあ ◆yEbBEcuFOU :05/02/11 16:29:05
>>484

   ∧_∧ パンパンパン  +
   ( =^u^=)   +
   ( つ つ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ) ,ィ⌒( ・3・) < ドーテーくんは、ウッ すぐにツッコミたがるから…
   (_(__人__,つ 、つ   \__________________
>>494
一見それで大丈夫そうなんだけど、それだとAさんが参加せず、Bさんが参加している場合も
計算に含まれて結果がおかしくなるんよ。両者が同卓のときの平均だから。
497運転手:05/02/11 17:13:32
Excelでレイアウト図を書きたいのですが、かなーり正確な縮尺でかきたいのです。
で、Excelの枠線を方眼状にしたいのですが、行の高さと列の幅を同じにするには
どうすればいいんでしょ?
>>497
エクセルやめた方がいい予感
画面で合わせても、印刷でずれるかも知れない。
499名無しさん@そうだ選挙にいこう:05/02/11 17:32:25
いや、本当はCADで書きたいのですが
Excelじゃないと他の人が使えないのでExcelなのです。
ピクセルで行と列を合わせればいいんだけど、
バージョンによっては何ピクセルかは表示されないかな?

こんなのもあったよ。
tp://www.juno-e.com/exdun/hougansi.htm
502名無しさん@そうだ選挙にいこう:05/02/11 17:50:55
>>500-501
ありがとう!何か便利そう。
列の幅と行の高さの単位が違ってるっぽいので、合わせ難くて困ってた。
さんきう。
行高・列幅がピクセルで表示されないバージョンですね。
行デフォ:13.50=18ピクセル
列デフォ:8.38=72ピクセル ですよ。
 
ちなみに列幅18ピクセル=1.63です。
>>503
間違ったこと教えるなヨ
>>496
ほんとだ、よく確認してなかったよ w
>>504
間違ってますか?
詳細をご指摘いただけるとありがたいですが。
507名無しさん@そうだ選挙にいこう:05/02/11 18:47:29
OnTimeメソッドを使ったときにモジュールレベル変数が
どこまで保持されるかのテストでこんなコードを書いてみたのですが

Dim abc As Integer

Sub test1(Num As Integer)
abc = Num
End Sub

Sub test2()
MsgBox abc
End Sub

Sub test3()
test1 10
Application.OnTime (Now + TimeValue("0:00:10")), "test2"
End Sub

これを標準モジュールに書いてtest3を実行すると、
問題なく「10」と表示されたのですが、
Worksheets("Sheet1")のコードに書くと、
イルカが「マクロ'Book1!test2'が見つかりません」とか言いやがります。
OnTime関数で呼び出すプロシージャは必ず標準モジュールに書かないといけないのでしょうか?
どうにかしてWorksheetのコードに書いたプロシージャを呼び出せないものでしょうか?
ちなみにExcel2000です。
よろしくお願いします。
>506
過去ログ読んだ方がいい

>507
Sub test3()
test1 10
Application.Wait Now + TimeValue("00:00:10")
test2
End Sub

OnTimeだと標準モジュールしか呼びに行かなかったような気がする。
そんな指摘、意味ないじゃん。
>>506
環境によって異なる
511460=467:05/02/11 21:22:28
>>474
ありがとうございます!
InStrは知りませんでした。
うまい方法があるものですね。
512名無しさん@そうだ選挙にいこう:05/02/11 21:22:57
セル参照で、書式も一緒に参照させる方法はないの?
フォントとか文字の大きさとか全て
>>510
標準フォントに因って可変なんだよね、確か。
>>512
VBAでなら何でも参照可。
515名無しさん@そうだ選挙にいこう:05/02/11 23:20:09
InputBoxを用いて,複数の語句を入力させるには
どうしたらいいですか?
>>515
1. InputBoxを複数回使う
2. 任意の区切り文字を使って複数の語句を連続した文字列として
  入力して、後から複数の変数に振り分ける。
3. ユーザーフォームを使う
EXCELとの互換性が飛躍的に向上したっぽいあおり文句だったんで
期待してたんだが…

EXCELにあって,三四郎2005にはない関数を使ったものは普通に軒並みダメじゃん。orz
てっきり三四郎2005がもつ,複数の関数の合わせ技のような数式に置換してくれるのかと
思ったのに…

関数さえ全て置換してくれたら,引数やら書式やらの違いには目をつぶって,
三四郎2005をメインにしようと思ってたのに…
俺にとってExcelは表計算ソフト
三四郎は表作成ソフト

よくExcelの質問で出るmm単位でのセルの大きさ設定も
三四郎なら標準で出来るし、文字修飾も多い。
ただ、マクロも関数も弱いので表計算に使うならExcelだな。
うちのはまだ三四郎9だけど。
519名無しさん@そうだ選挙にいこう:05/02/12 02:19:54
挿入した画像を回転させることはできませんか?
>>519
緑の●
できるよ。
VlookUPの関数の使い方みたく、横にならぶ3つのセルの値から検索して、
縦に作った一覧表から数字を返す方法ってありますか?

図に描くと、
   A B C D
1 |1|2|3|答|
2 |4|5|6|答|

という表があって、1A、2A、3Aをに当てはまるやつを
|1|2|3|の場合は■
|4|5|6|の場合は☆といった具合に答のところにポンって出てくる感じです。

どうかご助力の程、よろしくお願いします。
> VlookUPの関数の使い方みたく、横に
だけを読んでHLOOKUPと答えてみる。
という表があって、1A、2A、3Aをに当てはまるやつを
|1|2|3|の場合は■
|4|5|6|の場合は☆といった具合に答のところにポンって出てくる感じです。
------
の意味がさっぱり分からん w
525522:05/02/12 13:38:47
説明が下手で申し訳ございません。Vlookup関数の場合は、
検索にかけられるセルはひとつだけだと思っていました。
   A B C D
1 |1|2|3|答|
2 |4|5|6|答|

の表の場合だと、1行目でいえば、1Aか1Bか1Cのみ検索にかけて表示させる
ことが出来ると思うのですが、

1Aと1Bと1Cの条件がすべてそろって、Vlookupみたいな検索にかけられる方法
がないものかと、悩んでいました。

仕事で上に書いた感じの表で、大きな表があるのですが、
その表に、数字を割り振りするのに来週の月曜までに
仕上げなければならないものがあって、
途方にくれていたので、何か皆さんからお力を借りれたらと思って、
相談を書いた次第です。

まだ説明がわからないことがあったら、レスください。

至らぬところが多くて申し訳ないですが、よろしくお願い申し上げます。
■や☆の種類(答えの種類の数)はどのくらいあるの?
527名無しさん@そうだ選挙にいこう:05/02/12 14:01:13
ExcelのVBAからHTMLを触ろうと思い、MSHTMLを使うために
ツールの参照設定で「Microsoft HTML Object Library」にチェックを入れたのですが
オブジェクトブラウザで当該クラスのヘルプを見ようとして
例えば「HTMLDocument」を右クリックして「ヘルプ」をクリックしても
ヘルプが表示されません。

MSHTMLのヘルプを表示するにはどうしたらよいのでしょうか?
>>522
D列に1列挿入して、
D1セルを =A1&B1&C1 として、
元表も同様にして
E列は =VLOOKUP(D1,・・・) ではダメなん?
>528
1&23と12&3を区別する為にセパレータ文字を
入れた方がいいね。
530522:05/02/12 15:05:29
まず、皆さんへ
ひそかに&の使い方を知らなかったので、それだけでも参考になり、道が開けた漢字がします。
>>526さん
答えの数は120ぐらいあります。Vlookupの検索対象になる名前はもともと順番に
1A&1B&-&1Cという並び方でひとつのセルに
書き込んでありました。

それが別の表のデータでは1A、1B、1Cと3つに分かれていたので
悩んでいたのです。最初にこういうことを書いておけばよかったですね。
ごめんなさい。

それで、
>>528さん
&の使い方をいままで知らなくて、実際に試してみたところ、このやり方で
いけそうな気がしました。

>>529さん
528さんの言っていることに529さんの助言でいけそうな気がします。

今日中に仕事が終われそうな気がします^^

うれしくて、ちょっと涙がでてきちゃいました^^

本当にありがとうございます^^
531名無しさん@そうだ選挙にいこう:05/02/12 18:33:22
>>429わかる人居ませんか?
とにかくVBAでそのセルの値を取得したときに「.Value = ""」になればいいんだけど、
「"",-1,0,1,2,3」だと、文字列として""が入ってしまうので「.Value = """"""」になってしまう。
どうすればいいんでしょうか?
532名無しさん@そうだ選挙にいこう:05/02/12 18:38:51
VBAに関する質問です。(Excel2000)
ブック内の全シートのデータを、Sheet1へまとめたいと思っています。
1.Sheet2の全データをSheet1へコピー。
2.Sheet3の全データをSheet1のデータ最終行+1へコピー。
という様に、次々とつなげたいと思っていますが、
「1行目〜最終データ行」の指定方法が分かりません。

End_Row = Range("A65536").End(xlUp).Row で最終行を取得しています。
しかし、Rowsで指定しようと変数を入れるとエラーになります。
Rows("1:End_row").Select
Selection.Copy

アドバイス宜しくお願いします。
533429:05/02/12 18:50:01
>>532
Rows("1:" & End_row).Select
""で囲ったら、End_rowは変数ではなく文字列という扱いになっちゃうよ。
あと、マクロの記録使ってるんだろうけどSelect→Selectionは無駄になるので
Rows("1:" & End_row).Copy
でいいと思う。あと、列数が少ないならRowsではなくRangeで範囲指定した方が処理は速い。
>>532
Dim End_Row as Integer
としていたら IntegerではなくLong
Integerは、-32,768 〜 32,767 だから

かな?
つうかエラーが出たらデバッグすればどこでエラーがでてるか
わかるですよ。
>>533
こっちが正解のようでつな w
>>429,>>531
「',-1,0,1,2,3」(最初の項目をシングルクォーテーション)にする。
質問です。(Excel2000)
セルの表示設定はすべて同じですが、
特定の列だけ
入力 → 表示結果
1   → 100
20  → 2000
3.0 → 3
と、いった感じになります。
少し微妙な質問ですが、
教えてくれると助かります。
538429:05/02/12 19:11:38
>>536
文句無しです、最高です。
というか、餅突いて考えればわかりそうな事なのに>>俺・・・_| ̄|○
'を試そうともしなかった俺を冷笑してくださいまし。

とにかく536さん、ありがとうございました。
Application.Run "ファイル名.xls!hoge", 引数1
とすることで、参照設定していない他WorkBookの
プロシージャを、引数を渡して呼び出すことが出来ますが、
Functionプロシージャの戻り値をどうやって受け取れば良いかがわかりません。

---Temp.xls---
Sub piyo()
 Dim 引数 As String
 引数 = ActiveCell.Value
 Application.Run "PERSONAL.xls!hoge", 引数
 ???
End Sub
---PERSONAL.xls---
Function hoge(引数 As String) As String
 hoge = 引数
End Function

例えばこの場合、Sub piyoでActiveCell.Offset(0, 1).Valueに
hogeの戻り値を代入したい場合どうすればいいのでしょうか?
ActiveCell.Offset(0, 1).Addrsss自体も引数として渡してしまい、
Function hoge側でシートへの値の代入もやらせてしまうという手もあるのですが
直ぐにセルに代入せず、戻り値に対して何らかの操作をしたい場合もあるので、
参照設定無しで戻り値を得る方法をご存じの方が居ましたら教えてください。
Excelのバージョンは2000です。
540名無しさん@そうだ選挙にいこう:05/02/12 20:58:33
A1セルに1234567890123456と入力して
=IF(LEN(A1)=16,TEXT(A1,"####-####-####-####"),IF(LEN(A1)=15,TEXT(A1,"####-####-####-###"),IF(LEN(A1)=12,TEXT(A1,"####-####-####"),"")))
の関数で
1234-5678-9012-3456と表示したいのですが出来ません。1234-5678-9012-3450と最後だけ0になります。
12桁や15桁は各々1234-5678-9012や1234-5678-9012-345と出来るのですが、どうすれば表示できますか?A1セルの表示形式は標準です。
よろしくお願いいたします。
>>540
とりあえず入力するセルを「書式」→「セル」で文字列にする。
標準のセルに16桁の数字を入れたら15桁で打ち切られるのは当たり前。
有効桁数は15桁ですから。
>540
A1の表示形式を文字列にして下記の数式を入れる

1桁〜16桁版
=LEFT(A1,4)&IF(LEN(A1)>4,"-"&MID(A1,5,4),"")&IF(LEN(A1)>8,"-"&MID(A1,9,4),"")&IF(LEN(A1)>12,"-"&MID(A1,13,4),"")

9桁〜16桁版
=LEFT(A1,4)&"-"&MID(A1,5,4)&"-"&MID(A1,9,4)&IF(LEN(A1)>12,"-"&MID(A1,13,4),"")
>>539
とりあえずヘルプの例を試してみ。
544540:05/02/12 21:56:04
>>542
ありがとうございました。私もMID関数と&をつなげて出来ましたが
下段の9桁〜16桁版の
〜IF(LEN(A1)>12,"-"&MID(A1,13,4),"")
は考えつきませんでした。
>>541様、有効桁数が15桁と言うことは存じ上げていました。説明不足で申し訳ございませんでした。でも、考えてくださって。ありがとうございました。
545名無しさん@そうだ選挙にいこう:05/02/12 22:46:08
複数のセルにある文字列の足し算をしようとして,
その足し算の和をlistという変数としたいと思い
Dim list As String

・・・

list = CONCATENATE(Cells(r, 3), Cells(r, 4))

としてもうまくいきません。

なぜですか?
>>545
list = Cells(r, 3) & Cells(r, 4)
> なぜですか?
CONCATENATEはワークシート専用の関数でVBA関数には無いから
WorksheetFunctionを使えばCONCATENATEも使えるけど、普通は&か+で繋げるな。
list = Cells(r, 3).Value & Cells(r, 4).Value
ってな感じで。
>>539
普通に代入するとかじゃだめなの?
549539:05/02/12 23:14:58
Application.Run "PERSONAL.xls!hoge", 引数

Application.Run("PERSONAL.xls!hoge", 引数)

としたら、戻り値取得出来ました。どうもお騒がせしました。
550名無しさん@そうだ選挙にいこう:05/02/13 02:46:21
Excel2000初心者です OSはwindows2000です。
エクセルのマクロで

Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("A").Range( _
"H360,L360,P360,T360,X360,AB360,AF360"), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="A"
ActiveWindow.Visible = False
Windows("ふぃるたc10-6.xls").Activate
Range("AC365").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("A").Range( _
"H361,L361,P361,T361,X361,AB361,AF361"), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="A"
ActiveWindow.Visible = False
Windows("ふぃるたc10-6.xls").Activate
Range("AC365").Select

というふうに360,361,362・・・・と1個ずつ増やして400まで複数のグラフを作成していきたいのですが
FOR NEXT 構文の際のRange( _"H360,L360,P360,T360,X360,AB360,AF360")
の入力の仕方がわかりません。
どなたかご教授お願いします。
Dim r As Integer
For r = 360 To 400
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("A").Range( _
Cells(r, 8), Cells(r, 12), Cells(r, 16), Cells(r, 20), Cells(r, 24), Cells(r, 28), Cells(r, 32)), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="A"
ActiveWindow.Visible = False
Windows("ふぃるたc10-6.xls").Activate
Range("AC365").Select
Next r
552550:05/02/13 03:35:44
返答ありがとうございます。
なにやら
'Cells'メソッドは失敗しました。'_Global'オブジェクト
とでてしまします。なにかまずいのでしょうか?
553551:05/02/13 04:31:41
>>552
めんどくせーからよく見てなかった。

Cells(r, 8).Address & "," & Cells(r, 12).Address & "," & Cells(r, 16).Address & "," & Cells(r, 20).Address & "," & _
Cells(r, 24).Address & "," & Cells(r, 28).Address & "," & Cells(r, 32).Address), PlotBy:=xlRows

で、どーよ?
つーか少しは自分でやろうって気は無いのかね。
554名無しさん@そうだ選挙にいこう:05/02/13 04:53:57
セルに文字を入力した後に、別のセルに行って、
また元のセルに戻って前の続きから文字を追加して書きたいときはキーボード上でどのような操作をすればいいのですか?
セルを選んでそのまま何かを入力すると前に書いていた文字等が消えてしまいます。初心者ですが、誰か教えてください。
F2
556554:05/02/13 05:01:54
>>555
ありがとうございます。これで早く入力できそうです。
親切な人ですね。
557名無しさん@そうだ選挙にいこう:05/02/13 13:11:09
エクセルの達人方にお聞きします。
>>532さんとはちょっと違うのですが

B列の最終行を選択するコードをぐぐって

Sub B列の最終行()
 Range("B65536").End(xlUp).Select
End Sub

と言うのを見つけてきてそこから↓ボタンを使って
そこから入力していたのですが どうせなら
直接、最終行のその1個下を選択したいのですが・・・
どこを直せば(改変?)よろしいのでしょうか?
Range("B65536").End(xlUp).Offset(1, 0).Select
559557:05/02/13 13:47:50
おおおおっ!
>>558さん、ありがとぅーーー!
できました。
即レスありがとうございます。
560545:05/02/13 18:23:32
ありがとうございます。
ワークシート専用の関数でVBA関数には無いというのが
あるんですね・・・
ExcelワークシートとVBAでは目的が違うから、
かぶってない関数はそりゃ多い。
Excel2003です(OSはXP)。

ひとつのセル内に複数行の文字列が入力されている場合、
文字列をセルごと選択してtxtファイルに貼り付けると、
文字列が"(ダブルクォーテーション)で囲まれてしまいます。

このダブルクォーテーションを出さないようにする方法はありますか?
xpです。
シート2からシート1のセルの情報を取得するにはどうすればいいですか?
=シート1!A1
EXCEL2000使用です。

質問1

横軸が時系列のグラフがあって、不定期にデータを追加していきます。
グラフウインドウの大きさが一定なので
追加していくごとに、グラフの大きさが相対的に縮まっていくことになりますよね。
グラフの比率を一定にするために、フォームのスクロールバーをグラフに付けて、
時系列(x軸)をスライドさせていくことはできますか?

質問2

フォームのコンボボックスなんですけど、セルそのものをコンボボックスみたいに
することはできますか?イメージとしてはセルをプルダウンの選択式にしたいんですが・・・。

ドすろうとの質問で恐縮ですが、ご教授ください。お願いします。
>>565
1: グラフ自体にスクロールバーを付けるのは無理
2: 入力規則 > リスト
567名無しさん@そうだ選挙にいこう:05/02/14 06:59:02

PC初心者板のOfficeスレで質問したのですが、丸二日以上回答が無いので移動してきました。
http://pc5.2ch.net/test/read.cgi/pcqa/1107799154/96 質問
http://pc5.2ch.net/test/read.cgi/pcqa/1107799154/171 移動報告


ExcelのVBAで、既に設定されてる入力規則のリストで[元の値]に指定されてる文字を
変数に格納するにはどうすればいいんでしょうか?
VBAで入力規則を設定する方法はわかるんですが、取得する方法がわかりません。
どなたか教えてください。WindowsXP Pro、Excel2002です。
>>557
まぁマルチになるかもしれないが、ここでも質問してもいいかも。
返答率結構高いよ。
http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi
569567:05/02/14 07:56:50
>>568
私に対するレスですよね。
ご紹介ありがとうございます。

でも、まだこちらで質問したばかりなのでもう暫くここで回答が付くのを待ってみて
解る方がいらっしゃらないようなら紹介先に行ってみようと思います。
>>569
Helpから引用

次の使用例は、セル E5 にデータの入力規則を設定し、入力およびエラー時のメッセージを設定します。

With Range("e5").Validation
.Add Type:=xlValidateWholeNumber, _
AlertStyle:= xlValidAlertStop, _
Operator:=xlBetween, Formula1:="5", Formula2:="10"
.InputTitle = "整数値"
.ErrorTitle = "整数値"
.InputMessage = "5 から 10 の整数を入力してください。"
.ErrorMessage = "入力できるのは 5 から 10 までの値です。"
End With

多分こういう使い方をしたいんだと思うけど、何をしたいのか書かないとレスつきづらいし
少しはHelpを活用したほうがいいとおもう。高い金払ってるんだから。
571567:05/02/14 10:37:10
>>570
>多分こういう使い方をしたいんだと思うけど、
いいえ。
567でも書いた通り、入力規則を設定する方法は解っております。
572名無しさん@そうだ選挙にいこう:05/02/14 11:04:05
>>174 と似たようなことをやろうと思います。
174 だと、要素が上下で逆さまになってしまいますが
要素の上下関係を維持しつつ、そのままストンと地面
に付けるようにはできないでしょうか? 大変なので
A と B だけ。

 AB
1●◎
2▼▼
3◎◆
4○



 AB
1●
2▼◎
3◎▼
4○◆
573名無しさん@そうだ選挙にいこう:05/02/14 11:18:51
a1に1か2がかいてあるエクセルファイル(1〜1000)をVBAを用いてa1=1の個数を出したいのですが、異なるファイルを連続に処理する関数は何を用いたらよいのでしょうか?
574すいません:05/02/14 11:21:03
a1に1か2がかいてあるエクセルファイル(1〜1000)をVBAを用いてa1=1のファイル数を出したいのですが、異なるファイルを連続に処理する関数は何を用いたらよいのでしょうか?


575名無しさん@そうだ選挙にいこう:05/02/14 11:26:08
昔のスレのFAQにマクロを高速で動かす方法があったと思ったのですが、それを教えてください。

たしか、何かのVisibleをfalseにするんだったと記憶しているのですが思い出せません。
>>567
設定する方法が解っていれば簡単だろ?
x = Range("e5").Validation.Formula1
>>576
それFormula1じゃ無くてValueじゃないかな
578576:05/02/14 12:39:25
オレは必ず試してから書き込むけど
チミはどうなん?
>>575
Application.ScreenUpdating = False
のこと?
580名無しさん@そうだ選挙にいこう:05/02/14 13:20:59
>>574

for each f in filelist
workbooks.open filename:=f
if activesheets.range("A1").value = 1 then
i = i + 1
endif
activeworkbook.close
next f

こんな感じじゃね?やっぱ一回開くんじゃ。ね?
581名無しさん@そうだ選挙にいこう:05/02/14 14:32:50
>>572
一番下の行はその都度変化するのか?固定なのか
何列あるのか?
わからないからマクロ書けないが

数列程度なら下の空白範囲を切り取って一番上に「切り取ったセルの挿入」でOK
582名無しさん@そうだ選挙にいこう:05/02/14 14:48:04
>>575
579のことか?

そうでないなら、
変数の宣言を的確にするとか、やたらselectしないとか、
コードを極力短くするとか、ワークシート関数を使用する
といったありきたりのことしかない

どれも微々たるもので、マシンパワーを上げるかメモリーを積む方が
より速くなるとおもわれ

ただ、きれいなマクロは速いし、後で見てもわかりやすい
勉強あるのみ
>>572
Sub hoge()
Set r = ActiveSheet.UsedRange
For i = r.Column To r.Column + r.Columns.Count
  For j = r.Row + r.Rows.Count To r.Row Step -1
    If Cells(j, i) = "" Then
      Set tr = Cells(j, i).End(xlUp)
      If tr.Value <> "" Then
        Cells(j, i) = tr.Value
        tr.Value = ""
      End If
    End If
  Next
Next
End Sub
>>583
それだと、マクロ実行するたびに1行づつ下に下がっていかね?

4行目の
r.Row + r.Rows.Count を 
r.Row + r.Rows.Count - 1 にしたほうがよくね?

(3行目のCulumns.Countも見かけ上問題ないが-1が正確)
585名無しさん@そうだ選挙にいこう:05/02/14 18:48:41
イベント処理で、あるオブジェクトをByVal Obj As Objectで受け取るのですが
通常はアイテム数を保持してるメンバー変数Lengthなどがあって
Obj.Lengthというように参照できるのですが
たまにTypeName(Obj)の返り値は同じなのに、
メンバーが一つも無いオブジェクトを受け取ることがあります。
その時にObj.Lengthなどとやるとエラーが出てストップしてしまいます。

そのオブジェクトに特定のメンバー変数があるかどうかや
そのオブジェクトがいくつのメンバー変数を保持してるか等を
返す関数などはありませんでしょうか?

またそれ以外でも、上記の問題を解決する方法はありませんでしょうか?
よろしくお願いします。
586584:05/02/14 19:04:08
Culumnsってなによ ○| ̄|_
ぜんぜん正確じゃねえ。
Columnsの誤字でした。
>>583
ちょっと質問の意味と違うような気がするけどどうなんだろう?
>>587
おいらの勘違いだった、スマソ。
●◎とかが1つのセルに入ってるのかと思ったよ。
589583:05/02/14 19:32:53
>584
ご指摘のとおりです orz
>587
途中に空白があっても詰めないのなら違いますね。
590名無しさん@そうだ選挙にいこう:05/02/14 19:43:49
エクセルを保存すると作成者で本名が出ます;;
作成者の名前を変えたいのですがどうすればいいの?
591名無しさん@そうだ選挙にいこう:05/02/14 20:25:32
エクセル2002です
グラフの凡例で、全体でなく1文字だけ下付きあるいは上付き(例:I2の2のみを下付き)に
したいのですが、どなたか分かる方ご教授ください
おねがいします
A1
A2
A3
--------------------ウインドウ枠の固定線
A4
A5

ってな表があって、A1にA100へのハイパーリンクを作って、そこをクリックしたら

A1
A2
A3
--------------------ウインドウ枠の固定線
[A100]
A101
A102

ってなかんじにしたいんだけど、普通にA100へのハイパーリンクを作ると

A1
A2
A3
--------------------ウインドウ枠の固定線
A98
A99
[A100]

となってしまいます。リンク先のセルをウインドウ枠の固定線の
直ぐ下に出すにはどうしたらいいんでしょうか?
ハイパーリンクはA1〜A3それぞれにA100、A200、A300へのリンクを作りたいです。
Excelのバージョンは2002です、よろしくお願いします。
>>590
ツール→オプション→全般

これで分かるだろ。
特定多数の人に配るエクセルファイルがあるのですが、
コピーあるいはファイル名の変更を禁止する方法はありますか?

いろいろ調べたのですがわからなかったので、応急処置として、
自分自身のファイル名をチェックしてファイル名が違ったら動かないような
VBAを記述しているのですが、
できれば完全に物理的にファイルコピーやリネームを禁止したいのです。
どなたかご教授をよろしくお願いします。
>>594
それはExcelの問題じゃないよ。
ファイル自体のコピーというのは
Excelの動作ではなくOSの動作(視覚的に見ればファイラーの動作だけど)なので
ExcelのブックだろうとなんだろうとOSから見れば1ファイルに過ぎない。

なので、禁止にするならOS側で全ファイルのリネーム、コピーを出来なくするしか方法は無い。
VBAを使わなくても特殊なPackに掛けることで、コピー、リネームしたらファイルを開けなくするツールはあるけど
スレ違いだし、要望に添わないと思うので紹介は控える。
知りたければそっちの方面で検索してみな。
596594:05/02/15 00:41:19
>>595
回答ありがとうございます。
さすがにファイルのコピー、リネームそのものを禁止するのは無理ですか…

それでは質問を変えます。
コピーしたファイルを検索して特定するようなことはVBAで可能でしょうか?
それができれば、次なる手段として、そのエクセルファイルを開いたときに
コピーファイルを検索して、そのファイルを削除するように記述しようかと思っているのです。

尚、特定環境のため配る人は皆HDDドライブは1つしか存在しません。

>>596
FSO使えば出来る。(やり方わからなければググってね
ただ、コピーが元ファイルと同じディレクトリにあるとは限らないので
全ディレクトリ検索することになり、「時間が掛かる&HDDが泣く」ので
不審がられたり、実用に支障が出たりすると思うけど。
>>597
おぉ、回答ありがとうございます。
出来るのですね。それでは早速FSOについて調べてきます。

確かに実用については問題点がありそうですが、その辺は
何か解決策を考えたいと思います。ありがとうございました。
599名無しさん@そうだ選挙にいこう:05/02/15 01:16:56
エクセルの事なのですが、フィルタかけた状態から貼り付けがうまく出来ません。
例えば下記のような図
番号 品物   会社 金額
1  鉛筆   A社
2  消しゴム B社
3  ボールペン B社
4  カセットテープ B社
5  トナー   A社
6  雑巾   A社 
があるとして
別途エクセルのファイルでA社の金額が下記のように
番号 品物   会社 金額
1  鉛筆   A社  30
2  消しゴム B社
3  ボールペン B社
4  カセットテープ B社
5  トナー   A社  4,000
6  雑巾   A社  25
という事が分かっていたとします。
フィルタをかけてA社のところにだけ貼りつくようにするのが希望なのですが
フィルタがうまくかからず
番号 品物   会社 金額
1  鉛筆   A社  30
2  消しゴム B社  4,000
3  ボールペン B社 25
4  カセットテープ B社
5  トナー   A社 
6  雑巾   A社 
という風になってしまいます。
何か旨いやり方があるのなら教えて下さい。
600594:05/02/15 01:27:05
>>597
FSOオブジェクトについてはおおよそわかってきました。
が、ちょっと僕が>>594で説明不足だったのですが、
コピーファイルの名前が、オリジナルファイルの名前と全く違っても
(検索時点でどんな名前でコピーされたのかはわからない状態)
検索できるものなのでしょうか?

現在のところまで調べた限りでは、FSOに用意されたプロパティやメソッドでは
オリジナルファイルのコピーファイルを名前不特定の状態で検索できるような
ものを見つけ切れていません。

もしよろしかったらご回答をお願いいたします。
601594:05/02/15 01:28:37
>>600の途中のアンカーつけ間違っていました。
「ちょっと僕が>>596で説明不足だったのですが」に訂正です。
>>600
> コピーファイルの名前が、オリジナルファイルの名前と全く違っても
> (検索時点でどんな名前でコピーされたのかはわからない状態)
> 検索できるものなのでしょうか?
出来るからがんがれ。
603594:05/02/15 02:18:37
>>602
あれからずっと探していますが、見つけ切れていません…

MSDNのヘルプ↓でFSOのプロパティ・メソッドを全て見たのですが、
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/FSOoriFileSystemObject.asp
それらしきものを見つけられません。
この中にはないメソッドがあるのでしょうか?
それとも、既にあるのだけれども、僕がそれを認識できていないのでしょうか…
あるとわかっているものを見付けられないのはもどかしく思っております。

明日も仕事ですので今晩は寝ます。
ありがとうございました。

>>603
> それとも、既にあるのだけれども、僕がそれを認識できていないのでしょうか…
認識できていないというより発想が貧困なだけ
とりあえず、ファイルを全検索して、一つづつパスを取得する部分くらいは自分で書けると思うので
その後を説明すると、まず取得したファイルパスをFileLenを使ってファイルサイズを取得。

これが元ファイルと一致したらFSOのOpenTextFileメソッドでTextStreamを取得し
Readメソッドで先頭数バイトを取得して元ファイルと比較。

これも一致したら同じくTextStreamをReadLineメソッドでAtEndOfStreamプロパティがTrueを返すまで
元ファイルと連続して比較。Trueが返る前に不一致が出たら次のファイルに移る。
Trueが返るまで全て一致したら、そのファイルを削除。

まあ、最初からReadLineで比較してもいいけど、それだとたぶん速度が落ちるので。
これでファイル名に関わらず、内容が一致するファイルのみを削除できる。
OpenTextFileでテキスト以外のファイルを取得するなんて教科書通りの使い方じゃないけど、
ちょっと考えればこういうやり方もできるよ。思考を柔軟に持とうね。
コピーしたあと編集されてサイズ変わってたらどうしようもないな
>>599
社名でソートした後に貼り付けて、
番号でソートしなおしたら?
607いやー困りました:05/02/15 11:36:35
アクティブセルを動かすのに
カーソルキーで動かせなくなってしまいました
(カーソルキーを操作すると セルが固定でスクロールしてしまう)

何の拍子でなったのか分からず
簡単なセル移動にもいちいちマウスを使わないと行けなくなり困っています
どなたかもとに戻す方法をご存じの方おられるでしょうか

Ver は 2003です
>>607
前スレでの結論はマウスのスクロールボタンをクリックで直るとかいう話だったような
>>607
ScrollLockじゃねぇーの?
610いやー助かりました:05/02/15 12:41:35
>>608
>>609さん
ScrLkキー一発で治りました
押した記憶はないのですが何かの拍子に押していたものと思われます
非常に助かりました どうもありがとうございました

というだけでは何なので 私の持ちネタ
一太郎With三四郎を買ったのですが
セルの幅指定の際 ポイントだけではなくmmで指定することが出来ます
後は、画面で見えているけど印刷すると尻切れ病が治っているとうれしいです
これから試してみます
> セルの幅指定の際 ポイントだけではなくmmで指定することが出来ます

>>518
Excel 2002 OS WindowsXP SP2

どなたかご存知でしたらお教え下さい。

マクロ記録で 外部データーベースの取り込み
を行っていて、MSクエリにパラメータを与えようと
するとマクロ記録が止まって、エクセルが閉じられてしまいます。
マクロ記録していなければ、問題なくできる作業なのですが、

関係あるか不明ですが、ADOやDAOへの参照もしたり、はずしたり
各場合でトライしたのですが、マクロ記録は不可能でした。

これは無理な事をしているのでしょうか?

当然のことだけどExcel上での操作以外は記録されないよ
>>613
御返答ありがとうございます。
操作は記録されないでしょうが、他のパラメータを使用しないクエリは
その定義(SQL文ですか?)などが記録されてきます。

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MSAccess     Database;DBQ=C:\***\***\**\xxx.mdb;Default
    Dir=略, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT .`A`,
    "FROM `C:\略
    "WHERE (X>{ts '2000-01-01 00:00:00'}) AND (Y<256)" _
End With

パラメータクエリにしたときだけ、そのクエリの構造を記述しないのが
不思議でしょうがないのですが・・・・

CSVから読み込んだデータを金額順に並べ替えたいのですが、
金額の末尾すべてに「円」が書かれているため、金額が文字列と見なされてしまい、
文字コード順にソートされてしまいます。
これを、円を付けたまま金額順にソートするには、どうすればよいのでしょう?
>>615
>>25-を参照。
結論から言えば、桁数が揃ってないなら"円"を入れたままワークシート操作でソートするのは不可能。
数値を別セルに書き出すか、VBA使って並べ替えるかすればできるけど。
617615:05/02/15 19:31:04
>>616
わかりました。
数値だけの列を作ることにします。
>>615
円を空白に置換。
セルの書式設定で表示形式を0"円"にする
と見かけ上 円 がつくよ。
当方WinXPhomeSP2、Excel2003です。

一行が一項目のデータとしておよそ500項目ほどあります。
列の左端に通し番号、次に日付、所要時間とデータが区切られているのですが、
日付ごとに、同データの集計をして、別フォームに貼り付けたいです。


[番号][日付][時間][A分類][B分類][C分類]
[0001][0214][0120][※※※][♪♪♪][○○○]
[0002][0214][0010][※※※][♪♪♪][△△△]
[0002][0214][0020][※※※][□□□][△△△]
[0002][0214][0040][※※※][□□□][■■■]
[0002][0215][0060][※※※][□□□][△△△]
[0002][0215][0020][※※※][♪♪♪][△△△]
[0002][0215][0030][※※※][♪♪♪][△△△]
[0002][0215][0010][※※※][□□□][△△△]


こんなかんじにデータは並んでいて、たとえばBの項目で日別に集計を取って、
日付 [♪♪♪] [□□□]
2/14 2回130分 2回60分
2/15 2回50分 2回70分

のようなシートを作りたいのですが、現状ではもう一つ別にシートを作って、
解決しています。

長いので分けます。
別に作ったシートは以下のような感じです。

[□□□][♪♪♪][時間]
[ 空白 ][ 0214 ][0120]
[ 空白 ][ 0214 ][0010]
[ 0214 ][ 空白 ][0020]
[ 0214 ][ 空白 ][0040]
[ 0215 ][ 空白 ][0060]
[ 空白 ][ 0214 ][0020]
[ 空白 ][ 0214 ][0030]
[ 0215 ][ 空白 ][0010]

これを1000行程念のために用意し(項目数は増える事もあるため)、
COUNTIF関数で項目別のその日の回数と、SUMIF関数でその日の項目別合計時間を
別シートから参照しています。

その他もろもろでファイルサイズが10数MBになってしまってるのですが、
これを軽量化するに当たり、VBAでどのようなアプローチを取ればいいでしょうか?
>>619
VBA以前にピボットテーブルでなんとかなるような気も。
622594:05/02/15 22:07:22
>>604
遅くなりましたが、アドバイスありがとうございました。
>>597で実用に支障が出ると言われた理由が良くわかりました。
確かに細かく検索するとどうしようもなく処理が大変そうですね…

コピー防止の策としていた、ファイル名が違うと何も出来ないように
していた記述をステップアップ(?)させ、ファイル名が違うと
勝手に自分自身を削除するように記述してみました。
このくらいの対処のほうが現実的かもしれませんね。
ちょっと欲張りすぎたようです。
>>619
俺もピボットテーブルの方がいいと思うけど、
VBAでやるにしてもFor_NextとIfの単純作業でしょ。
ここで聞くような内容じゃない。
624619:05/02/15 22:11:53
すいません、聞きかじりでVBAにすればファイルサイズが小さくなるような事を聞いたものですから、
この機会に覚えようかな、と思った次第です。
Excelじたいも良くわかっていないので、ピボットテーブルで具体的にどうすればいいのか教えていただけますか?

あと、前述の項目は毎日追加していく形を取っているので、項目数の限定は無しでお願いします。(注文多くてスイマセン)
>>624
Excel自体も…とおっしゃるなら、とりあえず
http://office.microsoft.com/ja-jp/default.aspx
の「トレーニング」でExcelを選び、ピボットテーブルのコース(3つばかりある)を
やってみたほうがいいかと。
2003でないとできませんが、>>619によると大丈夫そうだし。

別にここでなくても、「ピボットテーブル」でぐぐって簡単そうな説明を
見つけてもかまいません。
626名無しさん@そうだ選挙にいこう:05/02/15 23:37:12
セルに年齢を入れたら、誕生年がわかるようにできないでしょうか?
>>161
にりますが回答がなされていないようなので、
棒グラフの途中を波で省略って出来ますか?
628名無しさん@そうだ選挙にいこう:05/02/16 00:16:27
>>626
西暦なら、
=YEAR(TODAY())-A1
>619-620
VBAでやりたいなら書いてもいいよ。
とりあえず書いて欲しかったら下記に答えてね。

1. [番号]のセル位置(A1でいいのかな?)
2. 動作は[*分類]のセルをダブルクリックしたらその項目名でシートを作って集計、って感じでいい?
3. 元データのシート名は?
4. [日付]と[時間]のデータは何?
  単純に文字列で"0214"と入れてるだけ?
  214と入れて表示形式で"0000"としてるの?
  それとも日付(シリアル値)を入れて、表示形式で"mmdd"かな?

まあ俺も、少しExlecの勉強してピボットテーブルくらい使えるようになった方がいいと思うけど
VBA書いてもたいして手間食うようなものじゃないので。
>>628
ありがとうございます
=YEAR(TODAY())で年度を出してから年齢を引くだけで良かったんですね、、気付きませんでした
年齢をシリアル値に変換して計算することばかり考えてました・・・
バカですわ。
>>627
2000どころかExcelではできない。
全部入れるのが目的なら数値軸を対数目盛にするとか、
見た目だけなら飛びぬけてるところだけ別のグラフオブジェクトにして位置あわせするとか。
632619:05/02/16 15:56:09
>629
ピボットテーブル使ってみて便利さが解りましたが、VBAでどんな処理をするのか興味があるので
ぜひお願いします。

1.はその通りです。ただの通し番号です。
2.項目ダブルクリックでもいいですし、項目ごとにあらかじめシートを作っておいてもいいです。
3.元データのシート名は仮に「要因入力フォーム」として下さい。
4.日付のデータは日付入力して表示形式でmm/dd、時間は開始時間と終了時間を入力し、差分を取った値です。
>>161
三四郎では可能だぞ。が・・・未だやり方がつかめずww
http://blog.drecom.jp/tetsus/archive/17
634629:05/02/16 16:37:57
>632(619)
1〜3はいいんだけど、4がちょいと不可解。

日付は表示形式でmm/ddとあるけど、>619見ると/が無く数字4桁だよね。
ここに書き込む上で割愛しただけで、とにかく日付はシリアル値で入力してあるってことでいいのかな?

それと時間の方だけど、120は普通に120として扱っていいの?
それとも1:20=80として扱った方がいいの?
60という値があることを見ると前者のようだけど、明確な回答を求む。
635619:05/02/16 16:52:06
書き方が不明快で申し訳ないです。
仰るように、日付はカキコの見た目があまりずれないように4桁表示としていましたが、普通にシリアル値(=日付)で扱っています。

時間も、差分をとった値をシリアル値から分に変換して数値データとして扱っているため、1:00ではなく60で扱っています。

ヨロシクお願いします。
636名無しさん@そうだ選挙にいこう:05/02/16 17:02:02
数値の切り上げについて質問です。
=ROUNDUP(1001,-2) の場合だと、1100になりますが、
1001〜1500は、1500。
1501〜2000は、2000。
というように、500ずつ切り上げる事は可能なのでしょうか?
よろしくお願いします。
>>636
*2して、ROUNDUPして、/2する。
>>636
=CEILING(セル,500)
639629:05/02/16 17:14:08
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Row = 1 And Target.Column >= 4 Then
  Dim r As Long, c As Byte, i As Long, sc As Byte: Cancel = True
  For sc = 1 To Worksheets.Count
   If Worksheets(sc).Name = Target.Value & " 集計" Then
    rtn = MsgBox("集計シート 「 " & Target.Value & " 集計 」 の内容を初期化して再集計します" & vbCrLf & "よろしいですか?", vbOKCancel)
    If rtn = vbOK Then Worksheets(sc).Cells.Clear: Exit For
    If rtn = vbCancel Then Exit Sub
   End If: If sc = Worksheets.Count Then Worksheets.Add after:=Worksheets(sc): ActiveSheet.Name = Target.Value & " 集計": Worksheets("要因入力フォーム").Activate
  Next sc
  With Worksheets(Target.Value & " 集計"): .Cells(1, 1).Value = "日付"
   For r = 2 To Cells(65536, 1).End(xlUp).Row: Do: c = c + 2
    If .Cells(1, c).Value = "" Then
     .Cells(1, c).Value = Cells(r, Target.Column).Value & vbCrLf & "回数"
     .Cells(1, c + 1).Value = Cells(r, Target.Column).Value & vbCrLf & "合計時間": c = 0: Exit Do
    ElseIf .Cells(1, c).Value = Cells(r, Target.Column).Value & vbCrLf & "回数" Then: c = 0: Exit Do
   End If: Loop: Next r
   i = 1: For r = 2 To Cells(65536, 1).End(xlUp).Row
    If .Cells(i, 1).Value <> Cells(r, 2).Value Then
     i = i + 1: .Cells(i, 1).Value = Cells(r, 2).Value
    Else: .Cells(i, 1).Value = Cells(r, 2).Value
    End If: .Cells(i, 1).NumberFormatLocal = "mm/dd"
    For c = 2 To 255 Step 2
     If .Cells(1, c).Value = Cells(r, Target.Column).Value & vbCrLf & "回数" Then
      .Cells(i, c).Value = .Cells(i, c).Value + 1: .Cells(i, c).NumberFormatLocal = "0""回"""
      .Cells(i, c + 1).Value = .Cells(i, c + 1).Value + Cells(r, 3).Value: .Cells(i, c + 1).NumberFormatLocal = "0""分""": Exit For
     End If
  Next c: Next r: End With
End If: End Sub
640629:05/02/16 17:18:34
>619
>639はとりあえず[A分類][B分類][C分類]などのセルをダブルクリックすると
その項目で集計(のつもり)
何処に貼ればいいかは解るよね。
問題あったら書いてくれれば気が向けば修正するかも。
641619:05/02/16 17:28:15
ありがとうございます。
今から帰宅しますので、家に帰ってから試して結果報告します。
>>638
ありがとうございます。
そんな関数知らなかったです。持ってる本に載ってないし・・・。
643619:05/02/16 19:39:25
帰ってきてから早速やってみました。

>639のコードを「要因入力フォーム」シートにコード入力して、結果は◎です。
VBAでこんな風にできるんですね、、、。
SUMIFやらCOUNTIFを1000個以上並べなくてもいけるのなら、こっちの方が断然スマートですね。

今は、コードを追って理解しようとしているんですが、ここでもう一つ質問です。
このコードと同じ処理をして、かつ決められたシートに結果を入力する事はできますか?

具体的に言うと、以下のようなシート(たとえばB分類用のシート)がすでに用意してあって、


日付│♪♪♪│□□□│
__│回│分│回│分│
0214│
0215│

それぞれの該当セルに結果の入力をするにはどうしたらいいのでしょうか?
このとき分類項目の数は2項目です。
644619:05/02/16 19:44:01
たとえば定型業務などで分類項目ごとの集計結果を提出する際に、
定型フォームの方が見栄えがいいかな、と思ったんですが・・・

実際、分類項目のほうは入力規則を設けてあって、今以上に増える事はありませんから、
提出用フォームはきっちり決めてしまった方がいいと思ってこんな質問をしました。
提出する事になるかわかりませんけども。

先のコードだと、分類項目の出現順に左から回数、時間と並んでいる為、出現順の変動で
見栄えが変わってしまいました。
>643
「♪♪♪」と「回│分」は別行にするの?それとも別の行がいいの?

「回」と「分」は別セルにして「♪♪♪」を2セル結合?
それとも一つのセルに「回」と「分」の両方を表示させたほうがいいの?

もしあらかじめ作ったフォーム内に、項目や日付が無いデータは?
無視する?それともあらかじめ用意された項目内に該当がなければ新たに項目作るの?


とにかく自分で書けないなら、情報は細かすぎるくらいに書いてくれないとこっちは何も出来ないよ。
とりあえず今のフォーマットのままで、順番を固定したいだけなら
データの初期化(クリア)範囲を集計シート全体から項目行、日付列を除いたデータ範囲に変更するだけでOKだけど。
> 「回」と「分」は別セルにして「♪♪♪」を2セル結合?
このほうが見栄えよさそうです。

フォーム内にないデータは無視した方がよさそうです。
入力がナニカの手違いで入っていたとしても、後々拾えないと困りますから。
分類しきれないものについてはその他の項目があるのでそっちに振り分けてますが、
フォーム内にないデータについては、その他の項目に入れてください。

あと、VBAのサンプルのようなページは検索でいくつも出てきたんですが、
VBAを使用するに当たっての約束事や、初歩的なページでお勧めはありますか?
>646
VBAの勉強したいならこの辺でも見とくれ
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_menu.htm

自分で勉強する気があるなら、君のためにもコード貼るのはやめておくよ。
どちらも>639のをちょこっと変えるだけでできるからがんがれ。
648名無しさん@そうだ選挙にいこう:05/02/16 21:50:21
セルのある範囲を選択しているとき、その範囲の上端行番号や下端行番号、
左端列番号や右端行番号をVBAで取得するにはどうすればいいですか?

例えばA3:D5を選択してる場合は
上端3、下端5、左端1、右端4を取得したいのですが。
今はSelection.Address(, , 0)で返ったセルアドレスを
文字列操作して無理矢理数値を取得しています。
どなたか方法が解る方、教えてください。Excelは2000です。
教えてもらえますか?
B2に秒数「128」を入れて、C3のセルに何分何秒と表示したいのですが
C3に「=CONVERT(B2,“sec“,“mn“)」と入れると、128÷60の値(2.133)が入力されてしまいます。
分+秒で表示したいのですが、どうすれば表示出来ますか?
>>649
いろいろやり方はあるけど、まじめに時刻関数で換算して文字表記するなら
=MINUTE(TIME(,,B2)) & "分" & SECOND(TIME(,,B2)) & "秒"
>>649
=A1/24/60/60
表示形式>ユーザー定義>mm"分"ss"秒" or m"分"s"秒"など
>B2に秒数「128」を入れて
だったね。ゴメン。
=B2/24/60/60  です。
653タオーパイパイ:05/02/16 22:57:23

エクセルの分析ツールを使用してF検定とT検定をするのですが、
以下の値の場合は分析不可能でしょうか?
@   A
  0.44  0.34
  0.34
  0.33
  0.36
  0.31
  0.32
  0.36
  0.29

また、もし出来たとしたら結果を教えて欲しいのですが・・・。
ずうずうしくて本当にすみません
>>648
Range("A3:D5").Select
With Selection
  MsgBox _
  "上端" & .Cells(1).Row & vbLf & _
  "下端" & .Cells(.Count).Row & vbLf & _
  "左端" & .Cells(1).Column & vbLf & _
  "右端" & .Cells(.Count).Column
End With
655648:05/02/16 23:43:39
>>654
どうもありがとうございます。
はじめまして!よろしくおねがいします。
(例)「D:\マイピクチャ\」フォルダの各画像の「ファイルの名前」を一個目から順に
$A$1〜$A$No.のセルに貼り付けるマクロの設定を教えてください。おねがいします。

D:\マイピクチャ\画像1.jpg→$A$1=画像1.jpg
D:\マイピクチャ\画像2.jpg→$A$2=画像2.jpg
D:\マイピクチャ\画像3.jpg→$A$3=画像3.jpg
………
……
657656:05/02/16 23:54:23
すいません。オフィス2003 WinXpです。
>656
Dir()
659名無しさん@そうだ選挙にいこう:05/02/17 00:33:12
>>656

Sub ファイル名取得()
Dim myfileneme As Variant
Dim i As Integer
myfilename = Dir("d:\マイピクチャ\*.jpg", vbNormal)
i = 1
Do While myfilename <> ""
Cells(i, 1) = myfilename
myfilename = Dir()
i = i + 1
Loop
End Sub
>>659
変数宣言を強制にしておいた方がいいかと、、、
661名無しさん@そうだ選挙にいこう:05/02/17 03:42:19
恐れ入りますが>>294が解る方いらっしゃいませんかー
650-651
ありがとうございました。
早速やってみます。
663名無しさん@そうだ選挙にいこう:05/02/17 10:23:50
VBAのフォームでテキストボックスを2つ並べたとき
2つの間に「←|→」こういうサイズ変更のアイコンが出て
自由にサイズを変更できるようにするにはどうすると出来るでしょうか。
664663:05/02/17 11:00:03
>>661
ActiveSheet.PageSetup.RightHeader = "&""Arial""&8 " & Format(Now(), "d/mmm/yyyy")
で出来ると思いますよ
665名無しさん@そうだ選挙にいこう:05/02/17 15:09:24
A.xlsのA1に「=DataSheet!$A$1」という数式が入ってあり
これを同時に開いたB.xlsのA1に全く同じように「=DataSheet!$A$1」と
いう数式を貼り付けたいのですがどうすればいいですか?
貼り付けたら勝手に「=[作業用.xls]DataSheet!$A$1」
という数式になり、貼り付け元のブックとリンクしてしまいます。
B.xlsのA1は同じブック内のDataSheetのA1の値とリンクしたいのですが。。
よろしくお願いします。
666名無しさん@そうだ選挙にいこう:05/02/17 16:44:03
↑一カ所間違えていたので訂正させてください。

A.xlsのA1に「=DataSheet!$A$1」という数式が入ってあり
これを同時に開いたB.xlsのA1に全く同じように「=DataSheet!$A$1」と
いう数式を貼り付けたいのですがどうすればいいですか?
貼り付けたら勝手に「=[A.xls]DataSheet!$A$1」
という数式になり、貼り付け元のブックとリンクしてしまいます。
B.xlsのA1は同じブック内のDataSheetのA1の値とリンクしたいのですが。。
よろしくお願いします。
はじめまして。
ググったり参考書の類を見てみたのですが見つからなかったので、
皆様のお知恵をお貸しください。。

作業グループのヘッダー・フッターを編集する際、
ヘッダーのみ、フッダ−のみを変更させる方法はありませんか?

例えば、フッダ−にノンブルを固定で設定しているグループで
そのグループ内のいずれかのシートのヘッダーに日付を指定した場合、
グループ内のノンブルが全部そのシートのものになってしまうのを
回避したいのですが…。

宜しくお願い致します。
668667:05/02/17 17:19:22
補足です。
Excelは2000、OSはWindows98を使っています。
宜しくお願い致します。
669名無しさん@そうだ選挙にいこう:05/02/17 19:02:11
1つのシートにどれくらいの情報をいれますか?
アンマリ多いとスクロールが必要で見にくいですよね
今のところ実用データで20000行を超えたことはないな。
列はギリギリまで使うことも良くあるけど。
671名無しさん@そうだ選挙にいこう:05/02/17 20:47:08
Excel2000で
最頻値以降の2番目、3番目・・・X番目に出現する
数を求めるにはどうしたらよかとですか?
>>666

1つのセルなら [A.xls] を削除が早いが。
たくさんある式をコピーするなら、
1.気にせずコピーする。
2.Bのブックで 編集ーリンクの設定
を開くとウインドウが表示され、リンク元 A.xlsが出ているはず。これを選択します。
3.右側の「リンク元の変更」を選択し、B.xlsを探し出して選択しOK
で全部の式の[A.xls]がなくなっているはず。

もっと簡単な方法もあるかもだが・・・・・・・

673656:05/02/17 21:08:09
>>659-660
ありがとうございました!
>>671

Countif関数で測定し、Sortするとかは?
>>674
ありがと、なんとなくできそうだ
676名無しさん@そうだ選挙にいこう:05/02/17 21:21:56
>>670
すいません、一つのデータで列や行が多い場合ではなく、
一つのシートにいくつもの違う情報を詰め込む場合です。
たとえば月別の営業売り上げと勤務時間表などを一緒に一つのシートに
入れたりするのか、それとも細かく一つ一つのシートに分けて保存するのか。

そもそも複数の違う表を上下に並べのってあんまり見やすくないか。
セルの大きさも一緒ならともかく。
677名無しさん@そうだ選挙にいこう :05/02/17 21:27:50
ひとつのフォーム内に、テキストボックス1つとボタンひとつを配置します。
ボタンを押すと、エクスプローラ風のダイアログが出ます。マウスをつかって
目的とするファイルを見つけてダブルクリックすると、そのファイルの
絶対パスがテキストボックスに入力されるようにしたいと思っていますが
そのエクスプローラ風のダイアログはどんなコントロールを使えばいいの
でしょうか?
んなの自分で決めろ。
君はママに選んで貰わないとなにも決められないのか?
679名無しさん@そうだ選挙にいこう:05/02/17 22:10:28
ちょっと質問です。
そのセルを参照しているセルを表す関数のようなものはありますでしょうか?
※あるセルを参照している元によって値の変わる計算式を作りたいです。

例えば、そのような働きをするREF()という関数があったとすると
  A         B
1 =ROW(REF())  =A1
2            =A1
3            =A1
と入力すると
  A         B
1 =ROW(REF())  =1
2            =2
3            =3
と表示されるような関数を探しています
>>679
ワークシート関数にはありませんが
ユーザー定義関数を使えばできます。
具体的な方法はググってください。
681661:05/02/17 22:47:04
>>664
ありがとうございます。お手数おかけしました。
これから色々勉強して行こうと思います。
682名無しさん@そうだ選挙にいこう:05/02/17 23:06:13
>>680
おぉ、ありがd

Application.Caller.Address

っていうのを使えばいいんだ

でも

  A            B
1 条件A
2 =ROW(REFROW()) =DSUM(結果,"No",A1:A2)
3              =DSUM(結果,"No",A1:A2)
4              =DSUM(結果,"No",A1:A2)
※REFROWが参照元の行番号を返す

っていう感じで使おうと思ってたから、ちょっとユーザー定義関数だとつらげな気がしてきた・・・
とりあえず、まずはなんとかなるかがんばってみまつ
683名無しさん@そうだ選挙にいこう:05/02/17 23:41:34
ExcelをOLAPツールとして使いたいのですが
参考になるサイトなどありましたら教えてください。
>>679
  A         B
1           =ROW()
2           =ROW()
3           =ROW()

直接 ROW() を使っちゃだめなの?
>>684
>>682

たぶん、実際には、ROW()ではなくて、定数だと思われ
686666:05/02/18 08:52:29
>>672
そういう方法を探していました。
無事解決です。
ありがとうございました。
687名無しさん@そうだ選挙にいこう:05/02/18 14:28:23
二つ教えてください。

1、マクロで特定のシートをすべて他の専用ブックに出力するにはどうしたらいいのでしょうか?
例えばa.xlsのsheet2をb.xlsのsheet1に出力するにはどうしたらいいでしょうか?
b.xlsは無い場合は新規作成、ある場合は上書きをしたいです。

2、マクロで相対パスを使うにはどうしたらいいでしょうか?
例えば、c:\a\hoge.xlsからc:\b\hogehoge.xlsを見たり、c:\a\b\hogehogehoge.xlsを見るなどの場合です。
ドライブは変更する場合もあります。
Windowsの基本的なことになるかもしれませんが、よろしくお願いします。
688名無しさん@そうだ選挙にいこう:05/02/18 14:35:41
今、Excel-VBAを勉強しているのですが、一つ教えてください。
文字を入力したり変更した場合、それを判断する方法はないでしょうか?

何をしたいかと言いますと、文字入力等でシートに変更を加えた状態で、
保存をしないまま別の行動を取ろうとした際メッセージを表示させたいのです。
ですので、「更新フラグ」みたいな物があればそれを判断してMsgBoxを表示させたいなと。
説明が下手ですみません、どうか宜しくお願いします。
689名無しさん@そうだ選挙にいこう:05/02/18 14:49:51
ワークシートをコピーしたら枠の外側(行、列)に+と−1・2・3・4と
出てしまいました
元の戻し方教えて下さい
>>689
「データ」→「グループとアウトラインの設定」→「アウトラインのクリア」
でいいと思うが。
どうやったらシートをコピーしただけで出るんだろう…。そっちが不明。
>>688
Saved プロパティ
>>691
出来ました!っていうか見つかりました!ありがとうございます。
どういうキーワードでググればいいのかも分からなかったので助かりました。
693名無しさん@そうだ選挙にいこう:05/02/18 16:27:15
Excel2003です。
ハイパーリンクにPDFファイルを指定してるのですが、そのセルを
クリックすると一瞬PDFファイルを開いてすぐ消えます。
Acrobatは7です。
どうしたら消えなくなるんでしょうか?
Acrobatの問題?
ちょっと経理の人に質問されて、急ぎの質問になるため、
前スレ・現スレを読み返せないんで既出だったらスマソ。

バージョンはExcel2002。
WindowsはXPだと思う。

(状況の例)
あるセルに「100」を入力。
入力を確定した後で計算式を入力するために”=挿入”ボタンをクリック。
すると、「100」が削除されて「=」が入力されます。

上記の例のようにならないように設定したいそうです。
以前のバージョンでは「100」が残り、
「+」やら「−」やらの計算式が追加出来たようです。

誰か分かる人居ますか?俺も調べたんですが分からなくて。
無理なんでしょうかね?
> 前スレ・現スレを読み返せないんで既出だったらスマソ。

「急がば回れ」という言葉を知らんのか?
どんな事情があろうと最低限のことはやらなくちゃだめ。
君の事情は「初心者でググりかた解らないので全く検索してません」ってのと同じ。
こういう質問の仕方にはレス付かないかレスが遅れることになるよ。
>>694
経理の人に「老犬でも新しい芸を覚えろ」と・・・w
エクセル前から使っているが、そんな使い方知らないし、
意味があるのか?100はどこに代入されるの?
>>695
すみません。気を付けます。

>>696
Excel2000を以前から利用していて、最近2002になったようですが。
元々、計算式は”=挿入”ボタンを使って入力してたようです。

例えばA1のセルに「100」を入力。
その後別のセルを入力した後で、
「100」の後ろに計算式を追加したいと言うことのようです。
以前のバージョンではこのときに、
A1を指定して”=挿入”ボタンを使ってたみたいです。
2002以降ではこういう使い方はやはり無理ですか?
698名無しさん@そうだ選挙にいこう:05/02/18 16:54:31
Excel2000なのですが、SUM関数で指定した範囲内の、例えばオレンジ色のセル内
の数値は加算に含めない、といったような指定方法を教えて頂けないでしょうか
699名無しさん@そうだ選挙にいこう:05/02/18 17:20:26
Excel 2002での事象について質問です。

自分の使用OSはWindowsXPですが、メニュー表示やウィンドウの最大化/最小化の
アニメーション効果は遅くなって気に入らないので、OSの設定や TweakUI を使って
全て無効にしています。

ところが今日、Excelファイルへのハイパーリンクを設定したセルをクリックし、
ファイルを開くだけで、ウィンドウの最小化と最大化のアニメーション効果が勝手に
有効に切り替わってしまう事象に気付きました。これは仕様なのでしょうか?
>>698
ワークシート関数には、セルの背景色を判別できるものはありません。
VBAやユーザー定義関数を使ってください。
701名無しさん@そうだ選挙にいこう:05/02/18 18:45:29
結局>>679のREFを実現するユーザー定義関数が作れず凹み中

>>680を見ると出来ると書いてあるんだけど
 Application.Caller.Address
 DirectDependents
 DirectPrecedents
だと、どれも結局実現できないし・・・

どなたか、ヒントでいいので、よろしくお願いします
>>701
あきらめろ。「できない」が正解。
  A         B
1 =ROW()      =hoge(A1)
2            =hoge(A1)
3            =hoge(A1)

ユーザー定義関数ってこういうふうに使うもんだが。
B列の内容が「=A1」のままでは、A1で何しようと
ユーザー定義関数は使ってないことになる。
704名無しさん@そうだ選挙にいこう:05/02/18 19:08:51
教えてください。

複数名が作業した時間の統計で、
aが22:00から22:30
bが22:10から23:30
cが22:20から23:30
dが22:40から23:45
この時間内で、3名以上が同時に働いていた時刻を求めたいのです。
結果が22:00から22:30までと、22:40から23:30と条件によって複数結果がでますが、
この結果を導き出す計算式が思いつきません。
なにか解決策を教えてください。
>>702-703
Σ(゚д゚)デキナイノカ

アドバイスどうもありがd
とりあえず、他のやり方で問題解決してみまつ
706名無しさん@そうだ選挙にいこう:05/02/18 19:26:40
>>704
数式でやるのは分からないが、以下の手順でどうか?
1.開始時刻の横に+1、終了時刻の横に-1を書いた表を作る。
 a 22:00 1
 a 22:30 -1
 b 22:10 1
 b 23:30 -1
 c 22:20 1
 c 23:30 -1
 d 22:40 1
 d 23:45 -1
2.時刻の列を基準に並べ替え
 a 22:00 1
 b 22:10 1
 c 22:20 1
 a 22:30 -1
 d 22:40 1
 b 23:30 -1
 c 23:30 -1
 d 23:45 -1
3.さらに右の列に、一番上からそこまでの累計値を計算させる。
 a 22:00 1 1
 b 22:10 1 2
 c 22:20 1 3
 a 22:30 -1 2
 d 22:40 1 3
 b 23:30 -1 2
 c 23:30 -1 1
 d 23:45 -1 0
4.あとは自分で考えて。
707704:05/02/18 19:45:40
>結果が22:00から22:30までと
22:20から22:30の書き間違いでした。

>>706
ヒントありがとうございます。
>704
A1:A4がabcdの開始時間 B1:B4が終了時間として
=IF(SMALL(A1:A4,4)>LARGE(B1:B4,4),LARGE(B1:B4,4)-SMALL(A1:A4,3)+LARGE(B1:B4,3)-SMALL(A1:A4,4),LARGE(B1:B4,3)-SMALL(A1:A4,3))
ある列の合計を出したいんですが、その列の中に
#N/Aがあると合計も#N/Aになってしまいます。
列中の#N/Aを0とみなして合計を出すにはどうしたらいいでしょうか?

ちなみに列の数値は関数で引っ張ってきてるので#N/Aになるセルが
変化します。
>>709
SUMIF関数で出せるけど、それ以前に現在#N/Aになってるセルを
IF関数を使って0や""を返すようにするのが基本。
>>710
回答ありがとうございます。
すごい初歩的な質問で恐縮ですが、
最初はIF関数で0を返そうとしたんですが、#N/Aのセルをどうやって
指定するのかが分かりませんでした。
例えばB4が#N/Aだとして、=If(B4=#N/A,0)だと無効になってしまいますよね?
712704:05/02/18 20:52:52
>>708
ありがとうございます。トータルの値はばっちりです。

3つ重なった場合の開始と終了の時刻も表示できたら最高なのですが…。
すんません頑張ってみます。お世話になりました。
713711:05/02/18 20:58:27
あと、とりあえず自力では
=IF(ISNA(B4)=TRUE,0,B4)
ってやることで対応したんですけど、できればISNAって関数使わずに
基本的な関数で対応できないでしょうか?
PDAにエクスポートしたときにISNAがサポートされてないのが難点でして・・・。
>>713
B4が#N/Aになる理由は何よ?
そこの処理をIFでいじれるかもしれないよ。
>>713
それ以前に聞きたいのだが。
SUM関数で合計を出せば、#N/Aは無視してくれないかい?
716715:05/02/18 21:24:33
すまん。勘違いでした。忘れてくれ。
717713:05/02/18 21:34:35
B4が#N/Aになるのは hlookup で無効なデータを検索してるからです。
とある名簿がありまして、その中のランダムな何名かが毎月作業をします。
で、その結果を月ごとの表に入力します。
そういう表が一年分あるんですが、その中のある数値データの部分を
hlookupで名簿のその人の列に返し、その数値の各人毎の合計を出したいんですが、
ある数ヶ月作業をしなかった人はhlookupで参照できないのでその月の値が
#N/Aになってしまうというわけです。

・・・分かりにくくてスミマセン。

>>715
SUM関数で無視してくれないんです・・・
>>713
HLOOKUPでの抽出をPDAでやるの?
抽出結果を参照するだけじゃなくて?
>712
3人以上重なる時が無い場合はマイナスになるけどその処理が抜けていました。
それで気づいたけど時刻表示がマイナスだと#がずらーーっと並ぶんだね。
どちらにせよ4人で3人の場合限定ですから参考程度に。
720713:05/02/18 22:27:28
参照だけじゃなくて、抽出もです。
用途は、ちょっと言いづらいんですが・・・、
PDAでその作業が出来ると助かるんです。
721名無しさん@そうだ選挙にいこう:05/02/18 22:46:35
WindowsXPでXL2003を使っています。

VBA上で新規にブックを作成し、新規ブックの中のSheet1の名前を(hogehoge)に変更。
Sheet("hogehoge")のセル全ての行高さと列幅の変更をしたいと思っていますがうまくいきません。

Sub book_new_sheetname_change_cells_change()
Dim Newbook As Workbook
Set Newbook = Workbooks.Add
Newbook.SaveAs Filename:="新規ブック"

Sheets("Sheet1").Name = "hogehoge"

Worksheets("hogehoge").Activate

ActiveSheet.Rows.RowHeight = 15

Cells.Columns.ColumnWidth = 1.88


End Sub

インデックスの範囲が〜と出てしまい、Excel VBA Parts Collection で見ながらやってたんですが、
どれを組み合わせればいいのか教えてください。
初歩的な質問で申し訳ありませんが教えて下さい。
文字数がセルの幅より多い時、セルの幅を広げずに
セルをまたいで文字がはみでるようにしたいのですが
同じページ内でそのようにできてるものもあれば、
セルからはみださなくて中途半端に途切れてしまうものも
ありまして困っています。
どうすればセルの線にはばまれることなく文字を
表示させることができますか?
よろしくお願いします。
>>722
右隣のセルになにも入ってない場合に限り、文字が隣にはみ出る。
それ以外はセル幅を超えて表示することはない。
>>723
ありがとうございました!
>697
2000でやってみたところほんとにできた。
コマンドの「=」ボタンじゃなくて数式バーの左にある「=」ね。
これをクリックすると数字の前に「=」がついて関数が選べるようになる。
こんな使い方したことないから知らんかった。

自宅も会社も2002環境じゃないからわからんなー。
F2使わせたら?
エクセル2000で
A列B列
あ あ
い お
う く
え こ







のようにあるB列のセルを
あ あ


え    
お お


く く

こ こ

みたいにAと同じ内容のところに移動させるにはどのような
方法がありますでしょうか?
>>726
VBAのEnd(xlUp)でB列の一番下の値を変数に格納して、セルの値を消去
For NextやFindで、A列の一致行を探してその行のB列に取得した変数の値を挿入。
を繰り返し。

以上。
具体的なVBA記述が解らなければGoogle先生にでも聞け。
表示→ツールバー→コントロール ツールボックスorフォームで
作成できる、「リストボックス」というものがありますが、
このようなオブジェクトを使わず、直接セル単位に「リストボックス」を
設定することは可能なのでしょうか?
よろしくお願いします。
729自己レス:05/02/19 07:23:39
>>728
入力規則で可能ですね。レス抽出したらすぐわかりました。
駄レス申し訳ありませんでした。
730名無しさん@そうだ選挙にいこう:05/02/19 12:41:43
xmlファイルをexcelで表示させたいのですが
もしxmlファイルが外部実体参照している場合は
表示できないのですか?
731名無しさん@そうだ選挙にいこう:05/02/19 13:32:38
>>726
まず、C1に
=VLOOKUP(A1,B:B,1,FALSE)
と入力し、下にコピー。
次に、D1に
=IF(ISNA(C1),"",C1)
と入力し、下にコピー。
最後に、D列をコピーして、
B列に形式を選択してペーストで値のみを指定。
732名無しさん@そうだ選挙にいこう:05/02/19 15:59:01
申し訳ありませんがどなたかご存じなかたお教えくださいませ。
EXCEL2003でファイル→送信→メールの宛先(添付ファイル)
を利用しようと思うのですが、ボタンが無効化(グレーになって押せません)
されてしまいます。いろいろと探しましたが答えがでません。
どなたかご存じの方お教えくださいませんでしょうか。
よろしくお願いいたします
733名無しさん@そうだ選挙にいこう:05/02/19 15:59:46
日付で分けたいくつかのファイルを、マクロで指定して開きたいのですが
どうしたらいいのかさっぱりです

ファイル名は
0217.xls
0218.xls
0219.xls




な感じ
>>725
そっか〜。やっぱそういうやり方しか無い見たいだね。
Yahooやらで色々調べても見付からないし。
レスありがとう。
735721:05/02/19 16:22:45
sheet上にコードを間違って書いてました。
moduleに書いたら何もせずに動きました。
凡ミススイマセンでした。
736名無しさん@そうだ選挙にいこう:05/02/19 17:02:05
秒を時分秒にしたいんだけど、どうやるんだろう・・・
そういう関数ってないみたいで、組み合わせで対処?
>>736
秒はどんな風にはいってるの?
時分秒はどういう形で表示したいの?
表示形式はどうしてるの?

具体的に書いてあったら、関数も提案できるけど736じゃ無理。
738名無しさん@そうだ選挙にいこう:05/02/19 17:14:35
>>736
A1に秒で入ってるとしたら、
B1に=A1*"0:00:01"と入れて、
B1の書式設定を[h]:mm:ss
などにする。
739名無しさん@そうだ選挙にいこう:05/02/19 19:27:25
セルの周辺4辺に罫線を引くのに、こんなコードを書いています。

Range("A1:C5").Select
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous

すっきりさせるにはどんな書き方がありますか?
740739:05/02/19 19:28:28
↑セルの周辺4辺ではなくて、選択範囲の周辺4辺でした。
Range("A1:C5").BorderAround LineStyle:=xlContinuous
742名無しさん@そうだ選挙にいこう:05/02/19 22:31:57
横1列が1つのデータのセットとなる

Dat1 Dat2 Dat3 Dat4
A1  B1   C1  D1
A1  B2   C1  D2 
A2  B2   C1  D2
A2  B2   C10 D3

みたいな表があったときに、対象となるデータ(列)を絞り込む

Dat1 Dat2 Dat3
A1   
A2          ※対象となるデータを絞り込む条件を記載する条件表(記載がないときは全て)

のような条件表があったとします。
このとき、対象となる条件に一致するデータ(列)の個数をDat4で分類して表示したいと思っています。上の例なら

Dat4
D1 1
D2 2
D3 0

という感じですが、これを実現するのには、何が一番良いでしょうか?
一応、自分の考えでは
 DCOUNT → 条件式がDat4の数だけいる(Dat4の要素は100個とかあるので、ちょっと却下)
 配列数式 → 条件式の表をうまく配列数式に変換できないような・・・
という感じで、ちょっと手詰まり状態です
743名無しさん@そうだ選挙にいこう:05/02/19 22:35:48
文字幅を変更する方法ってありますか?
>>743
・フォントサイズを小さくする
・文字幅の狭いフォントを使う

ちなみにExcelはワープロじゃないんだから、
文字の高さはそのままで幅だけ縮めるなんてことはできないよ。
745743:05/02/19 22:51:06
まじですかぁ〜〜
エクセルってなんでもできると思ってました。
教えてくれてありがとう。
746743:05/02/19 22:58:59
異なるブックのワークシートを同時に複数表示する技ってありますか?
>>746
ウィンドウ→整列
>>745
ワードアートを使うっていう手はあるよ。
正統かつ日常的な文字の入力の仕方にはならないけどね。
749743:05/02/19 23:11:59
うほっ!
でけた!
サンクスです。
750743:05/02/19 23:18:12
ワードアートなら文字を引き伸ばせますからねえ。
普通のセルもそういうことができればいいんですけど。
エクセルって以外と汎用性ないのかな?
751名無しさん@そうだ選挙にいこう:05/02/19 23:18:44
winXP Excel2002

UserForm1にMultiPageを3ページ配置しております。
MultiPage外のUserForm内に、CommandButtonを3つ配置しているのですが、
MultiPage1がアクティブなら、CommandButton1のみが動作対象になり、
CommandButton2・CommandButton3は、動作対象外になる。
MultiPage2がアクティブなら、CommandButton2が動作対象になり、
CommandButton1・CommandButton3は、動作対象外にしたいのです。

動作対象外のCommandButtonは、フォントの色がグレーになるような感じで、
動作対象外であることをユーザーに分かるようにさせたいのですが、
このようなことは、VBAで可能なのでしょうか?

よろしくお願い致します。
>>751
面倒だけどマルチページのChangeイベントで
ボタンをEnableを変えるしかないんじゃない?
エクセルはソフト開発が目的のじゃないから
ある程度はあきらめるしかないと思う。
>>742
ピボットテーブルでどうでしょうか?
754751:05/02/19 23:48:33
>>752
レスありがとうございます。
難しいんですね。

>面倒だけどマルチページのChangeイベントで
>ボタンをEnableを変えるしかないんじゃない?
↑色を変えられるということなのでしょうか?
ヘルプ等で調べてみたのですが、理解できませんでした。

何らかの形で、MultiPageに対応するCommandButtonを
ユーザーに理解させたいのですが、他にいい方法などは
ありますでしょうか?

記述のポイントなど教えていただけ、非常に助かります。

お分かりになる方がいらっしゃいましたら、ご教授願います。
よろしくお願い致します。
>>754
ボタンのEnableプロパティを変えるコードを
マルチページのチェンジイベントに自力でかけ。
一行毎に

黄色

黄色

黄色

と行の背景色を変更したいのですが、
簡単に出来る良い方法はありませんか?
>755
同情するよw
>756
1行黄色くして、黄と白の2行選択コピー。
目的の行全体を選択して書式貼り付け。
>>758
ありがとうございました
常識なのかもしれないけど、物凄く助かりました。
>>756
VBA:For_Next Step 2
条件付き書式:=MOD(ROW(),2)
質問です。
001.xls〜100.xlsという風に、
ファイル名が連番になってるファイルが100個あるんですが、
下記のようにこの100個のファイルの中からそれぞれ同じ1つのセルのデータを
別のエクセルのファイルでまとめたいんですが、
\\???\???\[001.xls]Sheet1'!$A$1
\\???\???\[002.xls]Sheet1'!$A$1
\\???\???\[003.xls]Sheet1'!$A$1
   ・
   ・
\\???\???\[100.xls]Sheet1'!$A$1
こんな感じでオートフィルでいけるかなとおもったら、いけなかったので、
なんかいい方法ないでしょうか?
できればマクロは使いたくないんですが・・・。
>>761
INDIRECT関数

使い方はヘルプ参照
リストボックスなどのrowsourceに、
異なる行のデータをまとめて設定する方法があれば教えてもらいたいのですが

ListBox1.RowSource = "A1:A10"+"D1:D10"
みたいなことがしたいです
764763:05/02/20 14:30:04
行ではなく列ですね
すいません
765名無しさん@そうだ選挙にいこう:05/02/20 16:04:25
エクセルで変数を使うときに

HENSU(1)=10 HENSU(2)=20 HENSU(3)=30

みたく変数名の後にカッコつけて使いたかったのですが、上手くいきません
どうしてですか?
>>763
RowSourceを使う方法はわからないです。
AddItemを使えば可能です。
>>765
うまくいくよ。
768名無しさん@そうだ選挙にいこう:05/02/20 16:47:14
<小計> 23
A 5
B 3
C 15
<小計> 28
A 19
B 9
<小計> =\AAA+\BBB ←Xセル
A \AAA
B \BBB

データでどんどん足していく表があるんですが、
<小計> から<小計> までの長さ可変の行データを
足したものをXセルに自動的に出すってできますか?
>>766
ありがとうございます
実はColumnCountが1ではないので少しややこしいですが、もがいてみます
>>768
それまでの入力データと1行以上あけて次のデータが入っていれば、
その計算したいデータのすぐ下のセルでオートSUMボタン(Σ)を押すと、
自動でSUMの式を入力してくれるけどね。

たとえば、A1からA10までデータ入ってて、A11空白、A12に5、A13に6と
入ってたら、A14でオートSUMすると=SUM(A12:A13)と出て、確定すると
11と表示されます。
771名無しさん@そうだ選挙にいこう:05/02/20 17:52:09
>>770
レスありがとうございます。

SUMボタンを押すのではなく、自動でXセルに表示させたいのですが
それは無理でしょうか?
>>771
自動化するならVBA。
ヘルプでも読みながら書いてみな。
>>771
自動で処理しようとすると、VBAになるね。
774名無しさん@そうだ選挙にいこう:05/02/20 18:02:19
>>772-773
ありがとうございます。しらべてみます
775名無しさん@そうだ選挙にいこう:05/02/20 18:11:35
オートフィルって対象データを追加しても、自動更新されませんよね。
VBAで更新ボタンを作ろうと思うのですが、
なんという関数を使えばいいんですか?
776名無しさん@そうだ選挙にいこう:05/02/20 19:05:52
エクセル2002でユーザーフォームのオブジェクトを
グレーアウトさせて操作を受け付けなくさせるにはどうすればいいですか?

オブジェクト.Visible = False
だと非表示にはできるけど、そうではなく
表示させた状態で、CheckBoxやTextBoxの通常白くなってる部分をグレーにして
操作を受け付けなくしたいのです。
>>776
Enabledをfalseにする。
>>777
ありがとうございました。

しかしなんでVBAヘルプのユーザーフォームの部分ってあんなに見づらいんだ?
有効プロパティも名前が一覧させるだけで、ジャンプしないと機能概要も見れないし。
779名無しさん@そうだ選挙にいこう:05/02/20 20:29:22
Excel2002において、可変長の配列を返すユーザ定義な配列関数を作りたくなりました。
クエリによる外部データ取り込みに引数を付けられるようにした感じの物です。
こいつをワークシート上に出力させると、以下のようになり旨くありません。

1.配列の要素が一つしかないと、配列数式を定義したセル全てに同じ値が書き込まれてしまう
2.配列の要素数が少ないと、足りない部分に対して#N/Aが出てしまう
3.配列の要素数が多いと、配列数式を定義したセルからはみ出す部分は表示されない

状況の再現方法はこんな感じです。
1.:2×2のセルを選択し、={1}と打ち込んでCtrl+Shift+Enter
2.:3×3のセルを選択し、={1,2;3,4}と打ち込んでCtrl+Shift+Enter
3.:1つだけセルを選択し、={1,2;3,4}と打ち込んでCtrl+Shift+Enter

関数が返す値により出力するセルをクエリによる外部データ取り込みのように
伸び縮みさせたいのですが、何か方法はありますか?

>>775
こんなん?
ttp://mermaid-tavern.com/script/vba1/vba1_20.html
780名無しさん@そうだ選挙にいこう:05/02/20 20:31:06
1/1 A \100
1/2 B \200
1/3 A \400
1/5 C \800
っていう表があります。

1/1 A \100
1/3 A \400
というデータを別のシートに抜き出したいです。どうすればいいんでしょうか?

VLOOKUP関数を使って出来るかと思ってたんですが、
Aが二つあるせいかできません。
オートフィル&コピー
or
フィルタ オプション
> 781訂正
オートフィルタ&コピー

の間違いだったんだけど、規制で書き込めない(/_;)
783751:05/02/20 21:01:50
>>752>>755さんのアドバイスによりコードを書いたのですが・・・
Private Sub MultiPage1_Change()
With CommandButton2
.Enabled = Not .Enabled
End With
With CommandButton3
.Enabled = Not .Enabled
End With
End Sub
上記のような動作で、MultiPageの各Pageごとで、
イベントを発生させることは可能でしょうか?

よろしくお願い致します。
>>783
MultiPage1.Valueで分岐。
>>782
できましたありがとうです。
786751:05/02/20 21:40:18
>>783
レスありがとうございます!
あまりVBAに詳しくなく試行錯誤してみたのですが、
うまくできません。
もう少しヒントをいただけないでしょうか?

なにとぞよろしくお願い致します。
787751:05/02/20 21:40:58
↑すみません。
アンカー間違いました。。。
>>784さんへのレスです。
788名無しさん@そうだ選挙にいこう:05/02/20 21:46:26
VBAで、ある文字列を含むセルが存在する場合はその列を削除する
というものを作りたいのですが、どのように記述すればよいのでしょうか?
>>788
Columns(対象範囲.Find("*hoge*").Column).Delete
一番簡単な方法はこれかな。

一括して処理するなら
For Each オブジェクト変数 In Cells
で、If使って条件にあった列を削除とか。

但しコレクションにCellsをそのまま使うと
16777216セル全検索するので時間掛かるけど。
790名無しさん@そうだ選挙にいこう:05/02/20 22:33:42
ブックを閉じようとすると、イルカが 「クリップボードに大きな〜〜」と聞いてきます
黙らせる方法はないですか?
イルカさくじょ
イヤです
>>790
クリップボードを消すマクロをGo!
あるいは空白のセルをコピーしてGo!
>>788
Set c = ActiveSheet.UsedRange.Find("*hoge*")
If Not c Is Nothing Then
 Do
  ActiveSheet.Columns(c.Column).Delete
  Set c = ActiveSheet.UsedRange.Find("*hoge*")
 Loop Until c Is Nothing
End If

こんなもんでいかが?
795788:05/02/21 00:13:31
>>794

できました!ありがとうございました!
>787

Select Case MultiPage1.Value
Case 0
  CommandButton1.Enabled = True
  CommandButton2.Enabled = False
  …
Case 1
  …
コマンド牡丹のデフォ設定も忘れずに。
質問です。
Excelで累乗根の計算をしたいのですが、
「入力した数式にはエラーがあります。」
と出てしまい困っています。

=10000~(1/20)

こんな計算式で入れているのですが「10000~」の部分がエラーになっています。
どのようにしたら計算できるのでしょうか、ご教授お願いします。

Excelは2000、OSはwinXP(pro)を使っています。
=10000^(1/20)
でもでますか?
>>797
~ じゃなくて ^
>>798
できましたorz
すごい初歩的なところだったようですね、早いレスありがとうございます。
>>799さんもありがとうございますorz
「^」で累乗根の計算ができた!
Webクエリ機能を使って外部からデータを取り込みたいのですが、
これについて詳しく載っている本、サイトなどありましたら教えてください。
とりあえずやってみはみたものの、余計なデータまで読み込んでしまうし、
その他いろいろと改良したい点が多いので。
ソフトはExcel2000です。
804名無しさん@そうだ選挙にいこう:05/02/21 13:08:28
直接セルに

 =DATE(A1,B1,C1)

と入力したら、ちゃんと日付がでてくれるのに

マクロで変数にいれようとすると
コンパイルエラーがでてしまう、一体何故なんです
>>804
正しく書けてればうまくいくはず。
どんなマクロ書いたの?
806名無しさん@そうだ選挙にいこう:05/02/21 13:20:12
A1 に 2005
B1 に  2
C1 に 21

と、いれておいて

RANGE("D1")=DATE(A1,B1,C1)

変数=DATE(A1,B1,C1)

をやろうとすると
コンパイルエラーで赤字になります、書いたのはこれだけ

>>806
なんでA1,B1,C1にはRangeで指定しないんですか?
それとワークシート関数とVBA関数は共通の物もあるけど
違うものもありますよ。
年、月、日から日付を表すシリアル値を返すVBA関数は
DateではなくDateSerialです。
因みにVBAでのDateはワークシートでのTODAY()に該当します。

で、具体的にはこんな感じ
Range("D1") = DateSerial(Range("A1"), Range("B1"), Range("C1"))

出来れば.Valueプロパティを指定した方がいいけど。
808804:05/02/21 13:54:00
できました!

かなり見当違いな間違いだったんですね
809名無しさん@そうだ選挙にいこう:05/02/21 14:46:56
ユーザーフォームのテキストボックスの中に,
default値を最初から入力しておくにはどうしておけば
よいでしょう?
>>809
textに最初から文字入れとく。
他のエクセルのファイルから数値を取得するにはどのようにすればいいでしょうか?
関連づけ(リンク)による方法ではなく、数値だけを取得したいです。
結構な数なので手作業ではなくVBAでまとめて処理したいのでよろしくお願いします
812808:05/02/21 17:11:38
ありがとうございます。
もう一つあるのですが,
2 + (i - 1) * 72行, 2列のセルをコピーしようとして
for i = 1 to ・・・
Cells(2 + (i - 1) * 72, 2).Select
  Selection.Copy
・・・
next i
とやると,「RangeクラスのSelectメソッドが
失敗しました。」となってしまいます。
(いつもそうなるわけではないようです。)
XP,Excel2002です。
普通列がABCじゃなくて123て表示されるんですけどABCに出来ますか?
814813:05/02/21 17:21:32
スレ汚しすいません、テンプレにありましたね
>>811
ヘルプに書いてある

>>812
> Cells(2 + (i - 1) * 72, 2).Select
>   Selection.Copy
とりあえずこの2行は
 Cells(2 + (i - 1) * 72, 2).Copy
で。
あと、コードは変に省略しないできちんと書いた方がいい
ついでに、他に干渉しないならForを1 Toではなく0 Toにすれば-1を省ける。
それ以上のことは省略されたコードを見ただけじゃわからん。
>>811
ファイルを開く。
変数にRange("欲しいセル").Valueを格納。
どこかに出力。
ファイルを閉じる。
あと必要回数繰り返し。
をVBAで書く。
817奈菜氏:05/02/21 18:37:00
エクセルの分析ツールをアドインするには必ずCD−ROMが必要ですか?
必要です。
819807:05/02/21 18:56:41
(さっき808としたのは807です。すみません。)
データを甲シートから抜粋し,乙シートにはりプリントするマクロです。
たびたびすみませんが,以下のような場合はどうすればよいでしょうか。
Dim i As Integer
For i = 1 To Application.WorksheetFunction.RoundUp _
((Worksheets("甲"). _
Cells(65536, 2).End(xlUp).Row - 1) / 72, 0)
Sheets("乙").Select
Cells.Select
Selection.ClearContents
Sheets("甲").Select
Cells(2 + (i - 1) * 72, 2).Copy
Sheets("乙").Select
Range("A2").Select
ActiveSheet.Paste
Sheets("甲").Select
Application.CutCopyMode = False
Selection.Copy
Cells(2 + (i - 1) * 72, 5).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("乙").Select
Range("A6").Select
ActiveSheet.Paste
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next i
820名無しさん@そうだ選挙にいこう:05/02/21 19:04:35
1つのグラフシートに複数のグラフを入れたいのですが(合計を棒グラフ 内訳を折れ線グラフ
)追加方法が分かりません。
ちなみにOsはマッククラシック(9)で、エクセルは2001です。
御存知の方よろしくお願い致します。
821名無しさん@そうだ選挙にいこう:05/02/21 19:12:57
自分もグラフで迷い中
マクロでグラフの内容を変更したいのですが、

ActiveChart.SetSourceData Source (←データの範囲?)は Rangeと変数で指定出来そうなのですが、

ActiveChart.SeriesCollection(1).XValues (←項目軸ラベルに使用?)の指定方法がさっぱりです

='xxxx'!$Z$21:$AE$21 ←これなんなんですか?
>>819
Dim i As Integer
With Worksheets("甲"): For i = 1 To (.Cells(65536, 2).End(xlUp).Row + 70) \ 72
 Sheets("乙").Cells.ClearContents
 Sheets("乙").Range("A2").Value = .Cells(2 + (i - 1) * 72, 2).Value
 Sheets("乙").Range("A6").Value = .Cells(2 + (i - 1) * 72, 5).Value
 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next i: End With

乙シートに貼るデータってのが値のみでいいならこれで行けると思うけど。


> Sheets("乙").Select
> Cells.Select
> Selection.ClearContents

マクロの記録使ってるんだろうけど、こういうのも無駄。
>シート"乙"を選択して→全てのセルを選択して→選択範囲の消去
なんてやるより
 Sheets("乙").Cells.ClearContents
>シート"乙"の全てのセルを消去
ってやった方がいいだろ。
.Pasteの場合は例外だけど、たぶん.Paste必要無いような気がするし。
823751:05/02/21 19:58:37
>>796
ありがとうございます!!
感動しました!!!!
>>819
>>822さんに追加
Forで繰り返しても貼るセルはA2、A6限定なのでClearする必要ない希ガス。
マクロを実行する前に、乙シートのA2、A6以外にデータがある場合でも、
Forの前に1回Clearするだけでいいでしょう。

それと、甲はWorkSheetsで乙がSheetsなのも気になる。
グラフシートじゃないのでどっちでもいいが、統一しといたら?
>>824
確かに。
やっぱ他人のコードを手直しすると不備が出るな。(言い訳
あとSelect使ってないからSelectedSheets.PrintOutもまずいよな。
ってことでこんな感じか?

Dim i As Integer
With Worksheets("乙"): .Cells.ClearContents
For i = 1 To (Worksheets("甲").Cells(65536, 2).End(xlUp).Row + 70) \ 72
 .Range("A2").Value = Worksheets("甲").Cells(2 + (i - 1) * 72, 2).Value
 .Range("A6").Value = Worksheets("甲").Cells(2 + (i - 1) * 72, 5).Value
 .PrintOut Copies:=1, Collate:=True
Next i: End With
スレ違いかもしれませんが教えてください。
数日前まで使えていたエクセルが急に開けなくなってしまい、
「アプリケーションの関連付けを行ってください」とエラーが出てしまいます。
関連付け、はどのようにやればいいのでしょうか。
よろしくお願いします。
827809:05/02/21 20:54:47
(807とさっきしたのは809の間違いです。たびたびすみません)
ありがとうございます!
 なお,いろいろ自分でも試行錯誤したのですが,
>>815さんのご指摘通り,
Sheets("甲").Select
Application.CutCopyMode = False
Selection.Copy
Cells(2 + (i - 1) * 72, 5).Select

ThisWorkbook.Sheets("甲").Select
Application.CutCopyMode = False
Selection.Copy
Cells(2 + (i - 1) * 72, 5).Select
とThiswookbookを省略したら,うまくいくときと
うまくいかないときがあるようです。
Application.CutCopyMode = False
も不要ですね。
828奈菜氏:05/02/21 20:56:57
>>818  三級〜。
>>826
ファイルの拡張子が消えていないか?
>>829
きゃ〜!!すごい!!拡張子消えてました、つけ直して今見ています。
本当にありがとうございました、助かります。
こういうことはよく起こりうることなのですか?
UserForm上にあるテキストボックスに入力した文字列を、VBA上から新規に作成したブックの、
特定のシート上の特定セルに入力したいんですが、うまくいきません。
なんか、ヘルプをみても解りづらく、ぐぐってみても単純すぎるのか見つけることができませんでした。
どうしたら、うまくいきますか?
832奈菜氏:05/02/21 21:40:11
って、誰か分析ツールできる人いませんでしょうか。。。
>>832
って、なんでExcel使ってるのにCD無いんですか?
割れですか?
そういう人には誰も答えませんよ。
>>831
Changeイベントを使用する。

Sub TextBox1_Cange()
Sheets("hoge").Range("A1").Value = TextBox1.Value
End Sub
俺は分析ツールを追加するときにCDの挿入は必要なかったけどな・・・
インストールファイルを残しておいたからかな?
836831:05/02/21 22:24:11
すいません、言葉足らずでした。

TextBoxのChangeイベントが起きるときにはBookの作成が済んでいません。
複数のTextBoxへの入力

Book作成ボタンのClickイベントで標準モジュール上にあるBook作成用コードを起動

作成用コード内で罫線情報やセル結合を行う

最後のセル結合なんかと同じタイミングでTextBox上のデータを入力したいのですが、
どうしたらいいでしょうか?
>>836
Book作成ボタンのClickイベントの最後に>834をするのは?
838名無しさん@そうだ選挙にいこう:05/02/21 22:40:38
>>833
中古で買ったPCにCDが付いて無かったとか
友人から本体のみ譲り受けたとか、CDが無い場合はたくさんあるから
CDが無い→即われずってのはどうかと思う
839831:05/02/21 22:41:28
おお、即レスアリガト!(´▽`)です。

何か難しく考えてたみたいですね。それで一度やってみます。

自分的には変数に文字列を入れて、とか考えてましたが、そんな方法でもできますか?
840名無しさん@そうだ選挙にいこう:05/02/21 22:44:05
すみません、教えて下さい。
「myu」という文字を入力しても「my」になってしまいます。
何故なのでしょう?
>>839
できるけど変数に入れる意味があるのかは
今までのレスだけではわからん。
>>838
> 中古で買ったPCにCDが付いて無かったとか
> 友人から本体のみ譲り受けたとか、
どちらもCDごと購入、又は譲渡された場合以外は割れですよ。
Excelのライセンス規約をご存じないんですか?
>>840
ツール=>オートコレクト=>入力中に〜のチェックをはずす。
844831:05/02/21 22:50:02
>841
今VBA(というかExcel自体も)勉強中なので、変数を使ったやり方も教えて欲しいです。
>>840
Excelのオートコレクトに
「myu→my」があるから。
ツール > オプション > スペルチェック > オートコレクトオプション
の該当項目を削除するか、オートコレクト自体を無効にするか
「m u F2 ← y」などと打てばOK。
846840:05/02/21 22:56:32
>>843さん >>845さん

迅速なお返事ありがとう御座いました(><)
仕事で入力出来ずおろおろしてました。
ありがとう御座います。
これで帰れる・・・・(T_T)
>>844
教えるほどのものでもないと思うけど・・・
>>838
奈菜氏の自作自演か?
ま、他人だとしても自演だとしても恥ずかしい奴だな。
849名無しさん@そうだ選挙にいこう:05/02/21 23:37:36
こんばんわ。
EXCELだと列の数が最大256までしか扱えませんが、
あるデータが1000列くらいのCSV形式(カンマ区切り)
となっており、EXCELで整理できずに困っています。
ルーチン的にこのファイルは発生するので、なるべく
お手軽にこのCSVファイルをEXCELの複数ブックに分割
したいのですが、よい方法はないでしょうか?一番いい
のは、256列以上のテーブルを扱うことが出来るソフト
があればいいのですが、どなたかご存知でしたら教えて
いただけると助かります。コレがあると切り取って手軽
にEXCELに貼り付けれると思うので。
>>849
こんばんは。
シーケンシャルモードでcsvを開いて、
256個ずつシートを分けて値を振り分けていけばいいんじゃないかな?
単純に1〜256列目はSheet1、257〜512列目はSheet2ってことでいいなら
この方法でいけると思うけど。
>>844
>>847のいうとおりだけど、敢えて書くと、

Sheets("hoge").Range("A1").Value = TextBox1.Value

Buf = TextBox1.Value
Sheets("hoge").Range("A1").Value = Buf
と分解するだけだけど。

ただし、変数を経由するとその型指定をどうするかが問題。
文字とか数字とか固定でなければVariant型で宣言することになるね。
852名無しさん@そうだ選挙にいこう:05/02/22 00:03:55
>>850
ありがとうございます。
頂いたアドバイスをヒントにベクターで調べてみると
http://www.vector.co.jp/soft/win95/business/se129041.html
みたいなのはあったのですが、なんだか少し違います。
VBAの苦手な私としてはなるべく近いものがあれば手を加えるのも楽かなと。。。
ワガママ言ってすいません。
>>849
アクセスは持ってないのか?
>>853
JETもODBCのcsvドライバも列数256までっつー仕様の模様。
>>852
1〜256列目はSheet1、257〜512列目はSheet2って感じで良くて
値に , が入ってなければ、予め新規ブックに最大列数/256の空シートを用意しておいて
Sub foo()
 Dim hoge As String, huga As Variant, c As Integer, r As Long
 Application.ScreenUpdating = False
 Open "csvファイルパス" For Input As #1
 r = 1: Do Until EOF(1)
  Line Input #1, hoge
  huga = Split(hoge, ",")
  For c = 1 To UBound(huga)
   Worksheets((c + 255) \ 256).Cells(r, c - (c - 1 \ 256) * 256).Value = Replace(huga(c - 1), """", "")
  Next c
 r = r + 1: Loop
 Close #1
 Application.ScreenUpdating = True
End Sub

ってな感じでいけると思うけど。
うちにはでかいcsvファイルは無いのでコレで動くかどうかはわからないけど
やり方としてはこんな感じでいけるはず。あとは自分で修正してくれ。
間違い発見。
7行目の
For c = 1 To UBound(huga)

For c = 1 To UBound(huga) + 1
でよろしく。(他にも間違いありそう…
857名無しさん@そうだ選挙にいこう:05/02/22 01:03:37
>>855丁寧なご指導ありがとうございます。
Worksheets((c + 255) \ 256).Cells(r, c - (c - 1 \ 256) * 256).Value = Replace(huga(c - 1), """", "")

にて「アプリケーション定義またはオブジェクト定義のエラーです」とのメッセージが出ます。
858857:05/02/22 01:17:48
こんなの見つけました!ありがとうございます!今度は教えていただいたヒントを基に自分でマクロを組んでみようと思います。
http://www.vector.co.jp/soft/dl/win95/business/se275375.html
>>857-858
一応こっちも修正して動作確認したので貼っておく。
Sub foo()
 Close #1
 Dim hoge As String, huga As Variant, c As Integer, r As Long
 Application.ScreenUpdating = False
 Open "z:\Book1.csv" For Input As #1
 r = 1: Do Until EOF(1)
  Line Input #1, hoge
  huga = Split(hoge, ",")
  For c = 0 To UBound(huga)
   Worksheets((c + 256) \ 256).Cells(r, (c Mod 256) + 1).Value = Replace(huga(c), """", "")
  Next c
 r = r + 1: Loop
 Close #1
 Application.ScreenUpdating = True
End Sub
>>858
これ使うと、csvの保存時、何度も保存について聞いてこないかな?
861名無しさん@そうだ選挙にいこう:05/02/22 09:17:14
sum の結果がデータと連動しなくなってしまいました。たとえば
500
200
700

となってるところが、
800
200
1000
と変わるはずなのに、
800
200
700
のままになってしまいます。Excel2000 使ってます。
>>861
結果だけでどう答えろと?
863861:05/02/22 09:34:16
いやもちろん元の通常の状態に戻ってもらわないと使い物にならないです。
864861:05/02/22 09:40:47
いつのまにか勝手にオプション設定の計算方式が
自動→手動になっていたようです。
自動にしたら通常の状態に戻りました。
しかしなんで勝手に手動になったんだろうか???
なにかショートカットキーで設定できるようになっていて間違って
押したのでしょうか
すいません、質問させていただきます。
LooKUP関数だと、ひとつの項目に対して、ひとつしか値を引き出せない
みたいなのですが、
たとえば、

|A |B|
1|北海道|熊|
2|新潟県|米|
3|富山県|薬|
4|沖縄県|酒|
5|北海道|鹿|
という表があって、関数で、
      A B
1|北海道|熊|鹿|

答えの並び方た縦でも横でもかまわないのですが、
という感じの複数の答えの抽出が出来る関数はありますか?
ない場合は何か方法はないでしょうか?

>>865
関数はない。
方法はVBA。
かな〜り初歩的な質問かもしれないが
タスクバーに表示されるファイル名が
先にMicrosoft Excel − **となるのを
** − Microsoft Excelと逆にしたいんだが。
ワードは初めからこんな形になってるのに何故だ?
庶民代表 多田 
868名無しさん@そうだ選挙にいこう:05/02/22 14:06:43
>>865
 都道府県名でソートじゃだめなの?
表と質問の意味がいまいちわからん。
>>867
仕様です。

Excelには外枠があるから。
Excelの外枠の中にBook1(例)が表示されている
状態を示しているからその順番なんですよ。

中のbookの最大化を解除してみな。
タスクバーからファイル名が消えるから。
>>867
VBAで出来るよ。
全く同じ事を考える人は多いみたいで
方法を解説してるところもたくさんあるからググってみな。
871名無しさん@そうだ選挙にいこう:05/02/22 16:27:11
セルに入力できる値を制限し、数種類の選択肢から選ばせるにはどうすればよいのでしょうか?
他の方の作ったワークシートを使用しているのですが、未だにどうやって作るのか不明です。
BVSなどは使って居なさそうなのですが・・・なにかあるのでしょうか。
>>871
[データ] > [入力規則] > [入力値の種類]
リスト

ってかBVSって何?
まさかVBAのこと?
だとしたら1文字も合ってないわけだが・・・
873名無しさん@そうだ選挙にいこう:05/02/22 18:24:20
ある範囲のセルだけに入力したいんですが、入力を確定した時のカーソルの移動を
その範囲の端まで行ったら次の行にジャンプさせる方法ありますよね?
以前できた気がする。
教えてくDさい
>>873
シートの保護のオプションで
□ロックされたセル範囲の選択
のチェックを外せば書式設定でロック解除した範囲内のみで
入力位置が移動するけど、ロックされたセルは一切選択出来なくなる。

他のセルも選択したいけど、入力確定の場合のみ
移動方法を変更したいってならVBA。
875名無しさん@そうだ選挙にいこう:05/02/22 18:34:46
テストの単語を覚えるために単語をランダムに出現させてセルに答えを入力した後、解答が出るようにする方法はありませんか?
>>874
ARIGATOU!!
>>875
RAND、INDIRECT、VLOOKUP、列の非表示

以上。
878名無しさん@そうだ選挙にいこう:05/02/22 20:40:42
Dim Newbook As Workbook
Set Newbook = Workbooks.Add
Newbook.SaveAs Filename:="ほにゃらら"

こんな感じで新規にファイルを作成しています。
これだと、カレントフォルダに"ほにゃらら.xls"が保存されてしまいます。
"ほにゃらら"も、条件によって"ほげほげ"に変化したりするんですが
これをダイアログを出して保存先の指定をしたいのですが、どうしたらいいでしょうか?
>>878
Application.GetSaveAsFilename
880878:05/02/22 21:30:02
>879
できました。ありがとうございます。

変数 J に条件によって文字列を格納してから、

Fname = Application.GetSaveAsFilename(J, "Excel ファイル (*.xls),*.xls")
If Fname = True Then
Set Newbook = Workbooks.Add
Newbook.SaveAs filename:=Fname
ElseIf Fname <> True Then
Exit Sub
End If

これでいけました。
横軸に時間軸、縦軸は項目ごとの定数で座標を取り、オートシェイプの矢印で描画する表を作りたいのですが、
ユーザーフォーム上で項目と開始時間、所要時間を入力して、表に反映させたいです。
開始時間及び所要時間は15分区切りで入力することとしています。(コンボボックス使用)
ユーザーフォーム上のオブジェクトとして項目選択用、時選択用、分選択用、所要時間選択用の
4つのコンボボックスを配置しておいて、決定用のボタンを押すとそれぞれのデータが1レコードとして
どこかに格納され、シート作成時に1レコードずつ全レコードを読み込んで一つずつ描画する
動きにしたいのですが、どのようなコードを書けばいいのでしょうか?
・・・ガントチャート?
カメラで切り取ったのを貼り付けると不自然な枠がのこります。
この枠を削除することはできないのでしょうか?
>>883
[右クリック] > [図の書式設定] > [色と線] > [線] > [色]
色無し
ありがとうございます!
>>884
ついでにそれをデフォルトで設定したいのですが・・・。
なにか方法はありますかね?
VBAについての質問なんですが、
変数宣言で
Dim i As Integer
Dim j As Long
ってなかんじで、iやjを使用しているのをよく見かけるんですが、
深い意味があるんでしょうか?
>>886
デフォルトでそうする設定はないんじゃないかな。
VBAで図をクリックしたら自動で枠を消すようにしたら?
>>886
FORTRANと言う言語などでは変数名で型が決まっていた。
その名残。i,jは整数。
>>887
VBA勉強しまつ。ありがと。
890名無しさん@そうだ選挙にいこう:05/02/22 23:47:05
Excle2003、OSはXPなんですが

テキストボックスってどこにありますか?
できればツールバーにでもアイコンを表示するようにもしたいんですが
>>888
レスありがとう。
大変勉強になりました!
今後は意識して、変数宣言をしようと思います。
>>890
表示→ツールバー→図形描画

って、こんな回答でいいのか!?
893名無しさん@そうだ選挙にいこう:05/02/22 23:54:29 ID:??? BE:13690188-#
>>891
変数は宣言しないと使ってはいけないと思っとけ。
>>892
おおお できたあ!
マジ助かったです。どうも!
エクセル97についての質問です。
エクセル2000以降なら可能な

With Worksheets("○○"):
.Cells.ClearContents
 ・・・

のClearContentsが,エクセル97のユーザーによると
使えないとのことです。
代替の方法はありますか?

.Cells.Value = ""
以前にこちらにおられたコテハンのゴッホ氏はどうされたのでしょうか?
居なくなられたのか、名無しで参加されてるのでしょうか?
898名無しさん@そうだ選挙にいこう:05/02/23 09:31:56
以前一度お聞きしたのですが、再度質問させて頂きます。
誠に申し訳ありませんがどなたかご存じなかたお教えくださいませ。
EXCEL2003でファイル→送信→メールの宛先(添付ファイル)
を利用しようと思うのですが、ボタンが無効化(グレーになって押せません)
されてしまいます。いろいろと探しましたが答えがでません。
どなたかご存じの方お教えくださいませんでしょうか。
よろしくお願いいたします
899895:05/02/23 10:03:36
Thank you.
9001:05/02/23 10:16:00
901名無しさん@そうだ選挙にいこう:05/02/23 11:24:16
sheets("sheet1").delete
とすると削除しますか?と言う確認メッセージが表示されるのですが、
この確認をしないようにするにはどうすればいいのでしょうか?
ですぷれいあら〜とをふぁるすにしる
>>901
Application.DisplayAlerts = False
Sheets("Sheet1").Delete
Application.DisplayAlerts = True
904名無しさん@そうだ選挙にいこう:05/02/23 13:35:35
>>895普通にExcel97で使えるけどな。使えないのは他の理由じゃね?
905名無しさん@そうだ選挙にいこう:05/02/23 14:27:48
たとえば、シート1を名簿にして名前と金額を入力し、そこから人数分の
の違う名前の領収書を自動で作りたいのですがどうすればよい?

sheet1
山田  2000
佐藤  2500

  ・
  ・

>>905
今一意味が分からんが・・・

シート1は名前のみ(山田佐藤田中小林)

シート2は山田シート
シート3は佐藤シート
シート4は田中シート
シート5は小林シート

と勝手にシート1に記載されている名前のシートを作ってほしいのか?
907名無しさん@そうだ選挙にいこう:05/02/23 15:27:49
>>906
はい、そんな感じです。
ただ、人数が増えてしまうと大変になりますよね
ほかによい方法があれば、そちらでもよいのですが
>>907
印刷がしたいってなら、データ用シートと印刷用シート2枚だけで
複数の印刷を行う方法がこのスレ内で出てきてるから読み返してみな。
ユーザーフォームのコントロールを、例えば

For i = 30 To 200
CheckBox(i).Value = False
Next i

みたいな感じである一定範囲("30"は実際は変数で可変)の一括処理をしたいんですが、
何か良い方法は無いですか?
If i <= 1 Then CheckBox1.Value = False
を200行並べるのもあれなので、何か良い方法があったら教えてください。
>>909
Controls(i)
911 ◆NONO.G8G2w :05/02/23 17:36:01
>>908
 過去ログ見てないけど、コンセプトとしてはこんな感じか?

・名簿シートには No. と名前と金額のテーブルを準備
・印刷シートから、No. でもって VLookup を使って参照
・No. を回して印刷の繰り返し
>>911
VLookupで選択Noを印刷するのもいいけど、
VBAでなら、選択も、自動で全ての領収書を個別に自動で印刷も出来る。
100レス前あたりで出たのはVBAで全項目を連続で個別印刷する方法。
913909:05/02/23 18:39:42
>>910
ありがとうございます。
Controls("CheckBox" & i)
で出来ました。

ついでにもう一つ質問なんですが、
フォームのイベントでコントロールのプロパティを変更した場合、
変更後の値をデフォルトのプロパティ値に適用するにはどうすればいいですか?
914905:05/02/23 18:58:10
回答ありがとうございます。
アドバイスを元になんとか、Vlookupで書くことができました。
スキルアップの為に今からがんばってVBA初チャレンジしてみます。
915895:05/02/23 19:15:02
>>896
ありがとうございます。
>>913
VBA記述のみでデフォルト値を任意に変えれるかは知りません。
すみません。

私が使ってる方法は、変更後のプロパティ値をセルに書き出しておいて、
フォームのInitializeイベントでそれを読み込みに行く、というものです。
書き出してるシートをVBAで非表示にしておけば、実用に耐えると思うのですが。
917913:05/02/23 19:28:56
>>916
自分も現在は全く同じ方法を使ってるのですが、
Initializeイベントで適用するプロパティ値が個数が合計3000を超えるので
(教えていただいた方法で、プロパティ値を適用する記述は簡素化できましたが)
セルから読み出すとフォームの立ち上がりが遅くなるし、
不可視にしてもそのシート分ファイルサイズが無駄に大きくなるので
なんとかならないものかと思いまして。

もう少し知ってる方が現れるのを待ってみます。
>>902
falseは「ふぁるす」じゃなくて「ふぉるす」だよ

http://dictionary.goo.ne.jp/search.php?MT=false&kind=ej&mode=0&base=1&row=1
変数A、B、C、Dを介して、ユーザーフォーム上からシートに一行で4列のデータ
として入力し、コマンドボタンを押すと次の行に順に入力していく。
同じように変数を介して、先ほど入力したデータを上の行から読み込んでいき、
データがなくなるまで繰り返すときにはどのようなコードを書けばいいんでしょうか?
9201@CLIE ◆GodOnnFcO. :05/02/23 22:19:00
エクセル2003つかってて
  開始日       終了日      開催期間 
2002/8/27 0:07 2002/10/2 13:41  *日*時間*秒

↑のような表を作っていて開催期間は終了日−開始日で
ルの書式設定から表示形式、ユーザー設定でdd"日"hh"時"mm"分"ss"秒";@と指定すると1月以上かかってないときはいいのですが
たとえば31日かかっている場合だと1日と表示されてしまします。
これを日付表記で31だとかそれを超えるような表示にすることはかのうでしょうか?
921エクセル苦戦中:05/02/23 22:27:08
単純な質問ですが、ある機能の名称が判らないので教えて頂けませんか
(その機能を使いたいのですが、名称が分らないため、使い方を調べることができません)
その機能とは、、、、
 入力項目が幾つかに限られていて(たとえば出勤、欠勤、忌引きの3つ)、それをいちいち毎回打ち込むのが面倒なとき、
 あらかじめそれらの項目を登録しておいて、入力する時は
  セルをクリック→選択肢が現れる→どれかを選択する
 で済ませられる機能
当方、xpでエクセル2002使用です。よろしくお願いします
>>921
データ>入力規則>リスト
>>921
[データ] > [入力規則] > [入力値の種類]
リスト
>>921
データ>入力規則>リスト
925913:05/02/23 22:37:08
>>920
開始日がA1、終了日がB2なら
=TEXT(ROUNDDOWN(B1-A1,0),"0")&"日"&TEXT(B1-A1,"hh時mm分ss秒")
926913:05/02/23 22:38:08
ゴメン、間違えた。
×開始日がA1、終了日がB2なら
○開始日がA1、終了日がB1なら
927エクセル苦戦中:05/02/23 22:39:01
>>923さん
ご教授通り進んで、見てみました。何とかできそうです!ありがとうございました!
928名無しさん@そうだ選挙にいこう:05/02/23 22:41:33
>>927

入力セル上でAltキー+↓キーじゃだめか?
昼間に伸びてるなんて珍しいこともあるもんだ
ネックレスおめこ
ゴバーク
931913:05/02/23 22:51:04
もう一回間違い修正。よく考えたら最初のTEXT関数不要だわさ
=ROUNDDOWN(B1-A1,0)&"日"&TEXT(B1-A1,"hh時mm分ss秒")
932エクセル苦戦中:05/02/23 22:54:58
>>922さん、>>924サンもありがとうございました
923さんと同じ人と思い込んでてお礼遅れました、すいません。
9331@CLIE ◆GodOnnFcO. :05/02/23 22:55:17
>>931
できました
サンクス!たすかったよー
9341@CLIE ◆GodOnnFcO. :05/02/23 23:00:22
どれだけググってもヘルプ見てもわからないので、、もうひとつだけ
番号      開始期間        終了期間
12002/9/27 0:072002/10/2 13:41
22002/10/2 12:382002/10/21 17:47
32002/10/10 20:322002/10/31 22:42
42002/10/31 21:202002/11/2 0:58
52002/11/2 1:062002/11/3 13:55
62002/11/3 20:092002/12/4 0:57

↑のようなキャンペーン期間のデータを↓のように何月にどれくらいかぶっていたかというグラフを書きたいんですが
エクセルでできますか?

10 ------
------
-------
5 --------------
--------
   -------
0 -----
 1月  2月  3月  4月  5月
9351@CLIE ◆GodOnnFcO. :05/02/23 23:01:35
激しくズレたので修正
10
                    ------
                 -------
5        --------------
       --------
   -------
0 -----
 1月  2月  3月  4月  5月
936エクセル苦戦中:05/02/23 23:05:27
>>928さんありがとうございます。
altと↓同時押し でそれらしい枠が出現するのですが、使いこなせないので当方の今後の課題といたします。
それでは皆さんごきげんよう。よい夜を。
>>919
元データがどこにどんな状態であって、最終的にシート上でどうなればいいのか
書かないとさっぱりわかんない。
>>934-935
積み上げ横棒グラフで
系列1に開始日時、系列2に開催期間を指定して
系列1を非表示にすればよいのでは?
939 ◆NONO.G8G2w :05/02/23 23:40:40
>>917
 Form_Initialize イベントで読みこむプロパティが 3000 って、
なにか抜本的な部分で考え直すとこないだろうか?
940913:05/02/24 00:01:02
>>939
考え直すところはありません。
4種類のコントロールがそれぞれ200づつと、その他十数個のコントロールがあり
200づつあるもののうち3種類は4つのプロパティ値が可変、残り1種類が3つの値が可変。
これだけでちょうど3000になり、他も合わせると3021の値が可変となります。
デフォルト値そのままで良い場合もあるので、毎回3000以上を読んでるわけではないですが
少なくとも毎回2000近くはシートからの取得になってるはずです。

今、可変になってる部分を固定にしても使えないことは無いですが、
膨大な値を読み込む事による起動時のロスより、プロパティ値を固定してしまう事による
操作性が低下のロスの方が大きいので、今の仕様を変更することは考えてませんが、
出来れば起動時のロスを最小限にしたいので
とにかくデフォルトのプロパティ値を変更する方法を知ってる方をお待ちしてます。
>>940
フォームにそれだけのコントロールがあるってのはどうだろう?
9421@CLIE ◆GodOnnFcO. :05/02/24 00:55:21
>>938
日付のデータだからかうまくいきません、、
9431@CLIE ◆GodOnnFcO. :05/02/24 01:14:49
なんていうか、、
http://f52.aaa.livedoor.jp/~clie/pukiwiki.php?plugin=attach&pcmd=info&file=test.xls&refer=%A5%A2%A5%C3%A5%D7%A5%ED%A1%BC%A5%C0%A1%BC
こんな感じです
どうやったらいいのか皆目検討がつかない
エクセルじゃできないのかな??
>>942
938じゃないけど、それっぽくできたぞ?
945913:05/02/24 01:25:39
>>942
どううまくいかないんですか?
こちらでは>>938で書いた方法で>>935のような表が出来ますが。

因みに系列2の開催期間は「終了日時-開始日時」であり、
>>931で書いた数式を入れた列とは別に差分のシリアル値を求めた列を作る必要がありますよ。


>>941
どうだろうと言われても必要だから配置してるものなので。
因みにモードレスで呼び出して複数のワークシートと値のやりとりをしながら同時編集します。
詳細は言えませんが特殊な業務で使うものなので、常識は当てはめないでください。
ディスプレイ解像度さえ許せば、本当は今の5倍のコントロールを配置したいところなのです。
しかし今の24インチ1920x1200のディスプレイではこのくらいが限界で、これ以上増やすとシートが見えなくなるので。
9461@CLIE ◆GodOnnFcO. :05/02/24 01:37:09
>>945
できました、、バカな事やってた
どうもありがとうございました
やっと寝られる
947名無しさん@そうだ選挙にいこう:05/02/24 03:47:16
WindowsXP
Excel2000

株価チャート(ローソク足、始値・高値・安値・終値)のグラフを作り、さらに移動平均を2系列追加。
で、追加した移動平均の系列を折れ線グラフに変更。

・・・・がっ!
グラフに変更できるのだが、もとのローソク足がめちゃくちゃなまま。
移動平均専を追加したまま、正常なローソク足を表示させるには、どの辺りを確認したら良い?
修正方法ってあるの?

よろしくお願いいたします。
ExcelのVBA勉強に向いているお勧め本はありますか?
>>948
あなたが読んで解りやすいと思った本。
950名無しさん@そうだ選挙にいこう:05/02/24 09:44:45
 友人からもらった書式なのですが、ボタンの位置が悪いので位置をずらしたいのです。ところがボタンを選択することが
できないのです、、、どうやればいいのでしょう?2003です。追加ボタンの色も変わってるのでそちらもお願いします。
ググったら色変えるの結構ややこしいのしか見つからなかったんです。
>>950
シート上にフォームで作ったボタンのことなら、まずボタンの上で
右クリック。メニューは無視して、ボタンの周囲に出た網線部分に
ポインタ合わせりゃ移動できる。

後半部の追加ボタン云々は意味がよくわからん。
952950:05/02/24 11:21:12
ご返答ありがとうなのですが、右クリックするとボタンがへこむだけでメニューがでないのです。

追加です。ボタンの色も変わってるのでそちらもお願いします。
ググったら色変えるの結構ややこしいのしか見つからなかったんです。
って意味でした。ごめんなさいm( __ __ )m
>>940
私のばやい、UserForm1.Show する前に直に値を入れてます。
UserForm1.CommandButton1.Caption = "ぬるぽ"
とか。

>>952
デザインモード
954950:05/02/24 15:02:11
アリガト!(´▽`)です。デザインモードでもボタンの設置できるの初めて知った、、、こっちの方が色々出来るのですね。
955名無しさん@そうだ選挙にいこう:05/02/24 15:08:34
Win2kまたはWinXPと
Excel2002なんですが、SDIを使って.xlsを表示することって出来ないんでしょうか?
97辺りだと出来た気がするんですが…
956913:05/02/24 16:05:11
>>955
2002でも出来ますよ。
全てSDIとして開きたいなら既定関連付けのDDEオプションを切ってしまえばOKですが、
既定コマンドは残して右クリックから「新規Excelで開く」などの項目を選択した場合のみ
SDIとして開くようにする方法を薦めます。

インストール先が標準なら、下記5行を.regとして保存して結合すれば
「新規Excelで開く」という項目が右クリックに追加されるはずです。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\SDI]
@="新規Excelで開く(&S)"
[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\SDI\command]
@="\"C:\\Program Files\\Microsoft Office\\Office10\\EXCEL.EXE\" /e"


このコマンドを既定にしたい場合は、下記2行も含めてください。

[HKEY_CLASSES_ROOT\Excel.Sheet.8\shell]
@="SDI"


>>953
数が少ない場合はそれでもいいんですけどね。
957955:05/02/24 17:10:04
>>956
ありがとうございます。
以前はオプション設定辺りから出来たと思ったのですが、
今は結構手間がかかるんですね…

できればレジストリは使いたくないのですが、
MDI状態でVBAを使い、SDIの別ウィンドウを開くようなことは可能ですか?
/eをつけてShellで起動させても良いのかも知れませんが…
958913:05/02/24 17:45:36
>>957
DDEオプションが掛からなければブック個別にExcelを開くので
デスクトップやD&Dを受け付けるランチャーなどにExcel.exeを置いて
そこにxlsファイルをD&Dすればブック毎にExcelを起動させられますよ。
もちろんVBAでも新規にExcelを立ち上げてブックを開くのは可能です。

ただ、
> できればレジストリは使いたくないのですが、
と言われても、今現在MDIで開く際にもレジストリを使用して開いてる訳ですが…
レジストリの編集も慣れれば怖がるほどのことではありませんよ。
特に関連付け部分のキーHKEY_CLASSES_ROOTは、レジストリの中でも特に解りやすい部分ですから。
959名無しさん@そうだ選挙にいこう:05/02/24 18:07:25
ヘッダーの文字に色を付けることはできますか?

ExcelXPです。
文字を図として貼り付け・・・とかはダメ?ww
961959:05/02/24 18:41:31
>960
ありがとうございます、それは、最終手段ということで、とっておきます。

なにげに、無理なんでしょうかねぇ
チョト調べたけど、無理っぽいね。
行タイトルではイカンの?
とあるシートに項目を縦に並べておいてそれを他のシートで同じ順番で表示させたいのですが、
ただ「=あるシート!A1」とかで入力してしまうと、元のシートで順番を変えても参照したシートでは順番が変わらない
(セルの移動等をすると参照しているセルでの数式が自動的に変わってしまう)ため
INDIRECTを使い、「=INDIRECT("あるシート"&"!"&ADDRESS(ROW()+2,COLUMN()+1))」とかやっています。
ですが、これだと項目を入力するセル(参照元となるデータ)をたとえば他の列とかに移動してしまうと
INDIRECT〜を入力したセルも修正する必要がでてきます。

そこで名前を定義して参照させてやろうとしたのですが、
たとえばSheet1のA1:A10に入力したもの(名前hoge)をSheet2のB1:B10に参照して表示する場合は
「=hoge」とかやればうまく順番に並ぶのですが、
表示させたいのがSheet2のB5:B15だったりすると、「=hoge」では
Sheet1!A5の内容がSheet2!B5に表示されることとなってしまいます。
(対応してる列番号のものが表示されてしまう)

うまく名前の定義を利用してSheet1!A1以下ををSheet2!B5以下に表示させるにはどうしたらよいのでしょうか?
また、名前で定義したもののうち「何番目」という指定の仕方はできるものなのでしょうか?
よろしくお願いします。
> 元のシートで順番を変えても参照したシートでは順番が変わらない

> これだと項目を入力するセル(参照元となるデータ)をたとえば他の列とかに移動してしまうと
> INDIRECT〜を入力したセルも修正する必要がでてきます。

言ってること矛盾してるのには気付いてる?
参照先が書き換えられてもダメ、参照先が固定されててもダメ、って・・・


ついでに定義参照では「何番目」のような指定をするのは無理です。
条件がいまいち解りませんがVBAを使って処理してください。
965963:05/02/24 20:21:48
>>964
とりあえず
>元のシートで順番を変えても参照したシートでは順番が変わらない
は絶対条件です。

> これだと項目を入力するセル(参照元となるデータ)をたとえば他の列とかに移動してしまうと
> INDIRECT〜を入力したセルも修正する必要がでてきます。
これは名前で参照できればラクになるかなぁ、程度のことなのでさほど重要ではないです。
(移動させても名前を定義しなおすだけでいいかなぁ、と。)

要は、列が違うセルでも名前を定義して参照できないか?ということです。
よろしくお願いします。
> 元のシートで順番を変えても参照したシートでは順番が変わらない
参照先固定が絶対条件なら、
> これだと項目を入力するセル(参照元となるデータ)をたとえば他の列とかに移動してしまうと
> INDIRECT〜を入力したセルも修正する必要がでてきます。
のように参照先を変更したい場合は数式を直接書き換えなくてはならないのは当然のこと。

そしてVBAなら行の参照先は固定、列の参照先は可変などの設定も出来るし、
両方固定しても、数文字書き換えるだけで参照列の一括変更とかもできるのでVBAでやれと言ってるまでの話。
具体的なシート構成が解らないのでこちらでは書けないから自分で書いてね。
まあ、INDIRECT使っても、列の部分を直接文字列で指定しないで、外部参照にすれば参照列の変更は簡単だけど。
967名無しさん@そうだ選挙にいこう :05/02/24 21:54:55
2003ですが。
オートサムをクリックすると、<=SUM  >と表示された
バルーンが表示されますが、非表示にする方法を教えろ!
教えない
969913:05/02/24 22:04:47
>>967
2002ですが。
ツール > オプション > 全般
関数のボタン名

のチェックを外しやがれ!


項目名違ったらごめん。
970959:05/02/24 22:39:57
>962
わざわざどうもです。
行タイトルでも、何とかなると思います。

でも、できないのが不思議です。何で無理なんでしょうかね。
エクセルユーザーはヘッダーとか普段使わないんでしょうか。
エクセルって、印刷の時に不便感じるときが多いですね。
>>963
よく判らん。名前を付けた領域と同じ大きさの領域をどっかで選んで、
=名前
って書いてctrl+shift+enterってこと?

んで、誰か>>779教えてプリーズ。
エクセルで作ったファイルを保存するときに
必ず同じ場所に保存させる事ってできるの?
973955:05/02/24 23:44:19
遅くなりましてすみません。

>>958
いい機会なので、レジストリの勉強がてら弄ってみようと思います。
ご回答ありがとうございました。
974963:05/02/25 00:51:10
>>971
うぉ!こんな技があったとは知りませんでした。
まさにこれでつ。
dクス。
EXCEL2003です。

とあるエクセルファイルがあります。(ここでは A.xls とします)
その1行目には、管理番号と称して各列毎にユニークな数値が記入されています。
そして、その数値をファイル名としたエクセルファイルがそれぞれあります。
(A1 が 10の場合、10.xls というファイルがある)

ここで、A.xls の A1 B1 C1 にそれぞれ 1 2 3 とあった場合、
A2 B2 C2 にそれぞれ 1.xls 2.xls 3.xls のファイルのとあるセルの数値(セルは固定)
を自動で入れたいと考えています。
その際 A.xls の列数は固定ではなく増減するため、A〜C列までの場合もあれば
A〜E列までの場合もあります。

こんな感じ

  |     A        |      B       |       C
−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−−
1 |     1        |      2       |       5
−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−−
2 | 1.xlsのA1の数値  | 2.xlsのA1の数値  |  5.xlsのA1の数値
−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−−

こういったことは可能でしょうか?わかりにくい説明ですみませんが、よろしくお願いします。
976名無しさん@そうだ選挙にいこう:05/02/25 08:39:53
で、>>947は?
スクリーンショットUPする?
977名無しさん@そうだ選挙にいこう:05/02/25 14:50:56
質問です。

保存したデータが間違っており、
保存する前に戻りたいのですが、可能でしょうか?
一度ファイルを閉じてしまったので、「戻る」が使えません。
戻す方法があれば教えてください。

環境は、WinXP SP2 Excel2002 です。

無理。
そうならないためにも、自動保存アドイン入れるべし。
http://www.vector.co.jp/soft/win95/business/se286196.html
これ以外にもたしかあったから自分にあったの使うべし。
人生の「戻る」ボタンが付いているOSなら可能。
すぐ隣の「削除」ボタンを間違えて押さないように。
980977:05/02/25 15:07:13
>>978
ありがとうございます。
さっそくダウンロードしてみます。

981977:05/02/25 15:09:06
>>979
笑う元気ない。
982 ◆NONO.G8G2w :05/02/25 15:13:21
>>975
 可能です。VBAを勉強してください。
>>975
参照するファイル(1.xlsや2.xlsなど)をすべて手動で開いておく。
数式を必要列数手動でコピーする。
以上が許されるなら、関数でも可能。
上記も自動化したいなら982の言うとおりVBA使ってください。
984名無しさん@そうだ選挙にいこう:05/02/25 17:55:42
下のようなデータのソートなんですが、ファイル整理の都合上、一番左の名前は変えたくないので、
A_ の後の途中のアルファベット(bitu, euuなど)でソートしたいんですが、可能でしょうか?

A_bitu1 0.12620.0154 238.0113348
A_bitu2 0.12950.0111 237.3445868
A_euu1 0.10610.0242 231.0301495
A_euu2 0.09150.0424 223.4147843
A_doyu1 0.09630.0299 --undefined--
A_doyu2 0.10180.0202 --undefined--
>>984
自分でちゃんとテストしてみた?
前についてる文字(A_)が皆同一なら、普通にソートしたら
3文字目以降の文字に応じてソートされるでしょ。

自分でまず実行して、問題ある場合にその問題点をかいて
質問しろよな。
>>984
最初のA_が同じならそのままソートするだけで自動的にそうなりますがな。
そうでないなら、途中のアルファベット部分だけ文字列関数で別のセルに
切り出してそちらでソート。
EXCEL2003です。

あるセルに1234と入れます。
以前は(古いバージョンだったと思うのですが)、その下のセルに「1」と打った時点で
残りの「234」も自動的に入力された記憶があるのですが、今はできません。
数字の半角/全角に関係なくできません。文字ならば英語・日本語ともにできます。

なにか仕様が変わったのでしょうか?それとも設定次第で数字も自動的に入るように
なるでしょうか?教えてください。お願いします。
あーー、めんごめんご。

A_ の部分は他にもB_ とかM_とかなってる。で、横断的に _ より下でソートしたいと言うこと。

すまぬ。かつ、よろしく。

>>986の文字列関数で切り出しというのでいけるのかな?

A_bitu1 0.12620.0154 238.0113348
A_bitu2 0.12950.0111 237.3445868
A_euu1 0.10610.0242 231.0301495
A_euu2 0.09150.0424 223.4147843
A_doyu1 0.09630.0299 --undefined--
A_doyu2 0.10180.0202 --undefined--
B_bitu1 0.12620.0154 238.0113348
B_bitu2 0.12950.0111 237.3445868
B_euu1 0.10610.0242 231.0301495
B_euu2 0.09150.0424 223.4147843
B_doyu1 0.09630.0299 --undefined--
B_doyu2 0.10180.0202 --undefined--