Excel総合相談所 31

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

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

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


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

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


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

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

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


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

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

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

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

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


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

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


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


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

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

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

A:全角で*と入力し「半角と全角を区別する。」のチェックを外して検索する
 (全角なのでワイルドカードとしては使われないが
  全半角を区別しないので文字として"*"にはヒットする。)
>>1おっつ、おら悟空。
INDIRECT関数のFAQは、
「セル参照で、シート名部分を他のセルの値で指定したい。」
のほうがいいんじゃないかと思うんだけど。

A1セルにシート名が入ってるとして

=INDIRECT(A1&"!B1")


これじゃ出来ないケースもあったりするんだけど・・・。
>>12
おまえ全然INDIRECT関数理解してないな。
14名無しさん@そうだ選挙にいこう:05/02/26 01:12:49
WindowsXP
Excel2000

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

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

よろしくお願いいたします。
>>14
普通に
>>13
だったらどんな時に使うべきなのか例くらい書けよ
>>12 >>16
INDIRECTは”参照文字列”による”セルの間接指定”が目的。
だから使い方によっていろいろなことができる。
現にここの過去ログ読むだけでもいろいろ出てくるでしょ。
無理に用途を限定する必要はないわな。
18名無しさん@そうだ選挙にいこう:05/02/26 09:31:29
>>14
普通とは?
19名無しさん@そうだ選挙にいこう:05/02/26 11:45:18
XP 2002 
回帰分析ツールを探しているのですが見つかりません。
もしかして、有料ソフトですか?
>>17
Excel総合相談所 27の793、28の148、747、29の234とか
同じような質問が何度もあったから>>12を提案したわけだが。
FAQってのは「よくある質問と答え」でしょ?
>>21
ならばFAQの入れ替えではなく追加で提案すれば。
今のFAQも、同じように過去に質問が多かったからできているわけで。
>>19
ツール>アドイン>分析ツール でアドイン組み込み
ツール>分析ツール>回帰分析 で選択
>>22
ありました!
助かりました、ありがとうございました。
win2000
excel2000

たくさん証明書を作る仕事があります。
エクセルのシートを2つに分けて、

シート@に整理番号、名前、住所等のデータを入れていき、
シートAは証明書印刷用の様式に使い、整理番号を入れたら
vlookupでシート@から検索して名前住所を表示するようにして、

整理番号入力→印刷→整理番号入力→印刷→・・・・・

で、印刷していたのですが、何百枚も印刷するときにすごく大変です。


整理番号○○番から○○番まで連続印刷みたいな方法があったら教えて下さい。
これまで大抵のことはイルカに聞けばわかったのですが、これだけはヘルプではわからなかった・・・
>>24
前スレに同様の場合についての回答があります。
無駄な回答書き込みを避けるために落ちる前に読みに行って下さい。
>>25
読んでみます。ありがとうございます。
27名無しさん@そうだ選挙にいこう:05/02/27 01:03:56
ツールバーに塗りつぶしの色とフォントの色がありますが、
デフォルトでは、塗りつぶしの色が白、フォントの色が赤になっています。
ファイルを開いたときに、シート各に違う色を設定しておくことはできるのでしょうか?

例えば、
ファイルを開いたときに
Sheet1は、塗りつぶしの色が青、フォントの色が黒
Sheet2は、塗りつぶしの色がピンク、フォントの色が青

みたいな感じで
>>27
VBA使えば出来るよ。
Workbook_Openのイベントに引っかければファイル毎に設定出来るし
Worksheet_Activate使えばシート毎に設定することも出来る。
具体的なコードは自分で調べてね。
条件付き書式えで、セルの値が複数の項目と等しくないときは、書式を〜にするっていうのは
どうやって設定したらいいのでしょうか?

例えば、セルの値がAとBのとき以外は文字の色を変えるとか。
初歩的な質問かもしれませんが、宜しくお願いします。
30名無しさん@そうだ選挙にいこう:05/02/27 01:20:41
>>28
レスありがとうございます。
VBAですか。全く使ったことないです・・・
これを機会に勉強してみます。
>>29
数式が =AND(A1<>"A",A1<>"B")
>>31
す、すみません。う、うまくできません。
もっと具体的に申し上げますと、

A列に2800と2810以外の数字が入っていたら、
その2800と2810以外の数字は全て、文字を太字&赤色にしたいと思っています。
>>32
・A列全体を選択
・[書式] > [条件付き書式]
・[ 数式が [▼] [ =AND(A1<>2800,A1<>2810) ]
・[書式(F)...] ボタン
・スタイル [ 太字 ]、色 [ 赤 ]
・[ OK ] ボタン
・[ OK ] ボタン
>>33
こんな夜中に親切にありがとうございました!!
35名無しさん@そうだ選挙にいこう:05/02/27 07:25:50
昨日からエクセル勉強始めたんですが、
数式バーのところが、参考書を見ると=になってるのですが
私のはfxになっています。(XPの2002です)
この違いはなんなのでしょうか?
>>35
MSよ!Excel の"="ボタンを復活させろゴラァ!!!
http://pc5.2ch.net/test/read.cgi/bsoft/1047860032/

なんか変わったみたいね。
>36
ありごとうございました。
>>35
今さらですが。
参考書で説明に使っているExcelのバージョン(たいていは冒頭とかに
明記してある)と、自分で実際に操作しているバージョンが異なると、
小さな部分で違うことはいろいろあるよ。
それを理解した上で勉強してね。
ある表に、1個、2個、3個、4個・・・とか数字を
単位つきで入力しています。
で、それを関数で計算処理するときに、例えば「1個」と
入力されたセルの1を数値として認識させて処理させることは
可能でしょうか?
>>39
できないことはないが、単位つきの入力はせず、
「個」とかの部分はセル>書式>表示形式で指定するのが基本。
(たとえば「ユーザー定義」で #"個"と指定する)
そうすればセルの値は計算にでもなんにでも使える。
>>39
・"個"を表示形式を使って表示する。
・数値部分を別セルに抜き出す。
・計算数式内で数値を抜き出して使う。
・VBAで計算する。

一番上が一般的だけど、他にも方法はあるので好きなようにやればいい。
ありがとうございます!
基本的なことだったんですね。
いろいろ応用できそうです。
ここまで読みましたが、Excelって色んなことができるんですね!
ちょっと感動しました。
勉強してみようかな。
関数とかマクロとかVBAとかって数学が苦手でもできますか?
>>43
ワークシート関数は数学知識が必要な物が多いけど
VBA(マクロ)は数学知識より論理的思考が出来るかどうか。
おまえはどっちもダメそうだけど。
>>44
だからSEやプログラマは文系の人でも簡単になれちゃうんですね。
あ、SEは誰でも簡単になれるけど、プログラマは無理か!?
46名無しさん@そうだ選挙にいこう:05/02/27 14:03:12
インデントボタンを押すと、標準フォント1文字分右側にずれますが
その標準フォント1文字分を全角1文字ではなく、半角1文字に設定することはできますか?
>>46
できません。
Excelにワープロのような細かい表現力は求めないように。
>>46
インデントではないけど、文字前の半角スペース量を増減させるマクロを組んで
ツールバーにボタンとして登録してみれば?
又は表示形式で「" "@」とかやって、このスペース量を増減させるボタンを作るとか。
>>47,48
ありがとうございました。
50名無しさん@そうだ選挙にいこう:05/02/27 17:10:49
>>46
48の言ってるように表示形式で対応するのが○
半角スペースを挿入すると文字数が増える

Sub 半角インデント()
Selection.NumberFormatLocal = """ ""@"
End Sub
Sub 半角インデント解除()
Selection.NumberFormatLocal = "G/標準"
End Sub

とかをボタンに登録して対応するのがよろし
どうせなら半角インデントの有無じゃなくて半角インデントの増減にすればいいのに。
52名無しさん@そうだ選挙にいこう:05/02/27 20:00:06
結合したセルを、元に戻す方法はありますか?
>>52
セルの書式設定 > 配置
□セルを結合する

のチェックを外す。

結合解除のボタンも「書式」の分類に用意されてるから
必要ならツールバーに出しておけ。
54名無しさん:05/02/27 20:12:48
ファイルのパスワードを解読したいのですが
短時間で解読できるフリーソフトってありますか?
不正行為がやりたいなら自分の力で検索して
自己責任で行うこと。
56名無しさん@そうだ選挙にいこう:05/02/27 21:18:25
エクセルファイルを開くときに、パスなしでwクリだけで開き
書き込むときだけ、パスを要求するにはどうすればいいのでしょうか?
02
Worksheet_Change
「書き込むとき」というのは
シートに文字などを書き込むとき?
それともファイルに書き込む(上書き保存)とき?
59名無しさん@そうだ選挙にいこう:05/02/27 22:05:29
>>58
シートに書き込むときです、すいません。
>>59
シートの保護
Dim hoge As Range, i As Byte
For Each hoge In Range("A1:C3")
 i = i + 1
 hoge.Value = i
Next hoge

として確認すると、コレクションにセル範囲を指定した場合
A1、B1、C1、A2、B2、C2、A3、B3、C3、という順で処理をしていくようなんですが
この順番を変更するにはどうすればいいですか?
具体的にはA3、B3、C3、A2、B2、C2、A1、B1、C1、という感じにしたいのですが。
今はFor〜Nextを2段にしてStep -1を使って凌いでます。
OSはXPでEXCELは2002です。
62名無しさん@そうだ選挙にいこう:05/02/28 07:27:16
アフォな質問で恐縮なんですけど
自宅(XP2002)で作ったファイルを
会社(2000)に持っていった場合、
何か不都合はありますでしょうか?
63名無しさん@そうだ選挙にいこう:05/02/28 08:01:29
条件付書式で土曜日を青文字、日曜日を赤文字にしたいのですが、
曜日指定の数式を教えて下さい。
64名無しさん@そうだ選挙にいこう:05/02/28 08:38:32
>>63
日曜なら
=WEEKDAY(A1)=1
あとは自分で調べて。
>>61
そのやりかたでいいんじゃないの?
何が不都合なの?
66名無しさん@そうだ選挙にいこう:05/02/28 09:26:58
初めて質問します。
Office XP Proを使用しています。
エクセルだけユーザー設定→オプションから
「ボタン名と一緒にショートカットキーを表示する」の欄がありません。
WORDやACCESSでは、表示されています。
どうしてなのでしょうか?
調べてもわかりませんでした。誰か教えて下さい。お願いします。
6763:05/02/28 09:58:50
>>64
ありがとうございます。
表示できました。
6861:05/02/28 11:13:04
>>65
「そのやりかたでいいんじゃないの?」とはFor〜Nextのことでしょうか。
For Each RangeとFor〜Next2段では1:1.2くらいの処理速度差があります。
例では9セルですが、実際には2万数千セルの処理なので少しでも処理を速くしたくて。
>>68
For Eachの処理順は変わらないんじゃないかなぁ。
列の処理が例のとおり左から右でいいなら、
行の方をあらかじめ処理順に並べ替えておくぐらいかな。

でも、2万セルもあったらソートも時間かかるだろうからあまり意味ないか。
>For EachとFor〜Next2段では、、

今20列5000行で試したけど差はないよ
5.5秒と6.6秒の時もあるし逆に6.6秒と5.5秒の
時もあるし、同じ時もある。
配列に貯めておいて一揆に書き出しても同じだった。
7161:05/02/28 13:43:19
>>70
自宅のAth64FX53&3072MBでは差は無いんですが、
会社のCel400MHz&128MBでは明確な差が出ます。
とにかく無理そうなので諦めます。
>>68
うちも52行400列でやってみた。
確かに差がないね。

ちなみに、ScreenUpdatingをfalseにしてるよね?
うちで一番スペックの低いPentium100で試したら
1000行20列で1.5倍くらいの差がでたよ
スペックが低いほど差が大きくなるみたいだね

因みに72の使ってるExcelのバーション何?
400列作れるExcelを俺も使ってみたい
ごめん。
列と行が反対でした。
400行、52列ね。
初歩的間違いスマソ
ちなみにPen3 600MHz、256MB Excel2000でした。
sheet1に下記のような表があり、
[社名]  [金額]
A社  1000
B社   (null)
C社    30
.
.
.
F社    40
(会社数、並びは固定)

これを元にsheet2に
A社  1000
C社   30
F社   40
と、金額が未入力の行を省略した表を作成したいと考えています。
どうしたら行を詰めて表示できるでしょうか?
>>75
いろいろ方法あると思うけど。
いちばん単純なのは、オートフィルタをしかけて「金額」列で「(空白以外のセル)」を選ぶ。
詰めた状態でそのまま別の箇所にコピーも可。
>>76
説明が不足してました。すいません。
コピー&ペーストすら困難な人でもできるように、sheet2への入力まで自動化したいと思っています。
sheet1に顧客リストを作成して。
その中からを一人の顧客を選んで(チェックなどで)
その選んだ顧客の申請書が印刷できるような様式をつくりたいのですが、そのような方法がさいてきですか?
申請書の内容はどの顧客でも同じです。チェックをつけて印刷するときの名前などを変えたいだけです。

エクセル2002を使用しています。

「sheet1」
顧客名 内容 チェック
A E   レ
B F
C G

「印刷書式」

A○○    日付

   見出

  内容Eの〜。


↑のようにしたいのですが、どういったほうほが最適でしょうか。
ご教授お願いします。
お前らAccess使おうぜ……
>>77
それならVBAで組む一手ですね。
1行目からループまわして、金額がある行だけSheet2にコピーする。
>>79 やっぱりアクセスの方が用意ですかね?
アクセスでやろうと思ってたんですがCDが行方不明でw
excel 2003

ファイルメニューからファイルを開くとちゃんと開けますが
ディスクトップ上から開くと、セルの格子が消えてしまいます。
どうしてでしょうか?
↑用意→容易
>>81
78の使い方のみなら、ExcelでもAccessでもいいんじゃね?
Excelは結構普及してるので、他者もそのファイル使うなら汎用性高い。
でもコントロール or VBAの知識要。
本来はAccessのほうがそういう用途には向いてるけど、あんまり普及してない。

自分の好みじゃね?
自分でVBA書けてメンテもできるならExcelでいいと思うが
そうでないならAccessに投げたほうが楽じゃないかな。
>>78
For NextかFindでチェックを入れた行を検索して
チェックがあればその行のデータを印刷書式のシートに代入して印刷。
以上をデータ末尾まで繰り返し。
まあこれもAccess向きではあるけど、Excelでやりたいなら自分でVBA書きな。
>コピー&ペーストすら困難な人でもできるように、

簡単なマクロで出来るんだが、こういうヒト相手だと
また別の問題が発生する希ガス
バージョンはExcel2000です

列方向に日付が並んでいます
(ex.1980/3/15 1962/11/8 1985/4/7など)

この隣のセルにその日付が今年は何曜日か表示したいのです
(火 金 木など)

何か関数を組み合わせてできますでしょうか?
>>88
A              B
2005/03/01       =A1



でBの書式をユーザー定義でaaaにすれば「火」になる。aaaaなら「火曜日」
>>88
=TEXT(DATE(YEAR(TODAY()),MONTH(A1),DAY(A1)),"aaa")
9189:05/03/01 14:36:35
ああ、ごめん勘違いしてた。
=DATE(YEAR(TODAY()),MONTH(A1),DAY(A1))でいいんだな
>>89
1980/3/15と入力されたセルの隣に2005年3月15日の曜日を表示したいのです
よろしくおねがいします
>>90,91

ありがとうございます
>>92は失礼しました
書いている間にレスをいただきまして
>>82
ツール>オプション>全般タブで
「ほかのアプリケーションを無視する」にチェックが入ってたら外す
どうしてsage進行なの?
>>95
必要ないときはageないのが2ch全体の暗黙の了解だから。
まあ、別にこのスレはsage進行ってわけじゃないから
質問時にageても誰も文句言わないよ。
Excel2000です。

数値 条件
75  ○
12  
36  
45  ○
29  ○

上のような表があって、条件が"○"になっている行の数値を抜き出して
合計したい(75+45+29=149を返すようにしたい)のですが、何の関数を
使えばよいのでしょうか。
>>97
SUMIF
9997:05/03/01 22:57:57
>>98
SUMIF()でうまくできました。
どうもありがとうございます。
Excel2000です。
下のコードで何も起きないのですが、c.Valueをどう書けばいいのでしょうか?

With Worksheets(1).Range("a1:a50")
  Set c = .Find("hoge", LookIn:=xlValues)
  If Not c Is Nothing Then
    ListBox1.AddItem c.Value
  End If
End With
101100:05/03/01 23:17:32
すいません。動きました。
10297:05/03/02 00:42:32
連続ですいませんがもう一つ質問させてください。

条件
○ × × ○ ○

数値
75
12
36
45
29

上のように、条件は横に並んでいるが数値が縦に並んでいて、
"○"に対応している数値(75,45,29)の合計を求めたいのですが、
SUMIF()で対象範囲をどのように指定すればよいのでしょうか。
TRANSPOSE()を試してみたりしたんですが、うまくいきませんでした。
103001:05/03/02 00:54:37
いつもお世話になっております。IF関数についてご教示お願いします。

A    B     C     D     E     F     G     H

6    15    4   木    5:00      出勤   1
6    16    5   金    5:00      非番   2
6    17    6   土    5:00      出勤   1
6    18    7   日    5:00      非番   2
6    19    1   月    5:00 公休 3


Hの列のセルの数字が1の場合で、Cの列のセルの数字が1〜5の場合はF列に23:00

Hの列のセルの数字が1の場合で、Cの列のセルの数字が6の場合はF列に20:30

Hの列のセルの数字が1の場合で、Cの列のセルの数字が7の場合はF列に19:30

Hの列の数字が2以上の場合、F列はブランク

以上のような表示を関数でおこなう場合にはどうすればよいのでしょうか?
お忙しい中申し訳ありませんがよろしくお願い致します。
>>103
こんな感じでしょうか。
=IF(AND(H1=1,C1>=1,C1<=5),"23:00",IF(AND(H1=1,C1=6),"20:30",IF(AND(H1=1,C1=7),"19:30",IF(H1>=2,"","ERROR"))))
>>102
> "○"に対応している数値(75,45,29)
"○"に対応している数値って何?
その条件と数値を見る限り、「"○"に対応している数値は無い」と言わざるを得ないが。
おそらく、条件の1列目が○なら1行目の75を加算条件に追加、2列目が○なら2行目の12を・・・
ってことだろうけど、そんなには君の脳内ルールでしょ。
脳内ルールでExcelに処理させるには脳内ルールをExcelのルールで説明してやればいいだけの話。
行番号と列番号を無理矢理こじつけるもよし、
VBAで条件は列番号に変数を、数値は行番号に変数を代入してやるもよし。

>>103
その条件をIFとANDでそのまま書けばいいだけじゃん。
IF(AND(H1=1,C1>=1,C1<=5)、IF(AND(H1=1,C1=6)、IF(AND(H1=1,C1=7)、IF(H1>=2、って。
あとはそれを繋げるだけ。
Excel Viwer 2003をダウソしようとしたが何度やってもできない。

ttp://office.microsoft.com/ja-jp/officeupdate/CD011197531041.aspx
このURLだけど、ダウンロードできる?いくらやっても応答不能になる。
>>106
開いたら Word Viewer 2003のページだったが

Excel Viewer 2003はこっち
http://office.microsoft.com/ja-jp/officeupdate/CD011347961041.aspx

ちゃんとダウンロードできるよ。
同ページ内リンクをドキュメント内リンク(#RANGE!)で代用してそのhtmlをwebにアップした場合
ExcelをインストールしていないPCでもリンク先に飛ぶことはできますか?
109名無しさん@そうだ選挙にいこう:05/03/02 03:05:34
>>102
○ × × ○ ○
の行からIFか何かで
1 0 0 1 1
という行を作って、
=MMULT(上記の0と1の行,数値の列)
で。
110102:05/03/02 06:03:06
>>109
なるほど、行列積を使うとはうまい方法ですね。試してみます。
どうもありがとうございました。
111名無しさん@そうだ選挙にいこう:05/03/02 08:12:42
すんません、ちと教えていただきたいのですが・・・
エクセルのシートにタイトルをつけていたら、いきなり
「シートまたはグラフの名前が正しくありません」と表示されました。
入力したタイトルは31文字以内ですし、;とか〔〕とかも入力してません。
どうすればいいでしょうか?
すみませんが、お教え願います。
>>111
シート名の制限は半角で31文字だけど。
まさか全角16文字を超えてるってオチじゃないよね。
113111:05/03/02 08:36:46
>>112
さすがにそれはないっす・・・(^^;
警告メッセージ通りにしてもエラーがでちゃうんで困ってます。
もうすでに1時間この状態・・・
>>113
とりあえず付けられる名前で保存はできますか?

112は昔それで引っかかったような記憶があったんで書いたけど、
最新版(2003SP1で確認)では普通に31文字なんね。すまん。
115111:05/03/02 09:13:02
なんか終了して保存したら直っちゃいました・・・(^^;
シート名が「exl.〜」ってなってるけど・・・。
とりあえず資料作りを続けます!
お騒がせしましたっ!
116名無しさん@そうだ選挙にいこう:05/03/02 12:26:28
シートに改ページ?の点線が出ている状態で
ページの真ん中に文字を入力しても
印刷プレビューの時
列がずれてしまって真ん中じゃなくなってしまいます…
これいかに?
Excel2000です!
>>116
点線は1ページに収めきれるセルの限界をあらわしてる
だけなので、かならずしもページの端ではないです。

一応はプレビューをチェックしながら合わせることになります。

しかし、Excelにはプレビューと実際の印刷がずれるという、
有名なクソ仕様がありますので、印刷の真ん中に文字を入れる
には試行錯誤が必要です。
余白は左右同じになってますか?
プリンタの印刷不可能エリア(マージン)は左右同一ですか?
119名無しさん@そうだ選挙にいこう:05/03/02 15:05:31
>>117
>>118
レスありがとうございます
とりあえずプレビューで
自分で調節してみました
余白は均一、マージンというのは
ちょっと分からないです…プレビューの際にでる
余白とセルの位置の点ありあすよね?
最後のセルの右端の点と
右余白の点の間に隙間が出来てしまうんです…
120名無しさん@そうだ選挙にいこう:05/03/02 15:42:09
教えて下さい。
Excel2003です。

自作関数で、その関数が実行された?セル位置情報を取得する事は可能ですか。
121名無しさん@そうだ選挙にいこう:05/03/02 15:45:34
セルに@niftyと入力したら、「その関数は正しくありません」と出ました。
関数の始まりは”=”じゃないのですか?

何か間違えて設定を変えてしまったんでしょうか?
>>120
ユーザー定義関数のこと?
なら可能だよ。
やり方が解らなければググってね。

>>121
'@nifty
と入力しな。
@の意味についてはヘルプ参照。
123名無しさん@そうだ選挙にいこう:05/03/02 16:02:06
>>122
ユーザー定義関数です。
ググったり本見たりして解らないから聞いてるんですが...
ググったり本見たりして解らないから聞いてるんですが...
>>123
引数にROW()やCOLUMN()で返したアドレス入れてやればいいだけじゃん...
126名無しさん@そうだ選挙にいこう:05/03/02 16:42:40 ID:??? BE:14218144-#
俺も>>120は知りたいな。
そこらへんの関数、Worksheetfunctionでは呼べないからね。
もう答えでてるじゃん
引数を与えずに、ユーザー定義関数だけでできるというなら
その方法を知りたい。
なんで引数を与えちゃいけないの?
ワークシート関数のADDRESSも引数与えてアドレス返すじゃん。
ワークシート関数ってそういうものだよ。
いや。色々な方法があっていいと思う。気にするな。
>122 がそういう技を知ってるように見えたから聞いてみただけだ。
>>122を問い詰めるスレになりました。
132ゴッホ ◆lkGoghDAZs :05/03/02 18:39:47
>>120
Application.Caller.Address
でアドレスが取得できるけど、こういうこと?
133名無しさん@そうだ選挙にいこう:05/03/02 19:06:42
excelのグラフ表示なんですが、

グラフが物凄く細長くなってしまって戻らないんですが
どうればよいのでしょう?

具体的にいうと、グラフシートに今グラフを表示させているんですが、
そのグラフエリアの部分が縦長になっていて、その中にあるプロットエリアも
凄まじく縦長になっている状態です。

プロットエリアは、■マークにマウスポインタを合わせると、サイズ変更ができるみたい
なんですが、グラフエリアがどうしてもサイズ変更が出来ません。

どなたかご存知の方いらっしゃいますか?

ちなみにOS:Win2kSP4、Excel2002SP3です。
134133:05/03/02 19:09:08
言葉では分かりにくいので画面イメージです。

ttp://www7.big.or.jp/~mb2/bbs/up/kao/source/up2551.jpg

こんな感じで縦長になってます・・・。
135ゴッホ ◆lkGoghDAZs :05/03/02 19:20:45
>>133
その画像見ると、ズームが10%になってるけど、そこを変えてみては?

もしくは、「表示」→「ウィンドウにあわせてサイズを変更」を押すか、F11キーを押す。
136133:05/03/02 19:25:42
>>135
ああありがとうございます。

>「表示」→「ウィンドウにあわせてサイズを変更」を押す
で解決しました。

>その画像見ると、ズームが10%になってるけど、そこを変えてみては?
これをやったらこのままの縦横比率でサイズが大きくなるだけでした。


しかしなぜこんなに縦長になったんだろう・・・。
137ゴッホ ◆lkGoghDAZs :05/03/02 19:40:00
>>133
プリンタドライバのせいのような気がする。
印刷設定やそのオプションを見てみれば原因がわかるかも。
でも、俺も、その縦長のグラフになっちゃったことがある記憶がある。
原因は忘れたけど。

まあ、とりあえず、解決したみたいなんで、よかったです。
質問させて頂きます。

文字だけだと説明しづらいので画像を見てください。
ttp://uploader.zive.net/file/14486.png
画像のB12・C12・D12にそれぞれ値を入力した時にE12にクラスを表示したいのですが、
IF・ANDで作ると7階層以上になってしまいます。
この場合はどういった関数で作れば良いのでしょうか?
宜しくお願いします。
139133:05/03/02 19:56:54
>>137
あ、プリンタドライバか。思いっきりいじってるわ。

成る程ねぇ・・・。
140133:05/03/02 19:59:55
今確かめました。

プリンタドライバを変更すると、
それに合わせてグラフも見事に縦長になったり戻ったりしてます。

一つ賢くなってよかったとです。
>>138
まず、全長*全幅の計算をするセルを作る。
そして現在文字列で作られてる全高と面積のインデックスを
VLOOKUP、HLOOKUPで扱えるように数値に変更するか
数値の列、行を挿入し、更に面積のインデックス番号の行(2〜6)を作る。
最初の計算で出した面積をHLOOKUPに掛けて面積のインデックス番号を取得し
全高をVLOOKUPに掛けてHLOOKUPで得たインデックスの列の値を取得する。以上。
142ゴッホ ◆lkGoghDAZs :05/03/02 20:39:18
>>133
あ、ひろしさんでしたか。初めまして。

>>138
以下の方法もあります。

len、find、left、valueなどを利用して、最小値を取り出し、数値に変換。
match関数で、位置を調べる。
index (or address)で、該当セルの値を表示。
143141:05/03/02 20:48:58
>>138
書き忘れてたけど
VLOOKUPとHLOOKUPを使う方法だと、全高の上下を入れ替えないとダメだと思う。

式的にはC列にに全高の数値列、9行目に面積の数値列、10行目に面積のインデックスを追加し
入力列が14行目で全長=D14、全幅=E14、全高=F14だとすると
=VLOOKUP(F14,C3:H7,HLOOKUP(D14*E14,D9:H10,2))
こんな感じで出ると思うけど最初は面積とHLOOKUPは別セルに出した方が解りやすいと思う。
>>141>>142
どうもありがとうございます。
INDEX関数を使うことで何とか作ることが出来ました。
145名無しさん@そうだ選挙にいこう:05/03/02 23:40:39
2000でも2003でもおきるのですが、
sumで横計を出して、表示されている結果の縦罫をsumで計算すると
なぜか数字ではなく式が表示されてしまいます。
何が間違っているのでしょうか?
>>145
表示形式が文字列になっていると思われます。
標準に戻してもう一度計算してみなされ
147145:05/03/02 23:53:04
>>146
今実験中ですが、なかなか再現もできません。

 他に考えられることは無いでしょうか?
>>132
120じゃないけど、勉強にナターヨ。サンキュ。
149120:05/03/03 09:22:52
>>132
できました。
ありがとうございます。
>132
これは知らなかった。2000でもできるな。39
151103 ◆M8gE.WeA7E :05/03/03 14:17:17
>>104
>>105

 返事遅くなってごめんなさい、出来ました!!ありがとうございます。
同じ構成の表が2つあって

同じキー行の行内の値が違う
行だけを抜き出したいのですが
どうしればいいでしょうか?

キー
社員 勤務時間
A   20
B   30


キー
社員 勤務時間
A   30
B   30


アクセスの行きの質問ですかね?
>>152
Access行きでもいいけど
ExcelでやりたいならVBA使いな。
例が曖昧すぎるからコードは自分で書くこと。
>>152
スマートじゃないが簡単なやり方がある。

A      B      C     D
社員  勤務時間  社員2  勤務時間2

だったとして、
 E       F
=A1&B1   =C1&D1

で新たに列を作る。
そして
 G
=COUNTIF($E$1:$F$26,E1)
で数字が1になったものが重複無しの数値だからオートフィルで抽出すればいい。
でも、社員のキーが何度も出てくるような表だと意味ないか。
いや、大丈夫か。どうだろ。どうでもいいや寝よう。
WindowsXPpro + Excel2000を使用してます。

マクロのフォームにて
TextBox1 , TextBox2 , TextBox3 ・・・TextBox10というテキストボックスがあるのですが
それを一つ一つFor文で処理していきたいのですが出来そうで出来ません。
テキストボックス一つ一つをMsgBoxで表示させるとして私がマクロを書くと
For i = 1 To 10
  MsgBox TextBox + i
  (若しくはMsgBox Text + "i")
next i
とか明らかに間違ったプログラムしか思いつきません。
これは根本的に考え方が間違っているのでしょうか?
もしわかる方がおりましたらご教授下さい。

お願いします。
157名無しさん@そうだ選挙にいこう:05/03/03 18:03:07
質問です。Excel 2000 SR-1を使っています。
CTRL-Aを押すとセル全体を選択できますが、
どうようの機能のメニュー項目はどこにあるのでしょうか。
また、「有効なセル範囲全体」を選択する方法はありますか。
158ゴッホ ◆lkGoghDAZs :05/03/03 18:10:09
>>156

Controls("TextBox" & i)

Msgboxに名前を出すなら、
MsgBox Controls("TextBox" & i).Name

>>157

ヘルプで「ショートカットキー」で出た。

Ctrl + *
>>158
>>156です。ありがとうございます。出来ました!!
160名無しさん@そうだ選挙にいこう:05/03/03 18:41:20
基本的な質問ですがお願いします。
繰上げ関数ROUNDUPで、時間を繰上げできますか?

勤務開始  終了   休憩時間  勤務時間  
8:00 18:30 1:00  9:30

勤務時間9:30を繰り上げて10:00にしたいのです。
ゴッホ氏が居るところで、前スレで解決できなかった件をもう一度聞きたいのですが、
VBAでユーザーフォームの各コントロールのプロパティの初期値を書き換えるにはどうすれば良いのでしょうか?

現在はInitializeイベントで不可視にしたシートから各プロパティの値を取得して
変更があればまた不可視シートに書き込むようにしていますが、
コントロール数が非常に多くいため、シートからの取得ではユーザーフォームの立ち上がりが遅くなるので
VBEのプロパティウィンドウから行うような初期値の変更をVBA(ユーザーフォームのイベント)から行いたいと思っています。
OSはWindowsXP、Excelのverは2002です。
162ゴッホ ◆lkGoghDAZs :05/03/03 19:01:23
>>160
=CEILING(時間,"1:00:00")

>>161
ブックを閉じても、コントロールのプロパティを保存したいということ?

プロシージャの外にパブリック変数を用意して、
そこにプロパティを入れておいて、Initializeのときに、
そこから読み込めばいいんじゃない?
フォームを閉じても、値は消えないし。

ブックを閉じても保存したいのなら、
WorkbookのOpenとBeforeCloseのイベントのときのみ、
不可視シートから読み込み、書き出しすれば、
そんなに、ストレスもないと思うよ。

他の方法は、今んとこ、思いつかない。
163ゴッホ ◆lkGoghDAZs :05/03/03 19:07:07
あ、ちなみに、パブリック変数は、標準モジュールに書いてください。
164名無しさん@そうだ選挙にいこう:05/03/03 19:32:28
>162
ありがとうございます。
早速明日職場で使います!
165160:05/03/03 19:33:03
あ、164=160です。
166161:05/03/03 19:46:51
>>162
回答ありがとうございます。早速試させていただきましたところ、
初期値を適用した場合(Initializeイベントをコメントアウトした場合)と
ほぼ変わらない速度で立ち上がるようになりました。
今からBeforeCloseの方も書こうと思います。

しかしゴッホ氏でもプロパティの初期値を書き換える方法は解らないんですか。
最大の問題だった速度面は解決したけれど、出来れば不可視シートも排除したいところだし
VBAで初期プロパティ値を書き換えられればユーザーフォームを使う際だけではなく
作る際にも非常に便利なのですが。

とりあえず求めていた方法とは違いますが実用面での問題は解決したので、
今回はそれだけでも嬉しいです。どうもありがとうございました。
167ゴッホ ◆lkGoghDAZs :05/03/03 20:09:32
>>162
>しかしゴッホ氏でもプロパティの初期値を書き換える方法は解らないんですか。

わからないですねぇ。
というか、プロパティウィンドウでプロパティの値は変更できるけど、そういうことではないんだよね?
プロパティをフォームから変更して、それを保持したいってことだよね?

>出来れば不可視シートも排除したいところだし

ブックを閉じても、フォームから変更したプロパティの値を保存したいのなら、必要だねぇ。
プロパティウィンドウで設定した値は、保持されるけど。

>VBAで初期プロパティ値を書き換えられれば

何度も訊くが、プロパティウィンドウで値を変えるのは、ダメなの?

>作る際にも非常に便利なのですが。

プロパティウィンドウで値を変えたコントロールを、コピー貼り付けすれば、
同じ値のプロパティのコントロールが貼りつくし、
複数のコントロールを選択して、プロパティを一度に変更することもできるけど、
そういうことではなくて?
168名無しさん@そうだ選挙にいこう:05/03/03 20:12:18
超遅レスになりましたが前レスで下記の質問に
回答下さった方本当にありがとうございました。


Q: セル右クリック→セルの書式設定→表示形式
→日付→種類→3月4日

で設定して例えば0202と入力すると
7月20日と返ってくるのですが・・・
2月2日と返してほしいのですが
何か他にも設定あるのですか?

あと結合したセルを元に戻す方法って
あるのでしょうか?



A: 02/02 と入力
セルの書式設定>配置>セルを結合するのチェックを外す


空白セルの下から合計を出す関数はありますか。
(空白セルは、どの列に入るか不定期です)
   A   B
1 -----
2      100
3      100
4 合計 200
5 -----
6      100
7      300
8      100
9 合計 500

Win 2000、Office XPです。宜しくお願いします。
170名無しさん@そうだ選挙にいこう:05/03/03 20:55:27
高橋友城は 遺体で見つかった
171ゴッホ ◆lkGoghDAZs :05/03/03 21:04:22
>>169
意味がわからないです。
もう少し説明を。
172161:05/03/03 21:25:55
>>167
現在はプロパティウィンドウで値を変更しています。
値を変更したコントロールのコピーも利用してます。
書式メニューでの位置揃えも、複数選択しての一括変更も使ってます。
しかし同種のコントロールの数が多く、配置やサイズに規則性がある場合は
書式の位置・サイズ揃えを使うより、VBAで処理した方が効率が良いですし
複数のコントロールのプロパティ値変更も、VBAで条件分岐を使った方が効率的な場合も多いです。

例えば100個のコントロールを縦横10個づつ並べる場合、VBAならFor NextでControls("hoge" & i)に対して
Topを(((i - 1) MOD 10) + 1) * 10、Leftを((i + 9) \ 10) * 30というような事が出来ますし、
Ifを使ってプロパティAにhogeを含む物のみプロパティBをTrueに変更とかいったことも出来ます。

業務上、多くのコントロールを規則的に配置したユーザーフォームを使う機会、作る機会が多いので、
少しでも効率化したいと思う次第です。先ほどの10x10配置のマクロなどは
縦数、横数、位置倍率のみを書き換えればいろいろ流用が利くし、作ってる途中で位置を変えたくなってもVBAなら簡単ですが、
複数選択からだと、間に別のコントロールが入ってる場合はCtrlを押しながらちまちま選択していくだけでも面倒です。
173169:05/03/03 21:58:20
空白セルの下からって書いたのが悪かったのでしょうか。
一つの表で、項目ごとに小計を出せないでしょうか?

    A       B
1  基礎工事
2  材料1     100
3  材料2     100
4  小計      200
5  大工工事
6  材料1     100
7  材料2     300
8  材料3     100
9  小計      500
10 合計      700

こんな感じで、小計を出したいのですが、小計の列が決まっていないので、どのような関数を使えばいいかわかりません。
うまく伝わりませんか?
174ゴッホ ◆lkGoghDAZs :05/03/03 22:30:10
>>172
たくさんコントロールがあるなら、そうですね。
他言語なら、それが当たり前だったりするし。

VBAでも、そういう記述で実現できるのだから、
コードでプロパティを設定してもいいと思います。
それを、初期値とさせる方法はわかりませんが。(というか、不可能な気が。)
Showさせる前に設定しておけば、不自然なタイムラグもないと思うし。

というか、上記のことがやりたいだけなら、
パブリック変数や、不可視シートへの記録などは全くいらないのでは?
単に、Initializeに記述すればいいので。
てっきり、ユーザーが変更した値などを保持したいのだと思ったのですが。

>>173
意味がわかりました。
関数は、そういうことはできません。
記述する場所が決まってなければ、記述できないでしょ?
関数じゃなくて、例えば、

  A     B     C
 種別   材料   料金
基礎工事 材料1  100
基礎工事 材料2  100
大工工事 材料1  100
大工工事 材料2  300
大工工事 材料3  100

のような表にして、「データ」→「集計」で、A列を基準として、Cを集計すれば、
似たような表になるけど、ダメ?
175名無しさん@そうだ選挙にいこう:05/03/03 22:39:40
157です。
>>158ゴッホ氏
ありがとうございます。ctrl-*ですか。なかなか押しにくいキーですね。。。
この機能、メニューからは選べないのでしょうか。ショートカットにのみ
存在する機能?
176161:05/03/03 22:40:08
>>174
> というか、上記のことがやりたいだけなら、
> パブリック変数や、不可視シートへの記録などは全くいらないのでは?
いえ、あくまでもメインは値の保持であり、
172で書いたのはVBAで初期値を書き換えられれば作成時にこういう利点もあるというものです。
177ゴッホ ◆lkGoghDAZs :05/03/03 22:50:29
>>175
ツール→ユーザー設定→コマンド→編集→アクティブセル領域の選択
を、好きなところに置いておけば、クリック一発で選択できますよ。

>>176
そうですかぁ。
なら、最初の回答以上のものはありませんねぇ。

ちなみに、セルへの書き出しは、配列変数をセル範囲に貼り付けると、
時間が大幅に短縮できるので、
同じ種類のコントロールの値は、配列変数にしまっておくといいですよ。
(不可視シートをなくせるわけではありませんが、一般のプログラムだって、
テキストデータに初期値を残しておくわけだし、割り切ってくださいな。)
178名無しさん:05/03/04 02:19:13
外部参照を使いBookAのデータをBookBに集計しようとしています。
BookAを開いていない状態でBookBを開いた場合、
SUMIFは更新されるのにCOUNTIFは#VALUE!になってしまいます。
外部参照を使用したCOUNTIFは使用できないのでしょうか?
htmlの内容を貼り付けるときに、リンクが含んでいるとEXCELへの貼り付けに時間が掛かってしまいます。
対処法などありませんか よろしくお願いします
180名無しさん@そうだ選挙にいこう:05/03/04 10:29:54
WinXPでExcelを使うと異常に遅く困っています。
マクロやVBAを使用してブックから他のブックを読み込む処理が入ってたりと、
確かに時間はかかるのですが、起動に10分以上は遅すぎです。

ネットワークプリンタを使用すると遅くなると、どこかの書き込みで見たので
外すと確かに早くなりましたがそれでも10分程度です。

Win2Kではこんなに時間がかからないのでExcelの問題というよりはOSの問題
なような気がしますがよくわかりません。
誰かご存じの方いないでしょうか。

因みにマシンはPentium4 の最新のスペックのものです。
WinXP SP2
Office 2000 SP3
181名無しさん@そうだ選挙にいこう:05/03/04 13:20:46
簡単な質問かもしれませんが教えてください。
例えば、A1に0.3という数字A2に0.5という数字A3に0.7という数字・・・
と例えば1万個A行に数値が羅列しているとします。
それら一つ一つに対してひとつづつ1−A1、1−A2,1−A3・・・と
いう感じで列ごとに1−をしたいのですが、1万個もあると大変でしかたがないのです
そういった場合、一度に1−を行えるような方法ありませんか?
どなたか教えてください。
>>181
B1に =1-A1 と書いて、
B1を選択・コピーして
B2からB10000まで選択・ペースト。
>>180
念のため、そのマシンのメモリはどれくらい?
184名無しさん@そうだ選挙にいこう:05/03/04 15:09:42
質問させて頂きます。

WEBでボタンをクリックすると同ページ内の指定された行に
スクロールする設定がありますが、Excelでは不可能でしょうか?

フォームのボタン?をクリックすると200行目に移動する
といった感じです。
>>184
ActiveWindow.ScrollRow
ActiveWindow.ScrollColumn
186名無しさん@そうだ選挙にいこう:05/03/04 15:17:57
( ゚д゚)ノ ハイ!質問!ですが

知り合いからもらったファイルにページ数が裏に表示されているのですが、これはどうやればいいのでしょうか?
裏にページ数印刷すればいいんじゃね?
188186:05/03/04 15:29:05
印刷したいのではなくてページ数が多くなった時に自動で裏に表示されています。印刷したときには印刷はされません。
透かしのような??
>>188
裏っていう定義がわからん・・・
190184:05/03/04 15:50:56
>>185
出来ました。ありがとうございます。
ひょっとして私は、マクロデビューしたのですか。
>>186
改ページプレビュー画面になってるね。
メニュー→表示→改ページプレビュー
でどうぞ。
元に戻すには 標準 を選んでね。
192名無しさん@そうだ選挙にいこう:05/03/04 16:02:21
二つ教えてください
1、複数のファイルのマクロのセキュリティレベルを高に設定するにはどうしたらいいのでしょうか?
今はブックを新規で作るたびにいちいち設定しているのですが、めんどくさいです。
デフォルトを高にできれば一番なのですが・・・

2、auto_openを使ったマクロの書かれているブックがあるのですが、ファイルを開くときに
auto_openのプロセスを手動でスルーする方法があったら教えてください。
>>192
1.あれっ?マクロのセキュリティレベルってファイルごとの設定でなく、
ユーザーごとの設定じゃなかったっけ?
いったん 高 にしたら、ずっと高のはずだけどなぁ。 

2.shift押しながら起動
194186:05/03/04 16:35:19
>>191
その通りでした、、、orz
195名無しさん@そうだ選挙にいこう:05/03/04 16:57:33
>>180
>念のため、そのマシンのメモリはどれくらい?
512Mで2CPUのようです。
因みにタスクマネージャでCPU使用率を見ると50%前後しか上がってません。
XPってCPUのクロックとか使用率を勝手に制御してないんでしたっけ。
OSのような気がしますがよくわかりません。
ウィルスチェック等、常駐ものを外してみても変わりませんでした。

もしかしてスレ違いですか?
>>195

恐らくHTT搭載機だと思うんだけど
50パーセントといったら、実質100パーセントの状態と同じこと。
確かにアプリ起動時等に本当に100パーセントまで行くけど、
普通はほんの数秒のことです。
まずウィルス等、環境を疑った方がよさそうな気がするよ。
ちなみにその立ち上がり時間って、
新規ファイルを立ち上げるときの時間ですよね。
197169:05/03/04 18:23:02
ゴッホさん、ありがとうございました。
やはり関数では出来ないのですね。
素直に諦めます。

ついでと言っては何ですが、A列に小計と入力されたら、その行の、
B列の数値を太字にしたり、書式を変えることは可能でしょうか。
テンプレ6の、IF関数で、"条件が成立した場合"の所に、
何かを入れれば出来そうなのですが、何を入れたらいいのやら。

Excelは表計算ソフトです(ry
とか、過去スレで何度か見たことありますが、やはり無理なのでしょうか。
Pentium-3 600MHz RAM 256MB なノートで、Win-XP+Office-XP 使ってますが、ストレス無いですね。
ってか、Win XPに、Office 2000 って入りました?
もしかして、他のWindows とデュアルブート?
それとも、Office 2000 SP-3ならインストール出来るのかな?
>197

それぐらいだったら、条件付き書式でできるんじゃない?
>198

まず、大丈夫でしょう。
むしろ、古いOSに最新のOffice入れるほうが危険。
Win98にOfficeXP入れたときには地獄をみたよ。
>>198
うちはWin95にOffice97、Win2000にOfficeXPとExcel97、Windows2000ノートにOfficeXP
WinXPproにOffice2003、WinXPhomeにOffice2000が入ってる。
こんだけあってOSとOfficeのバージョンが合ってるものが一つもないってのもわれながらなんだかなぁ
>>197
小計って入ってたらΣボタンで自動認識するけど。
203ゴッホ ◆lkGoghDAZs :05/03/04 19:35:13
>>197
関数の仕事は、ある"特定"のセルに、ある"値"をもとに、ある"値"を返すのが仕事です。

>>A列に小計と入力されたら

ここまではできます。

>>その行の、 B列の数値を

その行のB列に値がすでにある場合、他の関数は入力できません。

>>書式を変えることは可能でしょうか。

関数は、値を返すのが仕事なので、書式を変えることはできません。

>>199のとおり、条件書式でできます。


>>202

自動認識ってどういうこと?
204169:05/03/04 21:01:26
199さん、ゴッホさん、202さんありがとうございます。

>>>書式を変えることは可能でしょうか。
>
>関数は、値を返すのが仕事なので、書式を変えることはできません。

ごもっともです。
もしかしてと思って、質問してしまいましたが、
[書き込む]ボタンを押した後、変な質問をしてしまったなと後悔しました。orz

>それぐらいだったら、条件付き書式でできるんじゃない?
>>>199のとおり、条件書式でできます。
教えて頂いた、条件付き書式で対応します。
>>195
ゴメン。前の方で既存のファイルを立ち上げているようなことが書いてあったね。
だとしたら、一概に遅いとは言えないんじゃない?
当然データ量や計算式の量に左右されるんだから。
ウィルスチェックにも時間がかかるしね。
まず、エクセルだけ立ち上げた時間を教えてくれない?
うちの環境だと、ウィルスチェック入れたままでも
10秒程度あれば立ち上がるよ。
環境はあなたのより下だから、すこしは起動時間の参考に
なるでしょう。
OSはXPHOME SP1 バージョンは2003です
今年の初めに新しいパソコンにインストールして毎日使用していましすが、
最近起動時間が遅くなったので、アドイン6個は入れすぎたかな〜と思いつつ、
なにげにExcel11.xlbを見たら8Mもあり、これだ!と思い、Excel11.xlbを削除し、
アドインを入れ直したら最初は50KBだったExcel11.xlbのサイズががxcelを起動するたびに大きくなっていきます。
前のパソコンではなかったような気がしますが、どなたか教えてもらえませんか?
207202:05/03/04 21:44:24
>>203
合計ではなく小計となる範囲の候補が自動的に出るという意味です。
レス先は>>173にすべきでした。
208名無しさん@そうだ選挙にいこう:05/03/04 21:47:22
すみません力を貸してください
エクセルにて
http://www.sup.co.jp/denpyou/gazou/kaden-d.gif
こういう表にドットプリンター使って打ち出したいのですが
テンプレートなどありませんか?
よろしくお願いいたします
>>208
ありません。
その用紙を作ってる業者に作らせるか
ご自分で作るかしてください。
>>208
時間をコストに換算すると、市販の「文字ピタ」か「送り状印刷」を買うほうが安上がり。
211ゴッホ ◆lkGoghDAZs :05/03/04 22:33:08
>>207
全ての小計のセルでシグマ押すってことですか?

一回ぽちっと押すと、小計が全て出る機能でもあるのかと勘違いした。
VBAでの文字の置換なんですが、複数の置換パターンを一度に設定する良い方法は無いでしょうか?

Replace(Replace(Replace(Replace(hoge, "2", "huga"), "3", "piyo"), "4", "foo"), "5", "bar")
現在は上記のようにしたり、検索、置換文字を二次元配列に格納して、
For i = 0 To 10
 If InStr(1, Cells(1, 1).Value, huga(i, 0)) <> 0 Then hoge = Replace(hoge, huga(i, 0), huga(i, 1))
Next i
などとやってますが、Replaceを重ねたり繰り返し処理したりしないでもっとスマートに処理出来ないものでしょうか?
グラフウィザードからグラフが作成できなくなりました。
例えば棒グラフをつくろうとしても、「要素がすべて0」の
グラフしかできなくなってしまいました。
再インストールしかないでしょうか?
OSはXP、excelはoffice2000のものです。
214名無しさん@そうだ選挙にいこう:05/03/05 12:41:40
>>212
置換の回数が決まっていないのなら、ループにするしかないんじゃない?
上側の例は、別に入れ子にしなくても、4行だらだらと書けばいいと思うけど。
215212:05/03/05 13:17:16
>>214
置換の回数は決まってます。
で、「別に入れ子にしなくても、4行だらだらと書けば」を
ForNextで書いたのが下のものです。(Ifは要らなかったかなとは思ってますが)

こういったReplaceで1対1の置換を必要回数繰り返すのではなく
5対5や、10対10等の置換をする方法を探しています。
オートシェイプの直線を書きたいのですが
「オートシェイプの書式設定」の「色と線」内の
線の色がなぜか「線無し」に設定されていて
新規に直線を引くとすべて透明の線になってしまいます。
一度透明の線を引いてから「オートシェイプの書式設定」の
「色と線」内の線の色を「自動」に設定し直してますが
いちいち面倒です…(´Д`;)
既定値の色を「自動」に設定するにはどうすればよいでしょうか?
ご存じの方どうかご教授をお願いします!
>>215
ワンパスでやるアルゴリズムとか、
検索文字列に特徴がある場合にそれを利用して高速化するアルゴリズムとかは
存在するけど、
よほど大量の文章でもなければ差は出ないだろうし、
そういう場合は別のソフトでやった方がいいだろうね。
>>216
線の色を「自動」にオートシェイプを右クリックして、
「オートシェイプの既定値に設定」をクリックする。
219218:05/03/05 14:35:31
線の色を「自動」にオートシェイプ は、
線の色を「自動」にしたオートシェイプ の間違いです。

「した」が抜けた・・・。
220216:05/03/05 14:38:23
>218

出来た!ありがとう!(´∀`* )
221212:05/03/05 14:43:04
>>217
> 検索文字列に特徴がある場合にそれを利用して高速化するアルゴリズム
解説、又は解説先へのリンクをお願いします。
現在の置換パターンは7で、置換対象は2000〜5000程度ですが
今後パターンも対象を増えると思われるので。
>>221
キーワードは「Aho-Corasickアルゴリズム」とか「fgrep」とかだけど、
そのぐらいの語数ではあまり効果がないと思う。
GNU grep(という名前のソフト)には組み込まれてる。
たぶんWindowsにも移植されたりGUIとか日本語対応とかされてるんじゃないかと想像するけど、
その辺はよく知らないので、ひまなら調べて下さい。
223名無しさん@そうだ選挙にいこう:05/03/05 16:47:44
質問です。えと、ファイル開いたり閉じたりするときに
勝手にvisualbasicが起動してコンパイルエラーですとか言われるんですけど
直りますか?自分一度もvisualbasic使ったことない初心者なのですが…
お願いします。
>>221
目的は本当に置換なのかな?
リスト引きをわざわざ置換でやってるように見える。
>>215
 なんとなく2段目の文章の質問の意図がわからない。

 ある程度置換するパターンが決まってて、その組み合わせが
代わるというなら、置換パターンを別のデータなりシート上に
置いて、それを読んで使うようにしたらいいんじゃない?

 置換対象が膨大で効率化を求めるってんなら話は別だが。
質問です。
ひとつのセルの中で、一部分だけを小さく上下に表示する方法はありますか?
その部分の前後はふつうの文字を入力します。
書式設定の上付き、下付きを上下に持ってくるような感じで。
作業の効率上、セルを分割することは避けたいんです。

今は図形描画でフォントを小さくして貼り付けてますが、
印刷する時に微妙にずれるのが面倒で・・・数も多いので。
小さく上下に表示す対部分だけを選択>右クリ>書式設定

セルに文字を入力すると「入力モード」になり、F2を押すと編集モードになりますが、
これを最初から「編集モード」で入力するにはどうすればいいですか?
229226:05/03/05 20:55:24
226です。
補足ですが、「一部分だけを小さく上下に表示する」所が2列になって、
その前後の文字は1列のままということです。
書式設定では、上付きか下付き片方ずつのやり方しか知らないので。
お願いします。
そりゃ無理だ湾
VBAの質問です。
次の2行を1行にまとめるには、どうすればいいダニ?

Sheets("女子大生リスト").Select
Range("A65536").End(xlUp).Offset(1, 0).Select

友人にマクロを見られ「無駄が多い」って笑われたモンで、、、
232名無しさん@そうだ選挙にいこう:05/03/05 21:55:59
>226
一部分だけを小さく上下に表示したいところを指定
書式>ふりがな>表示
あとはふりがなと一部分だけをそれぞれフォントサイズ変更
>>231
Sheets("女子大生リスト").Range("A65536").End(xlUp).Offset(1, 0).Select

何時までもマクロの記録に頼ってるから
無駄だらけのコードしか作れないんだよ。
234226:05/03/05 22:18:12
>>232
ありがとうございます!まさにこんな感じにしたかったんです。
フォントサイズも自由に変えられるので、いろいろ活用出来そうです。
他にレス下さった方も、ありがとうございました。
235名無しさん@そうだ選挙にいこう:05/03/05 22:32:55
>>233
マジレスですか・・・

Range("A65536").End(xlUp).Offset(1, 0).Selectをマクロの記録で
つくるにはどうしたらいいですか?

>>235
私は233じゃないですが、
マクロの記録では

Sheet("hoge").Select
Range("A1").Select

っていう書式になるじゃない?それを一部改造しただけだから、
「マクロの記録に頼っている」って表現してるんだろうね。

そうお熱くなりなさんな。
>>235
A65536を選択してCtrl+↑

Offset(1, 0).Selectは前スレで回答したな。
最下端データセルの一つ下を選択したいって質問で。
238名無しさん@そうだ選挙にいこう:05/03/06 00:48:25
>>228
そのシートに

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
SendKeys "{F2}"
End Sub

これでどのセルを選んでも、選んだ瞬間に編集状態
239 ◆NONO.G8G2w :05/03/06 00:57:36
>>231
 友人の「無駄が多い」の真意がいまいち…。何をやってるか
が分かるぶん、俺なら2行のまんまでいいんじゃないかと思う
んだが。

 無理に1行にまとめても可読性や保守性が下がっちゃうし、
それほど実行時の効率に差が出る記述じゃないし…

 >>233 の記述はは Sheet "女子大生リスト" がアクティブで
ない場面で実行されると目的通りに動かないような…。

 横レスで失礼。
>>239
>>>233 の記述はは Sheet "女子大生リスト" がアクティブで
>ない場面で実行されると目的通りに動かないような…。

正解。>>233は解説本を見直せ
241228:05/03/06 01:21:09
>>238
それと全く同じ事以前やったけどウザ過ぎてやめました。

必要な機能は>>228で書いた通り
「最初から「編集モード」で入力する」もので
「選択しただけで「編集モード」になる」ものではありません。
242名無しさん@そうだ選挙にいこう:05/03/06 02:13:13
あるVBAマクロを起動すると自分のマシンだけが遅くて困っています。

マッチングのマクロで、エクセルのワークシートとテキストファイルを読み込み、
相違の項目があるとワークシート側の項目のセルに色を付ける、というものです。

他のPCでは、ほんの数秒で終わるものを、自分のPCにコピーして
実行すると、3−5分かかります。

PCのスペックは、ペンテイアム4の2.4G メモリ128MB ソフトはEXCEL 2000SR1です。
OFFICEは再インストールを2回ほど行いましたが、状況は変わらず。
デフラグをやってみましたが、やはり状況は同じ。

もしかして、PCの環境の問題?の方でしょうか?
>>242
まず思い浮かぶのがメモリ不足。
ところで、SR1てかなり前の修正じゃありませんでしたっけ。
>>242
いくらCPUが早かろうとメモリが全然足りない。
>>241
なんか、そのレス感じ悪。。。

一つ思いついたけど、書きたくなくなる感じですよ。
246 ◆NONO.G8G2w :05/03/06 09:54:23
 単に [F2] を人間が押すか、Excel にやらせるかの
問題のような気がするが…。それさえ自動化する
必要に迫られるって、どういう場面なんだろ?

 ところで、Excel の編集モード/入力モードの
違いを知るプロパティってあるの? Sendkeys って
”もろ、人間の操作”って感じで正攻法じゃない…。
1つのセルに(あ)荒川区、足立区、(い)板橋区(え)江戸川区…(め)目黒区と入力されていて、
()の部分だけフォントを変更するようなマクロってありますか?
置換だとそのセルすべてが対象になってしまいます。(Excel2003です)
>>247
別にマクロを使わんでも、数式バーで操作すれば、文字列の一部だけ
異なる書式を指定することできますよ。
>>247
こういうのを見るといつも、「なぜ別セルに分けない?」と思うのだが、
良かったら1つのセルにこだわる理由を聞かせてくれ。
>>248
たくさんあるのです。
>>249
Excelをワープロ(ry
251 :05/03/06 12:15:46
マクロの質問です。

RSSなどで表示されている値の数値のみを変数に入れるには
どうしたらいいんでしょうか? 教えてください。
> 一つ思いついたけど、
思いついたと言うだけなら簡単だね。
228はつりでしょ?
書きたくなくなる気持ちわかるので、あえて書かなくていいと思う。
言うだけなら簡単だなんて挑発しないで、
おしえて欲しいのなら、素直におしえて下さいくらい言えばいいのに。

とつられてみるテスト。
初心者ですいませんが
ファイルの新規作成が複数できてしまって消せないんです

XPHomeEditionSP2にExcel2003SP1です
助けて下さい
255名無しさん@そうだ選挙にいこう:05/03/06 16:53:37
>254
どこにファイルの新規作成ができているんです?
256名無しさん@そうだ選挙にいこう:05/03/06 17:22:01
win2kにExcel2000使用しています。
シートに貼り付けてあるハイパーリンクをクリックすると

1.通常非表示のwebツールバーが表示される。
 または通常表示位置のwebツールバーの表示位置が変更される。
2.OFFにしていた画面プロパティの視覚効果がONになる。

上記の2点激しくうっとうしいのですが回避方法わかる方、ご教授ください。
「あるセル範囲が全て空欄だったら」というIf条件式を作りたいのですが、範囲が可変のためうまくいきません。
範囲はRange(Cells(1, i).Address, Cells(1, j).Address)です。範囲が固定なら
If [A1] & [B1] & [C1] = "" Then
でいけるし、If文の前に
For Each myObj in Range(Cells(1, i).Address, Cells(1, j).Address)
等を使って変数に結果を返したりFunctionを使ったりすれば出来るのですが、
なんとか If 『このなかだけで』 Then 条件式を作りたいのですが。

1行文じゃないとどうしても困るってほどじゃないけど、解る方が居ましたら教えてください。
>ご教授ください

 先生がホスィ〜け???
 ご「きょうじゅ」じゃなくて、ごきょうj(ry
「ご教授ください」は誤用かと思っていたが、ググってみたら
「ご教示ください」の方が多かった。

ご教授ください 64,100件
http://www.google.co.jp/search?hl=ja&q=%E3%81%94%E6%95%99%E6%8E%88%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84

ご教示ください 38,700件
http://www.google.co.jp/search?hl=ja&q=%E3%81%94%E6%95%99%E7%A4%BA%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84
260名無しさん@そうだ選挙にいこう:05/03/06 21:17:36
あるセルがAの場合は別のあるセルにアと表示させ、Bの場合はイと表示させるといった感じで、
あるセルに対応した、文字を別のあるセルに表示したいのですが、なんかいい方法があるでしょうか?
(対応の組み合わせは、15組くらいです)
IFだと個数に制限があり、うまくいきませんでした。
>>260
別シートに対応表を作ってVLOOKUP
>>260
対応表を作って、VLOOKUP
263ゴッホ ◆lkGoghDAZs :05/03/06 21:26:10
>>257

[A1] & [B1] & [C1]は、文字列(値)の連結なので、結果は全てのセルの文字列を合わせたものになりますが、
Range(Cells(1, i), Cells(1, j))は、セル範囲を表したものなので、文字列にはなりません。
( Cells(1, i) & Cells(1, i + 1) & Cells(1, i + 2) とかなら、文字列の連結になりますが。)

なので、

For Each myObj in Range(Cells(1, i), Cells(1, j))
 STR = STR & myObj
Next
If STR = "" Then
 …

のように、For を使って文字列を連結する必要があります。
まあ、私なら以下のように、フラグを使いますが。

FLG = True
For Each myObj in Range(Cells(1, i), Cells(1, j))
 If myObj <> "" Then
  FLG = False
  Exit For
 End If
Next
If FLG Then
 …

ちなみに、Range内の.Addressは、不要です。

>>259
辞書を見たら、「教授する」という動詞(複合動詞)が載っていました。
ご教示くださいのほうが少なかったのでは?(笑)
264名無しさん@そうだ選挙にいこう:05/03/06 21:59:59
スルーしてもいいんだが
>>228は回答例知ってて聞いてるのか?
>>241読むと、なんかそんな感じ
読んでてずっと思ってたんですけど、
最初から「編集モード」である利点ってなんですか?
266257:05/03/06 23:02:16
>>263
こちらの書き方が悪かったのかも知れませんが、意図が伝わってないようです。
> [A1] & [B1] & [C1]は、文字列(値)の連結なので、結果は全てのセルの文字列を合わせたものになりますが、
> Range(Cells(1, i), Cells(1, j))は、セル範囲を表したものなので、文字列にはなりません。
承知しております。

> なので、
> For Each myObj in Range(Cells(1, i), Cells(1, j)) …
> のように、For を使って文字列を連結する必要があります。
>>257で書いたとおり、その方法を使えば出来るのは解っています。

現在、目的を達成する方法は解っているけど、それをIf〜Thenまでの
1行条件文として記述出来ないかという質問です。
267名無しさん@そうだ選挙にいこう:05/03/06 23:03:08
>>265
入力中に方向キー(←や→)が有効になるくらいかな?
よく使う関数、たとえばvlookupをsum(Σボタン)のようにツールバーに登録する方法ありますか?
269名無しさん@そうだ選挙にいこう:05/03/06 23:08:03
教えてください。

あるデータ集団から、
IF文を使い、条件があうものだけ値を返して、
あわないものは空白("")に抽出をしているのですが、
この抽出データで散布図を描いたときに、空白部分を0と
認識してしまい、0でもプロットされてしまいます。
値が入力されているセル(行)だけでプロットされるように設定
できますでしょうか?

(折れ線グラフでしたらオプションで空白セルの扱いを
変えられるようですが。。。)

どなたかご教授ください。(OS: WINXP、Excel2000)
270265:05/03/06 23:16:59
>>267
ありがとう。
> 入力中に方向キー(←や→)が有効になるくらいかな?

これがデフォだと困るけど、状況によってはものすごく大きな利点になるね。
>>269
""の代わりにNA()を使うとおk。
#N/Aの表示が嫌なら、条件付き書式あたりで処理して
>>255
説明不足でスイマセン
左上のファイルメニューというかタブですか
開く の次に 新規作成 が3つも4つも出来てます
274ゴッホ ◆lkGoghDAZs :05/03/07 00:03:15
>>266
わかっているのはわかっていましたが、Forを使いたくない理由がわからない。
For を使えば簡単にできるのに。
普通は For を使います。
Function myFn(myRange as range) as boolean を作成してその中でループで回して、If myFn then とかもダメなんだよねぇ?

If Cells(1, i).End(xlToRight).Column > Cells(1, j).Column Then
 …
など、とりあえず1行でできる方法はありますが、スマートな方法ではないと思います。

If Not Range(Cells(1, i), Cells(1, j)).Find("", , , xlWhole) Is Nothing Then
 …
のWhatを、「""以外」とか指定できたらできるのですが、なんかできないみたいだし…

誰かいい案があったら、教えてあげてください。

>>273

ツール→ユーザー設定をクリックして、ダイアログが出たままの状態で、「新規作成」をツールバーの外に、
ドラッグアウトしたら消えると思う。
>>257
If Application.CountA(Range(Cells(1, i), Cells(1, j))) = 0 Then
  MsgBox "全部空白"
End If

数式で空白になってるセルがあるなら↓
If Application.CountBlank(Range(Cells(1, i), Cells(1, j))) = Range(Cells(1, i), Cells(1, j)).Cells.Count Then
  MsgBox "全部空白"
End If
276ゴッホ ◆lkGoghDAZs :05/03/07 00:30:28
>>275
あ、ワークシート関数があったね。俺には思いつかなかった。
いいじゃん、これ使いないよ。
内部的には、ループで回してるんだろうけど、とりあえずソース上には現れないし。
277名無しさん@そうだ選挙にいこう:05/03/07 00:30:33
>>272
THX!! うまくいきました!ありがとうございます。
>>260
=CHOOSE(MATCH(A1,{"A","B","C"},0),"ア","イ","ウ")

#N/Aは条件付き書式で消してください。
279257:05/03/07 00:40:50
>>275
数式で""を返してるセルは無いので上の方法を使わせていただきます。
どうもありがとうございました。


>>ゴッホさん
失礼なこと言ってすみません。
今回は275さんの方法を使わせていただきますがゴッホさんのご助言も大変参考になしました。
いろいろありがとうございました。
>>260

本当に「ABC…」を「アイウ…」にするのなら

=JIS(CHAR(CODE("ア")+(CODE(ASC(UPPER(A1)))-CODE("A"))))

とかでもできるよ。
281名無しさん@そうだ選挙にいこう:05/03/07 03:05:44
セルの中に長い文章を入れたときに下の段のセルに自動的に折り返して
文章をつなげて書いていくにはどうしたらいいですか?
windows版ってExcel97から2000にバージョンアップして98って存在しないんでしょうか?
>>281
Excelはワープロじゃないので・・・
折り返したい位置でセルの値をうち切ってください。

>>282
存在しません。
これでどうかな?
If Range(Cells(1, i).Address, Cells(1, j).Address).SpecialCells(xlCellTypeBlanks).Count = 0 Then

個人的には、関数を作ったほうがいいと思う
Function IsAllCellsBlank(i, j) As Boolean
For k = i To j
If Cells(1, k).Value <> "" Then
IsAllCellsBlank = False
Exit Function
End If
IsAllCellsBlank = True
Next
End Function
=INDIRECT(常に現在のワークシートの左にあるシート名&"!A1")みたいなことをしたいのですが
このシート名はどの関数で求めれば良いのでしょうか?
>>284の上のは、「空白セルの数が0だったら」になってますよ
287 ◆NONO.G8G2w :05/03/07 08:28:54
>>285
 ユーザー定義関数を使います。

Public Function BeforeSheet() As String
BeforeSheet = Sheets(ActiveSheet.Index - 1).Name
End Function

 んで、セルに次の式を入力

=INDIRECT(BeforeSheet()&"!A1")

 当然ですが、一番左にあるシートでは #VALUE! エラーになります。
それと、目的のセル(Indirect の中身がさすセル)が更新された
場合にも #VALUE! エラーになってしまいますが、これは [F9] で
再計算をかけると直ります。

 ↑どなたかこの原因と解決方法を教えてください。(w
288名無しさん@そうだ選挙にいこう:05/03/07 08:58:05
教えてください

同シートに印刷指令ボタンを2つつけようと思ってます。
ボタンAはA4サイズで印刷
ボタンBには(書式は別ですが)洋封筒に印刷。

これをマクロではどういうふうに書けばいいのでしょうか?
よろしくお願いします。
289名無しさん@そうだ選挙にいこう:05/03/07 10:51:43
>>282
Excel 98、Excel 2001
はMac用です
>>287
それ実際にやると循環参照にならない?
>>290
=INDIRECT(略)
をA1に書いてる?
そしたら循環する罠。
A1以外に書きな。
Dsumで質問です

合計値の欄&条件式が横方向に並んでいる場合は
=dsum($A$1:$D$4,$C$1,A6:A7)とし
区分 区分 区分
3月  4月  5月・・・・
と条件式を縦に並べて並べて横にコピーしていけばよさそうですが

各合計値の欄が縦に並んでいる場合は
どうすればコピーで一度に入力できるのでしょうか?

  A B C   
1区分  月  金額      各合計 
2 x    y   z     区分1   xxx  
3 x    y   z     区分2   xxx
4 x    y   z     区分3   xxx

このような感じなんですけど・・わかりにくくてすみません
293名無しさん@そうだ選挙にいこう:05/03/07 15:47:02
>>288
こういう時こそ「マクロの記録」を活用すべきです

使用しているプリンター等がこちらからわからないので
洋封筒を印刷するときはこちらのプリンターで普通はこっち
とかいった場合はコードを書いてあげることが出来ません

マクロの記録ボタンを押してそれぞれの動作を記録して
ボタンに登録すれば簡単です
>>288
Sheets("Sheet1").PageSetup.PaperSize = xlPaperA4
>>287
これだと「セルのあるシートの」でなく「現在アクティブなシートの」
一つ前のシートを見に行くので、結局全シートが同一セルを指しませんか?

やりたいことは先月(1つ前のシート)の計算結果を繰り越しして
翌月の計算に組み込みたいだけなのですが…
296260:05/03/07 21:19:00
みなさん、ありがとうございました。
今回は、VLOOKUPを使わせてもらい、うまくいきました。
ちょっと教えて欲しいのですが、ActiveSheetの順位を取得するプロパティとかって無いのでしょうか?
For i = 1 To Worksheets.Count
 If Worksheets(i).Name = ActiveSheet.Name Then
  MsgBox i
  Exit For
 End If
Next i
今はこんな風にやってるんですが、もっと簡単に取得できないものかと思いまして。
298 ◆NONO.G8G2w :05/03/07 22:07:28
>>295
 ああそうか! ActiveSheet だから #VALUE! になっちゃうんだ。
ってか、そこまで読めるんなら分かるっしょ。

 しかも >>285 には「現在のワークシートの〜」ってあるから、
>>287 もあながち間違いではないと思うが…。

 ついでに >>287 の解決法。
ユーザー定義関数(BeforeSheet)を埋め込んでいるシートの
WorkSheet_Activate イベントで Application.Calculate を実行。
もちろん、>>295 の指摘通りスマートな方法ではない。

 ↑どなたかよさげな方法を教えてください。(w
299 ◆NONO.G8G2w :05/03/07 22:09:05
>>297
 もしかして、ActiveSheet.Index のこと?
300 ◆NONO.G8G2w :05/03/07 22:28:46
>>295 (騒がしくてスマソ)
 落ち着いて考えてみると、普通に計算式で参照したら
いいんじゃないの? Sheet2 のセルなら

 =Sheet1!A1

 てな具合に。。。おそらくシート名とか決め打ちに
なるんでしょ。
301288:05/03/07 23:38:31
>>293,294
あ なるほど・・・・。
勉強になります。です。
ありがとうございました。
>>300 決め打ちでいいならわざわざ聞かないだろ、普通。
303名無しさん@そうだ選挙にいこう:05/03/08 00:50:19
すんまそん、質問させてくだちい。

G列のセルに
P-1、P-2、G-1、G-2、その他の文字があり、先頭の文字が
Pだったらピンク、Gだったらグリーン、それ以外は無色にセル内に色を
つけるマクロで質問です。

Dim 列 As Integer
For 列 =1 to 50
  If Left(Cells(列, 3), 1).Value="G" Then
   .ColorIndex = 35
  End If
Next

こんな感じで組みたいんやけど、誰か答えろや!
>>303
If Left(Cells(列, 3), 1) = "G" Then
Cells(列, 3).Interior.ColorIndex = 35
End If
ボケがっ
305303:05/03/08 01:11:16
>>304
ネタかと思ったら、動いたYO!
ありがd!

次も質問してやるから、よろしくな!
>>295
Function aaa() As String
If Application.Caller.Worksheet.Index > 1 Then
aaa = Sheets(Application.Caller.Worksheet.Index - 1).Name
Else
aaa = "ERROR"
End If
End Function

シート名を年月を表すような名前にした方がいいような気もするけど。
307303:05/03/08 01:13:34
今更ですけど、(Cells(列, 3)じゃなくて、(Cells(列, 7)でした。
まぁ〜誰も見てないから訂正しなくてもいいですかね?

おまいら、突っ込むなよ!ヴォケ!!
308303:05/03/08 01:22:47
今更ですけど、Dim 列 As Integerじゃなくて、Dim ぎょ(ry

ウルセー! 知ってて書いたんだよ!
309303:05/03/08 01:34:53
誰も構って紅・・・

       ∧_∧
       ( ・∀・)       ))
       /つ( ̄`ヽO_ノ⌒ヽ      さてと、そろそろ寝るか
      ノ   )        \ ))
     (__丿\ヽ ::    ノ:::: )
         丿        ,:'  ))
       (( (___,,.;:-−''"´``'‐'
310 ◆NONO.G8G2w :05/03/08 08:14:48
>>304 THX。勉強します。
>>302 先生!「普通」ってなんですかぁ?
311名無しさん@そうだ選挙にいこう:05/03/08 14:06:21
>196
新規ファイルを起動する時は問題ありません。
マクロやVBAを使用しているブックを開く場合、時間がかかります。

>205
起動するのに10〜20分かかりますが、使用マシンは最新のスペックですから
どう考えても遅いです。
エクセルだけ起動する場合は、問題ありません。
試しに他のマシンで開くと問題ないので、Excelの問題ではなく環境が原因
なのかとも思いますがよくわかりません。

一つ確認してるのはネットワークを外すとかなり改善されます。
VBAでページ設定をしている処理がありますが、ネットワークプリンタ
を見に行ってるようで、そこが遅いような気がします・・・
>>311
そこまで調査できるなら、VBAで問題かな?と思われる箇所を
コメントに変えて(頭に「'」付けて)試してみれ。
だいたいそれで特定できるんじゃないかな。
313名無しさん@そうだ選挙にいこう:05/03/08 15:26:25
excelで在庫管理をしてるのですが
画像が一枚ずつしか貼り付けれません。
何十枚も一気に貼り付ける方法はないのでしょうか?
こういう使い方するなら別のソフトの方がいいのかな・・

OSはXPでexcelは2002です。
>>313
VBA使えば何百枚でも一気に貼れるよ。
どの画像をどの位置にどういう風に貼りたいのか解らないので
コードは自分で書いてね。

細い線がセルの区切り、太い線が罫線だとして
┌───┬───┬
├───┼─┰─┼
├───┼─┸─┼
こんな感じにセルの中央に罫線を引きたいんだけど
┃文字をセンタリングで使うのと横2セルを結合する以外に何か方法無いかな。
標準罫線では中央線は無いし、オートシェイプの直線は、
セル区切りの交点にしかスナップしないので、スナップ無しで引くときちんと引けないし、
セルサイズに合わせてサイズ変更するようにしても、左合わせの位置しか見てないようで
列幅を変えると崩れてしまう。

今はある方法で中央位置に合わせたオートシェイプの直線をセルごとコピペして
「グリッドに合わせる」を有効にして、Shiftを押しながら伸ばしたりしてるけど、
面倒だし上で書いたように列幅変更で崩れてしまうのでなにか良い方法知ってる方居ましたら教えてください。
透明にした四角いオートシェイプの上に、
真ん中の位置に直線のオートシェイプを置いてグループ化。
これでセルの大きさ変更には追従できるようになる。
>>316
そっか、俺も直線を中央に位置させるのに矩形とグループ化は使ったけど、
不要になった矩形を消さずに透明にすればよかったんだね。
教えてもらった方法でバッチリうまくいきました。どうもありがとう。
318名無しさん@そうだ選挙にいこう:05/03/08 18:06:56
すみませんがPDFのファイルをEXCEL形式に変換してくれるソフトってありませんか?
セキュリティーで保護されてなければReaderからコピペ出来るんじゃなかったっけ
320318:05/03/08 18:20:54
ご返答ありがとうございます。それってどう言うことでしょうか?アクロバット本体持ってればできるってことでしょうか?
321名無しさん@そうだ選挙にいこう:05/03/08 18:34:32
ExcelのマクロでExcelのバージョンを知る方法はないでしょうか?
322名無しさん@そうだ選挙にいこう :05/03/08 18:36:11
PMT関数が何度教科書読んでもやっても理解できずに、
例題・問題失敗します。
VLOOKUP・HLOOKUPも・・・
誰か詳しく教えてください。
323318:05/03/08 18:48:41
コピペってそのままは出来ますけど、それだと一枚の絵を貼り付けただけみたいになってしまいますよね、、、orz
やはり、無理なのかな?一枚一枚変換するしかないのかな、、、、、orz
>>323
普通にテキストとして選択すればいいじゃん。
それが出来ないならセキュリティーが掛かってるpdfだから諦めな。
>>321
Application.Version
326名無しさん@そうだ選挙にいこう:05/03/08 20:25:15
Excelでもワイルドカードとかってあるんでしょうか?

例えば、条件付き書式で、とある列になんらかの文字を入れた場合
その行は色が変わるといったようなことをしたいです。

といいますのも、ある列に文字を入れることによって、その行が処理したという意味にしたのです。

分かりにくい質問かもしれませんが、アドバイスなどありましたら
お願いします。
327318:05/03/08 20:34:20
複雑な図形や表があるのでテキストだけでは、、、OCRソフト買ってきてしまいました。
>>326
ワイルドカードも場合によっては使えますが、このケースは要らないのでは?
たとえばセルA1に条件付き書式で
[ 数式が ][ =$A$1="○"  ]
とやって、次に条件を満たしたときの色を指定する。
終わったら今度は、そのセルの書式を行全体にコピーする。

これでA1に「○」を入力すれば、行全体の色が変わります。
>>326
セルに文字を入れたらそのセルの色を変えるってなら全体を選択して
数式条件で「=A1<>""」で出来るけど、
セル入力に対して行全体に色を付けるならVBAじゃないと無理。
特定の列を条件判断用に使うなら、同じく数式条件で
「=$A1<>""」とすればA列で文字を入れた行全体に色を付けられるけどね。
330名無しさん@そうだ選挙にいこう:05/03/08 20:41:38
>>328
レスありがとうございます。

すみません、私の説明が悪かったですね。
○の部分の内容が毎回変わる場合でも、その行の色が変わるようにしたと思っています。
内容はリストで選択できるよなものでなく、任意の文字列です。
>>330
なら329さんの出してくれてる「=$A1<>""」じゃダメ?
これなら何の文字列でも入れば反応するけど。
332名無しさん@そうだ選挙にいこう:05/03/08 21:02:23
>>329
レスありがとうございます。

初歩的な質問ですみません。
「=$A1<>""」の中の<>はどういう意味でどういう使い方をするのでしょうか?
333名無しさん@そうだ選挙にいこう:05/03/08 21:04:32
自己解決しました(使い方はイマイチ分からないけど・・・)
<>は関数なんですね。
関数の勉強から始めます・・・
>>333
関数じゃないよ。「<>」は「〜と異なる」という意味。
>>332
<>は比較演算子。
=の反対で対になる値が等しくないという意味。
""は空欄なので、「<>""」は「空欄以外の場合」という条件になる。
336名無しさん@そうだ選挙にいこう:05/03/08 22:38:51
エクセルで、例えば性別で男に○をつける場合
図形で○を書き、その中に男と書くしかないのでしょぷか?
CADみたいに、直接男に○をつけられないのでしょうか?
【問題】
次の3行を1行にしる!(制限時間1分)

Sheets("ERO_DVD").Select
Range("A1:G1").Select
Selection.AutoFilter
Sheets("ERO_DVD").Select: Range("A1:G1").Select: Selection.AutoFilter

>>336
ChrW(12954)

これが「男」の○囲み文字。
因みに女は12955

ついでに言っておくとExcelはワープロでもCADでもないので、
任意の文字を○で囲むのは無理。
どうしてもやりたければ○囲みフォントでも使え。
ふりがなの表示で、
MSIMEに未登録の単語を新たに辞書登録しても反映する方法ありますか?

例:石川県鳳珠郡は今月合併された新地名で、「ほうすぐん」と辞書登録しても、
候補が出てきません。
ワードのルビも同様でした。
>>337
Sheets("ERO_DVD").Range("A1:G1").Selection.AutoFilter
342名無しさん@そうだ選挙にいこう:05/03/08 23:26:30
>>335
遅くなりましたが、ありがとうございました。
Excelで検索したら沢山のサイトがヒットしたので、色々と勉強してみます。
343名無しさん@そうだ選挙にいこう:05/03/08 23:35:16
>>341
Sht("ERO_DVD").Rng("A1:G1")..AtFilter
344名無しさん@そうだ選挙にいこう:05/03/08 23:46:46
Excel2002 WinXP
VBAでシート操作についての質問です。

Sheet1,Sheet2,Sheet3があります。
Sheet1のA1に入力したデータがシート名になり、
Sheet2のコピーをSheet3の前に挿入したいのですがうまく出来ません。

Sub test()
Worksheets("Sheet2").Copy Before:=Worksheets("Sheet3")
End Sub
上記のような動作で、Sheet1のA1に入力したデータがシート名に
なり、シートのコピーを行いたいのです。

よろしくお願い致します。
>>344
コピーして出来た新しいシートの名前を変えるということなら、

ActiveSheet.Name = Worksheets("Sheet1").Range("A1").Value

かな。
346名無しさん@そうだ選挙にいこう:05/03/09 10:38:31
カスタムツールバーの設定って、他のエクセルに取り込むために
エクスポートとかってできるのでしょうか?
エクスポートしなくても、設定ファイル拾って他のPCにぶち込めばOK。
設定ファイルの場所は、OS、Excelのバージョンに因って違うので
自分で調べてね。
>>347
ニヤニヤ
114.6
116
115.6=346.2
と言う数字を四捨五入して合計を出したいのですが
115
116
116=347
というふうに。表示形式とか変えても上の方の計算するみたいで
全部ROUND関数を使えば良いのですが、合計のセルだけで
四捨五入して答えを求めたいのです。
出し方あるでしょうか?
>>349
四捨五入してからの合計を一度に求めたいということなら
=SUM(ROUND(範囲,0))
と入力してSHIFTとCTRLとENTERを同時に押す。
詳しくは配列数式を調べること。
351349:05/03/09 13:23:59
何回もすいません
合計のセル以外を使ってでもいいので簡単なやり方はあるでしょうか
352名無しさん@そうだ選挙にいこう:05/03/09 14:13:48
Excel2000を使っているのですが、マクロでファイルを保存して終了する時に
開いているブックには他のファイルへの自動リンクが設定されています。このブックを更新し、他のブックの変更を反映させますか?
と言うダイアログが勝手に表示されてしまいます。
Application.DisplayAlerts = False
を設定しても駄目でした。

このダイアログを表示させない方法はないでしょうか?

どうかよろしくお願いします。
>>351
それなら、元の列の横に四捨五入した列を作って、そっちを合計したらいいだけ。
>>351
ツール=>オプション=>計算方法タブ=>表示桁数で計算にチェック
ただし、すべてのセルに影響する。
355349:05/03/09 15:50:36
350.353.354
物凄くありがとうございます。
本当にありがとう
生きた心地がしませんでした。
>>350
参考になったありがとう
Excel、Word共に2002。

Excelで名簿を作り、Wordでそのデータを使用して差し込み文書を作成しました。
このWord文書を開いてその後Excelファイルを開くとExcelファイルは読み取り専用で開きます。
そしてどちらも問題なく閉じることができます。

しかしExcelを開いてからWordを開くと二つを終了した時
EXCEL.EXEが残ってしまいます。(タスクマネージャより確認)
これって既出でしょうか?
MSを検索してもそれらしい記事が見つけれませんでした。
358344:05/03/09 20:11:12
>>345
できました!ありがとうございました!
359318:05/03/09 22:44:09
コピーライトの○Cってどういう風に出すのですか?お願いします。
>359

(C)
361318:05/03/09 23:06:43
(C)は知っていたのですがスペースでそのまま変換できたんですね。てっきり他のボタンかといろいろ、、、orz
条件付書式で「土日ならセルの色を「赤」にする」ように設定しているのですが、
手動でセルの色を「青」にした場合はその色を表示するようにするにはどうすればいいでしょうか?
>>362
条件付き書式は、任意設定した書式より優先されるので、
条件付き書式を解除して「青」を設定するか、
既存の条件付き書式より優先度の高い書式を使うかだな。
>>363
レスありがとうございます

>既存の条件付き書式より優先度の高い書式を使うかだな。
とありますが、たとえばどのようなものがありますか?
365名無しさん@そうだ選挙にいこう:05/03/10 00:11:17
会社のPCは、Office2000で Excel2000なんですが、
自宅のPCは、OfficeXPを買ったのに Excel2002なんです。
なんで、ExcelXPじゃないんですか?
セット物 = XP
単体 = 2002

製品としては前作とあまり代わり映えしなかったから、
商品名で売ろうとした。
若しくは、WinXPでは使えないような錯覚を起こさせ
PC初心者に売りつけようとしたMSの販売戦略。
といってみるテスト。
366

× WinXPでは使えないような
○ WinXPではそれまでのバージョンは使えないような
© &copy;
369名無しさん@そうだ選挙にいこう:05/03/10 08:40:35
©
370352:05/03/10 14:41:16
解決しました。
371名無しさん@そうだ選挙にいこう:05/03/10 14:52:18
エクセルのバージョンは2000です。
あるセルにアクティブになっているシート名を表示させたいです。
可能でしょうか?
やっぱり、マクロを使わないと無理ですか?

マクロだとなんか不都合あるの?
373名無しさん@そうだ選挙にいこう:05/03/10 15:49:44
>>371
少し回りくどくなるが
セルA1に
=CELL("filename",A1)
セルB1に
=MID(A1,FIND("]",CELL("filename",A2))+1,100)
374373:05/03/10 16:07:02
>>371
スマソ勘違いしてた
これじゃ現在表示されてるシート名しか出ない orz

複数のシートがアクティブになったときは、全部出ないとだめだ罠
375名無しさん@そうだ選挙にいこう:05/03/10 16:22:49
文字編集で、F2を押すつもりがF1を押してしまい、ヘルプが起動する
のをイライラ待つ、という日常なのですが、F1の機能を殺す設定ある
いはソフトはないでしょうか?
>>375
マクロでいいならあるよ
>>376 レスありがとうございます。

あ、そういうテがありますか。
VBAかなんかでキー入力をトラップするとか?

すいませんが、どこかにブツはありますか?
Application.OnKey "{f1}", ""
>>378 なんやら解りませんがサンクス。
380名無しさん@そうだ選挙にいこう:05/03/10 19:44:50
エクセルの列を互い違いにすることはできますか? ブロック塀のように。
1行目の隣り合ったセルの差額を、2行目に表示させたいのですが、
上の行のセルの間に数値を置きたいのです。無理ですか?

[A ][ C]
  [B]   ←こんな感じで
追記  A、B、Cの列幅は同じで、AとCのすき間は無し。
>>380
できねえよ。
無理やり形だけ作るなら、
A1とB1を結合し、"A"といれる
C1とD1を結合し、"C"といれる
B2とC2を結合し、"B"といれる
という風にすると見かけ上は指定のとおりになるけど。
>>380-381
列番号で見て、1行目は奇数列+偶数列、
2行目は偶数列+奇数列で結合すればいいじゃん。

  A .B  C .D  E
1[ A1 ][ C1 ][ E1 ]
2  [ B2 ][ D2 ]

結合すれば「A1:B1」のセルアドレスが「A1」になるから。
結合が面倒ならVBAでやればいいし。
因みにB2の位置をB1にするのは不可能。
>>382
ああ、その手がありましたか。今、実際にやってみました。

>>383
頭悪いので、すぐには理解できません。今から考えて試してみます。
>>383
382の方と書き方は違いますが、同じ方法ということですよね。

>>382-383
結合という手段が思い浮かびませんでした。これで何とか会社で
使っている手書きの表をエクセル化できそうです。
ありがとうございました。
Excel2000 Win2000 環境です。
・ファイル(F)メニューから印刷範囲を設定している。
・印刷範囲の始点となるセルは、右(もしくは下)のセルと結合している。

この状況でシートの印刷時に以下のような問題が発生しています。
・1ページ目のみ全ての結合セルが印字されない。

MSのサポート情報も漁ってみたのですが、解決法を見つけられませんでした...
回避策ご存知ありませんか?
>>386
よくわからんけど、始点が結合セルであることがまずいのなら、
始点の左に列を挿入して、その列の幅を目立たない程度に縮める。
その列も含めて、印刷範囲を再指定する。
でどう?
2の1/3乗のような計算をするにはどのような関数を使えばいいのでしょうか?
つまり2の立方根?
なら「2^(1/3)」で出来るけど。
>>389
おーありがとございます。
関数じゃなかったのね。
391386:05/03/10 22:06:07
>>387
あいやー、そういやそうっすねー。
 列挿入→印刷範囲再設定→追加した列の幅をゼロ っと...
うーん、やっぱダメっすorz...
なんか別の要素がトリガーになってる。。。むぅぅう、原因の切り分けからやり直してきます。
お手数掛けました。。。

>>390
関数なら POWER(2,1/3)
すいません、おそらく初歩的なことだと思いますが

1.ファイルを開くと「○○○.xlsと同じ名前のファイルが既に開かれています。」というメッセージが毎回出ます。

2.開いたファイルを何もせず閉じようとすると「○○○.xlsへの変更を保存しますか?」というメッセージが毎回出ます。

これらを出さないように戻すにはどうした良いのでしょうか?


会社
使用OS WinXP
使用APP OfficeXP

自宅
使用OS Win2000
使用APP Office97

原因と思われる作業:ブックAからブックBへシートのコピーをした
>>378
単に、標準モズールに書いただけじゃダメぽなのねん。
どーやればいいのん??
394できますた:05/03/10 22:53:32
サブ auto_open()
Application.OnKey "{f1}", ""
遠藤 サブ
395名無しさん@そうだ選挙にいこう:05/03/11 00:32:06
既出かも知れませんがEXCEL97(OS98SE)で使っていた
「F3」キーで直前と同じ数値を繰り返し入力する機能が友人の最新の
XPのエクセルでは使えません。解決法有りますか? 教えてください
>>395
F4では?
397395:05/03/11 09:26:42
>396
レスサンクス。F4では無理みたいです。
>>395
某ページでその問いの答えが
「ツール」→「オプション」→「移行」→「設定」の項目で「Lotus1-2-3のキー操作」にチェック
となってました。
自分では未確認。
399395:05/03/11 12:29:17
>398
レス感謝
それも試しましたがXPエクセルではダメみたいです。無理なのかな??
400371:05/03/11 12:41:09
>>373
出来ました。♪
まさにこの方法だと、私がやりたかったことが実現できてます。
結局は2つ関数を使うことになってしまいましたが、1つ目のを非表示にしてしまえば、気づかれないですね。
>>372
それを言われると、いいようがないです。

ただ、シートをコピーした時にそのシート名がセルに表示できればいいと思ったので。今回。
>>399
設定で何とかするんじゃなくて、
VBAでその機能を再現すればいいじゃん。
403373:05/03/11 17:51:54
>>400
なんだそれでいいのか・・

それなら一つのセルで実現できる
A1以外のセルに

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,100)

とすればOK
ただしシート名が100文字を超える場合は最後の100を増やすこと
404名無しさん@そうだ選挙にいこう:05/03/11 21:51:50
印刷のページ設定の画面で、ページ中央の項目に □水平(Z) □垂直(V)
っていうのがありますが、この設定をページごとに設定することはできないでしょうか?
ページ各にシートを分けるしかないでしょうか?
405名無しさん@そうだ選挙にいこう:05/03/11 21:54:30
すみません質問です。
A1セルに「123」、B1セルに「あいう」というデータが入っていて、
C1セルに「123あいう」と表示させたいんですがどうすればいいでしょうか?
または、A1とB1を結合でもいいです。(セルの結合でしたら、「123」のみになってしまいます)
よろしくお願いします。
<<405

セル結合したらあとの方が消えるのは当たり前。

=A1&B1

これでいけると思うよ。
407405:05/03/11 22:10:36
>>406
ありがとう!

&でいけました。
VBAで質問です。

会社のネットワークに繋がってるPCの名前が "PA008012" で、
それに共有フォルダ "misako" をつくり、フルアクセスのパスワード "zxcvb"を
設定してるとき、ボタンをクリックしてファイルを書き込むには
どうすればいいですか?

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:="\\PA008012\misako\test1.xls"

だとエラーになってしまいます(><)
>>408
あってるとは思うけど、どうなんだろう?
根本的にその共有フォルダへ書き込み権限が無いとか・・・
411名無しさん@そうだ選挙にいこう:05/03/12 05:02:44
セルに5桁の数値が入力されてます。
ここから、3桁目の数値のみを隣の列に取り出したいのですが、
何関数を使えばよいでしょうか。
LEFT関数だと左から丸ごと3桁取り出してしまいます。
412411:05/03/12 05:06:45
MID関数でした。解決。
413名無しさん@そうだ選挙にいこう:05/03/12 12:50:03
Excelシート上で右クリしたときのコンテキストメニューを追加することはできるのでしょうか?
条件付き書式をよく利用するので、コンテキストメニューに追加したいです。

宜しくお願いします。
414名無しさん@そうだ選挙にいこう:05/03/12 14:07:01
あるセルに入力した文字を自動的にファイル名として保存させる
事って出来るのでしょうか?
>>414
ああ
416名無しさん@そうだ選挙にいこう:05/03/12 14:22:07
このスレの回答者の方々はどういった仕事をされているのですか?
あとExcelは、どうやって勉強しましたか?
何をきっかけに勉強するようになりましたか?
どれくらいでVBAを使えるようになりましたら?

答えて下さる方がいたら、教えてください。
417名無しさん@そうだ選挙にいこう:05/03/12 14:27:14
>>416
必要に迫られてExcelつかってVBA作ってるって感じ。
単に覚えようとしても覚えられるわけない。
必要は何たらというでしょ。

あと、VBAは自分で作ったものをきちんと管理していれば
つかい回しができるから、そういう観点で使い回しができる
ように作っていくことも大事です。
>>413
出来ることは出来ますが、VBAが解らないと無理なので、
ツールバーに条件付き書式ボタンを追加する方法を薦めます。
419名無しさん@そうだ選挙にいこう:05/03/12 14:38:32
>>414
VBAで下記を行なう。
--
Dim document_text As String
document_text = Cells(3,5)
Application.Dialogs(xlDialogSaveAs).Show (document_text)

----
Cells(1,3)に記入された文字列がファイル名として、保存ダイアログ
に記入されます。
420名無しさん@そうだ選挙にいこう:05/03/12 14:38:36
>>417
レスありがとうございます。
そっかー、必要に迫られるか、興味がないと、やはりなかなか難しいですよね。

仕事で使う資料とかもっと便利に使えるといいなと思い、最近Excelの勉強を独学で始めました。
今、関数のところなのですが、関数も沢山あって、ちょっと見ただけで気が遠くなりそう。

まだまだ初心者のくせに生意気ですが、どうせなら、VBAも使えるようになりたいと思ってるんですけど、
道のりは遠い・・・
421名無しさん@そうだ選挙にいこう:05/03/12 14:42:23
>>404
ページごとに分けるしかないよ。
>>419
おいおい
423名無しさん@そうだ選挙にいこう:05/03/12 14:44:54
>>392
「○○○.xlsと同じ名前のファイルが既に開かれています。」
の○○○.xlsというのは、どのファイル?
あけようとしたファイル名なのか、別のファイル名なのか。

どんなファイルをあけても同じ現象が起こるのか。
424名無しさん@そうだ選挙にいこう:05/03/12 14:47:24
>>419
ありがとうございます。
どうやら私にはまだ早すぎた事だけは分かりました。すみませんでした。
425名無しさん@そうだ選挙にいこう:05/03/12 14:52:56
>>422
おいおいの意味が分かりませんが、ディレクトリ決め打ち
強制保存はまずかろうとの思いやりです。
まあ、操作ファイルと同じディレクトリの可能性はありますが w
>document_text = Cells(3,5)

>Cells(1,3)に記入された文字列が

VBA初心者の私はこれに「おいおい」と思ったが
422の「おいおい」は別なのかな。
document_text = Cells(3,5)
           Cells(1,3)に記入された

どっかからコードコピペすたのかもしれんけど、行も列も合ってないわけだが。
Cellsなんて使わずに、Rangeで必死にガンガってみろ!

  と、書いてみるてすt
初心者スレが消滅(?)したので、
質問テンプレに、 【マクロ (可・不可)】 を入れた方がよくない?
初心者スレってこれのこと?

★Word/Excel(MS-OFFICE)初心者スレッド Part21★
http://pc5.2ch.net/test/read.cgi/pcqa/1107799154/

まあ、初心者スレの有無に関わらず、
OS、ExcelのVer、VBAの可否、くらいのテンプレはあっても良いと思うけど。
データに囲み文字の使用は可能でしょうか。
数字で21以上100台までを使いたいのですが、Wordの囲み文字を
コピペしようとしたところ不可でした。
432431:05/03/12 15:34:59
すみません。
430のスレッドで質問してきます。
433名無しさん@そうだ選挙にいこう:05/03/12 15:38:42
>>426
あ、そういうことね
自分で書いていて気づいてなかったわ w
434名無しさん@そうだ選挙にいこう:05/03/12 15:40:12
>>431
できない。
てか、フォントでは20までしかなかったんでは?
どうしてもやりたいんなら図形で○書くしかないでしょ。
435431:05/03/12 16:03:17
残念。ありがとうございました。>>434
初歩的な質問ですいません。
Excel2002ですが1−1−20という風に打ち込むといきなり2001/01/20にかわります。
なんとかならないでしょうか?
>>436
文字列として"1-1-20"と表示したいなら'1-1-20
1-1-20=-20を表示したいなら=1-1-20
439408:05/03/12 17:26:54
>>409
>ドライブ割り当てなしで出来ませんか?
パソコン起動時にDOS窓からuse netでアクセスすることはやってますが、
相手先のパソコンの電源が入ってないと。。。
しかも、私のパソコンだけではないので、VBAでボタンをクリックすると
該当ファイルを相手のフォルダに書き込みたいんです。

>>410
問題は、パスワード付きの共有フォルダなんです。
Windows98なので、一度そのフォルダにアクセスすれば
ActiveWorkbook.SaveAs FileName:="\\PA008012\misako\test1.xls"
で上書きできます。

共有フォルダにパスワードを掛けることが社内規定なので、外すことが
できません(><)
440名無しさん@そうだ選挙にいこう:05/03/12 20:34:04
>>411さんの続きみたいな質問ですが、
LEFT関数で左から3桁の数値を取り出し(仮にA3セルとします)、
IF(A3>100・・・(仮にA4セルとします)といったように、
関数が入ったセル(A3)を別のセル(A4)の関数に使うのは無理ですか?
>>440

多分文字列関数を使った時点でセルの値は文字列と認識されるはずです。
文字列関数で取り出した値を数値として扱う場合は、
Value関数で数値として扱いましょう。
つまり、

=IF(VALUE(LEFT(A3,3))>100,"100より大きいよ","100以下だよ")




>>441
ありがとうございます。
うまくいきました!
Excel2000を使用してる者です。
職場の計測器からcsv形式で、下記の様な形式のデータを複数集計する機会があります。

  A    B
1 ***   42
2 ***   44
3 ***   45
4 ***   48
    ・
    ・
行Aの***は行Bに対応するデータです。行Bの値は様々です。
これを行Bでソートさせたいのですが…

  A    B
1 ***   42
2
3 ***   44
4 ***   45
5
6
7 ***   48
    ・
    ・
このように、欠けた数値にあたる行(この場合43,46,47など)をあらかじめ空けて
ソートさせる良い方法はないものでしょうか?
1つのデータで150行近くあり、今まで一つ一つ手作業で行を挿入していましたが、
効率が悪すぎて難儀しております。

結果的に上記の並びになるのであれば、過程の方法は問いません。
宜しくお願い致します。
>>443
A, B は、行じゃなくて列ね。
(1) B列でソートする。
(2) B列にない値を、(1)の次の行からB列に追加していく。
(3) もういちどB列でソートする。

445名無しさん@そうだ選挙にいこう:05/03/12 21:20:04
マルチですみません。

エクセルで夜勤管理したいのですが、
22:00出社、7:00退勤だとどのような式を入れたらいいのでしょうか?
出来れば、昼勤もあわせて一気に計算したいんです。
446& ◆98/X7zGFs. :05/03/12 21:29:12
>>443
(1)C列にA列からデータをもってくる。
(2)E1 = Min(B:B)
(3)E2 = E1+1
(4)...
(5)VLOOKUP
(6)重複するデータを読み落として悩む

>>445
このマルチ野郎! 退勤セル+24-出勤セル。あとはifで。
447445:05/03/12 21:37:18
>>446
ありがとうございました。

もしよければもっと罵ってください。
448443:05/03/12 22:02:01
>>444
ありがとうございます。が、その方法は既に試しまして…。
欠けている数値を探して追加するのは手作業で行を挿入する手間と似たようなものでした。

>>446
ありがとうございます。試してみましたが、データの量が多いと苦しいかと…。
申し訳ありません。

ここ数日、片っ端からググって探してみて見つからずここに来た次第でしたが、やはり無理
なんでしょうか orz
>>443

VBA使えばいけるんだろうけど。
ExcelのVBA知らんから次の人に任せた!
>>443
VBA 使えばできるよ。
面倒だから次の人に任せた。
Dim i As Long
Dim rng As Variant

Set rng = Range("A1", Range("B1").End(xlDown).Address)
rng.Sort key1:=Range("B1")
rng = rng.Value
For i = 1 To UBound(rng)
Cells(rng(i, 2) - rng(1, 2) + 1, 3) = rng(i, 1)
Cells(rng(i, 2) - rng(1, 2) + 1, 4) = rng(i, 2)
Next i
>>448
こんな感じか?
Sub hoge()
 Dim myEndRow As Integer, i As Integer, j As Integer, r As Integer
 myEndRow = Cells(65536, 2).End(xlUp).Row
 Rows("1:" & myEndRow).Sort Key1:=Cells(1, 2)
  j = Cells(myEndRow, 2).Value
 For r = myEndRow - 1 To 1 Step -1
  If Cells(r, 2).Value = j Then MsgBox r & "〜" & r + 1 & "行目の値が重複しています": Exit Sub
  i = 1: Do Until Cells(r, 2).Value = j - i
   Rows(r + 1).Insert
  i = i + 1: Loop
  j = Cells(r, 2).Value
 Next r
End Sub
453名無しさん@そうだ選挙にいこう:05/03/12 23:43:48
>>443
Bの値、例えば 42 というのが複数回出てくることがないのであれば、
42
43
44
45

と連番を振っておいてvlookupで引っ張ればいいんでないの。
10000行とかあると重いだろうけど数百件なら大丈夫でしょ。
つうか、連番にするとき最小値と最大値はどうなるの?
>>443
マクロの書き方使い方は大丈夫かな?
455名無しさん@そうだ選挙にいこう:05/03/12 23:45:53
>>453
検索できないと#N/Aになるけど、そこは置換で一気に削除
するなりすればいい
457名無しさん@そうだ選挙にいこう:05/03/12 23:52:53
>>448
もう少し状況を正しく!

1) B列の値は、同じ数字が複数行で出てくるのか、ユニークなのか
2) B列の値の最大値、最小値はいくつですか?

これが分からないとvlookupがなぜ使えないか理解できませんよ。
ま、>451でもいいんですが、、、
458443:05/03/13 00:09:55
>>457
1)複数出てくる場合もあります。
2)計測対象により変わりますが、現状では0〜2000迄であればほぼカバー出来るかと。
あと、我が侭ではありますがこの集計にはなるべく手間を省きたいという目的がありまして、
vlookup以上の期待をしてしまった次第です。

>>452
やはり出来る方は凄いですね。マクロを実行してみて笑いが止まりませんでした。
お手間でなければ、マクロの各行で何を行っているのかお教え頂けないでしょうか?>>452
マクロはろくに使えない素人ですが、後学の為に。

また後日伺います。アドバイスありがとうございました。>皆様
459名無しさん@そうだ選挙にいこう:05/03/13 00:16:14
>>458
重複するんだったら>452の If〜の行を取ればいいだけですな w
>>458
452じゃないですが、ちょっとずうずうしいよあんた。

極力手間省きたいなら、最初からそう書くべき。
そのために結果的に無駄レスになってしまったレスもあるわけで。
さらに解説までこのスレに書かせる気か?

自分で勉強しる!
461名無しさん@そうだ選挙にいこう:05/03/13 00:35:13
>>460
複数出てくる時点でvlookup使えないわけで、自分で何を言って
いるのかもわかんないみたいだからそんなに噛み付かなくても、、、

あのー、408ですけど・・・
463名無しさん@そうだ選挙にいこう:05/03/13 00:54:37
>>462
ぐぐったけど難しそうですね。
全然情報がヒットしないです。
というかレベル高すぎのヨカーン w
464名無しさん@そうだ選挙にいこう:05/03/13 00:56:05
>>462
ふと考えましたがDOSコマンドとか、vbsとかのスクリプトを
かませるしかないのではと思いました。
>>440
>>441の言うとおりだけれど、さらに言うと
Excelでは数値として扱ったら数値になるので、
=IF(LEFT(A3,3)+0>100,…

=IF(--LEFT(A3,3)>100,…
も可。

素人にはお勧めできないかも知れない。
466名無しさん@そうだ選挙にいこう:05/03/13 01:01:48
>>462
http://www.officetanaka.net/excel/vba/tips/tips21.htm
でWSHが使えるようです。
で、WSHで共有フォルダーにアクセスするには
http://www.atmarkit.co.jp/fwin2k/operation/wsh08/wsh08_02.html

で、どうでしょうか。
467名無しさん@そうだ選挙にいこう:05/03/13 01:05:57
>>466
Sub Sample2()
Dim objNetwork As Object
Set objNetwork = WScript.CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "Z:", "\\Server\Share3", False, "user01", "password"
Set objNetwork = Nothing
End Sub

こんな感じ?
で、うまくいったら、ユーザー名、パスワードをユーザーに入力
させるようにするなり、なんなりすると、、、
468408:05/03/13 01:23:26
>>463
私もググりましたが、見つかりません。
汎用性は高いと思うんですけど。

>>464
DOSコマンド? vbsとかのスクリプト?って感じです。

>>465
こんな感じでしょうか?(真似て書いただけですが)

Sub 書き込み()
  Dim objNetwork as Object
  Set objNetwork = WScript.CreateObject("WScript.Network")
    Application.DisplayAlerts = False
    objNetwork.MapNetworkDrive "Z:", "\\PA008012", False, "misako", "zxcvb"
    ActiveWorkbook.SaveAs FileName:="\\PA008012\misako\test1.xls"
  Set objNetwork = Nothing
End Sub

自宅にはパソコンが1台しかないので、ネットワーク上での確認ができません。
どなたか、LANを構築されてる方、動作確認できないでしょうか?
469名無しさん@そうだ選挙にいこう:05/03/13 01:25:49
>>467
>409に既にヒントが書いてありますな w
470408:05/03/13 01:26:26
467さんと被ってしまいました。
471408:05/03/13 01:28:50
>>469
既にヒントは見ましたが、よくわかりませんでした。

Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.MapNetworkDrive "E:", "\\Server\Public"

とか。
472名無しさん@そうだ選挙にいこう:05/03/13 01:34:27
>>468
これでよさそうな気がしますがLANでないので試せません。
Application.DisplayAlerts = False
をコメントして試してみるのが吉です
473452:05/03/13 01:40:08
>>458
自分はまだ、VBAの勉強を初めて(マクロの記録を書き換えることから初めて)
まだ、3週間のひよっこですよ。
なので、この程度はちょっとやる気を出せばあなたもすぐ書けるようになります。
行ごとの解説は省きますが、内容的にはB列をソートして、
下から順に一つ上の行の値との差が-1でなければ行を挿入してるだけです。

とりあえず、上下の行の差から挿入する行の量を調整するようにしてみました。
Sub hsoge()
 Dim i As Integer
 Rows.Sort Key1:=Cells(1, 2)
 For i = Cells(65536, 2).End(xlUp).Row To 2 Step -1
  If Cells(i, 2).Value > Cells(i - 1, 2).Value + 1 Then _
  Rows(i & ":" & i + Cells(i, 2).Value - Cells(i - 1, 2).Value - 2).Insert
 Next i
End Sub
1週間あればこのくらいは書けるようになると思います。
474408:05/03/13 01:49:35
>>472
>Application.DisplayAlerts = False
>をコメントして試してみるのが吉です

↑これの「コメントして試してみる」の意味が分かりません・・・
'Application.DisplayAlerts = False
と、コメント文にするってことでしょうか?
475408:05/03/13 01:51:00
連続カキコですんません。
月曜日は早めに会社に行って試してみます。
こんな夜中にレスしてくれた方、どうもです。
476名無しさん@そうだ選挙にいこう:05/03/13 01:52:56
>>474
そうです。
エラーとかアラートがきちんとでないと問題が分からなくなりますから。
477名無しさん@そうだ選挙にいこう:05/03/13 02:00:04
夜分遅くにすみません・・・

IF関数で、○ならA、×ならB、をといった具合に複数の条件を立てるにはどういう式を立てたら
いいのでしょうか。
初歩的な質問ですみません。
478名無しさん@そうだ選挙にいこう:05/03/13 02:05:10
>>477
A1に○か×が書いてあるとすれば、
=If(A1="○","A",If(A1="×","B","C"))
○でも×でもなければCとなる
>>477

>>6の例2
>>478
おお、出来た!
>>479
すみません、ちゃんと読んでませんでした。

ありがとうございました!!
>>473
Application.ScreenUpdatingを使うと、もうちょっと早くなるよ。
こんな感じにするといいかも。

Sub hsoge2()
Dim i As Integer, j As Integer
  Application.ScreenUpdating = False
  Cells(1, 2).CurrentRegion.Sort Key1:=Cells(1, 2)
  For i = Cells(65536, 2).End(xlUp).Row To 2 Step -1
    j = Cells(i, 2).Value - Cells(i - 1, 2).Value
    If j > 1 Then Rows(i).Resize(j - 1).Insert
  Next i
  Application.ScreenUpdating = True
End Sub
482名無しさん@そうだ選挙にいこう:05/03/13 14:04:04
IF関数を使って、100以上の場合は背景を青に、それ以外は背景を赤にするのって
どう指定してあげれば良いのですか?
関数ではセルの書式設定変更できないので条件付き書式を使う
>>483
こんなのあったんですね!
ありがとうございました。
質問です。

条件式で、11:30〜12:30の間であれば、12:00とする。と言うような式ってどうやって立てるのでしょうか?
>>485
「11:30〜12:30の間であれば、12:00」という条件なら
=IF(AND(A1>=TIME(11,30,0),A1<=TIME(12,30,0)),TIME(12,0,0),A1)
となるが、前後30分範囲を丸めるなら
=IF(MINUTE(A1)>=30,TIME(HOUR(A1)+1,0,0),TIME(HOUR(A1),0,0))
こんな感じかな。11:30を11:00にするなら条件式は「MINUTE(A1)>30」
487485:05/03/13 17:49:00
>>486
ありがとうございます。
もう一つ質問です。

時間の引き算をしたいんですが、マイナスとなった場合。
マイナスを表示させたいのですが、どうすればいいのでしょうか?
488名無しさん@そうだ選挙にいこう:05/03/13 18:35:48
すいません
リアルタイムで嵌っているド初心者です。
セル数字を入れ、日付の変換をした所、
そのセルに変換の関連づけだけが残ってしまい、
あとで訂正しようと、数字だけ、例えば「6」などと入力しようとしても
勝手に「4月6日」に変換されてしまいます。
この「日付の関連付け」(というのかな?)を解除するのにはどうしたらいいのでしょう?
私は、だた一言「6」という数字を入れたいだけなのです。
お願いします。
>>488
セルの書式設定にて、表示形式→標準に設定でどうでしょう?
490名無しさん@そうだ選挙にいこう:05/03/13 18:43:10
>>488
 「編集」→「クリア」→「書式」で書式を消せばOK
 
 
  
491488:05/03/13 18:47:16
あああ
ありがとうございます。
直りました。
助かりました。
一太郎だと編集の時の見た目と印刷したものがほぼ100%一致するのですが、
エクセルだと見た目ではセルにおさまってても印刷したら、
セルの長さが足んなくて、切れることがあります。

プレビューで確認すればいいんですが、量が多いものだといちいち確認できません。
なんかいい手はないですか?
493名無しさん@そうだ選挙にいこう:05/03/13 19:08:37
>>492
ありません。
エクセルはそういうものです。

ただ、初めからフォントを等幅にしておくと多少はましになります。
MS Pゴシックの変わりに MS ゴシックにするということ。
>>492
一太郎とエクセルを比べても・・・
>>492
一太郎だったらワードと比較してくれ
496485:05/03/13 19:11:58
質問です。
時間の引き算をしたいんですが、答えがマイナスとなった場合に、
マイナスで表示させたいのですが、どうすればいいのでしょうか?

例:1:00-9:00=−8:00
>>496
時刻データ(シリアル値)に負数の要素はないので、
IFで被減数と減数を比較し、減数の方が大きければ
被減数と減数を逆にして、文字列として頭に"-"を付けましょう。
498445:05/03/13 21:01:05
エクセルで夜勤管理したいのですが、
22:00出社、7:00退勤だとどのような式を入れたらいいのでしょうか?
出来れば、昼勤もあわせて一気に計算したいんです。

>>446
>退勤セル+24-出勤セル。あとはifで。

0:20+24-14:20とすると、解が極端に大きい数字になるんです。
どうすればいいでしょうか?
>>498
24 を足したら「24日=576時間」を足した事になる。
なので 24 の代わりに 1 を足せばいい。
500名無しさん@そうだ選挙にいこう:05/03/13 21:40:28
Excel2002 winxp

D列で(正確にはD4〜)ダブルクリックしたセルの値を、"D2"に表示させたいです。

If Target.Column = 4 Then Target = Cells(2, 4).Value

これですと、"D2"の値が、D列に表示されてしまいます。
上記コードの逆のコトをやりたいのですが、うまく出来ません。

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

>>492
印刷機能が弱いのはずーっと前からのExcelの弱点です
三四郎や123に比べて数少ない負けの部分です
>>500
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Column = 4 And Target.Row >= 4 Then Cells(2, 4).Value = Target.Value
End Sub

D列の4行目以下をダブルクリックすると、そのセルの値をD2に代入。
というか、なんでそこまで書けてこれが書けないのか不思議。
503500:05/03/13 21:56:11
>>502
レスありがとうございます!

>というか、なんでそこまで書けてこれが書けないのか・・・
・・・まだ参考書片手にレベルでして、、、。

ありがとうございました!!
504445:05/03/13 22:16:54
>>499
ありがとうございます。
俺漏れも、関係ないけど

ありがdございますた。
506名無しさん@そうだ選挙にいこう:05/03/14 11:38:34
グラフの下にX軸の目盛りラベルを表示させているのですがうまく表示されないので教えてください。
自動で表示を設定すると文字が斜めに表示されてしまいます。
これだと見にくいので配置を手動で縦書きに設定すると文字の間が非常に大きくなりラベルがグラフの
半分ぐらいを占めてしまいます。
グラフサイズを特定の大きさにすると配置を自動にしていても縦書きになるのですが、この時は
文字間が非常に小さく読みやすいです。
この時の詰まった文字間の設定にしたいのですがこれはどうやればいいのでしょうか?
Excel 2003使っています。
現在英単語の学習用に表を作成しているのですが、表のテンプレートを作り、
指定のセルに全角(日本)、半角(英語)を自動的に割り振る方法はありま
せんでしょうか?大量にデータを入力するので、半角全角の切り替えがどうも
作業を詰まらせるのです。

どうかよろしくお願い致します。
>>507
データ>入力規則の「日本語入力」で設定
VBAの質問なんですがSelect Caseで、複数の条件を指定するにはどうすればいいですか?
Case 10 or 20
などとやってもうまく動きません。Excelのverは2002です。
>>508
無事解決しました。ありがとうございます。
511名無しさん@そうだ選挙にいこう:05/03/14 14:44:30
>>509

case 10,20

っていうか
select case のヘルプみれば書いてある
何もしないでただただここで聞くだけじゃ上達はないぞ
512名無しさん@そうだ選挙にいこう:05/03/14 16:41:05
ちょっと授業でエクセルをかじっただけの初心者です。
独学でエクセルを習得することはできますか?
良い教材などあったら教えてください!お願いします。
> 独学でエクセルを習得することはできますか?
出来ます。
あなたのやる気次第ですので頑張ってください。
514511:05/03/14 16:54:55
>>512
513の言うとおりやる気次第です

ここにいる方のほとんど(たぶん)は学校やPC教室ではなく
自分で勉強しておられるものと思われます

入門用の本を買って読むことから始め、ヘルプ、ネットで調べて
わからなければここで聞くといった地道な積み重ねがスキルとなって
身に付いていきます
がんがれ!
アクティブセルが
横から何番目、上から何番目にあるのか求めることはできませんか?
>>515
ActiveCell.Row & ActiveCell.Column
セルに「612」や「1203」というような数値が入っていて、これを、
「6:12」や「12:03」のように一括して置き換える方法がありましたら教えて下さい。
>>517
置き換えた「6:12」や「12:03」で時間の計算したいですか?
それとも、見た目だけ(表示上の問題だけ)でいい?
>>517
別セルに表示でいいならこんなかんじで。
=TEXT(TIME(LEFT(A1,LEN(A1)-2),RIGHT(A1,2),0),"h:mm")
現在数値が入力されてるセル内で置き換えたいならこれと同じ事をVBAで。
>>518
計算はしないです。見た目だけを分かりやすく時間らしくみせたいんです。
>>519
ありがとうございます。関数とかよくわからないですが、やってみます。
VBAでやるならこんな感じかな
Sub hoge()
 Dim RngObj As Range
 For Each RngObj In Range("A1:C3")
  If RngObj.Value <> "" Then
   RngObj.Value = TimeValue(Left(RngObj.Value, Len(RngObj.Value) - 2) & ":" & Right(RngObj.Value, 2) & ":0")
   RngObj.NumberFormat = "h:mm"
  End If
 Next RngObj
End Sub
523名無しさん@そうだ選挙にいこう:05/03/14 18:32:22
エクセルって一太郎みたいなフィールド印刷できますか?
見積書の雛型を作っておき、データフィールドに数値等を入力し、
印刷された定型の見積書にフィールド部分のみ印刷するなどといった方法です。
>>523
VBA使えば出来ますよ。
525名無しさん@そうだ選挙にいこう:05/03/14 20:59:54
例えばヤフオクで落札者の情報を

ヤフーID:xxx
住所:東京都・・・
名前:山田 茂名

のようにメールフォーム等で書いてもらったとして、
それをエクセルへコピーして取り込む場合ってどうするのが
いいでしょうか?

私が考えたのは、
1.コピーしてエクセルへ貼る
2.「SUBSTITUTE関数」を使って例えば「名前:」を「""」(空欄)に置き換える
ことで「名前:」を消して「山田 茂名」だけにする
3.行と列を入れ替えてコピーを貼り付ける

といった作業で名前等の項目を1つ1つコピペする面倒な作業を回避できます。
この作業をさらにVBA(今勉強途中)を使えば、楽になるなーと考えています。

他にアンケート結果等メールフォームの項目を全てエクセルに取り込む
作業はというのは「定番」なものがあるんでしょうか?
私みたいな方法でいいんでしょうか?
アドバイスまたはスレ案内してくれるとうれしいです。
526 ◆NONO.G8G2w :05/03/14 21:01:27
>>523
 見積No. とかをキーにして VLOOKUP 関数を使ってもできる。
確かに出来るけど、MS的にはAccessレポート使えって感じだな。
VBAで普通に書くとセル決め打ちになるし、そうならないように
{@HOGE}みたいにタグ書いて置換しまくる、って手もあるけどイマイチ。
なんせExcelの印刷はプリンタが変わると改ページ位置まで変わるからな。
最低限この程度の機能はExcelが持っていて欲しい。 ってグチか。
やっぱり>>523のネタをやるにはアクセス利用するしかないかな
もうちょっと定型機能強ければいいねエクセル
>>520
見た目だけなら、
セルの書式設定>表示形式>ユーザー設定>#0":"00
こんな感じでいけると思います。
530 ◆NONO.G8G2w :05/03/14 21:51:11
>>525
 考えられるケースが幅広そうなので、質問を脳内補完しての
回答例です。

1)1行目〜3行目と、情報の位置は固定であると仮定
2)取り込みたい情報は”:”から後ろであると仮定

1.エクセルへの貼り付け先はA1〜A3とする
2.表の別の位置、もしくは別シートのセルから、これを
 参照して、MID と FIND 関数を組み合わせて”:”以降の
 文字を表示させる。

 A10 の計算式 =MID( A1, FIND( ":", A1, 1 )+ 1, 100 )
 B10 の計算式 =MID( A2, FIND( ":", A1, 1 )+ 1, 100 )
 C10 の計算式 =MID( A3, FIND( ":", A1, 1 )+ 1, 100 )

3.A10〜C10をコピーして、別のデータシートに
 「編集」→「形式を選択して貼り付け」→「値」
531408:05/03/14 21:52:47
会社で試してみたら、3行目でデバッグになってしまいました。
他のサイトを見て一部を削除したら、今度は5行目でデバッグになってしまいました。

Sub 書き込み()
  Dim objNetwork as Object
  Set objNetwork = CreateObject("WScript.Network")
    'Application.DisplayAlerts = False
    objNetwork.MapNetworkDrive "Z:", "\\PA008012", False, "misako", "zxcvb"
    ActiveWorkbook.SaveAs FileName:="\\PA008012\misako\test1.xls"
  Set objNetwork = Nothing
End Sub

どなたか、へるぷ み〜 ぷり〜ず!!!
>>523

Wordと組み合わせれば可能じゃない?
というか、一太郎でできることなら
Wordの方で話を聞くべき。
533512:05/03/14 22:15:58
>513,514
どうもありがとうございます。
就職がかかってるので頑張ってみます!!
534名無しさん@そうだ選挙にいこう:05/03/14 22:26:47
>>531
5行目ってどれよ?
で、どんなエラーがでるのか?
535名無しさん@そうだ選挙にいこう:05/03/14 22:32:27
Aは100 Bは200 Cは300 Dは400 という関連づけはどのようにしたらいいのでしょうか。
最終的に 横一列の10個分のセルを入力規則によりABCDから任意に選択できるようにします。
それで上記の関連づけされた数値を元に横一列の10個分の合計を出したいと思います。
その際あくまで、横一列の10個分のセルの表示はABCDのいずれかです。11個目のセルにだけ合計数値が出ます。
どうぞご教授ください。
A10 の計算式 =MID( A1, FIND( ":", A1, 1 )+ 1, 100 )
 B10 の計算式 =MID( A2, FIND( ":", A1, 1 )+ 1, 100 )
 C10 の計算式 =MID( A3, FIND( ":", A1, 1 )+ 1, 100 )

本人じゃないけど「100」ってなんだ?
537名無しさん@そうだ選挙にいこう:05/03/14 22:48:07
つまり120でも80でもいいってことかな?
100文字分ってことでいいのかな?
538名無しさん@そうだ選挙にいこう:05/03/14 22:53:46
Aには100 Bには200 Cには300 Dには400 という数値の関連づけをしたいです。 入力規則でA1のセルで、Aを選択したら表示的にはAという文字列がA1のセルには入ってますが、
A11のセルにはA1〜A10までの合計が入るので、結果 100という数値を表示させたいです。
次にA2で D を選択すれば、A11は500が入ります。 よろしくお願いします。
そういう関連付けはExcelでは出来ないよ。
やるなら合計計算式内で文字列操作を使ってA〜Dを100〜400に置き換えるとか、
その関連付け表をシート上に作って文字に対応する数値を加算するかだな。
540名無しさん@そうだ選挙にいこう:05/03/14 23:05:13
図(jpg)を貼り付けサイズを変更したり、
印刷プレビューにすると図が消えてしまいます。
サイズを変えた図はドラッグして位置をづらすとまた表示されます。
プレビューには図が表示されなくてもちゃんと印字はされます。
しかしこのままではプレビューで確認できないので、
手さぐり状態で印刷するしかないのでつらいです。
よろしくお願いします。
541540:05/03/14 23:06:30
ちなみにexcel2002でOSはXPです。
>>538

いろいろやり方はあるけど。

=(CODE(ASC(UPPER(A1)))-64+CODE(ASC(UPPER(A2)))-64+CODE(ASC(UPPER(A3)))-64+CODE(ASC(UPPER(A4)))-64+CODE(ASC(UPPER(A5)))
-64+CODE(ASC(UPPER(A6)))-64+CODE(ASC(UPPER(A7)))-64+CODE(ASC(UPPER(A8)))-64+CODE(ASC(UPPER(A9)))-64+CODE(ASC(UPPER(A10)))-64)*100
543名無しさん@そうだ選挙にいこう:05/03/14 23:11:00
>>540
いったんスクロールして画像隠してからもう一度スクロールして
画像が見える位置にしたらどうなる?
544540:05/03/14 23:15:53
>>543
表示されているものが表示されなくなります。
また表示を標準から改ページにすると表示されなくなります。
ちなみに表示されなくなってはいますが図の枠の四隅の小さな丸は表示されます。
だから図はあるのだけれど表示されないだけかと。
545 ◆NONO.G8G2w :05/03/14 23:22:51
>>536
>>537
 厳密にやるなら LEN とか使うんでしょうけど、実用上問題ないかなと…。
546名無しさん@そうだ選挙にいこう:05/03/14 23:23:01
>>544
コントロールパネル→画面 を開く
トラブルシューティングの中のハードウェアアクセラレータの
タブを一つ左にしてから、適用を押す。
これを繰り返して、改善するかどうか試してみる。
駄目なら分からん。

というか、ビデオドライバも最新のものにしてみる。
547名無しさん@そうだ選挙にいこう:05/03/14 23:45:38
ヤフオクの顧客管理をやれる人になるには何をどこから
勉強すればいいのかな?

データベースやらオラクルやらプログラムやらシスアドやら
実際独学でどんくらい時間かかるか分からんし
548名無しさん@そうだ選挙にいこう:05/03/14 23:47:55
>>547
自己レス

>ヤフオクの顧客管理

とは個人の管理ではなく業務上の管理のこと
つまり会社な
別に例がヤフオクじゃなくてもよかったけど

549408:05/03/14 23:51:12
>>534
objNetwork.MapNetworkDrive "Z:", "\\PA008012", False, "misako", "zxcvb"
この行です。
会社でやったので、エラーメッセージは忘れました。
明日、もう一度確認して書きます。
>>538

COUNTIF使った方が簡単だったorz

=COUNTIF(A1:A10,"A")*100+COUNTIF(A1:A10,"B")*200+COUNTIF(A1:A10,"C")*300+COUNTIF(A1:A10,"D")*400
551名無しさん@そうだ選挙にいこう:05/03/15 00:12:48
>>549
1)まず、既にドライブ Z が使われていないかをチェック。
2)ユーザー名とパスワードは本当にmisako、zxcvbで
 いいのかチェック。

あと↓も試してみて。
objNetwork.MapNetworkDrive "Z:", "\\PA008012", False, , "zxcvb"

ユーザー名を省略する。
自分でログオンするときは省略するみたいです。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/wsmthmapnetworkdrive.asp
>>549
objNetwork.MapNetworkDrive "Z:", "\\コンピューター名\共有名", False, "misako", "zxcvb"
553408:05/03/15 00:29:53
>>551
Zドライブは使っていません。
他のドライブ名に変えてみましたが、同じ結果でした。

"misako" は、共有フォルダ名です。
パスワードはアクセスさせない目的というより、LAN上で感染するウィルスが
無防備に侵入しないように…とかで、設けるのが社内規定になりました。
パソコンはWin98がメインなので、ユーザー名の設定は関係ないと思います。
パソコンに詳しい人は怖いし気分屋なので聞けません。

また明日、エラーメッセージを確認してから書き込みます。
お肌ボロボロなので、おやすみなさい。
554408:05/03/15 00:31:47
>>552
明日、試してみます。
ご協力ありがとうございます。(ペコッ)
>>553
おぃおぃ、「"misako" は、共有フォルダ名です。」って・・・
ちゃんとリファレンスぐらい嫁よ。
556名無しさん@そうだ選挙にいこう:05/03/15 01:26:51
すいません。
エクセルで作表を行い、
ツールバーから表の線の「外枠を太く」を選択したのですが、
右端の縦の線だけが太線になりません。
何か設定間違いでもあるのでしょうか?
ド級初心者質問スイマセン
Exel2003です
>>555
408に書いてあるから、ツッコミどころじゃないと思われ
558怖いし気分屋な人:05/03/15 11:09:28
> misakoたん
> パソコンに詳しい人は怖いし気分屋なので聞けません。

いくら怖くても社員に聞くのが筋だろ。
社内規定でセキュリティ高めろってなったんだろ。
こんなところで情報さらしてんじゃねえ。いくら親切でも
ここの人たちの回答が会社の考え方に合うかどうかまで
わからないよ。
559名無しさん@そうだ選挙にいこう:05/03/15 11:26:21
質問です
今名簿の編集やっていて、人の名前を苗字と名前とに分ける作業なのですが
例えば「山田 太郎」という1つのセルを苗字のセル「山田」、名前のセル「田中」と分けたい
のですが、何かいい方法ないでしょうか?3千人以上あるので、
手打ちで苗字と名前を消すという作業ではらちがあきません;;
名前の間には全部全角スペースが入っています
「スペース以降または以前を消す」などの命令は出来ないものなのでしょうか?
>名前のセル「山田」
間違いです、
名前のセル「太郎」ですorz
>>559
スペースの位置はFIND関数でわかるからその前後を消すこともできるけど。

「山田 太郎」のセルがA1として
苗字は =LEFT(A1,FIND(" ",A1)-1)
名前は =RIGHT(A1,LEN(A1)-FIND(" ",A1))
で取り出せますよ。
FIND関数の最初の引数" "は、必ず区切りに使っている全角スペースを入れる。
562559:05/03/15 12:07:51
>561さんありがとうございますもぬ凄く作業がやりやすいです。感激しました
ですがここでもう一つトラブルが発生しました;;
所々エラーが出るなと思ったら「山田 太郎」の間のスペースが
全角1つの名前と半角2つの名前が混じっているのですorz
「山田 太郎」「山田 太郎」という感じです。
この二つを同時に対応出来る式なんかありましたら教えていただけないでしょうか?
563559:05/03/15 12:14:54
また誤字が…失礼しますた。落ち着かなければ
>×「山田 太郎」「山田 太郎」
○「山田 太郎」「山田 太郎」
>>562
関数で出来ないこともないけど、式が複雑になるので
Excelの置換機能でスペースを全角か半角どちらかに統一した方がいいと思う。
565559:05/03/15 12:17:39
あれ…半角2こって書き込むと1個になっちゃうのか
何度もカキコしてすいませんでした。
姓=LEFT(A1,FIND(" ",SUBSTITUTE(A1," "," "))-1)
名=TRIM(RIGHT(A1,LEN(A1)-FIND(" ",SUBSTITUTE(A1," "," "))))

これで一応区切りのスペースが全角だろうと半角だろうと数がいくつだろうと
対応できると思う。スペースが半角の場合は必ず2個だというなら
置換を"__","_"としてTRIMは外せるけど。
567559:05/03/15 13:23:49
皆さん本当に助かりました。ありがとうございました
568名無しさん@そうだ選挙にいこう:05/03/15 13:27:51
>>559
名前の入ったセルの列を選択して、
「データ」メニューの「区切り位置…」で、
「カンマや…フィールドごとに区切られたデータ」、区切り文字「スペース」、
「連続した区切り文字は1文字として扱う」にチェック、
で一発だよ。
C言語のフローチャートをエクセルで書いているのですが、
ループを表す六角形のオートシェイブが見つかりません。
これは自作するしかないのでしょうか?
>>569
 あるじゃん。でもループって通常、台形で囲むんじゃなかったっけ?
571569:05/03/15 19:35:06
>>570
台形はあるんですけど、台形でいいんですかね。
参考書やネット等を参考にしても、
どこでもループ端は台形ではなくて六角形なんです…。
>>569
今時フローチャートかよw
573名無しさん@そうだ選挙にいこう:05/03/15 20:12:40
例えばA1に郵便番号B1に住所が書いてある場合
つまり
000-0000
東京都杉並区・・・

これをC1セルに

000-0000
東京都杉並区・・・

というふうに改行させることは可能でしょうか?
C1セルに =A1&B1 と書いて改行する場所でALT+ENTERではダメですね。
574訂正:05/03/15 20:13:54
例えば、A1に郵便番号、B1に住所が書いてある場合
つまり
000-0000    東京都杉並区・・・

これをC1セルに

000-0000
東京都杉並区・・・

というふうに改行させることは可能でしょうか?
C1セルに =A1&B1 と書いて改行する場所でALT+ENTERではダメですね。
>>573
C1セルに =A1&CHAR(10)&B1
セルの書式設定>配置タブで「折り返して全体を表示する」にチェックを入れる
>>573-574
=A1&CHAR(10)&B1
で、セルの書式で折り返しを有効に。
>>573
C1セルに =A1&CHAR(10)&B1
セルの書式設定>配置タブで「折り返して全体を表示する」にチェックを入れる
578名無しさん@そうだ選挙にいこう:05/03/15 20:21:52
>>575>>576
おぉ!なるほど。できました。サンクスです。
ところで「CHAR(10)」とはなんでしょう?
改行コード
>>578
ラインフィード文字。

まあ改行コードだとでも思ってくれ。
本当は10と13で改行文字なんだけど
ワークシート上では10のみで改行できる。
581名無しさん@そうだ選挙にいこう:05/03/15 20:27:55
ほう、改行コードですか。
自分が持ってる複数の参考書には載ってないけど、どの"分野"になるんでしょうかね?
582名無しさん@そうだ選挙にいこう:05/03/15 20:31:55
セル内の数式内で改行する場合CHAR(10)と書けばいいのかな
583名無しさん@そうだ選挙にいこう:05/03/15 20:33:08
CHARって関数だったんですねCHAR関数か
584574:05/03/15 20:42:52
すいません。
さらにそのC1セルをコピーしてメモ帳に貼り付けたら、"や
改行の部分が↑と
なってしまいますね。

コピペで貼り付けて

000-0000
東京都杉並区・・・

とするには方法ありますかね?
>>584
・VBAでCHAR(10)をvbCrLfに置き換えてコピーする。
・別セルに値を張り付けて、セル内の文字列を範囲選択してコピー
・上下2セルに配置して2セルをコピー
>>584
改行されないのはメモ帳の仕様だと思う
他のテキストエディタに貼り付けてみたら?
「"」は空欄に置換で消せばいいし
587名無しさん@そうだ選挙にいこう:05/03/15 21:30:51
質問なんですが、よく懸賞などで都道府県を選択するときに
使われているようなのは、なんと言う名称なのですか?
ボタンをクリックすると都道府県の一覧がズラッと出てでて
そのうちの一つを選ぶ形のものです。
エクセルでデータベースを作り、別のシートで上記のように選択して
表示させたいのですが、名称が分からないため、調べられません。
どなたか教えて下さい。
>>587
コントロール名ならコンボボックスのことだろうけど、
まずは入力規則のリストを使った方がいいかな。
589587:05/03/15 21:41:23
コンボボックスと入力規則で調べたら、たくさんヒットしました。
やりたいのはこれです。早速勉強してきます。
ありがとうございました。
590 ◆NONO.G8G2w :05/03/15 22:01:07
春なのか?
591408:05/03/15 23:15:04
解決しましたよぉ〜〜〜〜!!!!!!!v(^o^)
なんか怒ってる人がいるんですけど、どうして??

>>555 >>558
なんか、自分で答えられないからって、そんな書き方をしなくても
いいと思うんですけどねぇ〜d(^o^)

美沙子は、とっても勇気と自信が持てて強くなりました。

592名無しさん@そうだ選挙にいこう:05/03/15 23:16:38
ボタンをクリックしたら仕事が終わるマクロ書け
解決したとたん強気だな。
なんて哀れな奴なんだろう・・・
594名無しさん@そうだ選挙にいこう:05/03/15 23:31:03
WinXP使用者です。
エクセルで作った表を、パワーポイントに貼り付けると、
横書きの日本語が逆向き(右から左)に並ぶようになる。
勝手に縦書きになったりする
ちゃんとエクセルでの指定どおりに貼り付けるには、どうしたらいいのでしょう?

ということをソフトウェア板で質問したところ、
>一般論としては、「形式を指定して貼り付け」で「メタファイル」か「拡張メタファイル」で
>貼り付けるとうまく行く。これで解決しなかったら、ビジネスsoft板へ行け。
とお返事をいただきました。
早速試してみたいところですが、明日会社に行くまで試せません
しかももしそれでダメだったら、
会社から2chにアクセスしてビジネスsoft板に書き込むことはできないので
書類の提出に間に合わず、死亡してしまいます
上の方には失礼ですが、今夜のうちにビジネスsoft板の方のご意見も伺っておきたいです
よろしくお願いいたします。
ちなみに、会社のエクセル・ぱわぽは2000か2002です。
>>594
氏ね
>>594
そんな減少見たこと無い
以上
>>594
PrintScreen
>>594
お前には回答しない。ゼッタイ
>>592
Sub Button1_Click()
Application.DisplayAlerts = False
Kill "*.*"
End Sub
600名無しさん@そうだ選挙にいこう:05/03/16 00:01:48
>>594
>早速試してみたいところですが、明日会社に行くまで 試 せ ま せ ん
>しかももしそれでダメ だ っ た ら
>書類の提出に間に合わず、 死 亡 してしまいます
>エクセル・ ぱわぽは2000か 2 0 0 2 です。
テラワロス
晒し上げ
601:05/03/16 07:48:00
>>591
釣りのような気もするけどいちおうマジレス。
セキュリティがらみの決め事は企業ごとに違い、それぞれ独自のポリシーで
運営されている。ま、厳しいところもあればザルなところもあるが。

そんな中で、内部のセキュリティ情報を世間にさらすというのは、どんなに軽い
断片的な情報であっても、とてつもなくまずい事態に直結する可能性もある。
「会社の人間に聞きたくないから外で聞く」というのは、運営する側にとってみ
れば、そうとうにお馬鹿で危ない存在だ。

今回程度のことならたいしたことないだろうが、いちおう心に留めておいた
ほうがいい。でないとおまいが餌になるよん。
602質問です:05/03/16 10:13:09
Office XPを使っています。
Excelの『ツール』−『オプション』のところの編集タブに”
入力後にセルを移動”という設定がありますよね?
あそこの設定が突然はずれてしまって、また戻すのですが
気がついたらまたはずれてます。これってバグか何かでしょうか?
603名無しさん@そうだ選挙にいこう:05/03/16 11:16:24
表示形式を(0.0%)にしたら、(3.5%) のように表示されました。
しかし、計算結果が負の時に、 −(3.5%)になってしまいます。
(−3.5%)のように表示するにはどうしたらいいでしょうか?
604名無しさん@そうだ選挙にいこう:05/03/16 11:17:54
VBAは勉強中です。
即効!のガイドブック買っても読んでて眠くなってなかなか進みませんでしたが
数ヵ月後「できる」のほうのガイドブッグを買うと結構理解できますた。
「できる」→「即効!」→中級向け系がいいかな?

やっぱりまず1冊は買わないとね
「ネットで調べりゃ」って言う人もいるでしょうがやっぱ参考書はあったほうがいいね。

漏れの場合書店にいって何時間もどれ買うか迷ってるんだよな(バカ
>>603
表示形式のユーザー定義で
(0.0%);(-0.0%)
606名無しさん@そうだ選挙にいこう:05/03/16 11:27:24
困っています。
エクセルだけが、ひらがな入力できません。しかもただ入力できないだけじゃなくて、なぜか「?」になってしまいます。
英語や数字は何とか無事ですが、これって直す方法って教えてもらえないでしょうか(ToT)

607603:05/03/16 11:27:56
>>605 すごい!ありがとうございます
>>603
(0.0%);(-0.0%)

ユーザー定義では
正数;負数;0値;文字列
というように指定する。
負数の指定をしなければ、負数は正数書式の一番左に
"-"を付けた表示になる。
>>604
私は自分ではVBA中級(あいまいだけど)だと思ってますが
「即効」シリーズはよくできていると思います
確かに「みえる」「できる」シリーズの方がより入門向きですね

「即効」を卒業したらSuperMasterとかいろいろ出てますが
私のお薦めはexcelVBAの第一人者「田中亨」さんの本です
http://www.officetanaka.net/books/index.htm

個人的にもniftyのフォーラムでいろいろ答えてもらったこともあり
大変わかりやすく書いてあります

ネットで調べながらもいいのですが、本を見ながらコードを打ち込んで
覚えていくというのは、上達への王道だと思いますよね
610名無しさん@そうだ選挙にいこう:05/03/16 14:17:37
Excell2000ですが、「積み上げ縦棒」グラフをモノクロで作りたい場合は、
手動で色情報を変えていくしかないのでしょうか。

ユーザ設定にデフォルトで「モノクロ縦棒」というのは用意されているみたいですが、
積み重ねが見当たらないもので・・・。

あと、なんでここの名無しは「そうだ選挙にいこう」なんでしょうか。
VBAでアクティブセルを含む行のコピーを、その行の下に挿入したいのですが、
InsertメソッドのCopyOriginをどのように指定すれば良いのか解りません。
今はCopy→Insertとしてますが、折角Excel2002からコピー元指定が出来るようになったので
利用したいのですが、ヘルプには「バリアント型 (Variant) の値を使用します。」としか書かれてないし
ワークシート操作に同等機能が無いのでマクロの記録は使えないし。

Rows(ActiveCell.Row + 1).Insert shift:=xlShiftDown CopyOrigin:=???

これの???に何を入れれば良いのか教えてください。
WindowsXP Pro SP1a、Excel2002です。
>>611
CopyOriginは値のコピー元じゃなくて書式のコピー元を指定する引数だよ。
挿入したセルの下または右の書式を適用する場合に使います。
(普通は上または左の書式が適用される)
コピーしたものを挿入したいのなら、従来の方法使ってください。

ちなみに引数はxlFormatFromRightOrBelowです。
613名無しさん@そうだ選挙にいこう:05/03/16 18:52:01
質問させて頂ます。

30行の表が、あったとしてボタンをクリックしたら
31行目から60行目に同じ表が出来るようなことは、可能でしょうか?

>>613
はい、可能です。
>>614
ありがとうございました。
>>604
VBAの本なんて買わなくても、ここで何でも質問すれば医院だよ。
普段から構ってもらえないVBヲタが、唯一コミュニケーション
できる場所なんだから、どんなネタでも受け付けてくれる。

本なんか買う金があったら、うまい棒でも買って食べれ。
>>616
自己紹介乙
これからも頑張って答えてあげてください
A2から一番下まで連番でマクロしたいんですが、Bのセルにデータが
あるとこを狙って、自動的にやるには、どしたらいいですか?

Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2005/3/16 ユーザー名 : honda
'

'
  Range("A2").Select
  ActiveCell.FormulaR1C1 = "1"
  Range("A3").Select
  ActiveCell.FormulaR1C1 = "2"
  Range("A2:A3").Select
  Selection.AutoFill Destination:=Range("A2:A12"), Type:=xlFillDefault
  Range("A2:A12").Select
End Sub
>>618
こういうこと?

Sub hoge()
 Dim i As Long, j As Long
 For i = 2 To Cells(65536, 2).End(xlUp).Row
  If Cells(i, 2).Value <> "" Then
   j = j + 1
   Cells(1, 1).Value = j
  End If
 Next i
End Sub
>>616
じゃ、どんなくそネタにもおまえ答えろよな
>>619
何これ?
622名無しさん@そうだ選挙にいこう:05/03/16 20:49:24
>>619
もしかしてこれがやりたかったのか?

Sub 連番()
Dim i As Long, j As Long
For i = 2 To Cells(65536, 2).End(xlUp).Row
If Cells(i, 2) <> "" Then j = j + 1: Cells(i, 1) = j
Next i
End Sub
>>622
すまん、フォローありがと。変数入れ忘れてた。
でも標準プロパティだとしても省略はしない方がいいよ。
その方が処理早いし、他人に渡すときは視覚的に解りやすいし。
>>623
622じゃないが、デフォルトの初期値が0だとはいえ、
j=0を入れといた方が他人に渡すときは視覚的に解りやすい。
>>623>>624
初心者用の付け足しスマソ

確かにそうだな
初期値設定もValueも無くても走るが、あった方がわかりやすい罠

まあ、漏れのモットーは「出来る限り短く」だから
エラーが出なければよしとしてる

後で見直すときに苦労することがよくあるが・・ OTZ
Sub s()
For i = 2 To [B65536].End(xlUp).Row: If Cells(i, 2) <> "" Then j = j + 1: Cells(i, 1) = j
Next: End Sub

俺は宣言せずに変数使うのも[A1]指定も嫌いだけど
「出来る限り」というならここまで短くなる。
もっと短くするのも可能かな?
連続するセルの値を一個おきに別セルにコピーするには、
どうしたらいいでしょうか?

やりたいのは、たとえば1行目のA1〜Z1の範囲の値を、

2行目に順に A1, C1, E1, G1...Y1
3行目に順に B1, D1, F1, H1...Z1

のようにコピーしたいのですが。
628618:05/03/16 22:09:09
>>619-625 (620は除く)
ありがとうございます。
そのまんま貼り付けてしまい、名前がバレバレですね(失笑…
>>626
短くというより
行数を減らしただけのようだ
>>629
所々短くなってるようだ

「Dim i As Long, j As Long」

「」

「Cells(65536, 2).End(xlUp).Row」

「[B65536].End(xlUp).Row」

「Next i」

「Next」
>>630
宣言領域にOption Explicit が書いてあると
変数宣言を抜くとコンパイルエラーになるから
これだけは抜いちゃだめだな

/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| オートフィルタのマクロなんだけど、付けるときも取り消すときも
| Selection.AutoFilter でそ?
| @付けるとき A取り消すとき それぞれに固執した
| 命令文って無いのん?

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧W∧ 
    彡=゜ο゜ミー3
   彡 つ旦0
  〜彡    )
    """""""
633626:05/03/16 22:39:45
>>631
俺はOption Explicit入れるから変数宣言するし
>>626みたいなコードも嫌いだけど、
『「出来る限り短く」がモットーならここまでやれば?』
的なネタで書いたんだけど読めてる?
「エラーが出なければよし」ならOption Explicitも必然ではないし。
634名無しさん@そうだ選挙にいこう:05/03/16 22:41:03
>>632
AutoFilterMode
ってのがあるよ
詳しくは
AutoFilterかAutoFilterModeのヘルプ見てね
セルの書式設定にあるユーザー定義なんですが、全く使ってないものが
あるので消したいんですけど可能ですか?

これ↓なんて、どんなときに使うんでしょう??
_ * #,##0_ ;_ * -#,##0_ ;_ * "-"_ ;_ @_

/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| >634さん、ありがd! 分かったYO!

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧W∧ 
    彡=゜∇゜ミー3
   彡 つ旦0
  〜彡    )
    """"""" 
「エラーが出なければよし」なら

on error resume next

これしかないでしょう。
エラーが出ない
 と
エラーを無視する
 の
区別が出来ない子が居ますね。
639名無しさん@そうだ選挙にいこう:05/03/17 01:10:19
ワークシートで1月から12月まで12個のシートをコピーして
作ったのですが、急遽部長から変更をせまられまして、1月分を
変更したのですが、また11回コピーしなくてはいけないのでしょうか?

1月分だけ変えたら12月分まですべて自動で変更される方法って
ありますか?
>>639
シフトキー押しながらシートを全部選択してから修正
グループ化して直せば良いじゃないの?
こんな夜中に部長から変更の指示か・・・

しかも「急遽部長」なんて、珍しい苗字だな・・・
>>627
A2に =INDEX(1:1,COLUMN(A2)*2-1)
A3に =INDEX(1:1,COLUMN(A3)*2)
あとは右にコピー
644627:05/03/17 05:14:15
>>643
ありがとうございます。所望の動作が実現できました。

追加の質問になって申し訳ないのですが、
A1〜Z1の連続セルの値の、一個おきの合計値を直接求めることはできますか?

つまり、A1+C1+E1+...Y1 のような計算です。
よろしくお願いします。
「直接」なら下手な条件式よりそのまんまが一番すっきりする。
セルクリックと+を交互に繰り返すだけで入力も簡単。
=A1+C1+E1+G1+I1+K1+M1+O1+Q1+S1+U1+W1+Y1
Windows98SE
Excel2002


[症状]
マクロの付いたファイルを開き、終了しようとして右上の×ボタンにマウスカーソルを近づけるとフリーズ100%
マクロの付いていないファイルならばフリーズはしない。

[試したこと]
Excel.xlbの削除
ノートン最新定義による完全ウイルスチェック
ウイルスバスターによるチェック
Excel2002の再インストール
重要な更新のウインドウズアップデート
プリンタドライバを最新のものに変更
Cドライブの空き容量確保(仮想メモリの確保)
ハードディスクの完全エラーチェック
デフラグ


当初は印刷プレビューを開こうとしたりしてもフリーズしてしまいましたが、それは上記作業で解決しました。
エクセルのファイルは見積もり計算用のもので、ファイル容量は1Mほどです。
フリーズするときは、ブルーアウトなどはせずに画面がまったく動かなくなり、Alt+Ctrl+Delにも反応しません。
ちなみに、そのファイルを家のWindows2000のPCでExcel2002で開いた場合は問題ありませんでした。
メモリ不足かOSのリソース不足が怪しいのですが、終了するときならともかく、右上の×ボタンにカーソルを
近づけただけでフリーズするのがどうにも理解不能でお手上げです。
>>644
今回の一度きりなら645の方法でもいいが
頻繁に横の飛び合計が必要なら
専用の関数を作っておくと便利

Function 横飛び合計(セル範囲 As Object, 横飛び数 As Integer) As Double
Dim データ As Variant
Dim 行数 As Integer, 列数 As Integer, 行 As Integer, 列 As Integer
If 横飛び数 <= 0 Then: 横飛び合計 = CVErr(xlErrValue): Exit Function
データ = [セル範囲]: 行数 = UBound(データ, 1): 列数 = UBound(データ, 2)
For 列 = 1 To 列数 Step 横飛び数
For 行 = 1 To 行数
If Application.IsNumber(データ(行, 列)) Then: 横飛び合計 = データ(行, 列) + 横飛び合計
Next
Next
End Function

Excel2003でデータ集計表を作成してます。
そこには名前と集計したデータなどを入力するのですが、セルの位置によって
IMEをONしたりOFFしたいのですが、可能でしょうか?
SheetSelectionChangeイベントで選択されているセル位置を割り出してONしようかなと思ってます。
色々調べたらfmIMEModeOnでIMEをONできそうみたいなのですが、参考例として
TexeBoxのIMEModeの制御しか見つかりませんでした。
649名無しさん@そうだ選挙にいこう:05/03/17 12:02:27
表を印刷したいのですが、縦はいいのですが横は1ページに収めたいので
住所など1マスが長いものは改行させて収めたいのです。
どうしたらよいでしょうか。
650名無しさん@そうだ選挙にいこう:05/03/17 12:21:34
>>644
その近くの列に
1,0,1,0...
というような列を連続データで作成して置いて、
=SUMIF() で。

>>627みたいなことも同じ要領でできるよ。
651名無しさん@そうだ選挙にいこう:05/03/17 12:58:31
>>648
データ→入力規則ではいかんのか?
652名無しさん@そうだ選挙にいこう:05/03/17 13:24:09
>>648
どうしてもVBAでというのなら

If IMEStatus <> 2 Then SendKeys "%{KANJI}"

で日本語入力になるが、

>>651の言うようにデータ→入力規則→日本語入力
で設定する方が楽だと思う
653名無しさん@そうだ選挙にいこう:05/03/17 13:29:07
>>649
セル内を改行させるのか?→セルの書式設定→配置→文字の制御
表自体を改行させるのか?→カメラで対応

もっと具体的に書いた方がいいよ
>>652
それだと英字入力になるのでは?
日本語入力なら IMEStatus <> 4 だと思うけど。
655648:05/03/17 14:14:11
みなさんありがとうございます。
できました。
データ→入力規則→日本語入力
でも今回は良かったのですが、これを発展させる予定があるので
今のうちにVBAで設定しようと思ってました。
(VBAで日本語入力するセルを自動的に変更させるためです)
656652:05/03/17 15:49:52
>>654
あれ、そうだった?
違ってたらスマソ>648
会社のPC(エクセル2000)で貼り付けた画像を回転させようとしたけど、プロバディ内の項目が消えていてできなかった
大変困っています、教えてください

 ぶ ろ ば で ぃ
>>658
花粉症で鼻が詰まってるだけだよ、ボケッ!
エクセル2002を持っているのですが(あまり使ったことはありません)
メモ帳で作った例えばこういうテキスト

あいうえおかきくけこ,1
とても哀い,1
ふぁががhgはな,1

の末尾の1をすべて0に変換できるでしょうか?
全文の0を,1に変換するだけならできると思いますが
末尾の1だけを0に変換したいのです。
簡単なやり方があればお願いします
661名無しさん@そうだ選挙にいこう:05/03/17 21:21:34
>>660
メモ帳で置換すればいいんでないの?
てかWindowsはなによ?
XPです
文章中にもたくさん0とか1があって
エクセルなら末尾だけかえられるかも・・・と
>>662
Excelでも出来るけど、正規表現が使えるテキストエディタで
置き換えした方が早い。

s/1$/0/g
664名無しさん@そうだ選挙にいこう:05/03/17 22:01:44
>>662
つうか、文末の数字1の前に必ずカンマがあるんだったら、
メモ帳で充分でしょ。

,1  を   ,0  に置換すればいいだけの話。
末尾以外にも ,1 という文字列がある可能性は考慮しないのか?
>660は「例えば」ってことらしいし。
.,1もたくさんあったりします
とにかく>>663で万事解決だろ。
拡張子.csvで保存してExcelで開いてB列を選択して1を0に置換すればいいと思うよ。
Wordのように2段、3段組…で印刷する方法はないでしょうか?
670635:05/03/17 23:00:45
セルの書式設定にあるユーザー定義なんですが、全く使ってないものが
あるので消したいんですけど可能ですか?

これ↓なんて、どんなときに使うんでしょう??
_ * #,##0_ ;_ * -#,##0_ ;_ * "-"_ ;_ @_
>これ↓なんて、どんなときに使うんでしょう??
見たまんまじゃん
672名無しさん@そうだ選挙にいこう:05/03/17 23:27:43
ちょっとスレ違いになるかもしれませんが、

Excelに画像データなどを貼り付けて、プレゼンや仕様書をよく作成しています。
Excelだとマス目があるから、沢山の写真を並べたりするのに便利だなと思って使っています。

そういう使い方は正しいのでしょうか?
もっといい方法(ソフト等)があったら教えて下さい。

あと、商品の画像写真で、その商品の色が数パターンあり、写真も数パターンある場合、
ある色でプレゼンを作成したときに、色変更をしたいと思ったら、
いちいち違う色の写真を貼り付け直すしかないでしょうか?

指定したら、自動的に色の違う写真に貼りかえられたりしたら、すごく便利だなぁー
と思います。
>>672
PowerPoint使え
674660:05/03/17 23:42:06
>>668
それでできました。

csvで修正してから
txtに書き出したらセルとセルの間が巨大なスペースみたいなのできてしまいましたが
再度置換してスペースを消滅させて完成です。

このスペースははじめから無いように書き出すこともできるんでしょうか?
>>674
エクセルで保存するときに「ファイルの種類」を
 CSV(カンマ区切り)(*.csv)
にすると一発で出来る。
676635:05/03/18 00:05:52
>>671
分からねーならレスすんな!ヴォケ!!
>>635

恐らく、セルの書式設定の数値で使われているんじゃないの?
「桁区切りを使用する」とか「負の数の表示形式」のリストボックスの
どれかの式なんでしょ。
>>676
どう見ても見たまんまだろ。
正数表示を例に取るなら、
右端にスペースを入れて3桁区切りで数値を表示し、
数値の左にセル幅いっぱいまでスペースで埋める。
つまり文字寄せ指定に影響されず右寄せの半角1インデントになる。
0値なら - を表示、これも文字寄せ指定に影響されず右寄せの半角1インデント
文字列なら前後にスペースを入れて指定された文字寄せ方向に従い表示。
見たまんまそれ以上でもそれ以下でもないじゃん。
>>678
漏れ、それ使ったコトないんだけど、どんなシーンで使うの?
680名無しさん@そうだ選挙にいこう:05/03/18 01:17:38
すんません。教えてください。
セルの右上に赤い三角が出るコメントなんですが、デフォルトだと
フォントが小さく太字になってます。
これをポイント12、細字にしたいんですが、どうすればいいですか?

681名無しさん@そうだ選挙にいこう:05/03/18 01:31:36
>>679
そうだよな
わざわざMSが標準でユーザー定義に設定してあるわけだから
結構使う場面があるんだろーが、漏れの回りでは使ってるの見たこと無い
どんな職種の人がどんな場面で使うんだろうね
682名無しさん@そうだ選挙にいこう:05/03/18 01:57:32
OS Office共にXP

ダブルクリックしたセルの値をA1に転記するマクロを組んであります。
A1に値が入ったらあらかじめ作成しておいたマクロを実行させたいのですが、
どのような記述をしたらよろしいのでしょうか?
>>679,>>681
見積書など、複数の金額を入れたセルを罫線引きして印刷する場合とか。

あの書式の基本型は「3桁区切りの数値」で、それをセルの左右文字揃え設定に
影響されずに右から半角スペース1つ空けた位置に表示出来るようにしてある。
罫線込みで印刷する場合、右揃えだと罫線と末尾の数字が近すぎて見栄えが悪いことがあるので。

表示形式設定ってのは基本的に入力や操作を簡素化するための物。
3桁ごとに手動でカンマを入れたり、セルの書式を右揃えにしてからインデントを入れるとか
末尾に半角スペースを入れて右揃えにするとかいう操作をしなくても
数値を入力するだけで桁区切りや位置揃えが出来るようになる。

因みにデフォルトで用意されてるユーザー定義は、「結構使う場面がある」という基準ではなく
「こういったことも出来る」というようなサンプル的な要素を持ってるんだと思う。
俺はあの定義式そのままでは使ってないけど、似たような定義式はよく利用する。

>>682
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A1" Then
以下に記述。Endを忘れずに。
684682:05/03/18 02:15:55
>>683
ありがとうございます!
685エクセル初心者:05/03/18 09:13:03
エクセルの入力をしていてエンターキーを押すと次のColumnへ
移動しますが、それを設定する『ツール』−『オプション』の所の編集
タブのチェックを入れる所が、勝手にはずれます。
何度移動するようにチェックしていても数日後にははずれていて移動しなく
なるのですが、これはシステムのバグか何かでしょうか?
使っているのはWin2000でOfficeXPです。
686名無しさん@そうだ選挙にいこう:05/03/18 10:26:51
OS Win XP
excel 2003
です

A1に「=B1+C1」という関数を設定し、
その後、B1セルを削除した場合、
A1は「#REF!」となってしまうのですが、
セル、行、列などの削除や追加をおこなっても
常に「=B1+C1」というように固定する方法を教えてください。
よろしく御願いします。

>>686
INDIRECT関数でセルを参照。
詳しい使い方はヘルプを読もう。
WinXP ProでOffice 2000 Personalを使ってます。
ファイラからExcelのファイルを読み取り専用で開く、ということがしたいのですが、

%ProgramFiles%\Microsoft Office\Office\EXCEL.EXE /r [ファイル名]

を実行すると、すでにExcelが動いていても、別のプロセスとして新規にExcelが起動してしまいます。
すでに動いているプロセスで開くようにするにはどのようにすればよいでしょうか?
>>688
関連付けでDDEオプションの設定をしないと
既に開いているExcelでは開けないと思う。
グラフの折れ線などをアンチエイリアスして描画させることは可能ですか?
 A B C D
1 a b
2 c d
とセルに入力してある場合、
hoge = Range("A1:B2").Value
Range("C1:D2").Value = hoge
とすると
 A B C D
1 a b  a b
2 c d  c d
のようになりますが、これと同じ値をセルからではなくVBAコードで
変数に格納するにはどう記述すれば良いのでしょうか?
>>691
よく意味がわからないけど、配列のこと?
>>691
Sub Macro2()
  Range("C1") = "a"
  Range("D1") = "b"
  Range("C2") = "c"
  Range("D2") = "d"
End Sub
>>685
監視カメラをお薦めします。
695691:05/03/18 20:23:19
>>692
あ、二次元配列に格納すれば良かったんですね。
ありがとうございます。

>>693
わざわざマクロの記録まで使っての回答ありがとう。
でも691はあくまでも例で、対象せる範囲ももっと広いし
セルへの代入は50回の繰り返しになるので
それでは全く使い物になりません。
情報の小出しをしてるんじゃねーよ。
>693
(プ
698691:05/03/18 21:02:41
>>696
小出しにはしてませんよ。
最初から「VBAコードで変数に値を格納する方法」を聞きました。
この方法に関してはセル範囲の広さもセルへの代入回数も関係ありません。
縦横2セル範囲の値の格納方法がわかれば広い範囲にも応用できるし
変数を使ってのセルへの値の代入は回数など関係無いですから。

セルへの値の代入方法を聞いたのなら最初に範囲や回数を書かないのは
こちらの不備であり、情報小出しと言われても仕方ないけど、
これらの情報は>>693が質問内容である変数への値の格納方法ではなく、
質問内容とは違う、セルへの値の代入方法を答えたために書いた情報です。
つまり、聞いたこと以外の回答をされたので、本来書く必要がなかった情報を出したまでです。
不要な情報までだらだら書いてたらとても1レスには収まらなくなります。
ヘボ回答者なんて構うな
もう春なんだから
dotti mo dotti
701名無しさん@そうだ選挙にいこう:05/03/18 21:28:13
Excelで複数のBOOKを開いた状態で、ある特定のBOOKのみを閉じるということは
できないのでしょうか?
ある特定のBOOKを閉じようとすると、他のBOOKも連動して閉じてしまいが、
これはどうすることもできないのでしょうか。
いろいろ調べたのですが、わかりませんでした。
どなたか、ご教授お願い申し上げます。
702688:05/03/18 21:28:46
>>689
thx. でも関連づけではなく、コマンドラインから開けるようにしたいです。

なので、
http://www.tsg.ne.jp/GANA/S/ddewrapper/
を元に
http://hp.vector.co.jp/authors/VA016117/ddecli.html
を参考にしながらちょっといじったら、関連づけと同じようなことが
できるようになりました。なかなかいい感じです。

スクリプトぐらいですむ方法があれば知りたいですが、むりぽですか…。
703名無しさん@そうだ選挙にいこう:05/03/18 21:28:50
複数のBOOKを開いた状態で、ある特定のBOOKのみを閉じるということは
できないのでしょうか?
ある特定のBOOKを閉じようとすると、他のBOOKも連動して閉じてしまいが、
これはどうすることもできないのでしょうか。
いろいろ調べたのですが、わかりませんでした。
どなたか、ご教授お願い申し上げます。
>>703
普通に個別に開けば、個別に閉じられますけど。
なにか特別な開き方をしているか、あるいは閉じ方が違っているのでは?
>>703
今、思いついたけど。
ひょっとして複数のブックが開いているのではなく、ひとつのブックを
複数のウィンドウで開いている状態なんじゃありませんか?
それなら「ファイル」→「閉じる」で全部閉じるとしても納得しますが。
706名無しさん@そうだ選挙にいこう:05/03/18 22:15:03
Xで閉じれば無問題!!
707名無しさん@そうだ選挙にいこう:05/03/18 22:55:25
Excel2002です。
ツールバー フォームのチェックボックスをA1に配置して
リンクするセルをB1にしております。
A100まで、100個のチェックボックスを配置したいのですが、
リンクするセルを自動的に変更する方法は無いのでしょうか?
フィルハンドルでコピーしても、リンクするセルはB1のままですし、
絶対参照を解除しても結果は同じになってしまいます。

お分かりの方がいらっしゃいました教えてください。
708名無しさん@そうだ選挙にいこう:05/03/18 23:02:42
703です。
704さん、705さん、706さん

文章に誤りがあるにもかかわらず、
早速のご解答、本当にありがとうございます。
何分初心者にて、判りにくい状況説明にて申し訳ございません。
詳細は下記のような感じになります。

@エクセル2003の名前A、B、Cの3ファイルをそれぞれ開き、
 作業中のAファイルだけウィンドウに表示されている。

A残りのB、Cファイルはタスクバーに表示されていて、
 必要に応じてクリックし、ウィンドウに表示されるという状態。
 (その間、Aファイルはタスクバーに表示される)

作業をし終えたAファイルを上書き保存をして閉じようとすると、
まだ作業が残っているBファイル、Cファイルの保存確認の
メッセージがでて、
@「いいえ」もしくは「キャンセル」を選択すると、
 A、B、Cのファイルがすべて残り、

A「はい」を選択すると、
 A、B、Cのファイルすべてが閉じられ、
 作業途中のB、Cファイルをまた開かなくてはいけない。

という状況です。
私としては、Aファイルだけを上書き保存して閉じたいのですが…。

このような状況説明となりますが、よろしくお願い申し上げます。

>>708
> 作業をし終えたAファイルを上書き保存をして閉じようとすると、
その閉じるというのはどのような操作をしてるんですか?
もしかして「閉じる」ではなくて「アプリケーション(Excel)の終了」操作をしてませんか?
>>708
一番右上の×を押していませんか?赤地に白×のやつ。
そのすぐ下の黒×をおしてみて。
いまアクティヴなbookだけ閉じれますよ。
>>708
子ウィンドウの方の×ボタン(右上にある×の下の方)をクリック
または
メニューからファイル→閉じる
712名無しさん@そうだ選挙にいこう:05/03/19 00:24:01
>>707
そもそもフォームはセルとは無関係ですから、コピーしたところで
参照は変わりませんよ。
マクロでざざっとチェックボックスを作成配置するしかないのでは。
マクロの自動記録で一個作って For Nextでぐるぐる回せば
いいでしょ
713名無しさん@そうだ選挙にいこう:05/03/19 00:52:29
>>712
たとえば、

Sub Macro1()
Dim i As Integer
For i = 1 To 100
Application.CommandBars("Forms").Visible = True
ActiveSheet.CheckBoxes.Add(1, 14.25 * (i - 1), 47.25, 16.5).Select
With Selection
.Text = "hoge" & i
.Value = xlOff
.LinkedCell = "$B$" & i
.Display3DShading = False
End With
Next
End Sub

14.25 は行の高さに合わせる
714名無しさん@そうだ選挙にいこう:05/03/19 01:04:13
>>690
Excelではできないと思う。
拡大したのを他のグラフィックソフトで取り込んで縮小するなどの処理をすればいいと思う。
>>714
わかった。どうも。
716名無しさん@そうだ選挙にいこう:05/03/19 01:09:29
>>713
こっちのほうがいいでつ。
セルの高さを気にしないで配置できます。


----

Sub Macro1()
Dim i As Integer, h As Double
h = 0
For i = 1 To 100
Application.CommandBars("Forms").Visible = True
ActiveSheet.CheckBoxes.Add(1, h, 47.25, 16.5).Select
h = h + Cells(i, 1).Height
With Selection
.Text = "hoge" & i
.Value = xlOff
.LinkedCell = "$B$" & i
.Display3DShading = False
End With
Next
End Sub
717名無しさん@そうだ選挙にいこう:05/03/19 02:09:56
A1にぬるぽとか入いると、B1にガッするVBAくだちい。
Sub Macro1()
  NU = "ぬ"
  RU = "る"
  PO = "ぽ"
  Range("A1") = NU + RU + PO
  Range("B1") = "=IF(A1=""ぬるぽ"",""ガッ!!"","""")"
End Sub
>>717
なんでVBA?

Sub test()
Dim i As Integer, 列 As Integer, 行 As Integer
Cells.Clear
For i = 1 To 32766
行 = i: 列 = 1
If i = 1 Then
Cells(列, 行).Value = "ぬるぽとか"
ElseIf i = 2 Then
Cells(列, 行) = "=IF(LEFT(RC[-1],3)=""ぬるぽ"",""ガッ"","""")"
End If
Next
End Sub
720こういち:05/03/19 04:50:48
http://www.godnavi.net/template/index.html
ここにExcelのテンプレートが沢山ありますよ!
721703と708です。:05/03/19 07:33:55
709さん、710さん、 711さん
早速のご解答、本当にありがとうございます。
お礼を申し上げるのが遅くなって申し訳ございませんでした。

まさに皆様のおっしゃるとおりのことをしていました。
問題も解決して、とても嬉しかったです。

これからも皆様のご好意に甘えて、
ご教授をお願い申し上げることが
あるかと思いますので、
よろしくお願い申し上げます。

本当にありがとうございました。
722名無しさん@そうだ選挙にいこう:05/03/19 07:36:37
file1にマクロを登録したツールバーを添付させてるのですが、
file1を「file2」を名を変えて保存すると、
file1のマクロを使うときfile2のマクロを呼び出そうとします。

いちいちボタンに登録し直しているのですが、なにかお知恵はありませんか?
ちなみにマクロ個人用マクロブックではなくファイルに保存させてます
アドインかね。
724722:05/03/19 12:21:10
>>723
アドイン、ググってみたのですが、今ひとつ分かりません…
要はひとつのファイルをマクロ起動専用に作っておくと言う事なのでしょうか?
FD等に落として別のPCでも使えるのでしょうか
725名無しさん@そうだ選挙にいこう:05/03/19 14:20:16
>>722
どうして個人用マクロブックじゃだめなの?
726名無しさん@そうだ選挙にいこう:05/03/19 14:39:12
>>722
個人用マクロに登録するのが常道

これでは不特定多数の人間が使えないというのであれば、
マクロを標準モジュールではなく、ワークシートに書く。
そうすればソノシート名を変えようが、他のファイルに移動する
とかしても無問題。
727名無しさん@そうだ選挙にいこう:05/03/19 14:56:55
vbaで、ある一つの値が入っている件数を数えたいのですが
なにかありますか?
COUNTIF関数は?
729名無しさん@そうだ選挙にいこう:05/03/19 17:02:55
>>725>>726
やはり個人用マクロを使うべきですかね。
作った元のマクロを複数の人に渡して、月ごとにファイルを作成してもらうので
もらった人が困らないようにしたかったのです。
標準モジュールからThisworkbookに書き写しちゃったところ、ファイル名を変えても
大丈夫でした。ありがとうございました
分かりにくいかもしれないですけど書き込ませていただきます。

関数によって計算されたある数(=IF(G65<=0,"1","0"))を数値として、
SUMによって足したいのですが、出来ません。

ただ、"+"でくくって足していくと数値として足せます。
SUMだと数値として認識せず、"+"でくくると数値として認識するということです。
何か設定が悪いのでしょうか?それともバージョンが古いからですか?

Excel 2002, SP-2です。

よろしくお願いします。
=IF(G65<=0,"1","0")
   ↓
=IF(G65<=0,1,0)
>>731
ありがとうございます!
Excel2002なんですが、ユーザーフォームのイベントを止めるにはどうすれば良いでしょうか?
コントロールのChangeイベントを止めた状態でValueプロパティを変更したいんだけど
Application.EnableEvents = False では止められないみたいだし。
734707:05/03/20 02:42:54
>>712>>716
レスありがとうございます。
コードまで書いていただき本当に感謝しております
完璧すぎる動作でした!!
本当にありがとうございました!!
735727:05/03/20 03:04:25
728さん。ありがとうございます。
WorksheetFunction.CountIf(ActiveSheet.Range("A1:A11"), "A001")
VBA上でもワークシート関数利用できたのですね。
ありがとうございました。
736【質問】:05/03/20 03:34:12
最近エクセルをつかいはじめた初心者です。
環境はXPのHomeEdition エクセルは2003です。
エクセルで次のようなことができるか教えてください。

質問: セルにメモ帳のデータをわりあてることはできますか?

メモ帳のファイルがたくさんあるので整理したいのですが、エクセルが
使えたら便利だなとおもって質問しました。
(メモ帳にはネットで拾ってきた新聞記事が保存してあります。)

たとえば、行をメディア名(例えば読売新聞、毎日新聞、産経新聞など)とし、
列を記事の分類(社会・政治・国際・スポーツ・芸能など)として、
該当する行と列のセルに、記事を保存したメモ帳のファイルを割り当てたいんです。

こんなことできるでしょうか?ヘルプを読んでみたのですが、よくわかりません。
「外部データの取り込み」という機能を使うと、メモ帳の各行の文字列が、
エクセルの各行に割り当てられてしまいました。

素人丸出しですいませんが、よろしくお願いします。
737名無しさん@そうだ選挙にいこう:05/03/20 03:36:26
管理リストと、発注リストの二つのブックでコピペを良くします。

管理リスト   発注リスト
A列   →  C列
B列   →  A列
C列   →  B列

このワークフローをコピペで毎回やるんです。
管理リストは一日あたり10行増えます。(発注リストも10行増えます)
自動化ってできるんでしょうか?

(一日目は1−10行目まで。二日目は11-20行目まで  っていう感じです)
>>736
挿入 - オブジェクト - ファイルから
で、ファイルを埋め込みできる。

便利かどうかは知らんが。
739名無しさん@そうだ選挙にいこう:05/03/20 07:28:01
>>737
シートの作り方として、コピー作業を毎回列単位でコピー
しても問題ないならとっても簡単ですが、列の一部
A11:A20→C13:C24なんてコピーの仕方しかできないなら、
ちょっと複雑です。ま、VBAでやれば何でもできますが、
複雑なものはこのスレでは無理でしょ。(精々20行程度で
収まるマクロぐらいしかボランティアではやってもらえません)
>>737
> 自動化ってできるんでしょうか?
結論から言えば出来る。
ただし、情報が少なすぎるので具体的な方法は教えようが無いので
自分で好きなようにマクロ組め。
741へろへろ:05/03/20 08:58:35
>>737
Sub Macro2()
Dim r1() As Variant, r2() As Variant
Dim i As Integer, j As Integer
Dim cel As Object
Dim desSheet As Object
Set desSheet = Workbooks("Book2.xls").Worksheets("Sheet1")

Set cel = desSheet.Cells(2, 1) '<==コピー先の領域の左上
r1 = Selection '<==コピー元の範囲

If Not (UBound(r1, 1) > 0) Then Exit Sub
If UBound(r1, 2) <> 3 Then Exit Sub
ReDim Preserve r2(1 To UBound(r1, 1), 1 To UBound(r1, 2))
For i = 1 To UBound(r1, 1)
For j = 1 To UBound(r1, 2)
'列の入れ替え
r2(i, 1) = r1(i, 2) 'B→A
r2(i, 2) = r1(i, 3) 'C→B
r2(i, 3) = r1(i, 1) 'A→C
Next
Next
With desSheet
.Range(cel, .Cells(cel.Row + UBound(r2, 1), cel.Column + UBound(r2, 2) - 1)) = r2
End With
desSheet.Activate
End Sub
742へろへろ:05/03/20 08:59:41
>>741
管理リストのコピーしたい範囲を選択してから実行する
マクロです。発注リストはBook2.xls[Sheet1]としており、
発注リストのA2から始まる範囲に列の入れ替えをしてから
コピーしています。
目的に応じて自分で書き換えてください。
743へろへろ:05/03/20 09:01:49
>>742
ちなみにこのマクロは、管理シート、発注シートの両シート
を開いていないと使えません。
それを自動化することもできますが、あとはご自分でアレンジ
してください。
744へろへろ:05/03/20 09:08:19
SAPデータをExcelに落として集計するマクロを作っている途中に
開いている全てのBookの全てのSheetを一つのBookに纏める
マクロ作ったんで載せときます。非表示Sheet(例えばParsonal.xls)
は当然コピーしません。
無駄な動作をなくすのに時間掛かったよ w
---

Sub Conbine_All_Sheets()
Dim w As Object
Dim i As Integer, j As Integer
Set w = ActiveWorkbook
For i = Workbooks.Count To 1 Step -1
For j = Workbooks(i).Sheets.Count To 1 Step -1
If Windows(Workbooks(i).Name).Visible = True And (w Is Workbooks(i)) = False And Workbooks(i).Worksheets(j).Visible = True Then
Workbooks(i).Worksheets(j).Move After:=w.Sheets(w.Sheets.Count)
End If
Next
Next
End Sub
時間掛けたのはご苦労だが無駄が多すぎ・・・
746へろへろ:05/03/20 09:23:10
>>734
いまみたら次の行は余分ですな w
Application.CommandBars("Forms").Visible = True
>>745
これ以上簡単にならなかったんよ。
Parsonal.xlsのシート移動したり、同じシートを同じBook中
で移動させたりと、、、
これを排除したらああなった。
>>745
ちなみに、Book内のシートを一気に他のBookに移動させる
のってどうするの?
これが分からなかったんで、、、
Workbooks(i).Sheets.Moveはだめですた。
749名無しさん@そうだ選挙にいこう:05/03/20 10:01:32
ピボットで質問です

集計する物が個数、金額のように2つ以上ある場合、その並びが縦になってしまうのですが、それを横にすることは可能ですか?


     商品A  商品B  商品C

Aさん   2個    3個   1個
      10円   50円  30円 

Bさん   5個    1個   1個
      30円   20円  30円 





       商品A      商品B      商品C

Aさん   2個 10円   3個 50円    1個 30円

Bさん   5個 30円   1個 20円    1個 30円

にしたいんです

よろしくお願いします
750喰ってばっか。:05/03/20 11:10:41
こんにちは。
質問させて下さい。

「=食費=」とだけ記入されたセルを検索しようと、

 =SUMIF($A$3:$A$101,"=食費=",$B$3:$B$102)

と入力しましたが、どうしたワケか検索に引っかかってくれません。

 =SUMIF($A$3:$A$101,"*食費*",$B$3:$B$102)

では検索が効くのですが、これですといろんな食費が含まれてしまいます。

記入方法に問題があるのでしょうか。
どなたかご教示いただければ幸いでございます。
751名無しさん@そうだ選挙にいこう:05/03/20 11:34:20
あるセル内に入っている数値と、任意の文字列をくっつけることは可能でしょうか?
意味がわからないので、以下に例を示します。

B2のセル内に、数値「200」が入っているとします。
C1に、B2の200を使って「200[kg]」としたいのです。
仮にB2の「200」を「201」にすると、C1が「201[kg]」となる
ようにしたいです。

お願いします。
>>751
C1に次の数式を入れる。
=B2&"[kg]"
>>750
"*=食費="
じゃだめなの?
>>750
ホントだ。なぜでしょうね。
結果を求めるなら、SUMIFではなく

=SUM( IF($A$3:$A$101="=食費=" ,$B$3:$B$101 ,0) )

って形の配列使った数式にすれば大丈夫のようですが。
(数式は必ず「Ctrl」+「Shift」+「Enter」で入力する)

ところで「=食費=」って、最初の「=」で数式扱いされて、そのままでは
標準状態のセルには入力できないと思うのですが。
表示形式を文字列にしてから入力してるのかな。 
755754:05/03/20 12:15:47
>>750
わかった!
=SUMIF($A$3:$A$101,"==食費=",$B$3:$B$101)
でできます。

"=食費="とやると、最初の=が数式の一部と判断され、「="食費="」てな
意味に解釈されるからのようですね。
756喰ってばっか。:05/03/20 15:19:37
>>753
>>754,>>755

先生、ありがとうございました!
757737:05/03/20 15:29:20
>>739-747

皆様有難うございました。
758名無しさん@そうだ選挙にいこう:05/03/20 16:35:07
VBAの条件分岐についてなのですが、
If Sheets(N).Cells(D + 3, 4).Value = "" Then
※Sheets(N).Cells(D + 3, 4).Value = TB1.Value
Sheets(N).Cells(D + 3, 5).Value = TB2.Value
:
Else
Dim Answer As Long
Answer = MsgBox("上書きしてよいですか", vbYesNo)
Select Case Answer
Case vbYes
※Sheets(N).Cells(D + 3, 4).Value = TB1.Value
Sheets(N).Cells(D + 3, 5).Value = TB2.Value
:
End Select
End If

上の※部は実際10行くらいあって、2回も書くのはなんか凄く無駄に感じるのです
省略する事はできるでしょうか?
そこを外部関数にするくらいでしょうか。
For〜Nextで処理すれば3行で済むでしょ。
761758:05/03/20 17:09:23
>>759
すみません、ぐぐってみましたが外部関数が何なのかわかりませんでした…

>>760
For〜Nextですか。自分にはどう組み込めば良いのかイメージできない・・よろしければヒントをいただけますか
>761
とりあえずヘルプを隅から隅まで読め
763758:05/03/20 17:34:56
>>762
(´・ω・`)
最下行のデータを取るとき、
.Range("H65536").End(xlUp).Value
.Range("H65536").End(xlUp).Text

ValueとTextの違いって何ですの?
>758
フラグを立てる。goto(あまり使うなという意見もあるが)を使う。
For Next は …Cells(D + 3, i).Value… で回せという意味と思われ。
766名無しさん@そうだ選挙にいこう:05/03/20 19:06:16
お世話になります。:)
コンボボックス(コントロール)ありのシートをExcelで開いて閉じると、
保存確認ダイアログが表示されますが、表示しない方法は無いでしょうか。

コンボボックスのプロパティを一通り見てみましたが、それらしいものが
無かったので、レジストリ等の裏技がないものかと。。。よろしくお願いします。
なお、マクロは使用しない前提でお願いします。
>>758
こんな感じ?

Dim Answer As Long
  
  Answer = vbYes
  With Sheets(N).Cells(D + 3, 4)
    If .Value <> "" Then
      Answer = MsgBox("上書きしてよいですか", vbYesNo)
    End If
    If Answer = vbYes Then
      .Value = TB1.Value
      .Offset(0, 1).Value = TB2.Value
        :
    End If
  End With
>>764
ヘルプに書いてある
>767
.Value = ""
のときは?
>>769
    If .Value <> "" Then
      Answer = MsgBox("上書きしてよいですか", vbYesNo)
    End If

の部分が無視されるだけ。
771733:05/03/20 20:06:51

>>733もよろしこ
772736:05/03/20 20:28:42
>>738
どうもありがとうございました。
>>733
Changeイベントの最初に、

If Not Application.EnableEvents Then Exit Sub

といれておけば、

Application.EnableEvents = False

で止められます。
774749:05/03/20 20:58:39
どなたか>>749分かる方います?
Webで調べても出てこないからできないのかしら(涙)
775名無しさん@そうだ選挙にいこう:05/03/20 21:03:48
今日初めてExcelを使い始めたんですが
日付は編集のフィルで行に一日一日がたされて表されるんですが曜日のように数をたすのではなく曜日などを繰り返し なおかつ日付をふやす方法ってありますか??
ありましたらよければ教えて下さい よろしくお願いします
776733:05/03/20 21:04:55
>>773
それならApplication.EnableEventsを使わなくても
Boolean型の変数使えば良いだけですよね。
しかし、この方法ではChangeイベント毎にコードを
1行実行することになるので、(1つに1行でも、合計では膨大な無駄になる)
本末転倒になってしまいます。それなら止めないままでもいいくらいです。

なので引き続きフォームのイベントを止める方法解る方よろしくお願いします。
>>768
ヘルプが見れません!
>>777
ヘルプをインストールしましょう。
>>776
>それなら止めないままでもいいくらいです。
じゃあ、止めないままでいいじゃない。
>>749
できますよ。しごく簡単に。
ピボットテーブル上で、データアイテムの見出しを、商品名の下の
ラインに合わせてドラッグ&ドロップしてやりゃいいだけだと思います。

ドロップする位置によって結果が違いますが、少しそこらで試行錯誤
すればわかるんじゃないかと。
782758:05/03/20 22:10:34
>>765>>767
遅ればせながら、ありがとうございました。
767さんのコードで、いけました。でもアホなんでなんでこれで動くんだかわからない・・
これを参考に勉強に励みます。
783749:05/03/20 22:18:21
>>781
ありがとうございました
助かりました
>>775
日本語がいまいちよくわかりませんが。
たとえば書式>セル>表示形式の「ユーザー定義」で
 m/d(aaa)
とか指定する。(aaa)は曜日を表す表示形式のひとつ。

これでそのセルに3/20と入力すれば3/20(日)と表示されるし、
このセルをオートフィルで引っ張れば日付も曜日も自動生成されます。

後は日付の表示形式をいろいろ勉強してみてください。
EXCEL97。

条件付書式使って、
ある列に入力された文字によって、
そのセルの該当行の枠の色を適宜変えるようにしたいんだけど、
条件付書式が3つまでしか指定できないんですよね。
条件付けできる数をもっと増やすとか、うまく実質的に増やすコツとかって、
あるものなのでしょうか?

ちなみに、今作っているのは4文字=4色の色分けで済むものなので、
該当セル群の基本の枠色を(白ではなく、)4色のうちの1色に指定し、
条件付書式3つをフルに使うことで他の3色を割り当てるようにして
実質的に4色枠色を実現させてるんですが、
できることなら書式を4つ作って条件分岐させた方がわかりやすいんですよねえ。
>>785
条件付き書式は3つ以上増やすことは出来ませんが
VBAで数式条件分岐の書式設定すれば、
何百でも条件付き書式と同じような物を設定出来ますよ。
詳しくはヘルプ参照。
787ゴッホ ◆lkGoghDAZs :05/03/21 01:34:30
>>733
ユーザーフォームのイベントを止めるためのプロパティなどは、おそらくないと思います。
Boolean型の変数での分岐を各コントロールのイベントのプロシージャに記述するのが嫌なら、イベントをクラスモジュールに書けば、一回の記述で住みます。
ただし、違う種類のコントロールのイベントを止めたい場合は、クラスモジュールにそれぞれのコントロールの変数とプロシージャが必要です。
やっぱり、普通にユーザーフォーム内のイベント全てに、Boolean型変数での分岐(もしくはExit Sub)を記述するほうが楽だと思いますよ。

'ユーザーフォーム
Dim MYTB() As New Class1 '←クラスモジュール名は、下記のコード記述したクラスモジュール名
Private Sub UserForm_Initialize()
 ReDim MYTB(Me.Controls.Count - 1)
  For i = 0 To UBound(MYTB)
   If Controls(i).Name Like "TextBox*" Then '←テキストボックスの名前は、デフォルトを想定
    Set MYTB(i).TBEv = Controls(i)
   End If
  Next
End Sub

'標準モジュール
Public FL As Boolean

'クラスモジュール
Public WithEvents TBEv As MSForms.TextBox
Private Sub TBEv_Change()
 If FL Then Exit Sub
  Select Case TBEv.Name
   Case "TextBox1"
    'TextBox1のChangeイベント
   Case "TextBox2"
    'TextBox2のChangeイベント
 End Select
End Sub
788ゴッホ ◆lkGoghDAZs :05/03/21 01:55:40
↑今気づいたんだけど、
「ReDim MYTB(Me.Controls.Count - 1) 」の部分、
コントロールの数だけ配列が出来ちゃうけど、
気持ち悪かったら、「イベントに関連するコントロールの数 - 1」をRedimしておいてください。
ちなみに、Controlsのインデックスは0から始まります。
789ゴッホ ◆lkGoghDAZs :05/03/21 02:02:22
何度もゴメン。補足。

もし、、「イベントに関連するコントロールの数 - 1」をRedimした場合、

「Set MYTB(i).TBEv = Controls(i)」 のMYTB(i)に、「i」は使えないので、

Set MYTB(Num).TBEv = Controls(i)
Num = Num + 1

のようにして、使ってください。

もし、わからなかったら、>>787のままでも動きますので、このまま使ってください。
790785:05/03/21 02:05:36
>>786
んー、やっぱりVBAになりますか。
とりあえず勉強してみます。
791名無しさん@そうだ選挙にいこう:2005/03/21(月) 18:38:27
Excel2002で、Excelを2つ起動させると、2つ目を起動させるとき
> Personal.xlsは編集のためロックされています
というダイアログが出て、「読み取り専用」「通知」「キャンセル」の選択を聞いてきますが、
これを表示させずに読み取り専用で開くにはどうしたら良いでしょうか?
792ゴッホ ◆lkGoghDAZs :2005/03/21(月) 19:36:09
>>789
よくよく見たら、「イベントに関連するコントロールの数 - 1」をRedimした場合、
「For i = 0 To UBound(MYTB)」を「For i = 0 To UBound(Me.Controls.Count - 1)」に変更しなくちゃだめだ。
失礼しました。

>>791
Excelアプリケーションを、2つ起動させるのはどうして?
793791:2005/03/21(月) 20:20:27
>>792
OnTimeを使ったマクロを実行させたまま、Excelで他の操作がしたいのだけど、
コードは外部アプリと連携するもので、1〜30秒に1回コードが実行される為、
処理自体は重くないけど、VBEでコードを書いてる最中に
時間が来てコードが実行されると作業がし辛いし中断モードにすることも出来ないので。
794ゴッホ ◆lkGoghDAZs :2005/03/21(月) 20:40:09
>>793
なるほど。わかりました。
Personalのプロパティの読み取り専用にチェックを入れておくのはどうですか?
795791:2005/03/21(月) 21:05:12
>>794
それだと1つめに起動したExcelからも個人用マクロブックの変更を保存できなくなりますよね。
さすがにそれは困ります。PERSONAL.XLSを参照してるものも多いし。
796ゴッホ ◆lkGoghDAZs :2005/03/21(月) 21:18:14
>>795
この際、Personalをアドインにしてはどうですか?
読み取り専用のダイアログも開かないし、マクロの上書きもVBE上からできますよ。

自動的に開くブックを、読み取り専用で開く方法は、俺はわかりません。
797名無しさん@そうだ選挙にいこう:2005/03/21(月) 23:20:45
質問なんですが
 二次関数のグラフはどうやれば書けるんでしょうか??
798名無しさん@そうだ選挙にいこう:2005/03/22(火) 18:10:16
>>797
XとYの値の組をセル上に作って(Y=aX^2+bとかで計算して)、
それをグラフウィザードから散布図>曲線を使ってグラフ化する。
799【質問】:2005/03/22(火) 19:16:11
A列と1行目のセルは、長い文字列を入力してもセルの幅は変わりませんが、
それ以外のセルではセルが文字列すべてを表示しようとして自動的に長くなってしまいます。
すべてのセルで長い文字列を入力しても幅が自動的に変更されないようにするにはどうすればいいでしょうか?
800名無しさん@そうだ選挙にいこう:2005/03/22(火) 19:35:48
>>799
標準では自動調整になってるので、
全体選択して適当な幅に設定しな。
801799:2005/03/22(火) 19:51:11
>>800
今いろいろと試していたら、セルの幅は同じで、セルの全文が表示されているようでした。
隣の行のセルにスペースを入力したら、セルの幅だけの文字が表示されるようです。

へんな質問してすいませんでした。
802名無しさん@そうだ選挙にいこう:2005/03/22(火) 20:20:59
VBAでWindows Script Host Object Modelを参照して
RegDeleteメソッドであるレジストリの下層全てを削除したいのですが、
指定したキーの下に他のキーや値があると削除出来ません。(これは仕様みたいですけど
一番下から削除していけば良いようですが、特定のキーの下層全ての情報を取得する方法がわかりません。
指定したキー以下を完全に削除するにはどうすれば良いのでしょうか?
WindowsXP&Excel2002です。
803名無しさん@そうだ選挙にいこう:2005/03/22(火) 21:11:06
>>802
WSHでは出来なかったと思うよ。
XPなら、WshShell経由でreg.exe使ってみたら?
804名無しさん@そうだ選挙にいこう:2005/03/22(火) 22:24:00
A1からA20まで
太田
太田
田中
山田
・・・
佐藤
佐藤
山田
太田
と入っており、一番多い苗字をB1に書き出す、ってのは可能でしょうか?
ヘルプでcountやら「最多」やらいろいろ調べて見たんですがどれも
○○をカウントする、みたいな検索対象がすでにはっきりしている場合に使うもの
ばかりなような感じで・・・
よろしくお願いいたします。
805名無しさん@そうだ選挙にいこう:2005/03/22(火) 23:17:37
>>804

COUNTIFとLOOKUP系の関数を使えばできそうだけど、
最多が複数の場合はどうするの?
806名無しさん@そうだ選挙にいこう:2005/03/22(火) 23:54:20
>>805
レスありがとうございます。
最多が同値複数の場合はA1に入っている苗字を優先させようと思っておりました。
後だしすみません。
lookupにしろcountifにしろ、どんな苗字が含まれているかわからないようなセルに
どうのように適用すればわからないです・・・

私自身先ほどからずっと考えているんですが、何か解法閃いた場合は
また教えていただけますか?
お願いいたします。
807名無しさん@そうだ選挙にいこう:2005/03/23(水) 00:05:45
>>804
1.A列に空白列を挿入して苗字をB列(B1:Bn)とする。
2.A1セルに数式「=COUNTIF(B$1:Bn,B1)」を入力し、A1からAnまで数式をコピー。
3.C1セルに数式「=VLOOKUP(MAX(A1:An),A1:Bn,2,FALSE)」
808名無しさん@そうだ選挙にいこう:2005/03/23(水) 00:14:43
>>807
ああぁぁあっぁあなるほどぉ
ありがとうございます。
今回の件でいろいろと勉強になりました。
本当にありがとうございました。
809【質問】:2005/03/23(水) 04:42:53
データ→リスト→リストの作成、という手順でリストを作ったのですが、
そのリストの削除の方法が分からずに立ち往生しています。
リストを削除するにはどうすればいいでしょうか?
810名無しさん@そうだ選挙にいこう:2005/03/23(水) 05:01:49
巧みな話術と明快な推理で、チームを勝利に導こう。

推理対戦ゲーム「汝は人狼なりや?」
http://jinrou.dip.jp/~jinrou/

参考スレッド
http://ex10.2ch.net/test/read.cgi/news4vip/1111248336/
811名無しさん@そうだ選挙にいこう:2005/03/23(水) 08:21:38
>>809
データ→リスト→範囲に変換

できれば>>1をよく読んでバージョン情報くらい書いてね。
今回の機能はExcel2003にしかないけど、常にそうとは限らないから。
812名無しさん@そうだ選挙にいこう:2005/03/23(水) 14:23:28
縦書きで使うことはできますか。
お願いします。
813名無しさん@そうだ選挙にいこう:2005/03/23(水) 14:30:35
>>812
セル内の文字を縦方向にする機能ならある。
図形機能の中の縦書きテキストボックスを使えばその中に縦書きの
文章を置くこともできる。

それ以上のことがやりたいなら→エクセルはワープロじゃねえ!!
814名無しさん@そうだ選挙にいこう:2005/03/23(水) 14:43:44
>>813
できました。
ありがとうございます。
815名無しさん@そうだ選挙にいこう:2005/03/23(水) 16:43:12
セル内の編集をするためにF2を押そうとして、ついF1を押してしまい
重いヘルプが立ち上がってしまい、いらいらします。

ヘルプは使わないので、F1でヘルプが起動しないようにする方法はありませんか?
816名無しさん@そうだ選挙にいこう:2005/03/23(水) 17:02:07
817809:2005/03/23(水) 19:43:14
>>811
どうもありがとうございました。バージョンの件は今後気をつけます。
すいませんでした。
818相関係数の切片と傾きについて:2005/03/23(水) 19:43:29
エクセルのグラフで
「近似曲線の書式設定」で傾きと切片が表示されますが

関数で用意されているSLOPEとINTERCEPTで算出される
傾きと切片の値と一致しません

SLOPEとかINTERSEPTでは駄目なんでしょうか?
819名無しさん@そうだ選挙にいこう:2005/03/23(水) 20:15:37
予め表全体に条件付き書式(1) =MOD(ROW(),2)<>0 でセルに塗りのパターンが設定してあります。
(1行置きに色をつけているわけです)

   A   B  (Bの数式)
1 3/19  土 =WEEKDAY(A1)
2 3/20  日 =WEEKDAY(A2)
3 3/21  月 =WEEKDAY(A3)

B列の土日だけ太字にしたいのですが、B列のセルに条件付き書式
(条件2) =WEEKDAY(7) 太字に設定
(条件3) =WEEKDAY(1) 太字に設定

を設定しても、土日が太字にならないのですが・・・条件の順番を変えてみても同じです。
しかし、条件1を削除すればOKでした。
となると、セルの塗りは条件付き書式ではなくセルの書式設定でやる以外に方法はありませんか?
820名無しさん@そうだ選挙にいこう:2005/03/23(水) 20:32:14
>>819
条件付き書式の3つの条件というのは、その中で最初に適合した
ものの書式が適用されます。なので条件1に「1行おきの色塗り」を
入れてしまえば、後の条件に何を入れようと無視されるわけで。

条件付き書式だけでやりたければ「色塗り」と「土日の太字」を
同じ条件内にAND関数とかを駆使して作ってやるしかありませんが、
このケースでは
・色塗りの有無
・土日の太字の有無
を3条件で並立させてやるのは難しいんじゃないかと。
できるかもしれませんが、私は思いつきませんでした。
821名無しさん@そうだ選挙にいこう:2005/03/23(水) 20:47:10
>>819
これでどう? 手元ではうまく動いたけど。

○条件1
=AND( MOD(ROW(),2)<>0, OR(WEEKDAY(A1)=7, WEEKDAY(A1)=1) )
書式は色塗り+太字
○条件2
=OR( WEEKDAY(A1)=7, WEEKDAY(A1)=1 )
書式は太字
○条件3
=MOD(ROW(),2)<>0
書式は色塗り
822名無しさん@そうだ選挙にいこう:2005/03/23(水) 20:50:22
>>819
全体を選択して
=MOD(ROW(),2)=1:背景色

B列を選択して
=AND(MOD(ROW(),2)=1,OR(B1=1,B1=7)):背景色&太字
=OR(B1=1,B1=7):太字
=MOD(ROW(),2)=1:背景色
823名無しさん@そうだ選挙にいこう:2005/03/23(水) 21:09:54
>>818
当方のデータでは一致するけどなぁ。
824名無しさん@そうだ選挙にいこう:2005/03/23(水) 21:28:08
>820-822
どうもありがとうございます。
自分もANDとかORを使って何とかできないかと思って色々頑張ってみたところですが、
こんなに早く回答いただけたんでそのまま使わせてもらいましたw
最初には背景色と太字を組み合わせて設定することに気付いてませんでした・・・
825名無しさん@そうだ選挙にいこう:2005/03/23(水) 22:18:51
ほげ
826名無しさん@そうだ選挙にいこう:2005/03/23(水) 22:59:02
>>815にしろ>>375にしろ内容は当然、文体まで同じなんだな。
827名無しさん@そうだ選挙にいこう:2005/03/23(水) 23:10:02
俺は変換キー(スペースキーの右隣り)にF2の機能割り当ててる。
828名無しさん@そうだ選挙にいこう:2005/03/23(水) 23:31:26
>>826
確か前スレにもおんなじようなレスあったよね。
829828:2005/03/23(水) 23:36:42
ゴメン。勘違い
830名無しさん@そうだ選挙にいこう:2005/03/24(木) 08:04:59
F1キー無効化はそろそろFAQだねえ。
オレVBA書けないから、誰かテンプレ作ってくれない?

Q:間違えてF1キーを押してしまいヘルプの起動を待たされることが多く、効率が悪いです。
 F1キーを無効化することはできませんか?

A1: {Application.OnKey "{f1}", ""}

A2: キーボードから外してしまうのはどうでしょうか。
 たいていの場合マイナスドライバー一本で作業できます。
831名無しさん@そうだ選挙にいこう:2005/03/24(木) 09:17:17
A3: キーを押し間違えるとは修行が足りません。
  ヘルプだからまだ良いものの強制終了だったら
  どうするんですか!
832名無しさん@そうだ選挙にいこう:2005/03/24(木) 09:49:29
CSVファイルでデータ件数が10万件というファイルがあるので
すが開こうとすると65,000までしか開けません。

全て開くようにするにはどうしたらよいのでしょうか?
ACCESSを使うのでしょうか?
(私はACCESSは使えませんが...)

どなたか教えて下さい!
833名無しさん@そうだ選挙にいこう:2005/03/24(木) 11:11:05
>>832
ワークシートが65,536行、256列しかないのはExcelの仕様。
どうしようもないです。
Excelでやるなら、元のCSVファイルを何らかの方法で
分割するしかない。
834名無しさん@そうだ選挙にいこう:2005/03/24(木) 11:21:59
>>832
VBAで1〜50000行はSheet1に、50001〜100000行はSheet2に
って感じでファイルを展開させればいいじゃん。
たしかそういうアドインもあったし。
835名無しさん@そうだ選挙にいこう:2005/03/24(木) 11:40:41
>>832
アドイン見つけてきた
ttp://www.vector.co.jp/soft/win95/business/se236008.html

> 超便利CSVコンバーター
> ExcelでCSVファイルを簡単、確実、実用的にインポート&エクスポートできるエクセルのアドイン

> CSVファイルの大きさがExcelの制限を超えていても複数のシートに任意に分割して取り込むことが可能

これが嫌なら自分でアドイン探すか、自分でコード書くかしな。
836名無しさん@そうだ選挙にいこう:2005/03/24(木) 13:34:21
windowsXPでExcel2003を使っています。
単純な入力作業しかできないのですが、
効率のよいやり方があれば教えてください。

表の任意の行と行の間に、ひとつのコピー元を
再度コピーすることなく、何度も挿入するにはどうしたらいいでしょうか。

今は空の行を挿入、コピー、形式を選択して貼り付け(式のみ)
を繰り返しています。
何度も出てくる作業なので簡単にしたいのです。

コピーした行を、「コピーしたセルを挿入」で挿入すると
コピー元がなくなってしまいうので
再度コピーするのですが・・・

よろしくお願いします。
837名無しさん@そうだ選挙にいこう:2005/03/24(木) 13:39:45
Inputを使ってシーケンシャルモードで開いたテキストを
カンマ区切りでセルに入力する場合、
各行の行末(要素数)を調べるにはどうすれば良いのでしょうか?
例えば
"hoge","hu,ga","piyo"
という行の場合、要素数の3を返すとか、Do Loopで1要素ずつ処理していき
"piyo"の位置のみでTrueを返す方法とかって無いのでしょうか?
行の末尾ではなく、ファイルの末尾ならEOFでわかるんですが。

Line Inputを使ってSplit(行全体を格納した変数, ",")では、
区切りのカンマだけではなく要素のカンマも区切り対象になってしまうので
上記のような3要素の行が4要素として扱われてしまいます。
大抵のcavファイルは全行の要素数が同じなのですすし、
自分でcsvを作る場合は空要素で、全行の要素数を揃えるようにしていますが
各行の要素数がバラバラのものを扱うことがあるのでこのような方法を探してます。
現在はLine Inputで読み込んだ文字列を、文字列操作関数と条件分岐で処理してますが
処理が遅いしコードも長く見づらいものになってしまうので。

csvファイル自体を事前に整形するのではなく(都合上この処理は省きたい)
Inputで指定セルに入力する際にそのように各行の要素数が違うcsvを、
行構成を崩さずにカンマ区切りで処理する方法が解る方、どうかご教示願います。
Excelのバージョンは2000です。
838837:2005/03/24(木) 14:25:34
>>836
Sub コピー行の連続挿入()
 Rows(ActiveCell.Row).Insert
 Rows(ActiveCell.Row).Copy
End Sub

これに適当なショートカットキーを割り当てれば、Ctrl+Cで行をコピーしたあと、
挿入したい位置を選択して、このマクロに割り当てたショートカットキーを押すと、
コピーした行の挿入と、再度その行のコピーを自動でやってくれるので、
再度コピー操作をすることなく何度でもコピーした行の挿入が出来る。

又はイベントを使って
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Application.CutCopyMode = 1 Then
  Rows(Target.Row).Insert
  Rows(Target.Row).Copy
  Cancel = True
 End If
End Sub
とすれば、コピーした後、挿入したいセル位置でダブルクリックすると、
その位置にコピーした行の挿入が出来る。(もちろん連続処理可能)
イベントの方を「Call コピー行の連続挿入」としてキー操作とマウス操作の両方で出来るようにしてもいいし。

因みに挿入先が連続した行範囲なら、1行を選択してコピーした後、
数行を選択して挿入すれば、選択した行数分、コピーした行を一気に挿入出来るのは知ってるよね。
839名無しさん@そうだ選挙にいこう:2005/03/24(木) 14:26:42
教えて下さい。
A1で、1.12.21と入力したものから「1」の個数を調べる式で
通常なら3と答えが出るのですが、これを「1」「12」「21」と判別して「1」のみを取り出す方法を探しています。
ツール>区切り位置では出来るのですが、操作なしでできるような関数があればご教示願います。
840837:2005/03/24(木) 15:03:44
>>839
Function hoge(Expression As String, StringMatch As String, Delimiter As String)
 Dim i As Byte, j As Byte, StringCheck As Variant
 StringCheck = Split(Expression, Delimiter)
 For i = 0 To UBound(StringCheck)
  If StringCheck(i) = StringMatch Then j = j + 1
 Next i
 hoge = j
End Function

これを標準モジュールにコピペして
=hoge(A1,"1",".")
=hoge(検索対象,検索文字,区切り文字)
じゃダメかな。既存のワークシート関数のみで、
作業セルを使わずに結果を出す方法は解らないので。
必ず要素が3つと決まってるならIF、FIND LEFT MIDで
出せないこともないけど、かなり式が長くなるし。
841837:2005/03/24(木) 15:19:12
>>839
ゴメン、スゲー簡単な式思いついた。
Function hoge(Expression As String, StringMatch As String, Delimiter As String)
 hoge = UBound(Split(Delimiter & Expression & Delimiter, Delimiter & StringMatch & Delimiter))
End Function
使い方は同じ。
842名無しさん@そうだ選挙にいこう:2005/03/24(木) 17:04:02
エクセルで、たとえばセルに入力された条件でそのセルの背景色を変える。なんってことは出来ませんでしょうか?

たとえば、マイナス値ならは、数値を赤くするのは書式設定があるのですが、
そんな感じにセルの色も変更したいのですが。
843837:2005/03/24(木) 17:23:58
>>842
条件付き書式で出来ます。

書式 > 条件付き書式
セルの値が 次の値より小さい 0
で[ 書式 ]ボタンを押して好きな背景色を設定
844名無しさん@そうだ選挙にいこう:2005/03/24(木) 17:52:32
>>838
ありがとうございました
できました!
これを期にマクロの勉強もしてみたいと思います。
大変助かりました。
845842:2005/03/24(木) 18:45:53
>>843
ありがとうございます♪
できますた。
846名無しさん@そうだ選挙にいこう:2005/03/24(木) 19:38:33
Win2000、Excel2000です。
「i」を一つだけセルに入れると大文字の「I」になってしまうんですが、
どうしたら小文字の「i」にできますか。
847837:2005/03/24(木) 19:47:19
>>846
ツール > オプション > スペルチェック > オートコレクトオプション > オートコレクト
で「 i → I 」の修正項目を削除。
又は例外処理に i を登録。
848846:2005/03/24(木) 19:56:58
>>847
どうも有り難うございます。できました。
849名無しさん@そうだ選挙にいこう:2005/03/24(木) 20:56:38
A1からC1までの3つで1セットのデータがあって、
それがA100の行まで100セットある状態から、
ランダムに10行(10セット)を抜きだす方法ってありますか?

変な使い方ですみません。
850名無しさん@そうだ選挙にいこう:2005/03/24(木) 21:00:27
>>849
D1からD100まで乱数を割り当てて、大きい順に10番目まで取得する。
851849:2005/03/24(木) 21:19:20
>>850
ありがとうございます。
やってみます。
852名無しさん@そうだ選挙にいこう:2005/03/24(木) 21:43:11
>>837
Split(行全体を格納した変数, """,""")
853:2005/03/24(木) 22:19:37
質問です。 
セルに文字をいれて合計のセルのところを数字を出したいのですがどうしたら良いですか?

こんな感じです。
名前 シフト
田中 A        
大田 B                     二人の合計時間 10.0
        シフト  勤務時間
         A     4.0
         B     6.0 
田中のところにA、太田のところにBといれると勝手に二人の合計勤務時間が10.0になるようにしたいんです。
854837:2005/03/24(木) 22:28:15
>>852
csvファイルはあくまでもカンマ区切りテキストで
要素にスペースやカンマ等が含まれない場合は、
必ずしも要素がダブルクォーテイションで囲われてるものばかりではないので
その方法では無理です。

最初に書いておくべきだったかも知れないけど
これは私の環境での情報ではなく、共通のcsvの仕様ですので
省略してしまいました。
個人的には不必要でも"で囲うようにしてるので、例では全ての要素を"で囲ってしまい
勘違いさせたかも知れませんが、あくまでも求めているものは
「"要素","要素"」という形式のテキストファイルの処理ではなくcsvファイルの処理方法なので。


>>853
VLOOKUPで、AとBそれぞれに対応した数値を拾って足せば良いかと。
例えばシフトと勤務時間の表部分がC5:D6なら
=VLOOKUP(B2,C5:D6,2)+VLOOKUP(B3,C5:D6,2)
こんな感じで合計出せると思う。
855名無しさん@そうだ選挙にいこう:2005/03/24(木) 22:53:04
>>854
ループして各要素を調べるしかないんじゃない?
856837:2005/03/24(木) 23:18:00
とりあえず>>852さんの回答をヒントにこんなものを作ってみました。
Line Input #1, hoge
piyo = Split(hoge, """,""")
j = UBound(piyo) + 1
For i = 0 To UBound(piyo)
 j = j + UBound(Split(piyo(i), ","))
Next i
これで、変数 j がその行の要素数になります。
一応文字列操作をループさせてた時よりは処理が速くなりましたが、
まだ無駄が有るような気がするので、何かもっと良い方法を
ご存じの方がおりましたらご教示くださいませ。
857名無しさん@そうだ選挙にいこう:2005/03/24(木) 23:45:26
>>856
ちなみに聞くけど、
>文字列操作をループさせてた
ってどんな方法?
858名無しさん@そうだ選挙にいこう:2005/03/24(木) 23:53:37
>>856
hoge,"hu,ga","piyo"の場合、要素数が4つになってもいいの?
859837:2005/03/25(金) 00:00:54
>>857
先頭、又は , の後が " から始まりなら、その " の1つ後の文字から次の " の一つ前まで、
それ以外なら次の , の一つ前までを1要素として処理させてた。
これは元々prnをシーケンシャルモードから扱う時に使ってた方法なんだけど。

>>858
ゴメン、ボケてた。_| ̄|○
もう一段For処理取ってそこでIFに掛けてカウント増やさないと本末転倒だよな。
でもなんとかhoge,"hu,ga","piyo"を3要素と出せるようにはなった。
860名無しさん@そうだ選挙にいこう:2005/03/25(金) 00:09:56
>>837
遅いかも。

Sub Macro1()
Const 行全体を格納した変数 = "a,b,""c,d"",e,123,456,""123,456"""
'Const 行全体を格納した変数 = """hoge"",""hu,ga"",""piyo"""

Dim 配列 As Variant
Dim NoCount As Boolean
Dim i As Long
Dim j As Long

  MsgBox 行全体を格納した変数
  配列 = Split(行全体を格納した変数, ",")
  NoCount = False: j = 0
  For i = 0 To UBound(配列)
    If UBound(Split(配列(i), """")) Mod 2 = 1 Then
      NoCount = Not NoCount
    End If
    If NoCount Then j = j + 1
  Next
  MsgBox "要素数は、" & UBound(配列) + 1 - j
End Sub
861839:2005/03/25(金) 01:33:03
>>837
遅くなりましたが、もの凄くアリガトウ。
862853です:2005/03/25(金) 06:30:15
>>854
ありがとうございます
863また853です:2005/03/25(金) 07:00:57
すみません。もう一回質問します。
名前 シフト
田中 A        
大田 D                     二人の合計時間 6.0
        シフト  勤務時間  シフト  勤務時間
         A     4.0    c     5.0
         B     6.0  D 2.0
こんな感じで、表が二個になった場合はどうすればよいのでしょうか?
VLOOKUPだとひとつの表しかできないですよね?

864 ◆NONO.G8G2w :2005/03/25(金) 08:22:50
>>863
名前 シフト
田中 A        
大田 D                     二人の合計時間 6.0
        シフト  勤務時間
         A     4.0
         B     6.0
         c     5.0
         D     2.0

 表を2個(CとDのシフト時間を分ける)にする必要があるんでしょうか?
単に見栄えの問題というなら1個にまとめたほうがいいと思います。
分けてもデータ的に意味ないし。
865名無しさん@そうだ選挙にいこう:2005/03/25(金) 08:26:23
>>860
ありがとうございます。
Boolean型変数を反転させながらの処理は
すっきりしてるし確実性があるのでいいですね。
有難く使わせていただきます。

>>863
そうなるとVBAか配列数式の処理になるかな。例えばVBAだとこんな感じ。
Range("G3").Value = Range("C5:E6").Find(Range("B2")).Offset(0, 1).Value + Range("C5:E6").Find(Range("B3")).Offset(0, 1).Value
Range(結果入力セル).Value = Range(表範囲).Find(Range(検索値1)).Offset(0, 1).Value + Range(表範囲).Find(Range(検索値2)).Offset(0, 1).Value
でもこんなことするより、可能なら表を2列ではなく1列にした方がいいと思う
名前  シフト  シフト 勤務時間
田中  A    A    4.0
太田  D    B    6.0
          C    5.0
合計  6.0    D    2.0

みたいな感じとか。
866>>863です:2005/03/25(金) 11:37:07
>>864 、865さんありがとうございます。
表が複数あるとやはり簡単にはいかないようですね。
>>864
表が複数あるのは、印刷の関係で複数になるんですよ。
一枚の紙にまとめようとしちゃうからです。
867名無しさん@そうだ選挙にいこう:2005/03/25(金) 17:47:47
>>866
1枚の表にしてcountifとvlookup使った方がいいと思うけど。
印刷はそこから印刷用シートに参照させればいいんじゃない?
868名無しさん@そうだ選挙にいこう:2005/03/25(金) 19:50:19
根号をあらわすにはどうすれば?
869名無しさん@そうだ選挙にいこう:2005/03/25(金) 20:11:39
>>868
ただ√て書けばいいだけじゃないの?
計算はできないけど。
870名無しさん@そうだ選挙にいこう:2005/03/25(金) 20:13:17
>>868
数式作成ツール使うかChrW(8730)
871名無しさん@そうだ選挙にいこう:2005/03/25(金) 21:12:45
すんまそん、どなたか教えてくだちい。
C列のセルに値が無くなったらループから抜け出すFor文です。

Sub test()
  Dim i As Integer
  For i = 5 To 20
    If Cells(i, 3) <> "" Then
      Cells(i, 4) = i
    Else: GoTo 999
    End If
  Next
999
End Sub

GoToを使わずに書く方法があったら教えろ!ヒマ人ども!!!
872名無しさん@そうだ選挙にいこう:2005/03/25(金) 21:23:34
>>871
Else: GoTo 999
 ↓
Else: Exit For

この場合はExit Subでもいいけど。
873名無しさん@そうだ選挙にいこう:2005/03/25(金) 21:47:37
>>871
Dim i As Integer
i = 5
Do
Cells(i, 4) = i
i = i + 1
Loop Until i > 20 Or Cells(i, 3) = ""
874名無しさん@そうだ選挙にいこう:2005/03/25(金) 22:08:25
>>871
Dim i As Byte
For i = 5 To 20
 If Cells(i, 3) = "" Then Exit For
 Cells(i, 4) = i
Next i


>>873
Dim i As Integer
i = 5
Do Until i > 20 Or Cells(i, 3) = ""
Cells(i, 4) = i
i = i + 1
Loop
じゃないと処理変わっちゃうよ。
Cells(5, 3) = ""の場合、>>871のコードではCells(5, 4) = 5が実行されないけど
>>873のコードではCells(5, 4) = 5が実行されてしまう。
875名無しさん@そうだ選挙にいこう:2005/03/26(土) 00:54:29
質問です。ロータスで作成したファイル(マクロになってるファイルです)をエクセル上でそのマクロを有効にすることは可能でしょうか?
(バージョンは2002です。)
876名無しさん@そうだ選挙にいこう:2005/03/26(土) 03:03:11
4行目にオートフィルタを掛け、B列からデータを抽出するとき、
フィルタオプションの「を含む」の窓を表示させたいのですが
自動記録では当然ながら出来ません。

Sub Macro1()
 Selection.AutoFilter Field:=2, Criteria1:="=**", Operator:=xlAnd
End Sub

ボタンをクリックすると、オートフィルタのタブをクリック → オプション → を含む
の窓で止まるようにするには、マクロをどう書けばよいのでしょうか?
877名無しさん@そうだ選挙にいこう:2005/03/26(土) 08:46:54
>>875
有効にする以前に、ロータスとExcelのマクロは互換性がないので
書き直さなければなりません。
878名無しさん@そうだ選挙にいこう:2005/03/26(土) 11:45:58
WindowsXP SP1a、Excel2002 SP3
入力規則のリストに関する質問なんですが、
通常、ドロップダウンリストは
|___|___|___|
|___|___[▼]___|
|___|項目1    |___|
|___|項目2    |___|
|      | ̄  ̄  ̄| ̄   |
こんな感じに表示されますが、これが
  |___|___|___|
_|___|___[▼]___|
|項目1         |___|
|項目2         |___|
 ̄| ̄ ̄ ̄| ̄  ̄  ̄| ̄   |
こんな風になってしまう場合があります。
リストの値をa,b,cなどと短いものにしても変わらないし
一度入力規則を削除してから再設定しても、幅はそのままです。
これを通常のように「セル幅+ボタン」の幅内で表示させるにはどうすればよいですか?
879名無しさん@そうだ選挙にいこう:2005/03/26(土) 14:55:39
If CheckBox1 = True Then
N = ComboBox1.value
If Sheets(N).Cells( 3, 5).Value = "" Then
Sheets(N).Cells( 3, 6).Value = CBMoku1.Value
End If
End If
If CheckBox2 = True Then
N = ComboBox2.value
If Sheets(N).Cells(, 3, 5).Value = "" Then
Sheets(N).Cells(,3, 6).Value = CBMoku2.Value
End If
End If
:
ご教示願います。
チェックボックス(1〜10)にチェックのついた名前のシートに入力させたいのですが、
上だと、チェックボックス2でSheets(N).Cells(3, 5).Value が空白で無かった場合、
チェックボックス1の処理自体も取り消し、というか入力を無かった事にしたいのです。
どうすればよいのでしょうか。
880名無しさん@そうだ選挙にいこう:2005/03/26(土) 15:50:44
>>879
Dim n(10)
If CheckBox1 = True Then
 n(1) = ComboBox1.Value
 If Sheets(n(1)).Cells(3, 5).Value = "" Then
  Sheets(n(1)).Cells(3, 6).Value = CBMoku1.Value
 End If
End If
If CheckBox2 = True Then
 n(2) = ComboBox2.Value
 If Sheets(n(2)).Cells(3, 5).Value = "" Then
  Sheets(n(2)).Cells(3, 6).Value = CBMoku2.Value
 Else
  Sheets(n(1)).Cells(3, 6).ClearContents
 End If
End If

説明が曖昧でよくわからんがこーゆーこと?
Clearするんじゃなくて、元の値に戻すってんなら、
もう一つ配列用意してやる必要があるけど。

というか、これを1〜10までやるなら、一つ一つ書かなくても
For処理で出来るよ。
881名無しさん@そうだ選挙にいこう:2005/03/26(土) 16:06:58
マクロで、印刷する時に一枚づつ処理を行う方法ってありませんか?
印刷する直前に一回だけ処理を行う方法なら見つかったのですが。
882789:2005/03/26(土) 16:39:57
>>880
そうです。つたない説明なのにありがとうございます。
元の値に戻す場合はどうすればいいのでしょう、
Undoというのがあるようですが、直前の部分しか戻らないみたいですね。
CheckBox4で引っかかってCheck1〜3の入力を元に戻したいと言うのは、無理なのでしょうか

For処理、無学ゆえ「n(2」)ではなく「n2」とやって当然うまくいかず、投げてました。こうすればよかったのか・・・勉強になります
883名無しさん@そうだ選挙にいこう:2005/03/26(土) 16:53:31
>>882
Dim n(10), foo(10), i As Byte, j As Byte
For i = 1 To 10
 If Controls("CheckBox" & i) Then
  n(i) = Controls("ComboBox" & i).Value
  If Sheets(n(i)).Cells(3, 5).Value = "" Then
   foo(i) = Sheets(n(i)).Cells(3, 6).Value
   Sheets(n(i)).Cells(3, 6).Value = CBMoku(i).Value
  Else
   For j = i To 1 Step -1
    Sheets(n(j)).Cells(3, 6).Value = foo(j)
   Next j
  End If
 End If
Next i


CBMokuが何なのか解らないが、連番変数なら配列に、
コーントロールのオブジェクト名ならControlsを使って処理。

つーかさ、1→10って処理じゃなくて、10→1の順で処理させて
Sheets(n).Cells(3, 5).Value <> ""だったら、そこで処理をやめるってのじゃダメなわけ?
条件聞いてるとその方がいいような気がするんだが。
884名無しさん@そうだ選挙にいこう:2005/03/26(土) 18:05:59
マクロで作ったベンチマークテスト見たいのないですか?
885789:2005/03/26(土) 18:08:09
>>883
ああ、本当にありがとうございます。無駄なく書けるもんなんですね。
<> "" だったらやめる、ですか。なるほど、ちょっと頑張ってみます。多謝です。
886名無しさん@そうだ選挙にいこう:2005/03/26(土) 20:33:32
今度、Excel2002を購入しようと思っている者ですが、
ノートPC2台にインストールできるものなのでしょうか?
887名無しさん@そうだ選挙にいこう:2005/03/26(土) 20:40:38
>>886
インストール自体は出来るけど、認証が通らない場合があります。
製品版のライセンスはデスクトップ1台とノート1台なので。
例え認証が通ったとしても、不正使用になるのでやめましょう。
888886:2005/03/26(土) 20:46:42
>>887
サンクスです。
889名無しさん@そうだ選挙にいこう:2005/03/26(土) 23:07:25
マクロをボタンひとつで起動するみたいなことってできるのかな?

BBSの
書き込むボタンを押すみたいな感覚で。
890名無しさん@そうだ選挙にいこう:2005/03/26(土) 23:09:44
>>889
ああ
891名無しさん@そうだ選挙にいこう:2005/03/26(土) 23:18:03
    A      B      C     D
1 都道府県コード 都道府県名 市町村コード 市町村名
2   0001     北海道    002    札幌市
3                003    函館市
4                004    根室市
7   0101     青森県    102    青森市
8                103    十和田市
9                104    八戸市

上記のような一覧があり,別シートのB2に県名を,D2に市町村名を
それぞれリストボックスから選択しようと思うのですが,
県名リストの範囲設定をする際,B2:Bとすると空白まで拾ってしまうので
入力されたセルだけを参照する数式をくむにはどのようにするのでしょうか?
さらに欲を言えば,A1,C1にそれぞれ都道府県,市町村コードを入力するとB1,D1セルに
名前が反映される,またその逆の反映(県市町村名から当該コードを拾う)も
行いたいのですが,どのようにすればよいのでしょうか?
もうマクロを使うしかないのかと・・・。アクセスであればできそうですがエクセルで
やりたいので。
892889:2005/03/26(土) 23:20:04
できました。
にこちゃんマークなんですね、デフォルトは。
893困ってるっス:2005/03/26(土) 23:25:48
天才の方々に質問っス
A列に数字もしくは文字をズラ〜と入力していくっス。
A1、A2、A3・・・と、でも終わりは決まってないっス。100行で終わるか、1000行まで
入力するか不明っス。
ここで、A列に1度入力した数字や文字は以降入力できない(エラー表示させるとか)
様にするにはどーすれば良いのでしょうか、わからないっス。
アクセスなどデータベースソフトなら主キーやら何やらを設定すれば、フィールドに
同じデータが入力されるとエラーメッセージが出て入力できない様に簡単にさせる
事ができるみたいなのですが、、、
メッセ表示だけでもいいので、何とかお知恵拝借ヨロシクっス!
894名無しさん@そうだ選挙にいこう:2005/03/26(土) 23:30:24
>>891
その表からリストひらうんじゃなくて、リスト用の表を別に用意したら?

あと、マクロは必要になった時が覚え時ですよ。
がんがってみたら?
895891:2005/03/26(土) 23:35:12
A列を選択して,データ→入力規則のユーザー設定で
「=COUNTIF($A$1:$A$100,A1)=1」
と入力して,必要に応じてエラーメッセージを記入すればよろしいかと。
896名無しさん@そうだ選挙にいこう:2005/03/26(土) 23:42:25
897名無しさん@そうだ選挙にいこう:2005/03/26(土) 23:45:10
>>895
天才殿、感謝っス
898名無しさん@そうだ選挙にいこう:2005/03/26(土) 23:46:56
>>895
それだと100行までしか入力規制効いてなくない?
=COUNTIF($A$1:A1,A1)=1
の方がよろしいかと。
899名無しさん@そうだ選挙にいこう:2005/03/27(日) 00:00:23
=COUNTIF($A:$A,$A1)=1
=COUNTIF($A$1:$A1,$A1)=1
のどっちがいいんだろうね。

前者は、A列内のどこかに同じ文字列が有れば反応、
後者は入力位置より上に同じ文字列が有れば反応するけど
入力位置より下に同じ文字列が有っても反応しない。
900871:2005/03/27(日) 01:28:17
>>872-875
いつもありがとうございます。
お礼が遅れて、すんまそんですた。
また、ヨロシコおながいします。
901名無しさん@そうだ選挙にいこう:2005/03/27(日) 16:51:11
=A1 =B1 =C1 と入力されているものを行列を入れ替えしてコピーし

=A1
=B1
=C1

としたいのですが
うまくいきません

どなたか方法を教えてください

902名無しさん@そうだ選挙にいこう:2005/03/27(日) 17:05:05
>>901
コピーする前に、=A1 =B1 =C1 ではなく、
=$A$1 =$B$1 =$C$1
としておいてから、行列を入れ替えてコピーする。
903名無しさん@そうだ選挙にいこう:2005/03/27(日) 17:11:54
>>902
それだと
=A1 =B1 =C1 と入力する時に
オートフィルを使っているので

=$A$1 =$A$1 =$A$1

になってしまうので…

904名無しさん@そうだ選挙にいこう:2005/03/27(日) 17:15:20
>>901>>903
INDIRECT関数で出来る。
使い方はヘルプ参照。

又はVBAで。
905名無しさん@そうだ選挙にいこう:2005/03/27(日) 17:20:33
>>903
オートフィルで作ってから、F4キーで相対参照→絶対参照変換すればいいでしょ。
1セルごとの操作になるのは仕方ないけど。

>>904
ん。このケースでINDIRECT使える?
たしかに一見できそうだけど。
906名無しさん@そうだ選挙にいこう:2005/03/27(日) 17:57:05
>>905
=INDIRECT(ADDRESS(1,ROW()-1))

ADDRESS関数の列引数に行数を返すROW()を入れてやれば
行が下がるごとに、参照列が右に移動する。
上記の数式をA2に入れればA1を参照
A3ならB1、A4ならC1というように参照する。
907905:2005/03/27(日) 18:07:52
>>906
あー、なるほど。
俺、INDIRECT単体でどうやってやるんだろうと悩んでたわ。

ってそれ、904が言うような「INDIRECT関数でできる」って
レベルじゃないよねw
ヘルプ読んでもそこまで発想できないでしょ。
908906:2005/03/27(日) 18:18:08
ADDRESSやROWなんて、超基礎関数でしょ。
ヘルプ読んでINDIRECTの概要が分かれば
あとはADDRESSとROWを使えばいいことくらい普通は直ぐ思い浮かぶもんだが。
これが思いつかないようなら、質問者、回答者ともに
PC初心者板のOfficeソフトスレに移動した方がよさげ。

INDIRECTの概要も頭に入ってれば、
ヘルプなど読まなくてもこのくらいの式はすぐに思いつくけど、
INDIRECTは使い方が簡単な割にはあまり知られてないからなぁ。
909名無しさん@そうだ選挙にいこう:2005/03/27(日) 18:21:07
905が興奮しちゃいそうなこと書くなよ。
910905:2005/03/27(日) 18:36:12
いや興奮はしないけどさw

数式や関数の使い方そのもの不慣れな人が、それを思いつくかって
言われればそうじゃないでしょ。それは慣れた人の発想。

このスレが、そういうレベルの人が出入り禁止なら了解。
見てるとそうじゃなく、いろんなレベルの人が混在してるように見えるけど。
911名無しさん@そうだ選挙にいこう:2005/03/27(日) 18:37:27
>>901
=INDEX($1:$1,1,ROW(A1))
912911:2005/03/27(日) 18:40:12
書き忘れた。
>>911の数式を =A1 としたいセルのところに入れて、下にコピーね。
913名無しさん@そうだ選挙にいこう:2005/03/27(日) 19:34:59
表計算なのですが


1−2=−1

プラスの時は+
マイナスの時は−
ゼロの時は ±
と表記したいのですがどうしたらよいのでしょうか?
セルの書式設定でマイナスの時に赤字にはできるのですが
+と±の表記がどうしてもできません

また白黒で印刷するため、+か−をよりわかりやすくするために
+と−にセルを塗りつぶしして、わかりやすくしたいのですが
自動に塗りつぶしをしたいのですが

やり方をご存知の方いましたら教えてください
宜しくお願いします
914名無しさん@そうだ選挙にいこう:2005/03/27(日) 19:55:20
>>913
正数;負数;0値;文字列

条件付き書式

以上。
915名無しさん@そうだ選挙にいこう:2005/03/27(日) 20:04:42
>>914
サンクス
書式設定を
"+" #,###0;"-"以下同じ"±"

の方でできました。
+時 塗りつぶし効果 黄色
-時 塗りつぶし効果 青色

みたく塗りつぶし効果とリンクさせる事はできますか?
916名無しさん@そうだ選挙にいこう:2005/03/27(日) 20:27:20
>>915
だからそっちは条件付き書式で。
917名無しさん@そうだ選挙にいこう:2005/03/27(日) 20:37:15
そっか。
そうだった。
スマソ。
サンクス
918名無しさん@そうだ選挙にいこう:2005/03/27(日) 21:21:43
=F4+F7+F10+F13+F16+F19+F22+F25+F28+F31+F34+F37+F40+F43

2つ飛ばしの合計をするんだけど、もっとシンプルに書く方法ある?
919名無しさん@そうだ選挙にいこう:2005/03/27(日) 21:30:22
>ADDRESSやROWなんて、超基礎関数でしょ。

エクセルを5年以上も使ってるけど、まだ一度もADDRESSやROWなんて
使ったことがない・・・ orz
(ROWはVBAなら基本中の基本だけど)

920名無しさん@そうだ選挙にいこう:2005/03/27(日) 21:39:10
使用年数とレベルは一致しないからな。
5年以上Excel使ってて四則計算以上のこと出来ないような奴もいっぱい居るし。
921名無しさん@そうだ選挙にいこう:2005/03/27(日) 21:45:42
何らかのきっかけでExcelを本気で勉強した人ならともかく、必要に迫られて
仕事でExcelを使い出したって人は、自分の仕事に必要なことさえわかれば
それでOK。無理にいらんことまで勉強したりはしない人は多いよ。
(つーかそれが普通)

そういう層には、どの操作やどの関数が”基礎”なんて話はあまり関係ない。
妙に難しいことを知ってる半面、むちゃくちゃ簡単な事を知らなかったりするから。
922名無しさん@そうだ選挙にいこう:2005/03/27(日) 21:58:53
>>918
そのケースに範囲限定してよければ、
=SUM(IF(MOD(ROW(F4:F43),3)=1,F4:F43,0))
をCtrl+Shift+Enterで入力。
923名無しさん@そうだ選挙にいこう:2005/03/27(日) 22:08:13
>>922
トレースしにくくなるので、マンマのほうがいいときもあるよ。
というか、後々のことを考えると、参照トレースがでるように
作っておくべきです。
924名無しさん@そうだ選挙にいこう:2005/03/27(日) 22:18:00
>>923
お説ごもっとも。
後々使うヤツならそうですね。
俺はたまたま、その場のデータ処理だけできれば十分な仕事が多いので
あまり気にしませんけど。

というわけで、>>918さんは好きに使い分けてくれ。
またはもっと頭のいい人の解決案を待ってくれ。
925647:2005/03/27(日) 22:50:27
>>918

Function 縦飛び合計(セル範囲 As Object, 縦飛び数 As Integer) As Double
Dim データ As Variant
Dim 行数 As Integer, 列数 As Integer, 行 As Integer, 列 As Integer
If 縦飛び数 <= 0 Then: 縦飛び合計 = CVErr(xlErrValue): Exit Function
データ = [セル範囲]: 行数 = UBound(データ, 1): 列数 = UBound(データ, 2)
For 行 = 1 To 行数 Step 縦飛び数
For 列 = 1 To 列数
If Application.IsNumber(データ(行, 列)) Then: 縦飛び合計 = データ(行, 列) + 縦飛び合計
Next
Next
End Function

縦向きの飛び飛び合計用の関数
頻繁に飛び計やるのなら入れとくと便利
926名無しさん@そうだ選挙にいこう:2005/03/27(日) 23:02:00

セル範囲 As Object → セル範囲 As Range
Application.IsNumber → IsNumeric
927名無しさん@そうだ選挙にいこう:2005/03/27(日) 23:06:29
とりあえずObjectで逃げるのはありがちだよな w
だったらVariantにしろって話もあるが w
928名無しさん@そうだ選挙にいこう:2005/03/27(日) 23:20:26
>>918
色んな例が出ているが、
俺だったら、たとえばG列に1,0,0,1,0,0...というデータを作って、
=SUMIF(F列,1,G列)でやる。
こうすれば、どの数を足しているかが一目瞭然なので。

MOD関数とかVBAでループとかは便利だが、ちょっと数字を一つミスったりしたら
気づきにくいし、デバッグも大変。
929名無しさん@そうだ選挙にいこう:2005/03/27(日) 23:31:56
>>908
ADDRESSやROWやINDIRECTは、もろにExcelのデータシートの構造に依存しているので、
あまり使わない方がいいと思う。
せめて、行列番号を直接扱わずに、セル範囲に名前を付けてからINDEXで参照するぐらいは
した方がいい。

ちょっとデータの形式が変わったとか、別のソフトウエアで扱いたいとかいうときに、
生の数字は困る。
Excelと一蓮托生になってしまう。
930名無しさん@そうだ選挙にいこう:2005/03/27(日) 23:38:18
>>919
禿同。
漏れもLotusも含めて15年以上使ってるけど、関数で使ったことは無いな。
とりあえず基礎的な関数といえば、四則演算とIFやROUND・LOOKUP系だけで済む事が多いような。
あとはソートとピボットで6割は事足りる。残りの内3割ほどはVBAを駆使するが。。。
931名無しさん@そうだ選挙にいこう:2005/03/27(日) 23:41:31
なんか可哀想なのが湧いてきたな
さすが春
932名無しさん@そうだ選挙にいこう:2005/03/27(日) 23:42:47
ふっ、使わないことを自慢するとは、、、
おいらはMultiplan以来20年以上使ってるが当然使わんわ w
933名無しさん@そうだ選挙にいこう:2005/03/28(月) 01:01:54
>ADDRESSやROWなんて、超基礎関数
んじゃ、基礎は?応用は?
知りたい知りたい、先生教えてーーーーーー!!!!!!!!
934名無しさん@そうだ選挙にいこう:2005/03/28(月) 07:32:29
哀れな奴が・・・
935名無しさん@そうだ選挙にいこう:2005/03/28(月) 08:41:47
>>933
m9(^Д^)プギャー
936名無しさん@そうだ選挙にいこう:2005/03/28(月) 09:44:40
↓はい。どなたか普通の質問をどうぞ。変に空気読まなくていいから。
937名無しさん@そうだ選挙にいこう:2005/03/28(月) 09:52:37
>>918
シンプルな式とはチョト違うが、123→マルチ→エクセル20年のオレなら
G4に =F4、G4:G6 選択、オートフィル、煤B
938名無しさん@そうだ選挙にいこう:2005/03/28(月) 10:13:26
ここはエクセルの経歴(年数)を自慢し合うスレになりました。
いや、長く使ってるのにたいしたこと出来ないのを晒してるので
自慢ではなくて自己卑下か?
939名無しさん@そうだ選挙にいこう:2005/03/28(月) 12:37:21
 すごい初歩なのですが、、、セルに02.E2と打ちたいのですが、パーセンテージの式が出てきてしまいます。
これはどうすれば出なくなるのでしょう?単純に ' をつけるしかないのでしょうか?
940名無しさん@そうだ選挙にいこう:2005/03/28(月) 12:41:27
>>939
いや、それパーセンテージじゃないから
たぶん2*10^2ってことになってると思う。

文字として「02.E2」を入力したいなら頭に ' を付けるか
セルの表示形式を文字列にしてから入力しな。
941939:2005/03/28(月) 16:00:55
 ご返答ありがとうございます。
やはりそうするのですか、ではエラーも無視するってやるしかないのですね。
ちなみに02.E2ですと"2.00E+02"って表示されます。どういう意味なのでしょうか?
942名無しさん@そうだ選挙にいこう:2005/03/28(月) 16:17:47
だから2*10^2って意味だってばてば。
943802:2005/03/28(月) 16:55:56
>>803
ありがとうございます。
ただ、reg.exeには削除の際に削除の可否をy/nで入力しなければならないのですが、
バッチなら「ECHO Y | reg.exe〜」とすればyの入力を省略できますが、
VBAでこの入力を回避するにはどうすればよいでしょうか?

SendKeysでyとEnterを送るのは、ウェイト置いたりDOS窓にフォーカス当てたりしなくちゃならないし
バッチに削除するキーを引数として送るのは、他の環境で使うとき面倒なので。
944名無しさん@そうだ選挙にいこう:2005/03/28(月) 17:38:39
VBAでユーザーフォームを作っているのですが、
ひとつのシートに作った住所録(横に項目を並べて名前が縦に並んでいます)から
別に作った検索フォームに名前(検索文字列)を入力して検索を実行し、
ヒットした名前を同フォーム内あるいは別フォームのリストに出力し、
そこを選択し表示ボタンを押すと選択した人のレコードが表示されるようにしたいのですが、
ヒットした名前をすべてリストに出力するにはどうすればよいのでしょうか?
また、そのリストから名前を選択する形で表示するレコードを指定するにはどうすればよいのでしょうか?

VBAの本を片手に格闘している最中なので見当はずれなことを言っていたら指摘していただけますでしょうか。
よろしくお願いします。
945名無しさん@そうだ選挙にいこう:2005/03/28(月) 18:33:54

某所やヘルプで紹介されてるセルのテキストのみをクリップボードに送る方法なのですが、
Dim MyData As New DataObject
MyData.SetText ActiveCell.Text
MyData.PutInClipboard
を実行しても、英字はきちんとコピーされるのですが、日本語(2バイト文字)は一応コピーされるが
テキストエディタなどへの張り付けが出来ません。Excel内ではきちんと張り付け出来ます。

クリップボードビューアで見ると、「テキスト」では表示されず
「ロケール」ではバイナリと表示され
「Unicodeテキスト」「OEMテキスト」ではコピーしたテキストが表示されます。

SetTextで直接セルを指定せず、一度String型の変数の格納してみても結果は同じです。
他でセルのテキストをクリップボードに送る方法も見つかったのですが、コードが長く複雑なので
上記の方法を使いたいのですが、この方法で日本語のプレーンテキストをクリップボードに送るにはどうすれば良いのでしょうか?
OSはXP、Excelは2000です。
946名無しさん@そうだ選挙にいこう:2005/03/28(月) 19:33:33
WindowsXPprofessional SP2 , Excel2000 の環境です。
マクロでこのような書き方は出来ないのでしょうか?

二つの下のような標準モジュールがあります。

Sub test1()
Dim num_a As String
  num_a = "test1"
  Range("a1").Value = num_a
  ’ここでtest2のマクロを実行させたいのです
End Sub

Sub test2()
Dim num_b As String
  num_b = "test2"
  Range("a2").Value = num_b
End Sub

例があまり良いものではないのですが・・。
単純にtest1とtest2を一つずつ実行すれば問題はないのですが
出来たらtest1を実行するだけでtest2も実行するような
書き方というのはないのでしょうか?
test2を独立して呼び出せると大変楽になるのですが。。

そのような使い方はVBAでは出来ないのでしょうか?
わかる方いらっしゃいましたらお願いいたします。
947名無しさん@そうだ選挙にいこう:2005/03/28(月) 19:39:19
>>946
Sub test1()
Dim num_a As String
  num_a = "test1"
  Range("a1").Value = num_a
  test2
End Sub

又はCall test2
948名無しさん@そうだ選挙にいこう:2005/03/28(月) 19:42:54
>>947
ありがとうございます。無事に出来ました!
test2()で試してはいたのですが、、()はいらなかったんですね。
助かりました。
949名無しさん@そうだ選挙にいこう:2005/03/28(月) 20:44:48
>>944
FindとFindNextで順次検索。
使い方はFindNextをヘルプで検索してね。
使用例も載ってます。

その結果を、順次ListBoxにAddItemで追加するか、
結果を別シートに書き出しておいて、それをRowSourseに指定する。

検索結果のAddressも保存しておけば、
Listで選択したデータに対応するRowsを取得しやすいよ。
950名無しさん@そうだ選挙にいこう:2005/03/28(月) 21:00:21
>>944
>>949に追加。
検索件数がかなり多いとかPCのスペックがかなりヘボイとかでなければ、
Findでなく、For〜NextやFor Eachで検索範囲を総当りで調べるという手もあるよ。
951名無しさん@そうだ選挙にいこう:2005/03/28(月) 22:10:38
散布図からそのグラフを積分して面積を求めたいのですがどうすればいいでしょうか?
マイナス分があるので全要素を加算する方法はできませぬ
952名無しさん@そうだ選挙にいこう:2005/03/28(月) 23:11:42
>>934-936
必死なのを隠してるのが笑える(ニャ!!
953名無しさん@そうだ選挙にいこう:2005/03/28(月) 23:29:29
>>951
散布図からのグラフって折れ線?平滑線?近似曲線?
どんなデータでどんなグラフかわからんと答えようがない。
954名無しさん@そうだ選挙にいこう:2005/03/29(火) 03:52:44
>953
平滑線ですが数式不明の物です。
955944:2005/03/29(火) 13:31:28
>>949
レスありがとうございます。
FindとFindNextでうまくできそうです。
ところがひとつ問題がありまして、一度検索してヒットした名前を表示させた状態で
続けて違う名前を入力し検索すると、前の結果に追加する形で結果が表示されます。
検索ボタンを押すたびにリストボックスの表示内容をクリアするにはどうすればよいのでしょうか?
よろしくお願いします。
956名無しさん@そうだ選挙にいこう:2005/03/29(火) 13:56:19
>>955
検索ボタン_Clickのマクロの最初に
ListBox.Clear を追加すればOK
957955:2005/03/29(火) 15:06:56
>>956
おおっ。ビンゴ!!
サンクスです。
958名無しさん@そうだ選挙にいこう:2005/03/29(火) 16:43:41
AとBの間から下へ 1と2の間から横へ伸びている薄い線って消せないんでしょうか
959名無しさん@そうだ選挙にいこう:2005/03/29(火) 16:48:36
>>958
枠線のことか?
ならばオプションで外せるが
960名無しさん@そうだ選挙にいこう:2005/03/29(火) 16:49:32
>>958
グリッドでしょ。普通に消せるよ。
よく使うならツールボタンをツールバーに出しておきな。
961名無しさん@そうだ選挙にいこう:2005/03/29(火) 17:42:52
アリガトウございました
962名無しさん@そうだ選挙にいこう:2005/03/29(火) 17:59:50
スレが終わる前に>>945もおながいします。
963名無しさん@そうだ選挙にいこう:2005/03/29(火) 18:08:21
>>962
なんでんなオブジェクトを?
フツーにAPI使えばよいと思うが
964962:2005/03/29(火) 18:15:42
>>963
> フツーにAPI使えばよいと思うが
VBAはそれなりに解るけど、APIなんてわからんとですよ。
ところであなた様は>>945の解決方法解りますか?
965944:2005/03/29(火) 21:21:12
VBAでまたつまってしまったのでどなたかアドバイスお願いします。

1. 検索で帰ってきたアドレス「Range(変数.Address)」の同行の1つ隣のセルなどと指定することは可能なのでしょうか?
複数の条件で検索を使用と思い、条件はそんなに多くないのでヒットしたものを対象にIFで分岐させようとしたのですが、
1行に1つのレコードが入っているのですが、最初に検索で利用しヒットしたセルから
隣のセルを条件で判断させるための方法がわかりません。
たとえば検索(B3:B5000を検索範囲としています)で帰ってきたアドレス(たとえばB10)から
となりのセルのアドレス(C10など)を作るにはどうすればいいのでしょうか?
また、他に複数の条件での検索(AND)でいいやり方がありましたらお教えください。

2. 検索結果を表示するリストボックスに、検索に使った列だけでなくほかの列の内容も表示させることはできますか?
たとえばB3:B5000には名前を入力しているのですが、
名前だけでなく電話番号(C3:C5000)も表示させたいといったような場合です。

よろしくお願いします。
966>>945もお願いします。:2005/03/29(火) 21:45:32
>>965
1. 1つ隣(右)のセル → Range(変数.Address).Offset(0, 1)
  複数の条件での検索 → 具体例を挙げてくれないと具体的な方法は説明出来ないよ。

2. For文でCellsを使えばいくらでも。
  1.のケースもOffsetではなくこの方がいいかも。例えば
For i = 1 To 10
 If 検索結果分岐 Then
  ListBox1.AddItem Cells(i, 2).Value & ", " & Cells(i, 3).Value
 End If
Next i

とかさ。
967名無しさん@そうだ選挙にいこう:2005/03/29(火) 23:03:34
>>951
Excelの平滑線については数式がわからんが、
勝手にExcelが決めたものについて面積を求めても意味がないので、
その問題に適すると思う近似線を自分で計算して、
そこから面積を求めたらどうか。

とりあえず折れ線に囲まれた面積は
三角形の合計として簡単に求まるよ。
968965:2005/03/29(火) 23:19:08
>>966
レスありがとうございます。
無事Offsetを利用して同行のほかのセルの内容をできました。
複数の条件での検索というのは名前だけでなく、住所など各行のほかのセルに入力した内容も含めてAND検索したいということです。
ほかのシート等にその都度出力し絞り込めばできるのかなぁとは思いますが
一般的にはどのような手法でやるものなのでしょうか?
FindやFindNextを使ってほかのシートに抽出するというのを何段階かやるべきなのでしょうか?
少し上のほうに対象レコード数がそれほど多くなければFor文でも可とありましたが
どの程度の数だと多くなりすぎるのでしょうか?
現状でレコードは1500件ほどで増えても5000程度なのですが。

よろしくお願いします。
969名無しさん@そうだ選挙にいこう:2005/03/29(火) 23:33:12
>>968 
例えば、名前(A列)、住所(B列)の両方が一致する場合の検索は、
If TextBox名前検索.Value & TextBox住所検索.Value = _
Cells( i, 1).Value & Cells( i, 2).Value Then
をForでまわして総当りする、とか

A列の検索をFindでして、その結果のOffset(0, 1).ValueがB列検索条件
に合致するかをIfで条件分岐する、という手もあるよ。

Forで総当りが多すぎると実行から結果の表示までタイムラグがでます。
自分が気にしなければ、1万件だろうが6万件だろうが可。
970>>945もお願いします。:2005/03/29(火) 23:36:59
>>968
> 住所など各行のほかのセルに入力した内容も含めてAND検索したい
だからそれの具体例を挙げてくれと。
要望者は自分の中で理解してるからいいけど、その文から導き出せる処理は複数ある。
例えば電話番号がC列で住所がD列だとして、電話番号に123を含み住所にhogeを含むってなら
>>966のFor文のなかのIfで
If InStr(1, Cells(i, 3).Value, "123") > 0 And InStr(1, Cells(i, 4).Value, "hoge") > 0 Then
とかやればいい。もちろん"123"、"hoge"の部分は実際にはコントロールを割り当てることになるだろうけど。
971名無しさん@そうだ選挙にいこう:2005/03/30(水) 01:27:26
エクセルのオートフィルタを使ってもステータスバーに
「○個のレコードが見つかりました」って出ないで「コマンド」って出るんですが、どうすればいいですか?
972名無しさん@そうだ選挙にいこう:2005/03/30(水) 01:28:27
>>945
PutInClipboardメソッドのヘルプを見てもオプション無さそうだし、>>963の言うようにAPIを使った方がいいのでは?

'Win32API宣言部
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Declare Function CloseClipboard Lib "User32" () As Long
Declare Function OpenClipboard Lib "User32" (ByVal hwnd As Long) As Long
Declare Function EmptyClipboard Lib "User32" () As Long
Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Declare Function SetClipboardData Lib "User32" (ByVal wFormat As Long, ByVal hMem As Long) As Long

'パブリック定数宣言
Public Const GHND = &H42
Public Const CF_TEXT = 1
Public Const MAXSIZE = 4096
973>>972の続き:2005/03/30(水) 01:29:53
Public Sub SetClipBoard()
Dim hGlobalMemory As Long
Dim lpGlobalMemory As Long
Dim hClipMemory As Long
Dim X As Long
Dim MyData As String

MyData = ActiveCell.Text
hGlobalMemory = GlobalAlloc(GHND, LenB(MyData) + 1)
lpGlobalMemory = GlobalLock(hGlobalMemory)
lpGlobalMemory = lstrcpy(lpGlobalMemory, MyData)

If GlobalUnlock(hGlobalMemory) <> 0 Then
MsgBox "メモリのロックを解除できません" & vbCrLf & "処理が失敗しました"
GoTo OutOfHere2
End If

If OpenClipboard(0&) = 0 Then
MsgBox "クリップボードを開くことができません" & vbCrLf & "処理が失敗しました"
Exit Sub
End If

X = EmptyClipboard()
hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)

OutOfHere2:
If CloseClipboard() = 0 Then
MsgBox "クリップボードを閉じることができません"
End If
End Sub
974名無しさん@そうだ選挙にいこう:2005/03/30(水) 02:08:03
質問です。
例えば
A列に日付が一年分入っていたとして(A1〜A365)
G列(G1〜G365)にB〜F列の値を使った計算結果が表示されるように設定していた場合、
A列の日付が毎月1日になるとG列の値を0とすることは可能でしょうか?
教えてください。
975名無しさん@そうだ選挙にいこう:2005/03/30(水) 02:18:20
意味がよく分かりません
976名無しさん@そうだ選挙にいこう:2005/03/30(水) 02:20:58
>>974
日付の日の部分は=DAY(A1)で出るので、それが1と等しいことを=IF()で調べればいい。
977名無しさん@そうだ選挙にいこう:2005/03/30(水) 02:26:36
>>974

同上。
だって、A列には1年分の日付が入っているんでしょ?
何を持って1日になったかを決定するの?
それとも、月ごとに集計とりたいってこと?
978名無しさん@そうだ選挙にいこう:2005/03/30(水) 05:12:04
質問させてください。
A列に名前と空白があり(空白は上の名前が連続していると考えてください)
空白を含めて名前の数を調べるにはどうしたらよいでしょうか?
例えば下の例で、田中の数を5と求めたいんですが

田中
   ←空白
山田
   ←空白
田中
   ←空白
   ←空白
佐藤
979名無しさん@そうだ選挙にいこう:2005/03/30(水) 05:51:51
>>978

必ずどこかの列はデータが埋まっているとすれば
こんなのはどう?

例)とりあえずAB2列で考え、1行目からデータ列
前提条件:B列には必ずデータが入っている
C1「=IF(B1="","",A1)」
C2「=IF(B2="","",IF(AND($A$1<>A2,A2=""),C1,A2))」
C3以降C2の式を任意の行までコピー

あとはCOUNTIFで計算できるでしょ。

980名無しさん@そうだ選挙にいこう:2005/03/30(水) 06:02:33
OSはWinXP、Officeのバージョンは2003です。
かなり初歩的な質問だと思うのですが、
マクロを使って「現在選択しているセルのひとつ下のセル」を選択するにはどうすればいいのでしょうか?
(つまり『ActiveCell』のひとつ下のセルです。)
981978:2005/03/30(水) 06:13:06
>>979

ありがとうございます!!
やっと寝れます。
982名無しさん@そうだ選挙にいこう:2005/03/30(水) 09:57:51
>>980
ActiveCell.Offset(1, 0)
983名無しさん@そうだ選挙にいこう:2005/03/30(水) 10:29:49
>>982
ありがとうございました。
ちょっと調べればわかりそうなことで申し訳ないです・・・
984名無しさん@そうだ選挙にいこう:2005/03/30(水) 16:32:59
質問させていただきます。
____________________
/ |
|文字A/ |
|  / 文字B |
|___/_______________|

セル内で、このように罫線を斜めに引き、
文字を区切られたセル内にA,Bといった具合に表示したいのですが、
このように表示する方法が分かりません。
ご教授してくださるようお願い申し上げます。
985名無しさん@そうだ選挙にいこう:2005/03/30(水) 16:43:47
>>984
ズレてよくわからん
986名無しさん@そうだ選挙にいこう:2005/03/30(水) 16:46:35
>>984
____
|文字A /|
|    /  |
|  /    |
|/文字B |
 ̄ ̄ ̄ ̄
こうですか?
これならセルに右上がりの斜線引いて
文字A{Alt+Enter}___文字B
と入力して(_はスペース)、縦位置を「両端揃え」に。
987名無しさん@そうだ選挙にいこう:2005/03/30(水) 16:56:59
>>985
なぜかズレてしまってすいませんでした…。

>>986
ありがとうございます。
とても丁寧な解答をしてくださり、
大変助かりました。

お二人には多大なるお手数をおかけし、
私のつまらぬ戸惑いに手を差し伸べて下さったことに感謝いたします。
988名無しさん@そうだ選挙にいこう:2005/03/30(水) 17:36:08
勤怠管理なんですが、いっぱいあるんですが、まず出勤で躓いてます。
9:00まえなら8:50でも8:12でも9:00で、9:01を超えると、9:01でも
9:08でも9:10、9:11なら9:20とカウントされます。
=IF(S7<"9:00",CEILING(S7,"1:00"),FLOOR(S7,"0:10"))
S7は手入力する出勤時間です。どこが間違っているか教えていただけませんか?
よろしくお願いいたします。
989名無しさん@そうだ選挙にいこう:2005/03/30(水) 17:55:45
> とカウントされます。
これって「とカウントしたいです」の間違いか?

とりあえずこれじゃダメなの?
=IF(S7<TIME(9,0,0),TIME(9,0,0),CEILING(S7,"0:10"))
990名無しさん@そうだ選挙にいこう:2005/03/30(水) 17:55:55
>>988

CEILING(S7,"1:00")
ここは、
CEILING(S7,"0:10")
じゃないの?
991名無しさん@そうだ選挙にいこう:2005/03/30(水) 18:09:10
WindowsXPとExcel2002なのですが、数式バーの左にあるfxボタンを押した場合や
セルの書式設定などのダイアログの表示が非常に遅いです。(3〜10秒くらいロスがある)
以前はほぼ瞬時に表示されていたのですが、リカバリ以外で以前のように素早く表示させるには
どうすればよいですか?因みにCPUはAth64 3200+、RAMはDDR400 2048MBです。
992名無しさん@そうだ選挙にいこう:2005/03/30(水) 18:34:07
板違いっぽいけど、とりあえず不要ファイルの削除
デフラグ等、PCのメンテナンスしてみては?
ウィルスチェックも忘れずに。
993名無しさん@そうだ選挙にいこう:2005/03/30(水) 19:42:54
次スレいる?
994988:2005/03/30(水) 21:00:18
>>993
お願いします。

>>989
>>990
レスありがとうございます。後ほど確かめてみたいと思います。会社でテンパッてて色々すいません。
先ず環境ですが、winXP,office2003です。
出勤のときの条件は
1 9:00はセーフ、9:01は遅刻
2 会社到着が8:11でも8:37でも9:00でも仕事開始は9:00とみなされる
3 9:01でも9:09でも仕事開始は9:10とみなされる。同様に9:21は9:30開始とみなされる。
つまり到着時間tがt=<9:00では9:00に、t>901では(労働者が損する方向にw)10分刻みで丸められます。

通常残業、22:01から5:00まで深夜残業を計算できるようにしろ、といわれてますが、もう出勤のところで青息吐息です。

また教えてください。よろしくお願いします。
995名無しさん@そうだ選挙にいこう:2005/03/30(水) 21:33:37
OfficeXPにてシートをまたがった並び替えについて質問があります。
OSはWindowsXPSP2です。

シートが「T」「U」という2枚のシートがあって、
どちらのシートも列が「A」「B」と2列に内容が入ってます。
シート「T」「U」ともに「A」列は同じ内容なので
「U」のシートの「A」列の1行目は「=T!A1」2行目は
「=T!A2」という感じで「T」のシートと同じ内容が
表示されるようになってます。
「B」列はどちらのシートも内容が違います。

「T」のシートの「A」を並べ替えたときに、
「U」のシートの「A」列は「T」のシートと
同じように並べ替えられた内容が表示されますが、
「U」のシートの「B」列はリンクされていないので変わりません。
「B」列はどちらのシートも内容が違うので
「=T!B1」とできません。
「T」シートの「A」列を並び替えるだけで
「U」シートの「B」列も「A」列と同じように並び替えることは
できないでしょうか。

なにかいい方法があれば教えていただけますでしょうか。
996名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:23:50
>>995
VBAで処理するしかないな。
997968:2005/03/30(水) 22:27:37
>>969,970
レスありがとうございます。
無事に希望通りの検索ができるようになりました。
各条件での部分的に入力するだけでも検索したかったのですが
>>970さんのInStr関数を使うやり方でうまくいきました。

ところでリストボックスから検索結果を選択して表示フォームに渡したいのですがうまくいきません。
自分で試してみたのは、アドレス格納用に配列(a(256))を用意しておき、
For文でi=2から初めて条件にヒットしたときに該当アドレスを上記配列に格納し、
さらにそのときのiの値も別の配列(b)に保存しておき、
詳細表示ウィンドウを呼び出すボタンをクリック時に呼び出すフォームに
アドレス格納用配列をa(b)という形で引数として渡したのですがうまくいきませんでした。
こういう場合はどうすべきなのでしょうか。
998名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:44:01
少し質問が。OSはXPでエクセルは2003です。
内容はについてですが
B1のセルに「セブンイレブン」と入力するとA1のセルに「コンビニ」C1のセルに
「24時間営業」と返すように作りたいのです。
他にいうとB1に「ダイエ−」と入れるとA1には「ス−パ−」C1には「10時間営業」
というふうに関数を作りたいのですが、うまくいかないのです。教えて下さい
999993:2005/03/30(水) 22:52:28
あやうく忘れて寝るところだった

Excel総合相談所 32
http://pc8.2ch.net/test/read.cgi/bsoft/1112190520/
1000名無しさん@そうだ選挙にいこう:2005/03/30(水) 22:54:54
ではそちらで質問させてもらいます
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。