Excelに関する質問は、ここで!
/)_/) ( ・分かる人はできるだけ回答して下さいませ。
< ゚ _・゚> .。oO( ・回答がなくてもキレないで。急いでいても催促は3日以上開けて。
ノ) / | ( ・自己解決したらその解決手段を他の人の参考の為に書いてね。
\(_,,,_,,,)
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に
>>2-20あたりの注意書きやQ&Aも読もう。
★4 質問テンプレは必須じゃないけど、
OSやExcelのバージョン、VBAの可否など(下記テンプレ1〜4の情報)は必須情報。
これを書かなかった場合は、以後まともな回答は付かないと思ってください。
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
VBAを使うのは避けたいって場合は「否」にしましょう。
「VBAって何?」って場合はとりあえず「否」に。よくわからないけど使ってみたいってなら
「可」にして、
>>10-15あたりの解説を参考に使ってみよう。
・前スレ
http://pc8.2ch.net/test/read.cgi/bsoft/1134120366/ (スレタイは40だけど、実質41スレ)
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
・1 現行スレ内で既出の質問が無いか、ページ内検索をしよう。(Ctrl+F)
・2 図やコードを書く場合、TABや連続する半角スペースは無視されるので注意
・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。
・5 回答内容でわからない部分があっても、すぐに聞き返さずにヘルプやGoogleなどで検索しましょう。
・6 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。
ここは技術的な質問のみで。
・7 VBAはプログラム言語のVisualBasic(6以前)に近い処理が可能で Excelに関係ないことも出来ます。
Excelの操作に関係ない部分は、VBスレやAPIスレなどの該当スレで質問しましょう。
但し向こうはプログラマのスレなので、構文規則などの最低限の事は覚えてから質問しましょう。
ここみたいに丸投げはダメですよ。
・8 うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。
例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。
その上で、どううまくいかないのかを具体的に書きましょう。
エラーが出るなら、何処でどういうエラーが出るのか、
想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。
・9 マルチはダメ。
・a テキストボックス(エディトボックス)、コンボボックス(ドロップダウンリスト)、リストボックス、コマンドボタン、
チェックボックス、オプションボタン(ラジオボタン)、スピンボタン、スクロールバー、等の質問をするときは、
ユーザーフォーム、コントロールオブジェクト、フォームオブジェクトのどれなのかを必ず書くこと。
= FAQ: 基本 =
Q1:こんな関数ありませんか?
A1:「関数の挿入」にある検索機能や、ヘルプの検索を利用しましょう。
Q2:数式がエラーを返すんですけど
A2:関数をネストせず、数式を分解してみてください。
どの関数がエラーになっているのか解れば、その関数の参照先や、
ヘルプなどを見て大抵は簡単に解決できます。
Q3:計算結果やセルの値によって自動で書式を変更したいんですが
A3:条件付き書式を利用してください。
数値比較で文字色のみの指定なら表示形式でもできます。
Q4:計算結果やセルの値によって表示形式を変えたいのですが
A4:表示形式のユーザー設定で複数条件の表示形式を指定できます。
基本形式は「正の数;負の数;0の場合;文字の場合」です。(;は半角で)
又は「[>=70]70以上の場合;[>=50]50以上の場合;50未満の場合;文字の場合」というような指定も出来ます。
書式記号などに関することはヘルプを参照しましょう。
Q5:計算結果が自動で更新されなくなったんですが、どうすれば直せますか
A5:Excel(2002?)の不都合で、計算方法が手動になってしまうことがあるようです。
ツール > オプション > 計算方法
で、計算方法を自動にすることで元にもどります。
参考URL:
ttp://support.microsoft.com/default.aspx?scid=kb;ja;817716 Q6:VBAでこんなこと出来ませんか?どうやるんですか?、
A6:まずはマクロの記録を取ってみて、記録されたコードのメソッドやプロパティをヘルプで調べたり、
ステップ実行やブレークポイントなどを使って動作を確認したりしてみましょう。
Q7:エクセルの勉強をするのにオススメの書籍・サイトは何ですか?
A7:自分で実際に読んで(閲覧して)、自分のレベルに合っていて解りやすいと思うものを利用しましょう。
= FAQ: 列の表示について =
Q:列名がA,B,C,D,Eではなく、1,2,3,4,5になってしまいました。
アルファベットに戻すにはどうしたらいいですか?
A:ツールメニュー:「オプション」 -「全般」タグで
『R1C1 参照形式を使用する(C)』のチェックを外せば直ります。
Q:列を256個(IV列)よりたくさん広げることはできませんか?
A:エクセルのシートは65536行×256列が仕様上の上限です。
シートを分けるとか、行と列を入れ替えるとか、データの方をまとめるとか、
列数を増やさない方向で工夫するしかありません。
Q:ひとつのブックにシートは何枚作成出来ますか?
A:物理メモリ容量やシートの内容に依存します。
= FAQ: 印刷プレビュー =
Q:印刷プレビューではセル内に収まっていた文字が
実際に印刷してみるとはみ出してしまうのですが、
何とかなりませんか?
A:「印刷プレビューと印刷結果が一致しない」のは
昔からのExcelの弱点で、どうにもなりません。
セルの幅や高さに余裕を持たせるか、
書式設定で「縮小して全体を表示する」にチェックを入れましょう。
= FAQ: マクロの”削除” =
Q:マクロを削除したのに、ファイルを開くたびにセキュリティの確認が出ます。
A:モジュールの解放が必要。
【モジュールの解放方法】Alt+F11→Ctrl+R→Module1を右クリック→解放
それでもセキュリティの確認が出る場合は、同じくMicrosoft Excel Objects以下の
Sheet*及びThisWorkbookに何か書かれてないか確認してください。
= 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)
例5:対象が空欄なら表示も空欄にする
A1が空欄なら結果は何も表示しない、それ以外ならA1から2を引く。
=IF(A1="","",A1-2)
=IF(ISBLANK(A1),"",A1-2)
詳しくはヘルプを参照しましょう。
= FAQ: グラフについて =
Q1:データの空白部分があって、そこで折れ線が切れてしまいます。
繋げたいのですが如何したらいいでしょうか?
A1:グラフを選択>ツール>オプション>グラフ>空白セルのプロット「補間してプロットする」にチェック
Q2:棒グラフに重ねて、折れ線グラフを表示するにはどうしたらいいのでしょうか?
A2:最初、すべてのデータを棒グラフで作成。
次に、折れ線で表わしたいデータ系列のどこかを、グラフ上で右クリック
サブメニュー>グラフの種類>折れ線>OK
Q3:ある系列だけ、縦軸を別にしたいです。
A3:その系列のどこかを、グラフ上で右クリック
データ系列の書式設定>軸>使用する軸「第2軸」にチェック>OK
= FAQ: 入力した値が変わる? =
Q:セルに入力した値が勝手に変わってしまうのですが
入力したままの形で表示させるにはどうしたらいいですか?
A:数字でよくあるケース(先頭のゼロが消えてしまう、日付として解釈されてしまう)
入力する時、先頭にアポストロフィ(')をつけるか、
該当するセルで右クリック−「セルの書式設定」−「表示形式」で「文字列」を選択。
文字列ではなく数値として扱いたいときは
「セルの書式設定」−「表示形式」で「ユーザー定義」を選択し、工夫する。
A:文字でよくあるケース(i⇒I、teh⇒the、cna→can など)
ツール→オートコレクト→入力中にオートコレクト
の該当する箇所を削除。
= FAQ: 行列の入れ替え =
Q:エクセルで作った表が横方向に多くなってきたので
行と列を入れ替えたいのですが。
A:コピーして、適当なセルで右クリック。
形式を選択して貼り付け→行列を入れ替える。
= FAQ: 参照するシートやセルをセルの値で指定する =
Q:A1に「5」とか「6」とか指定する値を変えたら
B1の関数で「C5」とか「C6」とか参照先が変わるようにできませんか?
A:INDIRECT関数を使ってみましょう。
詳しくはヘルプで「INDIRECT」を検索
= FAQ: 参照先を固定する =
Q:数式が参照するセルを削除すると参照先が「=#REF!」になってしまうますが
セルを削除しても同じセルを参照するようにするにはどうすればようですか
A:INDIRECT関数を使ってみましょう。
=A1 => =INDIRECT("A1")
= FAQ: ブラウザの変更 =
Q:Excelでアドレスをクリックした時に開くブラウザをIEからSleipnirなどに変更したい。
A:スレ違いです。
開きたいブラウザの設定画面でそのブラウザを通常使うブラウザに指定してください。
※ブラウザからの設定だけではきちんと設定出来ない場合もあります。
詳しい情報をお持ちの方はこのスレにてご一報ください。
= FAQ: セル内での改行 =
Q:セル内で改行したいんですがどうすればいいでしょうか
A:改行したい位置でAltを押しながらEnterを押せばセル内改行できます。
= FAQ: ワイルドカード文字の検索・置換 =
Q:* 、 ? で検索するとワイルドカードとして認識されてしまいますが、
* 、 ? の文字自体を検索するにはどうすればよいですか?
A: ~* 、 ~? のように、頭に ~ を付けることでエスケープ出来ます。
A:全角で*と入力し「半角と全角を区別する。」のチェックを外して検索する
(全角なのでワイルドカードとしては使われないが
全半角を区別しないので文字として"*"にはヒットする。)
= 整数と時間の相互変換 =
Q:1:30を1.5に変換したい、30を0:30に変換したい
A:シリアル値の「1」は1日=24時間=1440分=86400秒です。
以下のような計算やTIME関数などで変換できます。
値(A1) 結果 式
1:30 1.5 =A1*24
0:30 30 =A1*1440
2:30 250 =A1*100*24
1.75 1:45 =A1/24
30 0:30 =A1/1440
25 0:15 =A1/100/24
30 0:30 =TIME(0,A1,0)
(変換計算しただけでは表示形式は変わらないので、セルの表示形式は任意で変更しましょう)
= FAQ:時刻の入力 =
Q:時刻をテンキーで入力するとき:を入力するのが面倒なのですが、
なにか良い方法はありませんか?
A:「 ..」や「.」を「:」に置き換える方法をお試しください
1) オートコレクトで..を:に置き換える
→自動で置換されるので手間は少ないが..を使う他の入力にも影響する
2) 「時..分」で入力しておいて、後から「編集 > 置換」で範囲指定で一括置換する
→置換に一手間掛かるが、他への影響は無い
(「時.分」だと分の1桁目が0の場合狂ってしまう)
3) VBAのWorksheet_Changeイベントで置換する
→置換する範囲を指定すれば他への影響もなく置換も自動、入力も.ひとつでOK
参考コード(入力は「時.分」)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim buf As Variant
Application.EnableEvents = False
buf = Split(Target.Value, ".")
Target.Value = buf(0) & ":" & Left(buf(1) & "0", 2)
Application.EnableEvents = True
End Sub
= FAQ:シート名やブック名の書きだし =
Q:シート名(ブック名)をセルに書き出したいのですが、どうすればよいですか?
A:シート名 =MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,31)
ブック名 =MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1)
= トラブル =
Q:方向キーやPageUp、PageDownでアクティブセルが移動するのではなくスクロールしてしまいます。
A:Scroll Lockというキーを押してみてください。
★VBAでの回答をもらったり、Webからサンプルコードを拾ったけど、
使い方がわからないって場合はここを参考に。
Step1 VisualBasicEditorの起動
メニューより、[ツール → マクロ → VisualBasicEditor]と辿ってください。
Step2-a コードを貼る
マクロはその内容によって、置く場所が決まっています。
大抵は回答者が指定してくれたり、サンプルの中にコメントとして書いてあったりするのでそれに従いましょう。
指定がない物は基本的に「Private Sub Worksheet_」で始まる物はシートオブジェクトに、
「Private Sub Workbook_」で始まる物はブックオブジェクトに、それ以外は基本的に標準モジュールに置いてください。
(ツリーの該当部分をダブルクリックして、表示されたコードウィンドウにコードを張り付けます)
├VBAProject (hoge.xls) ←括弧内がブック名、以下がひとつのプロジェクトになります
|├Microsoft Excel Object
||├Sheet1 (Sheet1) ←シートオブジェクト(左側がオブジェクト名で、右側の括弧内がシート名です)
||├Sheet2 (Sheet2)
||└ThisWorkbook ←ブックオブジェクト
|└標準モジュール
| └Module1 ←標準モジュール(※)
└VBAProject (Personal.xls) ←個人用マクロブック
├Microsoft Excel Object
|├Sheet1 (Sheet1)
|└ThisWorkbook ←個人用マクロブックのブックオブジェクト
└標準モジュール
└Module1 ←個人用マクロブックの標準モジュール
※ 標準モジュールを追加するには、追加したいプロジェクトツリー上で右クリックし、
メニューから[挿入 → 標準モジュール]を選択してください。
Step2-b ボタンに登録する。
通常、イベントで動かすマクロ以外は、マクロの一覧から選択して実行しますが、
頻繁に使う場合や、他の人が操作する場合はシート上のボタンを押して実行できるようにすると便利です。
まず、メニューから[表示 → ツールバー → フォーム]と辿ってフォームツールバーを出し、
ボタンアイコンを押して、適当な場所にボタンを作ります。
ボタンを作ると自動的に[マクロの登録]というダイアログが立ち上がるので、
(立ち上がらない場合はボタンを右クリックして[マクロの登録]を選択)
[新規作成]を押して表示されたコードウィンドウのカーソル位置にコードを張り付けます。
既存のマクロを登録する場合は、[マクロの登録]で一覧から選択して、[OK]を押してください。
Step3 マクロの実行
ボタンに登録したものは、ボタンを押せば実行されます。
イベントで動かすものは、所定操作をした時に自動で実行されます。
それ以外はメニューから[ツール → マクロ → マクロ]と辿って表示されたマクロの一覧から選択して実行します。
Step4 トラブルが起きたら
トラブルを自己解決出来ない場合は、
・エラーが出る条件 (どうやってもエラーが出る、〜をしたときにエラーが出る、等)
・エラーメッセージ (ダイアログ上でCtrl+Cを押せばメッセージをコピー出来ます)
・エラーが出る位置 (エラーダイアログ上で[デバッグ]を選択すると、エラー位置がハイライトされます)
などを報告しましょう。
また、期待通りの動作をしない場合も、条件や想定上の結果と実際の結果の内容など詳しく書きましょう。
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)
▼環境・書式
・ 列数を256列以上、行数を65536行以上に増やす
・ 条件付き書式を3つ以上設定する (文字色だけなら、入力規則でも3つ設定可能。それ以外はVBA)
・ 行の高さを0.25きざみ以下の単位で指定する
・ セル内の文字を○で囲む、一部のみ2段にする (オートシェイプ、オブジェクト)
・ オートフィルタで英字の大小文字を区別する (小文字 → 半角、大文字 → 全角、と使い分ける)
・ 祝日を判断する (作業セルに祝日を列挙、VBA)
・ 同一列内でセル(行)ごとに列幅を変える、同一行内でセル(列)ごとに列高を変える (セルの結合)
・ ヘッダー・フッターのページ番号の開始番号任意指定、ページ番号演算、同シート内で違ったものを指定など
・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する
・ 罫線幅の自由指定
・ 表示形式で「10/ 1」といった書式を指定し、日付が一桁の場合のみ日付の前にスペースを入れる (TEXT関数、VBA)
▼操作
・ ファイラーの右クリックメニューからの新規作成で、Excelで設定したシート数のブックを作る (任意のシート数のテンプレートを作成)
・ 複数シートを選択して入力規則やシートの保護を設定する (VBA)
・ オートコンプリート機能を、別列や離れたセルで動作させる (VBA)
・ 選択範囲から一部を除く
・ 優先キーを3つ以上指定しての並べ替え (優先度の低い方から順に並べ替える)
・ 1セルを分割 (分割したいセル以外を結合)
▼数式・関数
・ 表示形式以外の書式の取得設定、書式情報を条件とする数式 (ユーザー定義関数)
・ 関数式でセルの選択状態を取得する (VBA)
・ セルの値でパスを補完して、開いてないブックのセルを参照する (VBA)
・ 入力したセルに結果を返す (VBA)
・ 範囲を引数にしての文字列連結 (ユーザー定義関数)
・ 値の書き換え、値の保持 (VBA)
・ 複数の結果を抽出、不定な数の結果を返す (VBA、結果の最大数が解っていれば最大数以上の式を論理式で組む)
・ 空白のセルの部分を上詰め、左詰めなどで表示する (作業セルを使って別セルに詰めて表示なら可能、それ以外はVBA)
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)
▼VBA
・ ExecuteExcel4Macroの参照で空セルと0値を区別する
・ セルの値や変数値で直接変数名を指定する (配列、コレクション)
▼ユーザーフォーム
・ フォーム上から変更したプロパティ値の保持 (シートや外部ファイルに書き出して、次回読み込む)
▼グラフ
・ 棒グラフでひとつだけ突出したデータがあった場合に波線を入れて位置を合わせる
(オートシェイプなどで見た目だけそうなるように弄る、別アプリでグラフを作り、オブジェクトとして挿入)
┌┐
〜〜
||
16 :
名無しさん@そうだ選挙にいこう:2006/02/16(木) 23:40:40
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 否
簡単な質問で申し訳ありません
A10のセルに数字を入力すると、その数字に応じた結果が、
A10のセルに現れるようにするにはどうしたらよいのでしょうか。
例をあげますと、A10に”100”と入力すると、
その結果A10に”2ちゃんねる”と表示されるようになるなどです。
前のスレ使い終わってねーぞ
>>16 VBA使わないと無理
18 :
名無しさん@そうだ選挙にいこう:2006/02/17(金) 13:45:34
【1 OSの種類 .】 Win2kSP4
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 否
excelを起動するたびに、
このブックにある、VBAプロジェクト、ActiveXコントロール、およびその他のプログラミング関連の機能は失われています。
が2回出てきます。okを押せば普通に使えます。
VBはexcelインストール時にチェックを外してインストしていません。
http://support.microsoft.com/default.aspx?scid=kb;ja;282847 この情報では「これらのプログラミング関連オブジェクトを含むファイルを開くと」この警告が出るようですが、
excelをただ起動しているだけです。
この警告を表示させないようにすることは出来ますでしょうか?
A列だけに500行ほどのデータがあり、印刷したいのですが、印刷枚数が増えてしまい困っています。
縮小印刷ではなくて、1枚の紙の余白を十分に活用した印刷の仕方はあるのでしょうか?
例えば、A列の適当な箇所で折り曲げて印刷してくれるような機能とかはありますか?
21 :
名無しさん@そうだ選挙にいこう:2006/02/17(金) 15:45:20
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 EXCEL 空白 折り返し
HLOOKUPやVLOOKUPで表示された文字列を区切り位置設定ウィザードで
12345 67890 を
↓
12345
67890
このように区切るようにしたいのですが、出来ませんでした。
また、引用先をAlt+Enterで
12345
67890
改行させたのですが、同じように反映はしません。
どのようにしたら出来るのでしょうか? 宜しくお願いします。
22 :
名無しさん@そうだ選挙にいこう:2006/02/17(金) 16:17:18
23 :
21:2006/02/17(金) 16:30:20
>>22 印刷もあり、調整すれば済みそうですね。
ありがとうござました。
24 :
名無しさん@そうだ選挙にいこう:2006/02/17(金) 19:29:10
【1 OSの種類 .】 WindowsMe
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 DoLoop
VBA使ってるんですが
どう考えてもDoはあるのにコンパイルのときに
Loopに対応するDoはありませんとエラーが出てしまうんですが
何が理由として考えられるのでしょうか?
やっぱりソース晒さないとだめですかね?
ちなみにソースを
「Loop」で検索すると問題のLoopのみが
「Do」を検索すると問題のDoとExitDoとxishiftDownが2つ見つかるのみです
>>24 IfやWithを閉じて無い場合にも出る場合あるな
自分で見てわからなければコード貼れ
>>2・8・3
つーか最初からコード貼れよ
26 :
24:2006/02/17(金) 20:03:01
>>25 Ifが閉じてませんでした
ありがとうございました
27 :
名無しさん@そうだ選挙にいこう:2006/02/18(土) 01:10:54
たびたびすいません 今週から質問を初めて すでに4回目ですが…
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 初心者ながら使ってます
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Rows 変数
VBAを編集しているのですが
Rows(m + 1).・・・
と変数で1行を指定した場合は上手くいくのですが
Rows("x:y").・・・
と2つの変数で複数行を指定するとエラーが返ります
前スレで他シートのセルをR1C1形式で指定する方法として教えてもらった
" & x & "を使っても駄目でした
他に何か方法があるのでしょうか? それともできない仕様なのでしょうか?
ご回答いただけたら幸いです
>>27 そこは x&":"&y
一度、入門書を読んでみたほうがいいです
特に変数、定数、文字列等について
xとか&とかの間にはちゃんとスペース入れてね
30 :
27:2006/02/18(土) 02:07:17
>>28-29さん
ご丁寧にありがとうございます
Rows(" x & ":" & y ")にしてみましたがコンパイルエラーになりました
無知ゆえに根本的な勘違いをしてるみたいですね…
あと少しなので冊子購入せずともクリアできるか? と思ってたのですが
甘かったかも…
ご迷惑をおかけして吸いませんでした
>>30 Rows( x & ":" & y )じゃなくて?
32 :
名無しさん@そうだ選挙にいこう:2006/02/18(土) 12:02:52
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】はい、少し
【4 VBAでの回答の可否】 可
"ー"と"―"を含む文字列 が同一セルにありまして、
置換やsearch関数では上記を区別できずに
困っています。
これら、"ー"と"―"を区別したいのですが、
どうすればよいでしょうか?
ご回答いただけたら幸いです
33 :
32:2006/02/18(土) 12:10:10
すみません、付け足しです。
よろしくお願いします
【5 検索キーワード 】 ハイフン ダッシュ 区別
>>32 単一文字としてならCODE関数で区別出来る
CODE("ー") = 8508
CODE("―") = 8509
文字列内に含まれるか否かならVBAのInStr関数で判断出来る
区別した上で何をやりたいのか一切書いてないのであとは自分でなんとかしろ
【1 OSの種類 .】 Mac0S9.2
【2 Excelのバージョン 】 Excel98
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セルデータをコピーして他のソフト(イラストレーター8.0)に
ペーストしようと思うのですがうまくいきません。コピー後
イラストレーターをアクティブにしようとしても、アクティブになるのに
一分以上かかってしまうのです。一マスの空欄のコピペでも、
一分以上かかってしまいます。
どうしたらいいでしょうか。
MACを止めろ
37 :
32:2006/02/18(土) 13:00:57
>>34 さん。
ありがとう!!!
以下で解決しましたです〜。。Thanks!!!
Function dash(str)
dash = InStr(str, "―")
End Function
【1 OSの種類 .】 WIN.XP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セルのD1をE1とリンクしています。(E1に=D1)です。
当たり前ですが、D1の数値を変えるとE1の数値は変わります。
E1の数値は日報で製品量として、毎日残したいのですが、関数や他の方法でE1の数値を残す事はできますか?
上司の方針でマクロは使用不可なのですが、どなたか御教授よろしくお願いします。
40 :
名無しさん@そうだ選挙にいこう:2006/02/18(土) 16:08:45
> 67:名無しさん@そうだ選挙にいこう [sage] :2005/12/11(日) 23:17:48
> だいぶ先の話だが、テンプレに追加よろしく。
>
> テキストボックス(エディトボックス)、コンボボックス(ドロップダウンリスト)、リストボックス、コマンドボタン、
> チェックボックス、オプションボタン(ラジオボタン)、スピンボタン、スクロールバー、等の質問をするときは、
> ユーザーフォーム、コントロールオブジェクト、フォームオブジェクトのどれなのかを必ず書くこと。
>
>
> これ書かない奴大杉やねん。
> 自分が使ってるもの以外の存在を知らないのか、書かなくても伝わると思ってるニュータイプなのかは知らんけど。
前スレで提案されたけど、重複スレ再利用でまだテンプレに載ってなかったんだな
【1 OSの種類 .】 WIN.XP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 使えるように試行錯誤してみます
【4 VBAでの回答の可否】 はい
1〜1000までの数字が順不同でセルに入力されています。
重複はありませんが、一部の数字は欠番しています。
並べ替えしたときに、欠番のところに空白セル(あるいは行(列))を挿入するといったことは
可能でしょうか?
Excelって何ですか?
44 :
名無しさん@そうだ選挙にいこう:2006/02/18(土) 19:06:35
SUMの反対の関数ってどうやるんですか?引き算してくれるやつです。
45 :
名無しさん@そうだ選挙にいこう:2006/02/18(土) 19:20:59
【1 OSの種類 .】 Win 2000/XP
【2 Excelのバージョン 】 Excel2000以降
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
拡張子abcのファイル(中はcsv形式)をダブルクリックで開くときcsvファイルとして
開くことはできますか?今は拡張子変換して開いているのですが、保管は
オリジナルファイル名でする必要があるので可能であれば教えてください。
abcの関連付けはどう弄ってもいいです。
46 :
d:2006/02/18(土) 19:52:09
>>42 A1:A1000にデータがあり、昇順並べ替え後のコードです。
Sub test()
Dim i As Long
For i = 1000 To 1 Step -1
With Cells(i, 1)
.EntireRow.Cut Cells(.Value, 1)
End With
Next
End Sub
>>27=30です
>>31さん
それもやってみましたがコンパイルエラーが出ます
&や"の定義というか意味が全くわかってないから駄目なんでしょうね
ぐぐっても出てこないし…やはり冊子購入でしょうか
しかしいつ購入できるかわからない
>>39 やっぱ知ってる人から見れば 僕って笑ってしまうぐらいに無知なこと
してるんですかね…
…とカキコした後に念のため再確認したら
Rows(x & ":" & y)でできました
Rows( x & ":" & y )でやってたので 無理だと勘違いしてたのかな・・・
ご迷惑をおかけしました ありがとうございました!
> やっぱ知ってる人から見れば 僕って笑ってしまうぐらいに無知なこと
> してるんですかね…
フロッピーディスクを四つ折にして封筒に入れて郵送するのと同じくらい
「え゛」ってレベルの話だと思う。そりゃぐぐってもでてこないよ
やっぱり一冊ぐらいは買って読んだほうがいいよ
「あと少しなので冊子購入せずともクリアできるか?」という姿勢がなめてる
あと10年くらい経ったら、
「A1とG3をいつも通り」とか、
「A5が0なら黒く塗れ、1なら赤、2なら青、それ以外なら空欄にしろ」とか
そんな曖昧な計算式で動くようになるのかな・・
そういう指示をする人は本当はそれとは違ったことをやろうとしているので
相手が機械だろうが人間だろうがエスパー機能が無いと無理
エクセルに代入が出来る関数と
くりかえしの出来る式が使えたら簡単で良いのだが…
もちろんVBAでなくて
53 :
42:2006/02/18(土) 23:18:07
d さん、
コードありがとうございました。
iに実際の値を打込むと上手くいきました。
複数のシートに渡って約1000sampleについての様々な測定データが順不同、
欠番有りの状態で入っており、どのように一枚のシートにまとめようかと
考えておりました。
早速今回教えて頂いた方法を使わせていただきます。
多謝
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
質問させて下さい。
1123
53
333
7
といった感じに縦一列にズラっと数値が並んでるんですが、
4桁でない数値の頭に0を付けて
1123
0053
0333
0007
という風に4桁に揃える方法はありますか?
ちょっと抜けてた
セルの書式設定→表示形式→ユーザー定義→0000
57 :
54:2006/02/19(日) 01:07:36
すいません、言葉が足りませんでした
表示上四桁にするだけでなく、実際の値を四桁にしたいのです
宜しくお願いします
>>57 作業列使っていいなら
=TEXT(A1,"0000")
とか。
>>54 53と0053の「実際の値」は同一なので
表示を0000にするか、文字列にするしかないよ
60 :
60:2006/02/19(日) 14:01:59
すみませんが質問です。
某所でVBAのゲームをダウンロードして遊んだのですが、
その後仕事でエクセル開いたらツールバーとかボタンとかが表示されなくなりました。
で、試行錯誤してある程度治ったのですが、ツールバーの中の「データ」だけが
表示されません。
何か対処法ありますか?
また、ツールバー等を初期状態に戻す方法はありますか?
さらに、VBAのゲームを実行するとこんな状態になるものなのでしょうか?
立て続けに質問ですみません。今日中にあげなくてはならない仕事があって
ちょっとパニック状態です。。。
OSごと再インストールしたら、
「メールの宛て先(添付ファイル) 」というコマンドをメニューバーに
設定しても、選択できないようになってしまいました。
何かセキュリティの設定が関係あるのかもしれませんが、エクセルのオプションの中には
見つかりませんでした。
どなたか解決方をご存知ありませんか?
>>60 [ツール]→[ユーザー設定]→[ツールバー]→[リセット]
どこのものとも知れないVBAを確認もなく実行するとはチャレンジャーだな
俺も、オートSAMの使い方すら知らないで、エクセル使ってるけどな。
65 :
60:2006/02/19(日) 14:25:13
>62
早々の回答ありがとうございます!
ツールバーは元通りになりました。
でも、「データ」はいくらやっても表示されません。
「オートフィルタ」を利用したいのですが・・・。
今のところ一個一個手動で検索しております。orz
単に表かきたいだけならそれで十分なんじゃね
>>67 実はそれなりの計算式は入れられるようになった。
関数もIFとか、リンク張り巡らしたり、そこそこ使ってる。
しかし、オートSAMの使い方は知らないまま。
E=A1+B1+C1+D1・・とか、地道に入力・・
>>68 Σボタン押せばできるよ
もしくは =SUM(A1:D1) みたいに直接入力するか
それはそうと
>>65の調べようと思って「データ」消したら
戻し方わかんなくなった
どうやんだこれ
>>69 そうか、THX
でも、意外に不便でもないんだよな
クリックと「+」ボタンの交互連打だけだから
71 :
69:2006/02/19(日) 14:43:33
[ユーザー設定]-[組み込みのメニュー]-[データ]だな
一瞬あせった
>>70 秤氓オてから、CTRL を押したまま、合計の対象にしたいセルを順にクリックしてみ。
最近のExcelは頭いいから
A1からD1までにデータはいってるとしたら
E1選択してΣ押すだけで自動的にA1:D1選択してくれそうな気もするがな
>>65 62さんの方法で、「ワークシートメニューバー」をリセットしても
あかんかね?
>>72 >>73 THX、あんま気にしてないけど、今度試してみるよ
関数で悩んでる時間の方が桁違いに多いから・・
>>73 縦横に集計データ入れた状態で、右と下に一行、一列づつ多く選択しておいて、
秤氓キと、縦横の集計が自動的に入ったりもするね。
>>61 の件なんだけど、どなたか判りませんか?
設定すればメニューとしては表示されるんだけど、アクティブにならないので
選択(クリック)できないんですよ。ググってみたけど、対処法見つからないし・・・
再インストール前はできてたんだけど、何の条件が違うんだろう?
>>78 Excelからメールの送信はあんまり使わないからよくわからないけど
今試したところ、うちの環境では普通にできた
(ちなみに最近再インストールしたばっかだからほぼデフォルト設定のはず)
ところで、うちはThunderBirdを標準のメールソフトに設定してるからThunderBirdが
起動したんだが、そこから推測するに、Outlookがインストールされてないとか
標準のメールソフトが設定されてないとボタンがアクティブにならない
なんてことはなかろうか
>>78 自己レス。
どうやら、デフォルトメーラーが絡むみたいだ。デフォルトメーラーを OutlookExpress
に変更してから、[ヘルプ]→[アプリケーションの自動修復]を実行したら、
メニューに、メール送信関係が追加されて、[メールの宛て先]は実行できるようになった。
だけど、OutlookExpress でも、[メールの宛て先(添付ファイル)]はできない。
んまあ、このあたり(MAPI)に何か絡んでいることが判ったので、もう少し試行錯誤してみるね。
お騒がせしました。
>>80 私は秀丸メールがデフォルトメーラーだから、その状態で、Office のインストールを
したら、うまくいかなくなってしまっていたんです。以前の環境では、普通にエクセルのメニューから、
秀丸メールに添付ファイルとして送ることができてたんですよ。
そういえば、Outlook は入れなかったなあ。オフィスをフルインストールしなかったことが
何か影響ありそうな気がしてきました。ありがとうございます。もうちょっとやってみます。
あーごめんOutlookってOEのつもりね
Outlookは俺も入れてないから関係ないと思う
>>83 うん、ありがと。でも、やはりオフィスをフルインストールじゃなくて、
選択インストールしたことが絡んでいるんじゃないかと、思いつつある。
他にも、エクセルが、急にメモリリークしたように、メニューとか、ウィンドウの
内容がぐちょぐちょになる現象が今回起きていて、これは、以前にも起きたことがあったんだ。
で、今思い返して見ると、再インストール前の時は、この現象も全く起きていなかった。
どこに相違があるかと言うと、やはり、オフィスをフルインストールしたか、選択インストール
したかであるような気がひしひしとしている。
これからフルインストールしなおしてみる。
85 :
84:2006/02/19(日) 15:59:03
>>84 続き。
オフィスのフルインストール完了。当たった。ばっちりだった。
問題なく秀丸メールに、添付ファイルとして送ることができるようになった。
FAQ としてまとめておくと、
オフィスアプリの中で、メニューから、[メールの宛て先(添付ファイル)](データを
添付ファイルとして、デフォルトメーラーに送る操作)がうまくいかない時は、オフィスのインストールを
フルインストールでやり直してみること。
選択インストールをすると、MAPI 機能関連のモジュールが何かはずされてしまうか、設定が不備に
なってしまうかのどちらかの問題が起こるのだと思う。
お騒がせしました。
>>83 さんあんがと。
横ですいませんけど、
>フルインストールでやり直してみること。
この時ってアクティベーションやり直し?
87 :
60:2006/02/19(日) 16:17:16
皆様ありがとうございました!解決いたしました!
>79さんのリンクをたどってexcel2003の方で解決出来ました。
当方XP・2003だったので以下の方法でした↓↓↓
[ファイル名の全てまたは一部] ボックス : Excel11.xlb
[探す場所] ボックス : ローカル ハード ドライブ
[詳細設定オプション] : [隠しファイルとフォルダの検索] チェック ボックスをオン
でExcel11.xlbのファイルを探し、そのファイルの名前を変更すればOKでした!
>63
VBAかじりたてなんですが、「VBAのシューティングゲーム」というのに惹かれて
ダウンロード実行しちゃいました。
これからは気をつけます!
今回はどうもありがとうございました!
88 :
84:2006/02/19(日) 16:34:42
>>86 ううん、アクティベーションのやり直しはなかったよ。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
セルA1にA2+A3
セルB1にA7+A8
セルC1にA12+A13
セルD1にA17+A18
という風に計算式部分の増分値を保ったまま
フィルハンドルを使用した連続コピーを行う方法を教えて頂けないでしょうか
91 :
名無しさん@そうだ選挙にいこう:2006/02/19(日) 18:28:49
92 :
名無しさん@そうだ選挙にいこう:2006/02/19(日) 20:38:08
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
VBAから別に作成したVBスクリプトファイル(Ken.VBS)を実行させたいのですが、どうしたらよろしいでしょうか?
94 :
92:2006/02/19(日) 21:16:43
95 :
名無しさん@そうだ選挙にいこう:2006/02/20(月) 01:21:09
【1 OSの種類 .】 WindowsXp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
セルの中に入っている数字によって
メッセージボックスの表示を変えるマクロを組んでみました。
Sub a()
Dim aaa&
Application.Range("A1").Select
aaa = Selection.Value
If aaa = 2 Or 7 Then
MsgBox "あああああ"
Else
MsgBox "aaaaaa"
End If
End Sub
実行してみたところ、2か7以外でも
メッセージが「あああああ」と出てしまいます。
if にORを付けたはずなのになぜうまくいかないんでしょうか?
アドバイスお願いします。
If aaa = 2 Or aaa = 7 Then
>>96 即レスサンクスです。
いま直してみたらできました。
99 :
名無しさん@そうだ選挙にいこう:2006/02/20(月) 09:18:25
「ふりがなを使う」をチェックしても並べ替えても
「"MOJIMOJI"」
ふりがなは「MOJIMOJI」
「漢字だよ」
ふりがなは「かんじだよ」
等がふりがな順になってくれません。
いちどメニューの「ふりがな編集」の窓をだすと、その項目だけはつぎの並べ替えで反映されます。
これは仕様ですか?バグなのでしょうか?
Excel2002
Windows2000sp4
そういうもんでしょ。自分の期待するとおりに動かしたいなら、
振り仮名の列を作って、そこに振り仮名入力して並べ替えればいいんじゃないのかな?
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel 2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
二列のCSVファイルで、重複する行を一つの行にまとめて、
重複していた行のB列データの頭にその旨のコメントを
挿入するようなVBAを教えていただけませんか。
例
data00,string00
data01,string01
data01,string01
data02,string02
data03,string03
data03,string03
・・・
↓
data00,string00
data01,comment string01
data02,string02
data03,commnet string03
・・・
>>101 こんな感じで出来るかと思います。
下記のコードはセルA、B列にあるデータをC、D列に再集計するというものです。
あとはclearcontentsやcopyで何とかなると思います。
Range("C1").Value = Range("A1").Value
Range("D1").Value = Range("B1").Value
i = 0
Do Until Range("A2").Offset(i, 0).Value = ""
flag = False
j = 0
Do Until Range("C1").Offset(j, 0).Value = ""
If Range("C1").Offset(j, 0).Value & Range("D1").Offset(j, 0).Value = _
Range("A2").Offset(i, 0).Value & Range("B2").Offset(i, 0).Value Then
Range("D1").Offset(j, 0).Value = "重複" & Range("D1").Offset(j, 0).Value
flag = True
Exit Do
End If
j = j + 1
Loop
If flag = False Then
Range("C65536").End(xlUp).Offset(1, 0).Value = Range("A2").Offset(i, 0).Value
Range("D65536").End(xlUp).Offset(1, 0).Value = Range("B2").Offset(i, 0).Value
End If
i = i + 1
Loop
とりあえずRange().Offset()ではなくCells()使おう
あと、たいしたことじゃないがインデント間違ってるよ
エクセルのクリップボードの情報を
VBAで削除する方法にはどうしたらいいか教えて下さい
>>104 クリップボード関係は、有る程度はDataオブジェクトで出来るけど
それ以上はAPIなので
>>2・7
Officeクリップボードの事なら話は変わるけど、
>>1★1〜4守ってないので
>>3★
>>105 ありがとうございます。テンプレ読んで出直します。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 セル位置 取得
"MATCH()"で引っかかった検索範囲のセル相対位置(行位置)を
絶対位置フォーマット($列$行)に"TEXT()"で直して、これを
絶対位置情報として別の処理に再利用したいのですがうまくいきません。
列方向は決め打ちできる値で、行方向が検索対象になります。
特定セル値を検索し、そのセル絶対位置($列$行)を
再利用できるように取得する方法はありますか?
また、数式のみで記述できますか?
108 :
名無しさん@そうだ選挙にいこう:2006/02/20(月) 21:24:33
【1 OSの種類 】 WindowsXP
【2 Excelのバージョン】 Excel2003
【3 VBAが使えるか 】 はい
【4 VBAでの回答の可否】 可
質問です。
A B C
1 ああいう かききけ ささしし
2 いああう きこここ しすすせ
3 いいいあ こけきか せせそそ
の様な表のB列の各セル(B1/B2/B3)で「か」を含む行(1行目と3行目)のみを表示
させることは可能ですか?
109 :
名無しさん@そうだ選挙にいこう:2006/02/20(月) 21:59:28
教えてください。
A B
1 gg 1000
2 hhh 150
3 dd 100
4 vvv 200
これを
D1からD4に名前
E1からE4に売上高
D E
1 gg 1000
2 vvv 200
3 hhh 150
4 dd 100
と
売り上げ順に表示させるにはどうすればいいのでしょうか?
111 :
名無しさん@そうだ選挙にいこう:2006/02/20(月) 22:44:27
>110
含むがオプションの下のほうに有って存在に気づきませんでした。
ありがとうございました。
112 :
名無しさん@そうだ選挙にいこう:2006/02/21(火) 03:22:14
質問です。
グラフのバブルチャートって、横軸と縦軸を項目軸にすることは
できないんですか?
どうやってもできないのですが。。。
113 :
107:2006/02/21(火) 06:56:43
>>110 レスどもです。
OFFSET調べてみます。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
=TODAY()
は、そのファイルを開いた日付が活用?される関数ですが。
昨日や一昨日の日付を出す方法はあるのでしょうか?
普通に○月○日と打つのが妥当でしょうjか?
=TODAY() -1
のこと?
>>115 そんなことが出来たんですね・・・・・・・初めて知りました。
ご迷惑をお掛けしてすいません('A`:;)
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
A = 10
If A <> B Then
処理1
end if
変数Bは上記の前に別途取得しています。
変数Aと変数Bが違っていたら処理します。
しかし、変数A=Bの時にif文が「違う」と判断されてしまいます。
アドバイスお願いします。
>>117 変数の型が違うなんてことないよね。
型宣言しないとバリアント型になるんだっけか?
或いは別のプロシージャで変数を宣言してるとか
>>118 自分アホだ・・・
変数二つとも宣言してなかった・・・orz
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
Dim Fd as integer 'ファイルナンバー
Dim moji as String '配列格納用
Dim Hai() as string '配列
dim OpenFileName as string 'ファイル名
Fd = FreeFile
Open OpenFileName For Input As #Fd
Do While Not EOF(Fd)
Line Input #Fd, Moji
Hai() = Split(Moji, ",")
For Count = 0 To UBound(Hai())
処理をします。
next
Line Input #Fd, Moji
Hai() = Split(Moji, ",")
Loop
OpenFileNameで読み込んだ内容を【Moji】に格納し、ファイルがカンマで区切られているので分割。
For文の処理する間も配列の次の行へ読み込むことをしたいのですが、
処理をすると最後の行読み込んだ後、もう一度読み込もうとしてしまい、
「データがこれ以上ない」というエラーメッセージが出てしまいます。
うまく、次の行がなかったら終了させる方法はないでしょうか?
2回目の
Line Input #Fd, Moji
Hai() = Split(Moji, ",")
これ、意味ないんじゃないの?
For文抜けなきゃ処理されないんだから。
あと、普通は
Do Until EOF(Fd)
Loop
じゃね?
何がやりたいかよく分からんが
とりあえず次の行がなかったら終了させたいんなら
適当なとこにIf EOF(Fd) Then Exit Do入れればいいだけじゃね?
124 :
名無しさん@そうだ選挙にいこう:2006/02/21(火) 22:04:02
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
教えてください
シート1
A B C
1 いい イイ 2月2日
2 うえ ウエ 2月3日
3 かき カキ 2月2日
A列に名前、B列にカナ、C列に日付が入ってます
シート2
A
1 2月2日
2 いい
3 かき
シート2のA1に日付を入力すると、それに対応するシート1のA列だけが、シート2のA2以下に自動的に
現れるようにすることって可能でしょうか?
可能です
126 :
名無しさん@そうだ選挙にいこう:2006/02/21(火) 22:28:48
VBAの質問です。
行をコピーして他のシートに張り付け、並べ替えるプログラムを作りたいのですが、
まず、マクロで手動で覚えさせてみると、
Rows("3:3").Select
Selection.Copy
Sheets("注文").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Columns("H:H").Select
Selection.Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
と、なりました。
これを、コピー、挿入の箇所を簡潔にして
Rows("3:3").Copy
Sheets("注文").Rows("2:2").Insert
Columns("H:H").Select
Selection.Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
と、いった形に簡単にすることはOKだと思うのですが
並べ替えの箇所をどのように簡潔にすればよいかわかりません。
アドバイス宜しくお願いします。
127 :
124:2006/02/21(火) 23:43:07
>>122 >>123 サンクスです。無事抜けれました&別に変な処理もしてたことがわかり一安心です。
このほかに同じマクロ内で
Select Caseを使い 条件の変数が 1か2だったら処理をする
ようにすることは可能なのでしょうか?
アドバイスお願いします。
【例】
A = 2
Select Case A
Case = 1 or 2
msgbox "2です。"
end Select
>>128 >Case = 1 or 2
Case 1, 2
じゃないの?
ありがとうございます!無事できました。
VBAの編集はExcelからVB Editor を起動してるんだと思うけど、
まだやってなかったら、VB Editor のオプションで「自動構文チェック」
「変数の宣言を強制」を有効にするとよい。
ここで質問しなければならなくなる前に、VB Editor が警告出してくれるから
132 :
名無しさん@そうだ選挙にいこう:2006/02/22(水) 02:02:55
友達からエクセルが開けなくなったと相談をうけましたが
私では解決できませんでしたので解決方法を知ってる方いましたらお助け下さい。
エクセルを起動しようとすると勝手にインストーラーが出てきて
Office XP Personalをインストールしようとし、「CDを入れてください」
というような表示が出るということです。
キャンセルを押すとエラーが出て「開こうとしているファイルは関連付けされて
いませんのでフォルダオプションにて関連付けしてください」というような
表示が出るそうです。
Excel2002
OSはWindows2000
拡張子はいじってないようでファイルの表示も.xlsになっているようです。
拡張子は表示するように設定してあるとのことで、拡張子が二重になってる
ことは無いとのことでした。
最近した操作で思い当たる節は無いか聞いてみたところ
マイクロソフト系のwebサイトでどこか間違ってクリックしたかもしれない
ということでした。
関係あるかどうかわかりませんがよろしくお願いします。
>>132 Update関連でよくあること、指示どおりCD入れれば解決する。
>>133 割れでDiscなんか最初から持ってないんじゃね?
スレ違いかもしれませんが、質問させてください。
仕事先からxlsファイルでのスケジュール表が届いたのですが、
現在、Excelが使えない環境にあるため、開くことができません。
編集などは必要ではなく、見るだけでいいのですが、そのような方法はありますでしょうか?
宜しくお願いします。
>>135 Excel Viewer 2003
OOo
>>136 ありがとうございます。無事開くことができました。
【1 OSの種類 .】 WindowsXPsp2
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 少々
【4 VBAでの回答の可否】 可
すみません、教えていただけませんか。
ワークシートにテキストボックスを設置し、その数値をvbaで変化させようとしています。
ここで、テキストボックスってへこんだような影がついていると思うのですが、これをとることって出来ますか?
つまり白い紙にプリントしたときに数字だけが印字されるようにしたいのです。
よろしくご教示お願いいたします。
>>138 プロパティいじって影なしに変更すれ。
でなければラベル使う。
140 :
138:2006/02/22(水) 14:50:51
>>139 即レスありがとうございます。
なるほど!ありがとうございました。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
セルA1に {さば,たこ,あじ}
セルA2に {さかなくん,あわび,いか}
:
以下、1つのセルの中にカンマなどで
区切ってある連続データから
指定したデータだけを参照したいのですが
セルB1に 数式(A1,2番目) = たこ
セルB2に 数式(A2,1番目) = さかなくん
:
何かいい方法はないでしょうか?
よろしくお願いします。
XP SP2+Excel 2003です。
セルの中でAlt+Enterで改行してデータを2行に分け、さらにセルの書式設定で
「縮小して全体を表示する」と設定すると、セル内の改行がなくなってしまいます。
改行位置を維持した状態で全体を縮小してセルのサイズぴったりにさせるには、
どうすればよいのでしょう?
144 :
名無しさん@そうだ選挙にいこう:2006/02/22(水) 18:58:58
初心者です。教えてください。セルに色をつけるときに、セルの書式
設定→パターン で出来ると思うのですが、そのパターンに使いたい色
がない場合に、自分で作る事が出来たと思うのですが、どうすればいい
のでしょうか?ワードではパターンの下に『その他の色』というのが
あるのですが、エクセルでは出てきません。宜しくお願いします。
ツール>オプション>色>変更
で、好みの色を用意しておく
ユーザー定義関数(Function)からセルの色とか変えたいと思うのですが、
うまくいきません。マクロ(Sub)なら問題ないのですが。。。
そういうものなんですか?
147 :
名無しさん@そうだ選挙にいこう:2006/02/22(水) 20:52:06
age
>>146 ユーザー定義関数って、ワークシートにカスタム計算の結果を返したい時に作るものでは?
なぜ関数でセルの色を変えたいのか、やりたいことが見えない。
メニューの書式→条件付き書式では駄目?
150 :
146:2006/02/22(水) 21:52:55
>>148 勉強しててよくわからないので質問してみました。
参考書とか見てもSub()とFunction()の違いは値を返せる事とか、Sub()はマクロ
から、Function()はユーザー定義関数として呼び出せるとかそんなことしか書いて
いないので、、、
ユーザー定義関数として呼び出せば設定できないけど、フォームを作ってそこから
Function()を呼び出せばセルの色とか変えられる理屈がわからなくて質問してみた次第です。
リアルに困っての質問ではないです。すいません。
151 :
141:2006/02/22(水) 22:14:05
>143
作りました。
この関数をたくさん使うのですが、このままでいいのでしょうか?
処理速度を向上させる方法などありましたら教えてください。
よろしくお願いします。
Function SAKANA(MOJI As String, RETU As Integer)
Dim MArray() As String
MArray = Split(MOJI, ",")
SAKANA = MArray(RETU)
End Function
高速化は詳しくないけど
1. 余計なことはしない
2. 型は宣言する
というのは基本だと思うので,こんな感じ?
あとは文字列の引渡しはByValではなくByRefの方が早いのかも知れない
Public Function SAKANA(ByVal str As String, ByVal col As Integer) As String
SAKANA = Split(str, ",")(col)
End Function
あと当然のことながらVBA Projectのコンパイルをすれば早くなる
質問です。
一つのセルに金額が入力されています。それが何行もあります。その合計の金種を表示したいです。(1円が何枚とか)
今は1桁目だけ(1円)、2桁目だけ(10円)とかを電卓で足して出しています、。
Excel2000でVBAは分かりません、。宜しくお願いします。
>>154 意味が分からないのでもう少し整理して書いてください
一意に決まらないよ?
157 :
名無しさん@そうだ選挙にいこう:2006/02/23(木) 00:21:02
VBAの質問です。
食品というシートのx行目をコピーして、まとめシートの2行目に挿入させるにはどうしたらよいのでしょうか?
下のようにやりましたが、うまくいきません。
初心者過ぎる質問かもしれませんが、検索してもうまく見つけることができませんでした。
アドバイス宜しくお願いします。
Worksheets("食品").Rows("x:x").Copy
Worksheets("まとめ").Rows("2:2").Insert
158 :
154:2006/02/23(木) 00:24:11
申し訳ありません。説明もうまく出来ない、。
ひとつのセルに入ってるのは1人の給与なのです。なので支払う時には1,005円の給与と2,003円の給与があったら1円玉は8枚、千円札は3枚必要になります。
その3とか8の数字を表示させたいのです。すみませんでした、。
=INT(MOD(給与,100とか1000とか)/10とか100とか)
って事?5円とかは使わないの?
160 :
名無しさん@そうだ選挙にいこう:2006/02/23(木) 00:35:14
よくある金種表の問題だな
「金種表」でぐぐってみたら?
161 :
154:2006/02/23(木) 00:37:54
159さん
即答ありがとうございます!5円、5千円はありません。早速やってみます!ありがとうございました泣
162 :
154:2006/02/23(木) 00:48:42
160さん
ありがとうございます!よくある問題なのですね。ぐぐって1から勉強し直します、。
>>141 何百、何千行とあるのなら、都度関数を呼び出すより
一括で処理した方が早いだろうね。
ExcelVBAに詳しくないのでコードをあげることはできないけど、
A列の入力範囲とB列の入力範囲を取得して
For文なりでぶん回し、直接解をセルに書き込んだ方が速いと思うよ。
164 :
38:2006/02/23(木) 07:36:07
>>38です。
御返事を待っているのですが、無理なのでしょうか?
実質に管理したいのは、ある製品が何日に何個出荷して、その累積が月管理したいのです。
ただベースの製品表の日付と出荷量を書き込みされてしまうので…
でマクロを使用しないという制限がありますが、(today)で毎日作業終わりにデーターをまとめていく事は出来ますか?
よろしく御教授お願いします。
>>164 出荷量の入力欄を日別に用意しないのも上司の方針か?
それくらい認めさせろ。
基本的にワークシート関数ではセルの値を変化させることはできても
データの書き込まれたセルを新たに作るようなことはできない
したがって
>>38みたいにD1のデータだけ書き換えながら
その結果を毎日E1, E2, ...に蓄積していくようなことはできない
それをやるにはVBA使うしかない
そういうことをしたいんだったら,そもそも元のデータを
日付 製品ID 出荷量
日付 製品ID 出荷量
...
のように(書き換えることなく追加する形で)書いていって,それを集計するようにする
【1 OSの種類 .】 WindowsXPsp2
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 ヘルプ(関数→一般的に使用される数式の例)
関数についての質問です。
100以下の場合は「1」を返して、
100より大きく200以下の場合は「3」を返して、
200より大きく400以下の場合は「6」を返します。
その後、200増すごとに超過分に「+2」だけ加算します。
512なら「6+2=8」、799なら「6+2+2=10」、801なら「6+2+2+2=12」
と言った具合です。
どのような式にしたらいいかご指導いただけたら幸いです。
よろしくお願い致します。
200以下と200より大きいときでIFにより場合分けすれば良いです
200より大きい場合はこんな感じですかね
4+(INT(A1/200)-1+ROUNDUP(MOD(A1,200)/200,0))*2
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
1ページ目に表を作って、一部分に入力規制とロックを設定しています。
2ページ目以降にも同じ表をコピーして使っていきたいのですが、
形式をコピーして貼り付け → 入力規制の項目が選べません…。
2ページ目以降の入力規制の設定を手動でしなくてすむ方法を
教えてください。
お願いします。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Office Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
どなたか分る方、お願いいたします。
セルに入力したあと、左詰めしているのですが、
罫線に近づきすぎて、少し見づらくなってしまいます。
半角で一文字分くらいスペースを空けたいのですが、
ユーザー定義というものが良く分っておりませんので、
どうしたらよいのかわかりません。
すみませんが、どなたかよろしくお願いいたします。
171 :
名無しさん@そうだ選挙にいこう:2006/02/23(木) 15:21:02
条件付き書式で
条件が"◎"以上だと★も☆も変化します。
条件が"☆"以上だと★は変化しますが、◎は加わっていません。
これは何を元にしているのでしょうか?
文字コードを見ても順番が違うようです。
173 :
名無しさん@そうだ選挙にいこう:2006/02/23(木) 15:52:55
【1 OSの種類】 Windows98
【2 Excelのバージョン】 Excel2000
【3 VBAが使えるか】 はい
【4 VBAでの回答の可否】 可
かっこ付きのセル[ 2,100 ]から数値2100だけ抜き出したいのですが
数百行あって手間がかかりそうです。どうしたらいいか教えて下さい。
>>173 括弧とコンマだけなら何回かに分けて置換するとか
>>174 置換を使えばいいんでしたか。
えーと、やってみます。ありがとうございました。
176 :
173:2006/02/23(木) 16:12:21
>>174 やってみたら簡単でした。仕事かたづきました。
どうもありがとうございます。
177 :
167:2006/02/23(木) 16:22:43
>>168 レスサンクスです。
しかしながら、タブーである情報後出しになってしまいました。
簡潔に書いた方が良いかと思い勝手に違う数字にしてしまったら、
どうしてもうまく記述することができませんでした。orz
正確には・・・
500,000以下の場合は「500」を返して、
500,000より大きく1,000,000以下の場合は「900」を返して、
1,000,000より大きく3,000,000以下の場合は「2000」を返して、
その後、3,000,000増すごとに超過分に「+2000」だけ加算します。
5,000,000ら「2000+2000*1=4000」、700なら「2000+2000*2=6000」、
9,000,001なら「2000+2000*3=8000」となります。
よろしければ再度ご指導いただけたら。
大変申し訳ありません。
178 :
11:2006/02/23(木) 16:32:44
179 :
170:2006/02/23(木) 16:56:31
>>172 即答ありがとうございました!
うまく出来ました。
180 :
177:2006/02/23(木) 17:01:24
5,000,000ら「2000+2000*1=4000」、700なら「2000+2000*2=6000」←×
5,000,000ら「2000+2000*1=4000」、7,000,000なら「2000+2000*2=6000」←○
記述ミスです。すみません。
数字がいくつになろうが同じ方法でできるだろ
そのくらい自分で計算しろよ
>>177 そこまで書けていれば
あとは数式に置き換えるだけなんだけどな・・・
2000+ROUNDUP((A1-3000000)/3000000,)*2000
141です。
レスくれた方、ありがとうございました。
参考になりました。
関数を使ったセル700個程度で、参照元の値を
頻繁に切り替えて使ってみたのですが
処理速度はとくに問題ないようです。
184 :
名無しさん@そうだ選挙にいこう:2006/02/23(木) 22:02:44
質問です。一つのセルに住所が入ってるのを市町村と番地とアパート名とで別々のセルに簡単に分けることできますかね?誰かわかる方いたら教えてください(>_<)
簡単には無理だと思います
>>184 "市"、"町"、"村"の文字で切り分けるだけなら普通に文字列操作
市区町村名の中に"市区町村"等の文字が使われていても正確に分割したいなら
データベース必須
あとは
>>3★でも読んでくれ
187 :
名無しさん@そうだ選挙にいこう:2006/02/23(木) 22:16:56
質問です。
excelでカレンダー作ってるんですけど、背景を印刷したいのです。
背景を印刷するにはどうすればいいでしょうか?
若しくは背景画像を貼り付けた上から表を作って文字の書きこみの仕方でも結構です。
教えて下さい。
excel2000です。お願いします。
これハイパーリンクはIEが必ず開くんですが、他のブラウザじゃ無理?
189 :
38:2006/02/23(木) 23:27:12
>>155さん
>>166さん返事ありがとうございます。
>そういうことをしたいんだったら,そもそも元のデータを
> 日付 製品ID 出荷量
> 日付 製品ID 出荷量
> ...
> のように(書き換えることなく追加する形で)書いていって,それを集計するようにする
私もそれが一番楽な形と説明して、それが駄目なら出荷表をプリントアウトしてる間に
日付と数量をコピー又は切り取って別のシートに移すと言ったら、上司が出来ないの一言で終わってしまいました。
その上司が以前自分で作ったマクロが不具合が、あったらしくてマクロは駄目と言う状態です。
単に日付と数量を二カ所打てばいいのですが、それじゃエクセルじゃないと言い張ってます。
> その結果を毎日E1, E2, ...に蓄積していくようなことはできない
> それをやるにはVBA使うしかない
その簡単なやり方のVBAを教えて貰えますか、よろしく御教授お願いします。
>>189 VBA=マクロ
マクロが駄目ってんならどうしようもないでしょ
そもそもおまいがどういうことやりたいか正確にわからないから教えようもないし
教えたところで、ちゃんと自分でVBA理解できるのでなければ
上司同様、不具合出してあぼーんするのは目に見えてる
だからVBA使わないで
>>166みたいなやり方するか
それも駄目って言われるんならどうしようもないからその職場やめた方がいいよ
>>190 この場合、上司の無能が大きい気もするけどねぇ
自分で作ったVBAが駄目だったからってExcelのマクロ禁止って…
部下がいるんだから、トレーニング受けさせるなりしてちゃんとしたマクロを作らせた方がいいよ。
あと、38氏の要件は、AccessなどのDB使えばもっと効率的に管理できることだね。
要件を分析した上でExcelに決定してるのならしかたないけど、そうでなかったら、
DBがないのか使えないのか何だか知らないけど、関係者のスキルが低いのかな。
【1 OSの種類 】 Windows XP Home
【2 Excelのバージョン 】 Excel2000 & Excel 2003
【3 VBAが使えるか 】 初心者ながら使ってます
【4 VBAでの回答の可否 】 可
【5 検索キーワード 】 Mid, Chr, VBA.Strings
Excel 2000で、あるマクロを開発しました。
2003のユーザの方に使ってもらおうとしましたが、
mid関数やchr関数が関数として認識できないエラーがでました。
(エラー表示は今は分かりません。)
VBA.mid(myStrings, 1, 3)という表記なら使えます。
len関数はそのままで使えました。
その他いろいろな関数が使えたり、使えなかったりしました。
これはどのような現象でしょうか?
VBAの参照設定が外れているとか?
2003のデフォルトの言語って何なの。
>>190 上司は VBA=マクロと認識してないです(笑)
> だからVBA使わないで
>>166みたいなやり方するか> それがベストなのですが、上司が切り取りの意味を知らない位ですから…
用は日報管理で何がいいくつ出来て累積が知りたいだけなのですが、上司が出荷表を書き換えた時にペーストしてくれればいいのですが、年輩者がいるからそれは無理と一言です。
関数でいければベストなのですが…
できれば私にVBAを教えて貰えますか?
196 :
38:2006/02/24(金) 03:45:50
>>191 > この場合、上司の無能が大きい気もするけどねぇ
> 自分で作ったVBAが駄目だったからってExcelのマクロ禁止って… その通りです。
> あと、38氏の要件は、AccessなどのDB使えばもっと効率的に管理できることだね。
> 要件を分析した上でExcelに決定してるのならしかたないけど、そうでなかったら、
> DBがないのか使えないのか何だか知らないけど、関係者のスキルが低いのかな。
アクセスで作ったら気に入らないって言われした。
用はエクセルのシートやフォルダで在庫管理をしたいのですが、年輩者の方は数値コピーが分からないの希望のセルにコピーしてくれないのです。
今日作った物を調べる関数(TODAYでいいのかな?)だけでも分かれば自分なりに考えて説得してみますのでよろしくお願いします。
197 :
名無しさん@そうだ選挙にいこう:2006/02/24(金) 04:13:53
すみません。質問です。
たとえば、あるセルに「うえだだろう」と書いたとして、
下のほうのセルに「うえだいちろう」と書こうとして「うえだ」と入力した段階で
勝手に「うえだたろう」と入力されてしまって非常にうざいんですが、
どうしたら止めさせることができるんでしょうか。
教えてくださいm<(. .)>m
198 :
197:2006/02/24(金) 04:14:57
OSはXPで、エクセルは2003です。
宜しくお願いしますm<(. .)>m
>>197 オプションのオートコンプリートのチェックを外す。
>>196 上司を説得する気があるのなら、後々のことも考えてAccessで作った方がいいと思うよ。持っているみたいだし。
俺の経験からいくと、大した処理をしていなくても大抵の素人さんはAccessのフォームのつくりで騙せる。
>>199 ありがとうございましたm<(. .)>m
>>196 SUMIF() 関数で日ごとの集計出すようにしておけばいいだけのような気がするが?
>>196 やっぱりVBAマクロ作るしかないんじゃない。
ただし、ユーザーが触るファイルとマクロを分離する。
マクロ専用のExcelファイルを作って、マクロは38さんだけが実行する。
マクロは、ユーザーのExcelファイルを読み込んで、必要なデータをどこかに
コピーするものにする。
38さんがVBA勉強しないといけないけど。
最初はマクロ自動記録で処理を記録して、それを研究してみたらどうかな。
ウチは、ユーザーが起動するたびにマクロの警告が出たり、ユーザーが
誤って実行しないよう、上述のような形にして、マクロを分離してる。
205 :
202:2006/02/24(金) 07:36:53
>>38 >>204 セル"D1"の参照先に日々の製品量が入っているのかと思って
書いたんで違ってたら無視してくれ
というか
>>38の言ってることは二転三転してて
上司が云々・・・というのも疑わしいように思う
>>38自身、VBAがわからないどころか、ワークシート関数の特性も理解してない
みたいだし、
>>166のやり方も、あんまわかってないみたいだし
なんか切り取りとかコピーとかわけわかんないこと言ってるし
上司がVBA駄目とかいいながらVBA教えてとか言ってるし
とりあえずVBA覚えたいんだったらこんなとこで1から10まで教えて
なんて言ってないで、とりあえず本買ってきて自分で勉強したら?
その前にExcelの入門書買ってきて基本的なデータ処理の仕方勉強したほうがいいと思うけど
もうちょっと具体的に何かわからないことができてきたらまた質問しにきなよ
207 :
名無しさん@そうだ選挙にいこう:2006/02/24(金) 11:08:01
2003を使ってます。
SUBTOATL関数を正しく打ち込んでいますが、データを抽出した結果が
表示されないんです。
データが打ち込まれた表は縦方向に966番目まで入っており、
970番目にSUBTOATL関数を打ち込みました。
抽出するとなぜかSUBTOATL関数が打ち込まれたセル自体が
表示されていません。
どうしてでしょうか?
【1 OSの種類 .】 Windows 2000
【2 Excelのバージョン 】 Excel2002
セルをドラッグで選択すると,選択時にコピー状態になってしまいます.
選択時にはコピー状態にしないようにするにはどうしたらいいでしょうか?
210 :
38:2006/02/24(金) 12:07:55
>>200さん
>>202-206の方々御面倒をおかけしました。
エクセル本を読み直して、また質問させて頂きます。
その際はまた御教授よろしくお願いします。失礼します。
>>207 第1引数の集計方法がデータにあってないとか?
よもや、関数名自体を打ち間違えてるとかじゃないだろうね。
SUBTO*AT*LじゃなくてSUBTOTALだ。
>>209 「コピー状態」の具体的イメージがわからない。
>213
通常ドラッグ(or単一)で選択して→コピー(or切り取り)で枠に縞々状態になるところ
ドラッグで複数選択すると,選択しただけで縞々になってしまうんです
>211
複数のセルを選択するとき,始点から終点まで
ドラッグで選択するのは普通ではないのですか?
>>214 何のためのctrl/shiftキーなんだ?
ドラッグで選択するのはおかしなことではない
普通は選択しただけでコピー状態なんかにならない
どうやって設定するかは知らない
217 :
名無しさん@そうだ選挙にいこう:2006/02/24(金) 16:41:45
指定したセルの数値の下4桁のみ抜き出して出力したいのですが
いい方法は無いでしょうか。
134535→4543
みたいな感じです。
219 :
名無しさん@そうだ選挙にいこう:2006/02/24(金) 16:47:23
【1 OSの種類 .】 WindowsME
【2 Excelのバージョン 】 Excel2000 【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード
ウィンドウズを起動したときに
指定のExcelファイルを自動で開く方法ってあります?
220 :
217:2006/02/24(金) 16:54:24
>>218 具体的にどういう関数でしょうか。
今調べたのですが見つかりませんのでググるヒントだけでもお願いします。
221 :
217:2006/02/24(金) 17:06:21
自己解決しました
218さんありがとう
>>219 そのExcelファイルのショートカットをスタートアップにでも置いとけばいいんじゃないか
223 :
名無しさん@そうだ選挙にいこう:2006/02/24(金) 19:04:29
224 :
名無しさん@そうだ選挙にいこう:2006/02/24(金) 19:29:46
エクセル2000を使用しています。
セルに名前をつけて作業していますが、一回名前を変更したセルを
もう一度名前を変更しようとしたのですが、変更ができないです
セル名変更の流れは以下です
A1→りんご→みかん
↑ ↑
これは これが
出来る 出来ません
どの様にすれば良いでしょうか?ロックはかかってない事は確認しました
よろしくお願いします
225 :
224:2006/02/24(金) 19:36:24
追加です
みかん と言う名前のセルはありません
>>223 セルをアクティブの状態にしても書き込めない?
227 :
名無しさん@そうだ選挙にいこう:2006/02/24(金) 19:42:13
アンカー間違えた。
226は224宛。
228 :
224:2006/02/24(金) 19:57:38
>>226-7 セルをアクティブって単純に選択した状態って事でいいんですよね?
ダブルクリックとかで、修正途中でとかではないです。セル内は空の状態です
※セル名つけての作業は、初めても同然なのでイージーミスしてる可能性が大です
229 :
224:2006/02/24(金) 19:59:02
>>224 勘違いしてた。
挿入にある名前の「定義」で修正すればいいんじゃない?
231 :
224:2006/02/24(金) 20:51:09
>>230 それです!それです!!!ありがとうございます。
困り果てていたので、ホントに助かりました。
おぃらにとってはネ申です。ありがとうございました。
C:\Program Files\Microsoft Office\OFFICE11\XLSTART\PERSONAL.XLSに
マクロを保存しているのですが、Excelを起動する度に出てきて、少々ウザイので
マクロは使えて、PERSONAL.XLSを非表示にする方法はありませんか?
PERSONAL.XLSのプロパティーを隠しファイルにしたらマクロが有効になりません
(´・ω・`)ショボーン
そのXLSファイルを「名前をつけて保存」でテンプレートファイルとして保存してから
XLSTARTに保存してみたらどうだ
(´ε`;)ウーン…
むりでした、新規ファイルでマクロを開いても何もでてきません
>>234 わりいわりいWordのdotファイルとごっちゃになっちった
236 :
234:2006/02/24(金) 22:53:52
(゚д゚)(。_。)(゚д゚)(。_。) ウンウン
Normal.dotファイルのことだね、そんな気がしたがひょっとしたら
できるかなって一瞬思ってやってみたけど
ヽ(´ー`)ノムリッポ
237 :
192:2006/02/24(金) 23:02:34
亀でスマソ
>194
参照設定は最初に見ました。Excel2000と同じ設定でしたね。(確か)
他の2003でmidだけで関数として使えました。というと、そのユーザーのExcelの設定が悪いのでしょうか?
知っている神よろしくです。
238 :
235:2006/02/24(金) 23:08:11
>>236 C:\Documents and Settings\username\Application Data\Microsoft\Excel\XLSTART に
Book.xlt という名前で保存すればできるぽ。Book1.xltとかでは無理。
Book.xltとSheet.xltというのが、何か特別な名前になるらしい
Program Filesの方のXLSTARTは試してないから知らない
>>237 詳しいことは知らないんだけど、
2003ってVBA以外の言語が使えるらしいじゃない。
関数名が競合しているって事ないのかな。
参照設定のVBAの位置はどこ?
もし先頭になかったら、優先順位で一番上にもってきたらどうなります?
240 :
234:2006/02/25(土) 00:07:24
>>238 ヮ(゚д゚)ォ!
本当だデキマスタ
あ(・∀・)り(・∀・)が(・∀・)と(・∀・)う!
241 :
240:2006/02/25(土) 00:21:50
スマン
勘違いだった、確かにマクロは有効だが
Book.xltも起動してる
変だな
ちゃんとテンプレートファイル(xlt)にしてる?
>>232 ウインドウ(W)→表示しない(H)じゃダメなの?
次に起動したら表示されなくなるけど
完全にない状態にしたいの?
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 少しだけ
【4 VBAでの回答の可否】 可
覚えたてのユーザーフォームでシートに転記するようにしています。
シート側の数値の列はカンマ区切りの書式設定になっていますが、
フォーム側に返すと区切りが無くなってしまい、見づらいです。
(123,456,789[シート] → 123456789[フォーム])
フォーム側もカンマ区切りの表示(書式?)にしたいのですが、
簡単な方法はありますでしょうか?
>>244 テキストボックスには、標準でセルの表示形式みたいな機能は無いので
自分で実装すれば良いだけ
一番簡単なのは、Format関数を使う方法かな
ユーザーフォームを含め、こういうプログラムってのは必要な機能は自分で付けるのが基本
246 :
名無しさん@そうだ選挙にいこう:2006/02/25(土) 10:31:48
MOSのエクセル受けようと思ってます。
問題に「数式入力で」と「関数を使って」ってあるんですが、
「数式入力で」と問われている場合、関数を使って解いたら×になるんでしょうか?
例えば、セルA1、A2、A3を合計するときに「数式入力で」と聞かれたら
=a1+a2+a3という風にいちいち入力しなければいけないんでしょうか?
それともSUMを使っても正解になるんでしょうか?
経験者の方教えてください。
247 :
名無しさん@そうだ選挙にいこう:2006/02/25(土) 16:35:45
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 一応はい
【4 VBAでの回答の可否】 一応可
【5 検索キーワード 】 Googleで「エクセル 複数シート 同時に保護」など
エクセルで複数のシートに「シートの保護」をかけたいのですが、マクロじゃないとできないでしょうか。
できればマクロ以外でなんとかしたいのです。
よろしくお願いします。
248 :
247:2006/02/25(土) 16:36:27
すいません。
不精して一気に全シートを保護したいという意味です。
249 :
名無しさん@そうだ選挙にいこう:2006/02/25(土) 17:47:08
250 :
249:2006/02/25(土) 17:56:49
すみません書き忘れました
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 一応はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 ラベル印刷
251 :
名無しさん@そうだ選挙にいこう :2006/02/25(土) 18:46:41
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel 2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
アパートの1か月分家賃と契約開始日を入力するだけで、初月家賃を出したいのですが、どうすれば良いでしょうか。
例えば、1か月分家賃が50000円として、
2006年2月25日が契約開始日だとすると、
2006年2月は28日間だから2月25日から28日の4日間の日割りになるので、
50000円÷28日×4日=7142円になります。
2006年3月8日が契約開始日だとすると、
2006年3月は31日間だから3月8日から31日の24日間の日割りになるので、
50000円÷31日×24日=38709円になります。
宜しくお願いします。
ワークシート関数でその通り計算する式をつくればいいんじゃないでしょうか
253 :
名無しさん@そうだ選挙にいこう :2006/02/25(土) 18:53:05
>>252 「今月は何日間だっけ?」って調べるのが面倒なもので・・・。
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 Excel2002 メニューバーが表示されない
叔母が、メニューバーが操作中に突然消えたと言ってパソコンを持ってきました。
確かにその通りでタイトルバー以外にツールバーは一切表示されていません。
ぐぐって、【メニューバー表示マクロで表示】などをやってみたのですが表示されません。
再インストールをしましたが出てきません。
ショートカットでグラフシートを表示させ、その他のツールバーを表示させる事はできたのですが
どうしてもワークシートメニューバーだけが表示できません。
どうなってるのでしょうか?
255 :
名無しさん@そうだ選挙にいこう:2006/02/25(土) 19:43:27
契約日と月末、家賃、3点入力する気があるなら簡単なんだけどね
>>246 そういう判断力も資格実力のうち
というか、こういうのは教えちゃマズいからな
>>247 >>14の「▼操作」のところ読もうね
>>249 ラベル印刷はExcelの領分じゃない
Wordに関してはスレ違い
>>253 今月が何日かも関数で出せる
あとは「関数の検索」でも使いな
>>254 ツールバー設定初期化(方法はググれば出てくる
上書きの再インストールだと設定が残ったままなので何も改善しない
逆にそこだけ初期化すれば、再インスコなんて不要だったのにな
257 :
244:2006/02/25(土) 20:50:41
>>245 回答ありがとうございます。自前で用意しなきゃいけないんですね。
調べてみたら、日付入力(yyyymmdd形式)のスラッシュ入力の省略すらも
ちょいとした手間が要るようですね。
でもこの辺は汎用性が高そうなので、色々頑張ってみます。
258 :
246:2006/02/25(土) 21:05:20
>>256 どうして教えちゃまずいんですか?
問題集では数式でと問われていても関数使った回答になってるから
いいのかなと思ってるんですが。
でもそれだったら関数と数式を分ける必要もないしな〜。
教えちゃまずいことはまったくないと思う
260 :
246:2006/02/25(土) 22:02:51
だれか教えてください。
262 :
244:2006/02/25(土) 22:52:41
度々すみません。
日付をyyyymmddの8桁でテキストボックスに入力し、yyyy/mm/ddの書式に
自動で変換するように試してみたのですが、
Private Sub TextBox1_AfterUpdate()
Dim YMD As Date
YMD = CDate(Format(TextBox1.Value, "@@@@/@@/@@"))
TextBox1.Value = YMD
こんな感じにすると、最初にテキストボックスからフォーカスを外した時には
変換されるのですが、そのままもう一度フォーカスを戻してしまうと
YMD = 〜の行で「型が一致しません」とエラーが出てしまいます。
何分独学のど素人なので、どうかご指摘お願いします。
>>262 TextBox1.Valueが"yyyymmdd"か"yyyy/mm/dd"か判定して
"yyyymmdd"のときだけ変換処理すればいいんじゃね?
264 :
244:2006/02/26(日) 01:19:45
>>263 おおなるほど。
こうすれば一応回避できますね。
Private Sub TextBox1_AfterUpdate()
Dim YMD As Date
If IsNumeric(TextBox1.Value) = True Then
YMD = CDate(Format(TextBox1.Value, "@@@@/@@/@@"))
TextBox1.Value = YMD
End If
テキストボックスはKeypressでスラッシュと半角数字しか押せないようにしているので、
あとは日付としてあり得ない数値(13月32日とか)の入力チェックをすれば、何とか使えそうです。
もうちょい研究を続けてみます。ありがとうございます。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 ぜひ
【5 検索キーワード 】 EXCEL 型が一致しません
FormAでaaa.xlsを開いて、FormBでそれを操作したいんですけどうまくいきません
WorkBooks(Book名).WorkSheets(Sheet名)で指定しています。
FormAで開いたaaa.xlsをFormAで操作することは出来るんですが。。。
>>258 >問題集では数式でと問われていても関数使った回答になってるから
>いいのかなと思ってるんですが。
自分で答えわかてっるじゃん。
君の質問すべきはこっちだったよ。
問題に「数式入力で」とってあるんですが、分ける必要は?
違いは、「数式入力で」の時、=a1+a2+a3 も =SUM(A1:A3) も 正解
しかし、「関数を使って」の時、=a1+a2+a3 は不正解、 =SUM(A1:A3)は正解
>>247-248 全シートの保護ですが、
ブックを「読み取り専用」にするでは代用できませんか?
>>249 もうそういう表がシート上に並んでるんでしょ?
ならば原始的に、使用する宛名ラベルの大きさにレイアウトを合わせて
excelで普通に印刷すれば?
>>249 可能であれば住所録みたいな普通の表に変換してから処理するのが正解だと思う
特に、今後ほかの目的で再利用する可能性がある場合にはやっといた方がいい
>>265 FormA と FormB で同じ Workbook, Worksheet オブジェクトを操作できてないからだと思う。
俺の作り方。
FormA, FormB の中でそれぞれオブジェクトを操作するのでなく、外に aaa.xls を操作する
モジュールを作って、FormA FormB からそれぞれ呼び出す。
この時、モジュール内では同じオブジェクトを参照・操作するように、次のような感じでオブジェクト
変数を保持すると良い。(ここでは oxSheet)
Private oxSheet As Excel.Worksheet
Public Function 初期化() As 〜
'最初に、どこかで必ず1回呼び出す
Set oxSheet = WorkBooks(Book名).WorkSheets(Sheet名)
End Function
Public Function Formから呼び出す操作メソッド() As 〜
'初期化済みの oxSheet に対してうんたらかんたら
End Fucntion
269 :
名無しさん@そうだ選挙にいこう:2006/02/26(日) 14:35:32
例えば01-02という文字列をコピーしてセルに貼り付けると1月2日と日付に変換されてしまいますが
これを元のまま01-02としておくにはどうしたらいいでしょうか?
270 :
名無しさん@そうだ選挙にいこう:2006/02/26(日) 15:01:54
範囲の指定で質問です。
SUM(A1:B10)
と範囲指定するのではなく、
A1:B10
の範囲自体をどこかのセルに記述しておいて
そのセルを参照させたいのですが、よくわかりません。どうすればいいのでしょうか。
272 :
名無しさん@そうだ選挙にいこう:2006/02/26(日) 16:03:38
【1 OSの種類 .】 WindowsXP home
【2 Excelのバージョン 】 Excel 2002
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可(できればVBAは避けて欲しい)
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
H列を検索し、「未入力」と書かれている行をまるまる取り出して、
他のワークシートにそれらの行を挿入することはできませんか?
その、新たなワークシートを金額順(G行)に並び替えたいです。
できれば、未入力でなくなった時に、自動的にその作ったワークシートから
削除されていれば嬉しいのですが。
宜しくお願いします。すみません。
>>272 関数は値を返すだけなので、
挿入とか削除などの操作系のことはVBA必須
未入力はループで探せばいいし、並べ替えも削除も
マクロの記録で録れるからわかるだろ
274 :
名無しさん@そうだ選挙にいこう:2006/02/26(日) 17:10:23
>>271 テンプレの方法は知っていますがホームページに掲載されているデータを
範囲コピーしてEXCELに貼り付けて管理したいんです。
無理でしょうか?
>>272 目的がわからんから何とも言えんが
1. ワークシートにA列を挿入し,ID番号(1, 2, ...)を振っておく。
2. 金額順で並べ替える。
3. フィルタで「未入力」の行だけ表示。
4. 作業する。
5. 作業が終わったら,1.でつけといたID番号使って元の順に並べ替える。
みたいなやり方がてっとりばやいと思うぞ。
276 :
272:2006/02/26(日) 17:17:15
>>273 レスありがとうございます。
なるほど。VBAで挿入や削除を行わないといけませんか。
未入力という言葉をループで探すってことは、VBAで行うのでしょうか?
よくわからなくて。。。
できればVBAでよいのでコードを教えていただきたいです。
すみません。。。
>>274 それもテンプレの方法で可能だし、他にドンピシャの機能もあるんだが、
如何せん
>>1★1-4守ってないんで、お約束通りまともな回答は無しってことで
>>276 Forをデータ最上行からRange().End(xlUp).Rowまで回して
カウンタ変数をCellsプロパティの第一引数に当てれば良い
> 【3 VBAが使えるか .】 はい
なんだから、後はヘルプやマクロの記録を見て自分で書こう
2,3日がんばって、どうしてもわからなかったら、
書いたコードを貼った上で再質問しな
>>2・8
いきなりコード丸投げとかは無しの方向で
279 :
269:2006/02/26(日) 17:25:23
280 :
269:2006/02/26(日) 17:35:44
>>278 質問テンプレは必須じゃないとあったので書かなかったんですが
質問の仕方がまずかったですね。すみません。お邪魔しました。
271だけど、278氏は質問テンプレ使ってないからなんて書いてないぞ。
個人的には
>>274読んで、一番強く思ったのは、
>>1の★1について。
そして、
>>3の最初の部分辺りのこと。
あと、言葉遣いはしっかりしてるけど慇懃無礼っていうか厚顔なというか感じがした。
ところで、
>>278さん。ドンピシャな機能って奴、後学の為にも教えていただけませんか?
> ★4 質問テンプレは必須じゃないけど、
>
> OSやExcelのバージョン、VBAの可否など(下記テンプレ1〜4の情報)は必須情報。
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> これを書かなかった場合は、以後まともな回答は付かないと思ってください。
テンプレ形式を使うかどうかは自由だが、書かなきゃならない情報内容に変わりはない
まともな判断が出来る大人なら、バージョンくらいは指摘されなくても書くものだがな
VBAに関しては存在すら知らないって場合もあるけど
>>281 次スレで同じ質問が出たとき、答えるに値する質問の仕方だったら答える
まぁ、その前に空気読めない教えたがり厨が答え出すかもしれないが
283 :
276:2006/02/26(日) 18:37:45
>>278 ありがとうございます。
漠然とは理解できてるのですが、細かいところがまだ。。。
どうしてもダメでしたら、またその箇所を質問させていただきます。
ありがとうございました。
284 :
271:2006/02/26(日) 18:48:07
285 :
名無しさん@そうだ選挙にいこう:2006/02/27(月) 09:48:23
2003を使ってます。
印刷を前提としていますので、セルの大きさをいつも変更しています。
このセルの大きさを変える作業が面倒なのですが、初期設定から
大きさを変えることはできますか?
>>285 テンプレートを作れば良いんじゃね?
ヘルプで「テンプレート」を調べると詳しく乗ってるよ。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
すいません質問させてください
=COUNTA(A1:A200)&"人"とセルに入力すると
「○人」と表示すると教わったのですが、
#VALUE!と表示されてしまいます。
どうしたら「○人」と表示してくれますか?
とりあえずCOUNTA関数のところで計算に失敗している可能性があるから
&"人" のところを取り除いてCOUNTA関数だけでテストしてみたら
>288
COUNTA関数だけではちゃんと計算するんです。
290 :
名無しさん@そうだ選挙にいこう:2006/02/27(月) 13:15:02
>>286 サンキュウです
また質問です。
2003を使ってます。
数値の切り捨ての処理で多数のデータを合計した結果を切捨てる場合、
結果を表示させて、それとは違うセルで切り捨て関数を使うことしか
できないのでしょうか?
>>289 COUNTAが正しく数字を返しているなら、あとは&"人"で意図した通りの結果が返るはず
そうでないなら、ミスタイプとか何か変なところで間違えている可能性があるが
おまいの提示した情報だけからそれを読み取ることはできない
>>290 普通に=FLOOR(SUM( ))とかすればいいじゃん
>>289 おまじない程度だけど・・・
&の前後にスペース入れてみて
&をたくさん使った時なんか、認識がおかしくなる事あるから。
293 :
287:2006/02/27(月) 16:08:58
>288,291,292
ありがとうございました。
もとのファイルをロータスで作っていたようです。
それをエクセルにしたので出来なかったそうです。
エクセルで初めから作ったら出来ました。
おさわがせしました。
>>287 単に「○人」と表示させるだけなら式は =COUNTA(A1:A200) にしておいて
セルの書式設定のユーザー定義で 0"人"としてもいいけどね。
Windows版だけど普通に貼るだけで横になるよ
仕方ないから縦になってしまったら形式を選択して貼り付けで
行列を入れ替えるとか
WinXPpro Excel2003の環境では普通にhtmlの表示通りにコピペできるが。
Mac特有の問題かな?
だとすればMacは持ってるがMac版のExcelは持ってないのでわかんね。
298 :
名無しさん@そうだ選挙にいこう:2006/02/28(火) 07:20:48
【1 OSの種類 .】 WindowsXP Home
【2 Excelのバージョン 】 Excel2003 sp2
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
質問なのですが、表を作成した時に
「A1セルの数値が1増えると、B1セルの数値を1減らす」といった関数はありますか
300 :
名無しさん@そうだ選挙にいこう:2006/02/28(火) 11:27:34
【1 OSの種類 .】 WindowsXP SP1
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
FAQレベルの質問ですみません。
Excelで複数のブック?を開いている状態で、どれかひとつのブックを閉じると
それ以外のブックまで強制的に閉じられてしまうのですが、どうにかなりませんか?
ググったら「仕様だ」というような文章を見かけたのですが・・・(ToT)
301 :
名無しさん@そうだ選挙にいこう:2006/02/28(火) 11:40:18
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
罫線を引いた個所が分からず印刷の際に常に2ページの印刷になってしまいます。
罫線を消したいのですが、探し方が分かりません。
初心者レベルですが回答いただけると幸いです。お願いします。
>>298 なぜに関数?
普通に数式組めばいいじゃん
>>300 ブックを閉じる操作をしてるんじゃなくて、Excelを閉じる操作をしてるんじゃないの?
うちではOS、Excel同じバージョンで、普通にブック個別に閉じられるから、
ちゃんとブックを閉じる操作をして問題が起きるなら、
>>2・6かExcel、OSの再インスコ
>>301 意味不明
普通に消せばいいじゃん
303 :
300:2006/02/28(火) 11:53:57
>>302氏
ありがとうございます!ウインドウ右上の□に囲まれたXじゃなくて、
ブック用の枠無しのXを押せばよかったんですね!解決しました!
>>298 他のセルに入れた関数で、B1セルの値をいじるのは関数じゃ無理。
>>301 Ctrl+End で、入力のある最後のセルに飛ぶよ。
ノーパソの場合は、Fnキーとかも忘れずに一緒に押してね。
305 :
298:2006/02/28(火) 14:08:09
306 :
298:2006/02/28(火) 14:08:50
307 :
d:2006/02/28(火) 14:20:53
>>298 >A1セルの数値が1増えると、B1セルの数値を1減らす
ということはA1+B1が常に一定の値ということで良いのでしょうか。
それなら単純にB1に「=10-A1」(合計10の場合)と入れるだけでは。
違うのかな。^^
ツールボックスから、コンボボックスを作成したのですが、
何の変更もしなくても終了時に必ず保存確認のメッセージが表示されるようになってしまいました。
コンボボックスを維持したまま保存確認のメッセージを表示させなくすることはできないでしょうか?
【1 OSの種類】 Win98
【2 Excelのバージョン】 Excel2000
【3 VBAが使えるか】 NO
【4 VBAでの回答の可否】 可
EXCELとブラウザを同時に立上げていいような状態にしたいのですが
どんな設定にすればいいですか。してはいけない設定にどんなものがありますか
>>309 意味がわかりません
もっと情報を出すか別の言葉で質問するかしてください
【1 OSの種類】 WinXP
【2 Excelのバージョン】 Excel2000
【3 VBAが使えるか】 YES
【4 VBAでの回答の可否】 可
Excelのセル内改行を行っているセルの中身を
改行前・後で別の変数に入れる方法ってありますか?
あれば教えてください
312 :
名無しさん@そうだ選挙にいこう:2006/02/28(火) 21:48:26
すみません、教えて下さい。
他人と共有しているパソコンで
○の中に/が入ったマークがでてきて、
ロック状態の様で、
全くつつけれない状態になっていたのですが、
解除の方法を教えて下さい。
初心者ですみません。
>>308 とりあえず
>>2a
>>309 普通にExcelを起動したままブラウザも起動すればいいんじゃないでしょうか
>>311 CHAR(10)で改行文字作れるので、あとはFINDとかMIDとか適当に
>>312 他人と共有しているパソコンで、何をしたら
どこに禁止マークがでてきて、何がロック状態でつつくことができないのですか
314 :
名無しさん@そうだ選挙にいこう:2006/02/28(火) 22:11:45
312です。
エクセルで保存してあるシートを出し、
編集して使おうとしたのですが、
シートを出し、
文字をクリックしても、
○の中に/の入った表示が出るばかりで、
何も編集する事ができません。
315 :
309:2006/02/28(火) 23:45:10
ウイルスが恐いです。他の人が見る事ができると聞いたもので
317 :
309:2006/02/28(火) 23:59:24
設定に注意する事で回避できる事を全て行いたいのですが
どのようにしたらいいですか。できない事をSEC板で解決しようと思います
>>309 君みたいな超×10くらいつく初心者は
多分むずかしいセキュリティの設定とかはできないと思うから
Excelとブラウザを同時にひらかないようにするといいと思うよ
前スレッドで、function key "F1"でHelpが起動する方法は無いですかと訊
いたら、key binding soft「猫まねき」を使って見たらどうですか、と言う
助言を頂いた。
例えば、Wordだと、
menu ツール→ユーザー設定→tab ツールバー→push キーボード→キーボードのユーザー設定
ここでkey bindingを変更する事ができる。
Excelでは、そういうのは無いみたいで、どうしても変えたいなら「猫まね
き」とか使わないといけないかも。
product関数ってどういうときに使うのでしょうか?
例えば、鉛筆を大量購入するとして
1梱包60ダース入りの箱が3箱
鉛筆1本の値段は40円。
総額はおいくら?
ぐらいしか、俺の頭では使い道がない。
>>320 足し算をSUM関数でやるのと同じ感覚だろ
単純な演算子による式との一番大きな違いは、引数に配列を当てられるってこと
可変範囲和や可変範囲積では必ず必要になる
が、可変範囲式が必要になる事自体少ないし、使いこなせる人も少ないだろうな
あとは単一セルを複数指定してやる場合は、
演算子区切りで書いても、引数としてカンマ区切りで書いても大差ないが
纏まったセルを参照する場合は範囲(配列)を引数に当てた方がスッキリする
323 :
d:2006/03/01(水) 09:39:19
>>311 セル内改行はvbLfなのでSplitで分解すれば良いと思います。
Sub test()
Dim S As String
Dim V As Variant
Dim A As Variant
S = ActiveCell.Value
V = Split(S, vbLf)
For Each A In V
Debug.Print A
Next
End Sub
324 :
初心者:2006/03/01(水) 11:27:06
【1 OSの種類 .】 WindowsXP2
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
色々調べたのですが、理解できなくてここに来ました。
教えて君ですいません。
A1のセルに数字入力したときに下のコピー&ペーストが
行われて
Worksheets("検索シート").Select
Range("E1").Select
Selection.Copy
Worksheets("検索シート").Select
Range("E2").Select
ActiveSheet.Paste
Worksheets("検索シート").Select
順に下に下がっていくというものなんですが、分かる方いませんか?
条件のつけ方と次の行に下がって行くことが分かりません。
>>324 いってることがよくわからんが
E1にセル挿入 > 下方向にシフト
をマクロ記録してみたらどうだ
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 AccessVBAなら
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel 印刷 行のタイトル フッタ
ページ設定-印刷タイトルで「行のタイトル」を指定できますが、
これのページフッタバージョンを作ることはできないでしょうか?
上下ともに複数行の固定セルで挟んだようなスタイルで複数ページ印刷したいです。
327 :
名無しさん@そうだ選挙にいこう :2006/03/01(水) 18:01:34
煮詰まってしまいました。。助言をください
セルD9にIF関数をしようした式を作成しましょう。
・数が50以上の場合、『満員』と表示し、それ以外は何も表示させないようにする。
こういう問題でホント悩みます・・・。
イルカかヘルプでIFを見なさい
329 :
名無しさん@そうだ選挙にいこう:2006/03/01(水) 18:16:13
=IF(対象セル>50,"満員","")
330 :
329:2006/03/01(水) 18:17:28
間違った
=IF(対象セル>=50,"満員","")
331 :
名無しさん@そうだ選挙にいこう:2006/03/01(水) 18:38:59
=IF(対象セル<49,"","満員")
これも同じ結果になります。
IF関数の概念を理解すれば簡単です。
332 :
初心者:2006/03/01(水) 19:46:35
324ですが、ワークシートに入力されるとマクロが動き、対象セルに
入力される所まできましたが、どうしても対象セルが1行ずつ下がる
ように出来ません、知恵を貸してください。
Private Sub Worksheet_Change(ByVal Target As Range)
Range("E2").Select
Selection.Copy
Range("F2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
説明しますと、Range E2またF2が下がっていくということなんです、
説明下手ですいません。
333 :
名無しさん@そうだ選挙にいこう:2006/03/01(水) 19:52:50
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
ある表のデータ
A1 B1 C1 D1 E1
A2 B2 C2 D2 E2
A3 B3 C3 D3 E3
A4 B4 C4 D4 E4
と並んでるのを
A1
B1
C1
D1
E1
A2
B2
C2
D2
E2
という風に並び替えたいのですができますでしょうか?
334 :
オートフィルタ:2006/03/01(水) 20:00:39
オートフィルタ機能を使うとき、抽出範囲が途中までしか指定できていないときがあります。
オプションで範囲指定できるかと思ってしてみましたがうまくいきません。
抽出範囲はどのようにして決まるのですか?
336 :
名無しさん@そうだ選挙にいこう:2006/03/01(水) 20:22:53
VBAの質問です。
Rangeオプジェクトに、値は配列でまとめて直接入力ができますが、背景色など
のフォーマットはこの方法で高速入力できないのでしょうか?
一個ずついれていくしかない?
337 :
333:2006/03/01(水) 20:38:13
335さん。膨大な表なので手作業は厳しいのです。
vbaでかまわないので教えてください。
For y=1 to 10
For x=1 to 10
Sheet2.Cells((y-1)*10+x,1).Value = Sheet1.Cells(y,x).Value
Next
Next
みたいな感じでいいんじゃねーの
適当に作ってテストとかしてないからバグあるかも知んないけど
だいたいの流れはこれでわかると思うから、細かいとこは自分で直して
>>334 空行とか端列の空白セルとかでオートフィルタ範囲が途切れている可能性がある。
値の入ってない行がありうる場合は、明示的に範囲指定してからオートフィルタ機能を実行するのが無難。
341 :
オートフィルタ:2006/03/01(水) 22:16:06
335さん、他のbookから同じ書式のものをコピペして使用する場合が
多いのですが、その状態でオートフィルタすると行の最後まで範囲が及んで
いないときがあるのです。
同じ作業をしていて、範囲内のときもあります。
340さん。
空行は含むデータですが、範囲内に収まっている時もあります。
端列の空白セル、とはどういうことでしょう?
後、範囲指定はオプションでしてみたのですが、有効にならなかったのです。。
というか、ただ「フィルタ」したらExcelが範囲間違えるかも知れんけど
主導で該当範囲を選択(反転表示)して「フィルタ」すれば普通にフィルタかかるんじゃないの?
手動
344 :
オートフィルタ:2006/03/01(水) 23:25:27
それは、試していなかったです。
やってみます。
342さん。
【1 OSの種類 .】 Windows98
【2 Excelのバージョン 】 Excel97
【3 VBAが使えるか .】 マクロを使うくらい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】任意のセル 足す
すみません ご教授お願いいたします。
会社で使う単価表の、ある範囲のセルに書いてある数全てに1.3倍とかをしたいのですが
出来ればマウス等で範囲を選択(例えばA1:D6とか)
マクロ登録したボタンを押すと選択してあった範囲のセル内の数字全てに1.3倍出来た
としたいのです。
よろしくお願いいたします。
Public Sub one_thirty()
For Each cell In Selection
cell.Value = cell.Value * 1.3
Next
End Sub
>>346さま
ありがとうございます〜〜〜〜!!
早速出来ました!
348 :
327:2006/03/02(木) 01:01:06
遅くなりましたがありがとうございました!
できました!
349 :
d:2006/03/02(木) 09:27:05
>>333 こんな感じでどうでしょうか。^^
セルA1を含むアクティブセル領域の値を新規シートに並べ替えて表示します。
Sub test()
Dim RR As Range
Dim R As Range
Dim D As Range
Set RR = Range("A1").CurrentRegion
Set D = Worksheets.Add.Range("A1")
For Each R In RR.Cells
D.Value = R.Value
Set D = D.Offset(1)
Next
Set RR = Nothing
Set R = Nothing
Set D = Nothing
End Sub
350 :
名無しさん@そうだ選挙にいこう:2006/03/02(木) 09:40:39
>>301 罫線引いたって、オートシェイプで引いたんじゃない?
だったら、表示→ツールバー→図形描画で、複数オブジェクトの選択
で消せるよ
【1 OSの種類 .】 WindowsXP(Pro)
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 多少ですが
【4 VBAでの回答の可否】 可
【5 参考サイト 】 すぐマク、Happy! Happy! Island、
【6 検索キーワード 】 エクセル マクロ オートフィルタ すべて表示
ワークシート上にフォームを置いて処理をするデータを作成中です。
オートフィルタを使用している表です。
フォーム内にデータの抽出、オートフィルタの解除ボタンを設置しています。
解除ボタンで困っている事なのですが、データの抽出をしていない時に実行すると
ShowAllDataメソッドでエラーが出てしまいます。
データの抽出がされていない時にこのボタンをクリックすると、
Ifステートメントを使って、Exit Subするように記述したいのですが
その状態の記述方法が判りません。
お知恵を拝借させて頂きたいと存じます。宜しくお願いします。
〜現在の記述〜
Private Sub CommandButton22_Click()
If ActiveSheet.Name <> "集計(1)" And ActiveSheet.Name <> "集計(2)" Then
MsgBox "太田集計か本社集計のシートでしか、この処理を行えません。", vbOKOnly, "選択シートエラー"
Exit Sub
End If
TextBox1.Text = ""
ActiveSheet.ShowAllData
ActiveWindow.ScrollRow = 3
Range("A3").Select
End Sub
>>351 if not activesheet.filtermode then exit sub
だと田中に伝えておいてくれ
353 :
351:2006/03/02(木) 11:29:37
>>352 有難うございます!!ちゃんと望んだ通りに動きました。
お蔭さまでデータも完成しました。
田中にも言っておきます。
354 :
333:2006/03/02(木) 12:58:44
355 :
名無しさん@そうだ選挙にいこう:2006/03/02(木) 13:15:36
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 無知ですが使っています
【4 VBAでの回答の可否】 可
【5 検索キーワード 】改ページ
あるシートに上から順に書類を作成するマクロを作成しています
その際 1枚ずつ思い通り印刷できるよう 枚数および改ページの行を変数にして
改ページを設定しようとしたのですが 上手くいきません
原因を探ろうと以下のようにVBAを作成しました
a = 40
k = 1
step01:
ActiveWindow.View = xlPageBreakPreview
Set ActiveSheet.HPageBreaks(k).Location = Rows(a + 1)
ActiveWindow.View = xlNormalView
If Cells(a + 1, 1) = "" Then GoTo step02
a = a + 40
k = k + 1
GoTo step01
step02:
End Sub
これでA1〜A81に数字を入れてマクロを実行すると 1枚目の改ページは
上手くいくのですが 2枚目以降はエラー9(インデックスが有効範囲にあ
りません)と出ます
どこに原因があるのかサッパリ分かりません
無知な僕に何かアドバイスをいただけたら嬉しいです
356 :
355:2006/03/02(木) 13:18:15
すいません書き忘れてました
エラー9が出た場合にデバックをおして黄色くなる行は
Set ActiveSheet.HPageBreaks(k).Location = Rows(a + 1)
です
当然ながらここに原因がある事はわかっています どこが悪いのかわからない
のです 誤解を招く表現ですいませんでした
先頭で
ActiveSheet.ResetAllPageBreaks
して、そこは
ActiveSheet.HPageBreaks.Add before:=Rows(a + 1)
かな
>>357の言うとおり、はじめて追加するときはAddを使う
蛇足だが、コードがひどいな
Gotoなんか使わないでDo Loopとか使った方がいいぞ
Public Sub Test()
page = 1
Lines = 40
Do Until Cells(page * Lines + 1, 1).Value = ""
ActiveSheet.HPageBreaks.Add Cells(page * Lines + 1, 1)
page = page + 1
Loop
End Sub
359 :
名無しさん@そうだ選挙にいこう:2006/03/02(木) 15:37:38
【1 OSの種類 .】 WindowsXP【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可
【5 検索キーワード 】 エクセル グラフ作成 マクロ 上書き
よろしくお願いします。
データからグラフを作成したく、一連の作業(データ選択からグラフの作成まで)をマクロで記録しました。
データは縦が種類・横が日にちで一月分あり、日々の個数と金額を入力していきます。
一度目はうまく作成してくれますが、上書きや追加?の記述が不足しているようで、
既存のグラフシートがある場合、再度マクロを実行するとエラーが発生します。
[ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="進捗"]の部分です。
最終的にはフォームのボタンにグラフの作成をあてて、クリックすることでグラフを表示させるところまで出来ればと思っております。
どのようにすればよいのでしょうか?
Sub グラフ作成()
'
' グラフ作成 Macro
' マクロ記録日 : 2006/3/2 ユーザー名 : user
'
Selection.CurrentRegion.Select
Charts.Add
ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:="2 軸上の折れ線と縦棒"
ActiveChart.SetSourceData Source:=Sheets("東京").Range("V5:BA12"), PlotBy:= _
xlRows
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="進捗"
With ActiveChart
.HasAxis(xlCategory, xlPrimary) = True
.HasAxis(xlCategory, xlSecondary) = False
.HasAxis(xlValue, xlPrimary) = True
.HasAxis(xlValue, xlSecondary) = True
End With
ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlCategoryScale
ActiveChart.Axes(xlCategory, xlSecondary).CategoryType = xlCategoryScale
End
「進捗」って名前がだぶるんじゃないの?
あらかじめ消しておくか名前変えれば?
361 :
355:2006/03/02(木) 16:00:50
>>357さん
>>358さん ありがとうございました
なんとか357さんの方法で上手くいきました(なぜか358さんのやり方を
真似ると 入って欲しくない所に改ページが入ってしまいました…)
358さんのおっしゃる通り 全然スマートじゃないやり方を繰り返しており
完成した150行近くのプログラムも 知ってる人が見れば苦笑を通り越して
あきれ返るんじゃないかと思います…
それでも何とか目標(=書類を自動作成し後任への負担を減らす)はクリアし
たので 助かりました
本当にありがとうございました!!
362 :
名無しさん@そうだ選挙にいこう:2006/03/02(木) 16:36:19
質問させて頂きます。
エクセル2000から2003へバージョンアップした
新機能をご存知の方がいらっしゃったら教えて下さい。
よろしくお願いします。
ちょっとエクセルの操作とは違う話なんですが、
数字の処理に慣れたこのスレの方にお聞きしたい。
優良中劣悪の五段階評価を総合点にまとめたいのですが、
単純に2,1,0,-1,-2だと賛否両論型なのか優柔不断型なのか
表せないと思います。
何となく微妙に優なのか、競り合って優なのか区別出来るような
形でひとつの総合点として表す方法はどうしたらいいのでしょうか?
賛否両論型、優柔不断型って何?
以前質問したのですがいまだ回答見つけられない、、orz
たとえば13の倍数かどうかを結果を出すのは????
いろいろやったのですがエラー
13*
13n
(13*n)
n*13
単純なんだろうけどわからない。。。。。。。
小学校で「あまり」って習わなかった?
369 :
365:2006/03/02(木) 20:17:50
>366
正規分布のように上に凸、つまり「どちらでもない」が主である場合と、
上に凹、「優」と「悪」に極端に分かれている場合です。
標準偏差をだしたりして、平均値や中央値と別項目として、
後で数字を読むときに注意すれば良いのかもしれませんが、
総合点として織り込むことはできないかなと思うのです。
>>367 たしかMod関数を教えられてたんじゃない?
Mod関数についてちゃんと調べた?
ある数を13で割って、「あまり」が0なら、13の倍数
「あまり」がでたら、13の倍数じゃないんだよ。
ゆとり教育の弊害を目の当たりにしますた
なるほど、割り算で考えるんだ!
かける事しか考えてなかった。おかげでできました。
>>365 よくわからんが、細かいところは小数であらわせば?
374 :
名無しさん@そうだ選挙にいこう:2006/03/02(木) 23:39:48
会社で質問されて困ってしまいました。
プルダウンリスト▽で、例えばリストに
太郎(男)
花子(女)とあって、太郎(男)を選択して、実際には(男)の部分は
表示されないで、セルには、太郎だけ表示するようにはできますか?
環境はXPです。ぜひ教えて頂きたいです。
>>365 よく解らないけど、優良中劣悪を「2、1、0、-1、-2」じゃなくて、
想定される評価数(評価する項目数?)ごとに桁を変えてその積の和を
総合点にしてみては?
例えば評価数10以上100未満ならば、
優=1000000000 × 優の数
良=10000000 × 良の数
・
・
・
悪=1 ×悪の数
この和が総合点。
>>374 とりあえずVBA使わないと無理。VBA使えばできるよ。
セルに値を入力したときに、(男)ってついてたらそれを削除する。
>>374 表示したくない部分のフォントの色をバックと同じにする。
378 :
名無しさん@そうだ選挙にいこう:2006/03/03(金) 07:50:03
379 :
169:2006/03/03(金) 08:12:54
もう一度質問させてください。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
1ページ目に表を作って、一部分に入力規制とロックを設定しています。
2ページ目以降にも同じ表をコピーして使っていきたいのですが、
形式をコピーして貼り付け → 入力規制の項目が選べません…。
2ページ目以降の入力規制の設定を手動でしなくてすむ方法を
教えてください。
お願いします。
>>376 リスト側の表示され方はそうでも
選択して入力する側は、書式設定無効になるよ。
当方EXCEL2002
>>380 ? 当方も2002だが
If InStr(Target.Value, "(男)") Or InStr(Target.Value, "(女)") Then
Target.Value = Left(Target.Value, Len(Target.Value) - 3)
End If
みたいなやり方でできんか?
「太郎だけ表示する」というより「太郎だけ入力する」やり方だが
ごめん、>380は
○
>>377 ×
>>376 でした。
VBAなら可能。
377が一般機能で話してるなら無理ぽ、ということでした m( )m
383 :
名無しさん@そうだ選挙にいこう:2006/03/03(金) 15:10:30
>>367 =IF(MOD(A1,13)=0,"13の倍数に決まってんだろ!","13の倍数じゃねーよ!")
384 :
名無しさん@そうだ選挙にいこう:2006/03/03(金) 15:20:27
>>379 入力規制ってなに? 入力規則のこと?
それと、1ページ、2ページってのは同一Sheetの中ってこと?
385 :
379:2006/03/03(金) 17:13:54
>>384 すみませんでした。
入力規制ではなく、入力規則でした…。
それと、2ページ目以降も同一Sheet内です。
説明が不十分でごめんなさい。
よろしくお願いします。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
A列に部署、B列に氏名、C列に住所(市区町村のみ)が書かれたデータがある。
ただし、A列はセルの結合により同名の部署が一つに纏められている。
この時、セルD1に住所を入力してそれに一致する部署・氏名を全て抽出するには、どうしたらよいものだろうか。
出力は、E列には部署、F列には氏名を、抽出した人が縦に並ぶようにしたい。
わかり辛いだろうがこんな感じ、ずれたらすまん。
A B C D E F
1 逢沢 一郎 つくば つくば 営業 逢沢 一郎
2 海部 俊樹 柏崎 営業 平 将明
3 営業 斉藤 斗志二 茅ヶ崎 開発 橋本 聖子
4 __ 平 将明 つくば
5 中川 雅治 柏崎
6 開発 橋本 聖子 つくば
7 真鍋 賢二 芦屋
結合を解除して一人ひとり部署名をつけてから出直して来い。
シートを増やすにはどうすればいいんですか?
>>388 Shift+F11。
起動したときの枚数を固定するなら
ツール(O)→オプション(O)→全般タブの新しいブックのシート数(S)を変更。
391 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 00:33:06
音声ツールバーを表示させても、グレーアウトして機能しないのはなぜ? コントロールパネルの設定は完了したつもり。実際、コンパネではちゃんとしゃべる。
392 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 02:21:10
質問なんですが、月別のファイルがありまして、そのファイル名が日報1月分.xls、日報2月分.xls・・・となっております。
現在は3月分まであるのですが、新規ファイルでそれら日報ファイルの集計を作成したいんです。
そこで、ファイルをまたいで数値の合計や平均を出したいのですが、
数値を指定する際、日報○月分の○の部分をワイルドカードにするか何かで、
1月分〜12月分の中で現在存在するファイルのみを指定する書き方はあるのでしょうか?
4月になれば4月分も自動的に読み込む、というようにしたいのです。
マクロを使わない方法でそういう書き方がありましたら教えていただきたいです。
>>392 セルからファイル名とマッチする数字を読み取り、ファイル名として渡せばできるんじゃないの?
仮に読み取るファイルが:
file_0603.xls となっていれば
file_06 を固定させ、 03だけを変数として扱う。
あとはちょっとした仕組み考えれば逝けそうな気がするが。
394 :
392:2006/03/04(土) 12:27:45
>>393 レスありがとうございます。
それは考えたんですが、関数の数値1とか数値2とかに書く数式でセルのデータを読み取るようにしたい場合、
その書き方がわからないんですが、どのような書き方があるのでしょうか?
例えばfile_0603.xlsのSheat1のA1を指定する場合は下記ですが、
'[file_0603.xls]Sheet1'!$A$1
03の部分を例えば同ブック同シートのセルA1に入っている数字を指定したい場合、どのように書けばいいでしょうか?
なんで文字列をつなぐという発想が出てこないんだ?
'文字列' & 変数 & '文字列'
396 :
392:2006/03/04(土) 12:53:55
>>395 ありがとうございました。
基礎を勉強したいと思います。
397 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 13:03:27
フォルダ内の全ブックを参照する関数ないですか?
ないよ。
399 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 13:07:08
ぶっほ
400 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 13:08:21
for関数ないですか?
VBAにはあるがワークシート関数は静的に値を返すだけなので
繰り返しとか分岐とかの概念は無い
あ、Ifはあるけど、あれはプログラム上の分岐とはちょっと違うので
へーすごいねー。ありがとねー。
404 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 15:12:14
自動で、ってのとはちがうけど、集計シートのどこか一角に「1月分」「2月分」って、どこまで集計しますってのを示す作業セルをつくって、
計算式にはindirectつかえば、そこで選択した月まで集計する、って感じでできるんじゃないか?
=sum('1月分:****',a1)の****の部分を変数とする感じかな。
いま手元にExcelパソコンがないので検証できないけど。
405 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 15:48:19
質問があります。
Aの列に日付があって、その日付毎の売上がBの列にあって、Aの列の特定曜日だけのBの列の売上を合計するにはどう書けばいいでしょうか?
408 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 16:17:44
>>406 ありがとうございます。
WEEKDAYとSUMIFの組み合わせで出来そうなんですが、SUMIFの検索条件に『WEEKEND=0なら(日曜日なら)』というのを指定する方法がわからないのですが、どう書けばいいでしょうか?
WEEKEND(A1)=0
とかでいいんじゃないの?
WEEKENDじゃねえやWEEKDAY
411 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 16:28:30
>>392 ・4月以降の分もダミーのファイルを作っておく。
・集計するセルでは1〜12月分全てを計算するようにする。
単純にこれでいいんじゃないかと思う。
ところで、そもそも日報を月別ファイルにする必然性ってある?
>>408 WEEKDAYの結果を出す列を追加して、その列にSUMIFの検索条件摘要すればいいやん
>>411 ファイルが小さくなる、誤って過去の記録を消す危険が1ヶ月以内におさえられる、など
必然性ではないが現場の都合はいくらでも思いつく
現場の都合と、後になってからデータ整理が容易なことを合致させるのは難しいけどな
414 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 16:51:07
WEEKEND禿ワロス
415 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 17:17:02
>>409 ありがとうございました。
しかしそれでは何も起こりませんでした。
417 :
名無しさん@そうだ選挙にいこう:2006/03/04(土) 17:21:47
>>416 ありがとうございました。それではありがたい
>>412の方法でやります。
ありがとうございました。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか、回答の可否 .】 はい
Do Until EOF(Fd)
Line Input #Fd, Moji
Hai() = Split(Moji, ",")
For Count2 = 1 To RowNo
A = Cells(Count2, 1)
If Hai(1) = 30 Then
If A = Hai(0) Then
Set tgtrange = Worksheets("日付").Cells(count2, 9)
tgtrange.Value = tgtrange.Value + Hai(8)
End If
End if
Next
For Count = 0 To UBound(Hai())
Application.Sheets("日付").Cells(Row, Count + 1) = Hai(Count)
Next
RowNo = RowNo + 1
Row = Row + 1
Loop
配列を読み込み、読み込んだファイルがCSVなのでカンマで区切った後、配列に格納。
その配列(1)の中身が「30」だったら今までセルに書いた配列の内容を
見てAの条件も満たしたら、そのAと同じ内容が書いてある行の
9列目に配列の(8)のないようを上書きするって内容なのですが、
これを直前にセルに書いた内容を見るのみにし、もし条件が全てあっていれば
セルには書き込まない。
あっていなければ、今見た行のすぐ下の行に配列の内容を書き込みたいんです。
どなたかアドバイスお願いします。
【1 OSの種類 .】 Windows XP Pro SP2
【2 Excelのバージョン 】 Excel2003
作成した表をhtmlで保存すると、アイコンがいつものhtmlとは違ったアイコン
になっています。
IEでWEBページを保存したときと同じアイコンにしたいのですがどうすればいいですか?
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 オートフィルタ (拡張OR応用)OR(コンボボックスORテキストボックス)
オートフィルタによって生成されるリストボックス型の選択をセル入力による選択に変更したいのですが、
どのような関数を利用したらよいのでしょうか。
よろしくお願いします。
他スレで質問したところスレ違いだったらしく
「空気を読め」とお叱りを受けこのスレに辿りつきました。
初歩的な質問で申し訳ないのですがどなたかご解答願います。
セルA1の文字列『AAA』とB1の文字列『BBB』を
間に『改行』を入れて結合させたくて、
『=A1&CHAR(10)&B1』と入力したのですが、
表示させる値は『AAABBB』と改行が入っていません。
Alt+Enterで改行を入れたセルをCODE関数の引数に指定すると
値が『10』だったので、CHAR関数の引数に指定してみたのですが…
エクセルで、文字列と文字列を改行を入れて結合させることは出
>>420 ワークシート関数にそういうものは無いな
VBA使えばどうにでもなるが、もうちょっと具体的じゃないと
コードは書けないし書く気にもならない
>>421 セルの書式設定で、「折り返して全体を表示する」にチェックいれろ
Alt+Enterで改行した場合は自動でこれにチェックが入るが
式の中にCHAR(10)を入れても、このチェックは自動では入らない
チェックが無ければAlt+Enterで改行コードを入れようと
CHAR関数で改行コードを入れようと改行表示はされないからな
423 :
名無しさん@そうだ選挙にいこう:2006/03/05(日) 12:37:23
【1 OSの種類 .】 WindowsXPSP2
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
エクセル初心者です。
データの入っているセルと空白セルを一緒に別のシートにコピペした後
そのシートを印刷すると空白セルまで印刷範囲に指定されてしまいます。
データの入っているセルのみを自動で印刷範囲にする方法ありましたら教えてもらえませんか?
424 :
421:2006/03/05(日) 13:08:30
書き忘れました
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002 2003 (両方で試しました)
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】否
【5 検索キーワード 】CODE CHAR 改行
残念ながら、それだけだと勝手には改行してくれないんですよねぇ。
セルの書式設定>配置>折り返して全体を表示する
にチェックを入れておくと改行されます。
>>423 再現しないけどな、それ。
空白セルだと思ってても、書式の設定を変更してるとか
なんかないかい?
>>423 印刷範囲はデータが入力してある範囲ではなく使用範囲
使用範囲は文字列や数値の入力だけでなく
書式の変更を行ったセルも使用範囲となる
文字色を変更して、文字を入れなければ見た目は何もないように見えるが
Excelの判断上は使用範囲に入る
428 :
名無しさん@そうだ選挙にいこう:2006/03/05(日) 21:35:33
Excel2003
印刷プレビューをしてそれを閉じると、
入力画面に点線が表示されるようになりますよね。
どのセルまでが1枚に印刷されるかの範囲を示す点線のことです。
あれを消したいのですが、どのような操作をすればいいのでしょうか。
「ファイル」→「選択範囲」→「選択範囲のクリア」かなあと思ってやってみたのですが
違ったみたいで…
>>428 ブックを閉じて、再度開く。 と、点線は消えてるよ。
一回プレビューしたら、開きっぱなしのうちは消えないよ。
430 :
428:2006/03/05(日) 21:45:22
消えました!
ありがとうございます、助かりました。
431 :
430:2006/03/05(日) 21:56:51
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】かじりたて
【4 VBAでの回答の可否】 OK
【5 検索キーワード 】セルの書式 フォーム
フォームに商品の数量・単価等を入力すると
自動で合計計算・セルに書き込み・罫線を引くというのに初めてチャレンジ中です。
単価の部分で小数点第1位のものがあるので、数字の変数は通貨にしました。
ところが、例えば「100」とフォームに入力すると
セルには「\100.00」と記入されます。「\」と「.00」は要らないのですが
表示されてしまいます。numberformatで指定してみましたがダメでした。
たぶん初歩的な問題なのでしょうが、皆様の知恵を貸してくださいませ。
あと、一応確認なのですが、integerやlongでは小数点の計算とかはできないんですよね?
432 :
428:2006/03/05(日) 22:05:14
430は自分なんですが…
433 :
430改め431:2006/03/05(日) 22:22:41
>428
すいません、書いてるあいだにずれちゃいました。
>>431 > 自動で合計計算・セルに書き込み・罫線を引くというのに初めてチャレンジ中です。
そのレベルだと、最初から全部VBAでやるのはきついと思いますよ。
合計計算は関数、罫線は条件付き書式でシートに埋め込んでおいて、セルに書き込みだけVBAで作ったら。
わかってきたら罫線などもVBAに移行すればいいですし。
> numberformatで指定してみましたがダメでした。
NumberFormatLocal じゃなかったかな。
> あと、一応確認なのですが、integerやlongでは小数点の計算とかはできないんですよね?
はい、できません。
通貨なら Currency にすれば小数点以下4桁まで確保できるから大丈夫でしょ。
435 :
431:2006/03/05(日) 23:24:32
>434
ありがとうございました。何とかなりました。
自分の買った初心者向けの本にはnumberformatまでしか載ってませんでしたorz
あと単純なミスも何点かありました。
VBA勉強しはじめたらハマっちゃいまして、合計計算・罫線引きは出来ました。
っていうか仕事を犠牲にしていたため、その分仕事が山積みです。
でもこれで自分の仕事用には一通り何とか完成したので、スムーズにできそうです。
今回はどうもありがとうございました!
エクセル2003
たとえば
abc,
def,
と上下に2つセルがあってその中に文字があるとします。
これを1つのセルにまとめたい。
簡単な操作方法ありませんか?
あと1つのセルに直接書き込むとして1つのセルの中で
次の段落にいくための操作方法があったと思いますが
どうすればいいんでしたっけ?
437 :
名無しさん@そうだ選挙にいこう:2006/03/06(月) 10:57:49
すいません、教えてください
Excelの列は一番最後は「IV」で終わり
なんでしょうか?
これ以上増やすことは
できないんでしょうか?よろしくお願いしますm(_ _)m
438 :
名無しさん@そうだ選挙にいこう:2006/03/06(月) 11:12:10
初歩的な質問ですみませんがよろしくお願いします。
エクセルを起動するとブックが開いてくれなくなりました。真ん中がグレー
のままです。「ファイル」から「開く」で選択すれば開けますがとても面倒
です。どなたかおしえてください!
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 ブックが開かない 起動
441 :
名無しさん@そうだ選挙にいこう:2006/03/06(月) 12:18:37
質問させて下さい。
セルを結合せずに選択した範囲内で文字を中央に揃える方法が
あったように思うのですが、操作方法を教えて頂けますか?
443 :
名無しさん@そうだ選挙にいこう:2006/03/06(月) 15:19:16
質問です。
特定のセルに値が入力されている場合(空でない場合)、その値の修正の際に警告
メッセージを出す方法というのはありますか?
修正禁止まですると不都合で、警告メッセージさえ出せればいいのですが。
入力規則でメッセージだけ設定
445 :
名無しさん@そうだ選挙にいこう:2006/03/06(月) 15:30:44
>>444 レスありがとうございます。
入力値の種類を「すべての値」にして、エラーメッセージを入力するということですか?
でも、これだと、どんな値を入力してもエラーになりませんから、肝心の警告メッセージ
が表示されないのですが……。
書き忘れましたが、Excel2000です。
446 :
445:2006/03/06(月) 15:38:29
>>444 あ、「入力時メッセージ」にメッセージを入れるということですか。
確かに「セルの選択時にメッセージを表示する」にチェックを入れておけば、値が入っている
セルを選択した際にはポップアップが出て、空白のセルを選択した際には何もでませんね。
私はダイアログが表示されるものを期待していたのですが、しかし、これでも使えると思います。
どうもありがとうございました。
447 :
445:2006/03/06(月) 15:40:18
ぶ……
>>446の書込みは全部忘れてください。
ちょっとした勘違いからデタラメなことを書いてしまいました。
448 :
445:2006/03/06(月) 15:49:51
例えば、「入力時メッセージ」でも「エラーメッセージ」でもいいのですけれど、
値が入っているセルを選択(あるいは修正)した際にはポップアップ(あるいはダイ
アログ)が出て、空白のセルを選択(あるいは修正)した際には何もでないというふう
にしたいわけです。
VBA使うのがいいと思うよ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Value <> "" Then
MsgBox "このセルには値が入力されています。"
End If
End Sub
みたいな感じで
450 :
445:2006/03/06(月) 16:53:36
>>449 あ、なるほど、どうもありがとうございました。
COUNTIF使って
"0"が入っているセルと
"00"が入っているセルを
別々に数えたいんですが
「=COUNTIF($A:$A,"00")」
「=COUNTIF($A:$A,"0")」
とやると、どちらも0と00が入ったセルの合計が出てしまいます。
ちなみに上の例でA列の表示形式は文字列にしてあります。
解決法はありますでしょうか?
>>441 セルの書式設定を見ろ
>>1★4に従ってないのであとは自分で探せ
ちなみにバージョンによっては無いものもある
>>451 a) LEN関数を組み合わせて配列数式
b) VBAで判断(.valueでも.textでも"00"と"0"を区別できる)
お好きな方をどうぞ
ちなみに
>>1★4に従ってないので、具体的な数式やコードは
教えないから自分で調べな
>>451 ってか数字じゃなくていいなら、0と00をOとOO ( アルファベットのオーね ) にでも変えたら?
その方が簡単 w
454 :
名無しさん@そうだ選挙にいこう:2006/03/06(月) 20:30:41
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 軽く
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel セル 連結
A
1 あいう
2 えお
3 かき
4 くけこ
5 さし
6 すせそ
A2の文字列をA1の後ろに切り取り貼り付けして
2行目を削除したいです
以下同じような感じで、最終的に
A
1 あいうえお
2 かきくけこ
3 さしすせそ
にしたいのですが、何かいい方法はないでしょうか?
検索してもいい回答が見つかりません・・・よろしくお願いします。
A B C
1 あいう
2 えお あいう =A2&B2
3 かき えお
4 くけこ かき =A4&B4
5 さし くけこ
6 すせそ さし =A6&B62
7 すせそ
ってやった後にC列を自身の上に値として貼り付けてソートすればできるよ
456 :
455:2006/03/06(月) 21:20:27
失礼、AとB逆だった
あとソートのキーつけたほうがいいか
A B C D
1 あいう 0
2 えお あいう =B2&A2 1
3 かき えお 0
4 くけこ かき =B4&A4 2
5 さし くけこ 0
6 すせそ さし =B6&A62 3
7 すせそ
とか適当にD列にキーいれてそれでソートすれば元の順番保てる
というかB列いらないけどな
C列を=A1&A2とかにすれば十分
458 :
名無しさん@そうだ選挙にいこう:2006/03/06(月) 22:10:12
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 軽く
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel 重複 別のbook 抽出
Aファイル
A
1 名前 N1 N2 N3 N4
2 ああ 01 A B ×
3 いい 02 A C ○
4 うう 03 C D ○
Bファイル
A
1 名前 N1 N2 N3
2 ええ 06 B B
3 いい 02 A C
4 うう 03 C C
5 おお 04 C C
この二つのファイルから
まずE列(AファイルのN4列)から○の項目だけ抽出しさらに
C列(N2の列)とD列(N3の列)が一致しているものだけを別のエクセルファイルに抽出したいのですが
○の項目だけの抽出は当たり前ですができたのですが後者の抽出がうまくいきません。
結果が以下になるようになればと思ってるのですが。
A
1 名前 N1 N2 N3 N4
2 いい 02 A C ○
よろしくお願いします。
問題にしてるフィールドを単に連結 (例えば= A1 & C1 & D1) して比較したら?
>>441 セルの書式設定>配置>横位置>選択範囲内で中央
461 :
名無しさん@そうだ選挙にいこう:2006/03/07(火) 08:48:27
エクセル2003を使っています
1000人くらいの人の名前がセルに書き込まれています
その中からたとえば「田中」という人のデータをさがすには
どーすればいいですか?
>>461 どういう風に探したいのかが謎。
例:A列に名前が入力されているとして…
1、「田中」の数を数えたい
=COUNTIF(A:A,"田中")
2、「田中」をコードと扱って、B列、C列の情報も抜き出す
※「田中」と入力するのがシート〔リスト〕のA1として
=VLOOKUP(A1,リスト!A:A,2,FLASE)
3、単に「田中」を抽出したい
→オートフィルタを設定
463 :
461:2006/03/07(火) 09:21:15
>>462 2、の書き方間違えた
名前がズラリ入力されているシートが〔リスト〕
「田中」と入力するのが別シートのA1
と言う事で
465 :
名無しさん@そうだ選挙にいこう:2006/03/07(火) 11:57:12
441です。
452・460の方、ご回答有難うございました。
466 :
名無しさん@そうだ選挙にいこう:2006/03/07(火) 12:29:20
>>461 単に苗字だけが入っているんなら問題ないが
氏名両方とも入っているんなら難しいな...
「田中」で検索すると、「田中山」も「大田中道」なんてのも拾っちゃうし
467 :
名無しさん@そうだ選挙にいこう:2006/03/07(火) 14:06:29
さんくすです
468 :
名無しさん@そうだ選挙にいこう:2006/03/07(火) 14:08:05
461=467です
469 :
名無しさん@そうだ選挙にいこう:2006/03/07(火) 14:21:49
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 不可
【4 VBAでの回答の可否】 不可
【5 検索キーワード 】 Excel 関数 月 平均
一ヶ月の腹筋運動回数の表を作ろうとしているのですが、月のある日における
月末の目標合計数値までの平均回数を出すにはどのようにすればいいのでしょうか?
よろしくお願いいたします。
(月末の目標合計数値-現在までの合計)/残り日数
EXCELより算数の問題のような
>>470 ありがとうございます。なんとかやってみました。
>>471 ありがとうございます。本格的ですね。でもなんか数値入れると計算がおかしいような…。
473 :
名無しさん@そうだ選挙にいこう:2006/03/07(火) 16:41:46
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 エクセル テキストボックス 全部選択 削除
どなたか、エクセル2000で、ファイルの中の
テキストボックスのみを全部削除してくれるマクロ?
をプログラムしてください。orz
変数の繰り返しループみたいなので何とかなりませんか?
テキストボックスが万近くになってるみたいで・・重いorz
474 :
471:2006/03/07(火) 16:48:53
>>472 平均の小数点を切り上げで計算していますので、それかもしれません。
>>473 テキストボックス以外の図形もありますか?
>>473 先に置いときますね。目的のシートで実行して下さい。
ちなみにコレだと、ワードアートや画像などすべての図形が消えます。
Sub 図形削除()
Application.ScreenUpdating = False
ActiveSheet.Shapes.SelectAll
Selection.delete
Application.ScreenUpdating = True
End Sub
477 :
473:2006/03/07(火) 17:22:02
>>475 いいえ。ありません。
>>476 ありがとうございます。
シートをコピって試してみます。
ありがとうございました。
478 :
473:2006/03/07(火) 17:51:07
>>476 OKっぽいです。
ありがとうございました。
途方に暮れていたので大変助かりました。m(_ _)m
そもそもテキストボックスを作成すらした記憶がないのですが
これって勝手にできて増えちゃったりする事があるんでしょうか?
479 :
名無しさん@そうだ選挙にいこう:2006/03/07(火) 17:54:49
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 否
ファイル名「Book1.xls」にワークシート「Sheet1」と「Sheet2」があって、
「Sheet1」のセルA1に値「1」、「Sheet2」のセルA1に式「=Sheet1!A1」と
記入してあります。
「Book1.xls」の「Sheet2」のA1をコピーして、ファイル名「Book2.xls」のワークシート「Sheet3」に
貼り付けすると「=[Book1.xls]Sheet1!A1」となってしまいます。
[Book1.xls]が付かないように貼り付けるにはどうしたらいいですか?
数式バーでコピーしてペースト
>>479 コピー後に出来る対処では…Book2で
〔編集〕-〔リンクの設定〕-〔リンク元の変更〕
でBook2に指定すればOKです。
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 関数 値 セルの塗りつぶし
数人から十数人が各自のPCで使うためOS,バージョンが別々です・・・
A1の数字が
100から149の間はセルの色を黄色
150以上はセルの色を赤色
このような感じで出てくる値によってセルの色が塗りつぶされるにはどうしたらいいのでしょうか?
>>482 〔書式〕-〔条件付き書式〕で
条件1
セルの値が 次の値の間 100 149 → 背景色黄色
条件2
セルの値が 次の値以上 150 → 背景色赤色
を設定すればOKです。
484 :
482:2006/03/07(火) 18:37:50
485 :
479:2006/03/07(火) 18:38:03
>>480 シートを丸ごとコピーするんで・・・。
>>481 うまくできました。ありがとうございました。
30桁のDPBとその文字おしえて
Drive Parameter Block? そんなローレベルアクセスやめとけ
489 :
名無しさん@そうだ選挙にいこう:2006/03/08(水) 01:59:40
現在2002と2003の二つがはいってるんですけど、ファイルを開くと自動的に2003が起動してきます。
2003を使用不可にして常に2002で起動する、と設定することは可能でしょか?
使用不可にするならアンインストールで良し
人からもらったシートですが、特定のセルにフォーカスすると、
「ここに何を入力」とかのコメントがポップアップされて、煩くてかないません。
これはどうやれば削除できますか
>>491 アクティブセルになると って意味でいいんですかね?>フォーカス
入力規則が設定されていますので
〔データ〕-〔入力規則〕 の〔入力時メッセージ〕タブで
タイトルとメッセージの文字を消せばOKです。
セルの右上に赤い印があるのコメントなら
右クリック→コメントの削除です。
>>482 文字色だけでも良いなら
セルの書式設定→表示形式 ユーザー設定 で、
[<100]0;[赤][>150]"危""険" 0;[黄]"注""意" 0
ってやってみるのも良いかも(多少はファイルが軽くなる?)
危険だの注意だのはいらないとは思いますが^^;
>>472 昨日サンプルのデータを作った者ですが
平均回数を算出する数式、確かに間違っていますね。
最後の方の数式ですが
ROUNDUP((G8-SUM(腹筋回数))/G9),0)
コレだと何日腹筋しても末日(31)で平均してしまいます。
正しくは、
ROUNDUP((G8-SUM(腹筋回数))/(G9-COUNT(腹筋回数)),0)
ですね。失礼致しましたですm(__)m
496 :
名無しさん@そうだ選挙にいこう:2006/03/08(水) 16:51:59
すいません、質問です。
例えば、計算結果をすべて小数点以下切り上げにしたい場合、
ROUNDUPとIFという関数を使った数式はどのように出すのでしょうか?
>>496 >計算結果をすべて小数点以下切り上げにしたい
上記は、Roundupのみで式が成り立ちます。
Ifは必要ありません。
Ifが必要なら、何をしたいのかを書いてください。
=ROUNDUP(計算式,0)
↑これで小数点切り捨て
0の部分を-1や1等に変えれば、切り捨てる位が変わる。
499 :
496:2006/03/08(水) 19:37:26
500 :
名無しさん@そうだ選挙にいこう:2006/03/08(水) 20:16:47
楽天証券のRSSでリアルタイムに動く株価ボードをエクセル上に作っています。
ソート機能で株価の高い順に並び換えたいのですが、
自動計算をしている最中に並び換えて不具合になりませんか?
> 自動計算をしている最中に並び換えて不具合になりませんか?
やってみればいいじゃん。
やってみて不都合が出て、自分で対処できなかったらそのとき初めて聞きに来い。
自分で試す、自分で考えるってことが出来ない子が増えてるのもゆとり教育の弊害かねぇ。
502 :
名無しさん@そうだ選挙にいこう:2006/03/08(水) 21:09:13
EXCELファイルを指定し、VBAソースをすべて自動でエキスポートする処理って可能ですか?
>>502 可能ですよ
VBAはVBAからVBAプロジェクトにアクセス出来るようになってますから
>>1★4に従ってないので、具体的な方法は自分で調べな
すみません。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
住所録の整形印刷を考えています。
シート1 (印刷テンプレ)
住所録 xx/304
+------+------+----------+
|名前 |電話 |住所 |
+------+------+----------+
| | | |
+------+------+----------+
| | | |
+------+------+----------+
シート2(リスト)
山田太郎 123-456-7890 ×県○市 1-1
(中略)
森田次郎 987-654-3210 △県□市 1-4-7
このような感じで印刷時に項目を自動で埋めて
必要なページが印刷されるようにしたいのですが、
エクセルを使うのは初めてで足がかりすらつかめません。
マクロが必要でも結構ですので、最初の一歩になりそうな情報教えていただけませんか?
それはそのままシート2を印刷するのと何が違うのですか
下記にようにして、パスワードを入力したらA1セルに233という数値を入力したいのですが、
できないっす。
どうやればいいでしょうか?
Private Sub CommandButton1_Click()
Const mypwd = "abcde" '---パスワード
Dim pwd As String
pwd = InputBox("パスワードを入力してください。")
If pwd = mypwd Then
Unload Me
UserForm1.Show vbModeless 'フォーム名
Else
If pwd = "" Then
Range("A1").Value = 233
Else
MsgBox "パスワードが違います。", vbCritical
Exit Sub
End If
End If
End Sub
とりあえずパスワードを入力しなかったら
233と表示するプログラムになっているように見えるが
すんませんですた・・・orz
間違いに気がついたところで。
今はシートにコマンドボタンをおいてユーザーフォームが立ち上がるようにしてるんですけど、
このユーザーフォームをツールバーかなんかに組み込む方法ってどうやればいいですか?
Excelの[ツール][ユーザー設定][コマンド][マクロ][ユーザー設定ボタン]を
ツールバーの好きなところにドラッグ&ドロップで追加する
で、標準モジュールに
Public Sub ShowForm()
Form1.Show
End Sub
みたいなプロシージャを作っておいて
さっき追加したボタンを右クリックして[マクロの登録]で設定する
かぶったか
ども、お二人ありがとうございました。
ところで、この登録したツールボタン。
別のパソコンでこのファイルを開いたときには自動的に登録されているものなんでしょうか?
>>514 〔ツールバー〕のタブでユーザー設定1を選択、〔添付〕する事で
ブックにツールバーが記録されます。
こうすれば、他のパソコンで起動させてもツールバーが出てくるはずです。
517 :
名無しさん@そうだ選挙にいこう:2006/03/09(木) 12:10:58
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
縦列(A列)を検索して、該当する担当者が入力されている行すべてを抽出して、
別シートに貼り付けたい。複数行に渡る可能性があるため、2件目以降は2行目に複写したい。
For aaa = 1 To 10
If Cells(aaa, "A") = "担当者" Then
Worksheets("貼り付けたいシート").Activate
貼り付ける関数?
Worksheets("検索するシート").Activate
Else
End If
Next aaa
関数部分がわかりません。ご教授お願いします。
>>517 抽出後の所に書いて下さい。
Sheets("コピー元のシート").Select
Cells.copy
Sheets("コピー先のシート").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
>>517 ちなみに↑のだと、シート全体がコピーの対象になっていますので
範囲が決まっているのでしたら
Cells.Copy
^^^^^
ここを指定し直して下さい。
520 :
517:2006/03/09(木) 12:46:44
TEIOUさん、ありがとうございます。
Cells(aaa,"A")Copy
これでAxの単一セルはコピーできるのですが、範囲の場合()内はどのような記述になるのでしょうか?
Cells(aaa,"A":aaa,"B")Copy ではできませんよね?
521 :
517:2006/03/09(木) 13:54:02
520の件、自己解決しました。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】エクセル 日付 表示形式
A1には日付を入力して、A2はA1の日付を表示したいのですが、A1に日付が入ってるときは
正常に表示されるのですが、A1が空白のときはA2に明治33年1月0日と表示されてしまいます
表示形式をいろいろいじったのですがうまくいきませんでした
どうしたらいいでしょうか
IFとISBLANKで処理
表示形式でやるなら
yy/mm/dd;#;"";@
みたいな感じに
>>523 即レスありがとうございます
うまくいきました
525 :
名無しさん@そうだ選挙にいこう:2006/03/09(木) 15:54:32
グラフを表示させる際、項目の値が0である場合、その項目を表示させないようにできますか?
Excel2003のWebクエリで「1:2」というセルを取り込むと
時刻として扱われてしまいます(1:02となる)
これを「1:2」という文字列のまま取り込むことはできますか?
(日付の場合はオプションの「日付認識を無効にする」で解決するんですが)
527 :
名無しさん@そうだ選挙にいこう:2006/03/09(木) 22:08:32
セルに並べ替え用のボタンを作るにはどうしたら良いでしょうか?
前に見かけたことがありましたが、確か「▼」ボタンでした。
そのボタンを押すと、その列が優先され表全体が並べ替えられるというものです。
528 :
527:2006/03/09(木) 22:14:16
失礼しました、うっかり忘れていました。
Windows2000上でExcel2000を使用中です。
>>527 VBAで出来るよ
VBA使えるかもVBAの可否も書いてないので、
>>3★に従い
VBA可で、VBA使いこなせると勝手に解釈し、具体的なアドバイスは控えるね
あとは自分でがんばろう
【1 OSの種類 .】 Windows 2000
【2 Excelのバージョン 】 Excel 2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 入力規則 警告メッセージ
「入力規則」でリストを使用しています。
そのリストの一つを選択すると「この項目を選択した場合は○○の作業を行ってください」
とメッセージを表示させたいのですが、
警告メッセージは「無効なデーターを入力した場合」のみ表示させることができるようです。
リストから選択すると「無効なデータ」とならないようです。
どうやって表示させればいいでしょうか?
お知恵がある方よろしくお願いします。
【1 OSの種類 .】 WindowsXP Pro
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 できたら使わない方法で。無理なら可。
絶対値の異なる複数のものの騰落状況をグラフに表示したいと思っているのですが、
良い方法は無いでしょうか?
各要素ごとに一定の補正定数を設定して表示していたのですが、ある程度の時間が
経過すると上のほうに張り付くものと下のほうに張り付くものの二つに分かれてしまいます。
1年分のデータがあってそのうちの一ヶ月間だけでも上や下にデータが張り付かないようにしたいのですが、
いい方法がなくて。。。
データの内容は株価で10個ぐらいの銘柄をひとつのグラフに表示しようとしています。
>>531 入力時メッセージで
>>532 何をしたいのか良くわからないけど「補正定数」を一定にせず各々移動平均で求めるとか
534 :
531:2006/03/10(金) 01:58:51
お返事ありがとうございます。
できればリストからある項目を選んだときのみにメッセージ表示をさせたいと思っています。
入力規則や関数だけを使っていてはどうもできないような気がしてきましたので、
今VBA手打ちで
Sub
Msgbox"Aを選んだのでBを入力してください"
Subend
という子供だましみたいなマクロを一つ作りました。
リストからAという項目を選択した場合、このマクロを実行させることはできるのでしょうか?
(なにかこれに付け加えればいいのでしょうか?)
なんども申し訳ありません。
535 :
名無しさん@そうだ選挙にいこう:2006/03/10(金) 02:22:36
【1 OSの種類 .】 MacOSX 10.3
【2 Excelのバージョン 】 Excel2004
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
SUMIF関数の検索条件を複数指定する方法を教えてください。
現在家計簿を作っています。
日付け付きで入力するシートと、月別のシートで分けています。
そこで日付が2006.1.1〜2006.1.31までなら1月の合計セルに
加算したいと考えています。
具体的に以下のようなことがしたいです。
=SUMIF(日別!B4:B6000,"AND(>2006.1.1,<2006.1.31)",日別!C4:C6000)
日別!B列は日付の入力欄
536 :
名無しさん@そうだ選挙にいこう:2006/03/10(金) 08:41:25
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 なるべく標準機能で対応したいです
グラフを表示させる際、項目の値が「0」である項目に関してはグラフに反映させないようにできますか?
つまり値が「1」以上ある項目のみをグラフに反映させたい。
537 :
名無しさん@そうだ選挙にいこう:2006/03/10(金) 09:27:39
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 可
【4 VBAでの回答の可否】 否
A B
1 足 10
2 手 5
3 顔 8
4 足 7
5 手 9
6 口 4
上のデータからA列の項目ごとに7以上の個数を求めるようにしたい場合
どうすれば良いのか教えてください。
A B
50 足 2
51 手 1
52 顔 1
53 口 0
こんな感じにしたいのです。
>>537 C列に
=IF(B1>=7,A1,"")
でも入れて、C列をカウントすればいいのでは。
>>534 > なにかこれに付け加えればいいのでしょうか?
Ifかselect case(他にも方法はあるけど条件分岐の基本はこの二つ)
使い方はVBAヘルプに載ってる
540 :
名無しさん@そうだ選挙にいこう:2006/03/10(金) 12:02:01
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 Excel 空欄 平均
.......A.......B.......C
1...............a.......b
2.....101...1...... 3
3.....101........... 3
4.....101...3
5.....102...1.......3
6.....102............4
7.....102...3.......2
こういう表があって、A列の数値を拾って違うシートに平均を出したいんだけど
.......A.......B.......C
1...............a.......b
2.....101...2...... 3
3.....102...2.......3
こっちのシートのB2にはどういう式を入れたらいいでしょう?
実際の行数は2000くらいあります。
>>540 配列数式でやるか、SUMIFをCOUNTIFで割るかかな
ただ、平均としか書いてないけど、単純な平均ではなく、
有用数値内平均を出したいようなので、そうなるとちょっと面倒
(「 1 , 空 , 3 」の平均は、合計4/件数3=1.33ではなく、合計4/有用数値件数2=2としたいなら)
まあ配列数式なら条件が一つ増えるだけだがな
SUMIF/COUNTIFの方だって出来ないわけじゃないし
まあがんばれ
542 :
540:2006/03/10(金) 12:34:26
>>541 すいません、配列数式だとどんなふうになるのでしょうか。
SUMIF/COUNTIFだとおっしゃるっ通り、未回答の人数も含めて割ってしまうのです。
>>542 条件はA列の値と、B,C列が<>""であることなので
IF関数でこれらの論理積を条件とし、真の場合は1、偽の場合は0を返して
SUMで合計を出せば良い(論理値演算でもいいけど)
これで有用数値件数が出せる
合計の方は空欄の有無関係ないからSUMIFでもいいし、上記が出来れば配列数式で出すのも簡単だろ
あとはいきなり「俺のために式を書け」と丸投げせずに自分で調べて書こう
2,3日がんばってダメだったら、
>>2・8に従い自分で書いた式を貼ってアドバイスを求めな
ここは大甘スレなのでVBAの丸投げなんてとんでもないことが許容されてるが
さすがに数式の丸投げはやる気の無さの現れと見るしかないからな
544 :
名無しさん@そうだ選挙にいこう:2006/03/10(金) 14:01:45
>>538 ありがとうございます。
なんとかできました。
545 :
名無しさん@そうだ選挙にいこう:2006/03/10(金) 18:36:09
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 ちょっとだけ
【4 VBAでの回答の可否】 可
確定申告用にExcel使っているのですが1シート目に全部の仕訳を打ち込んだんですね。
そこから出納帳とかのシートを新たに作成して分別したいのですが、
将来的なことも考えて自動化出来ないかと。
つまり勘定科目の「現金」が1シート目にあったら
現金用のシートに自動で勘定科目と金額が転載されるような感じです。
条件関係の関数を調べたのですが、
SUMIFみたいに条件を合計するのは見つかった物のコピーするような関数は発見出来ず。
これってVBAじゃないと無理ですかね?
ニートな俺は確定申告なんてしたことないし
どういうことしたいのかもよくわからんけど
ワークシート関数でコピーは不可能
VBA使うしかない
コピーじゃなく別の方法で、それと似たことを実現することは
可能かもしれないが、いかんせんどういうことをやりたいのか
よくわからんので
エクセルで
普通のSubとPrivate Sub の違いって何?
>>548 暗黙の了解ってやつでしょ。
PublicとPrivateの。書かないとどちらになるかは忘れたけど。
【1 OSの種類】 Windows XP
【2 Excelのバージョン】 Excel2000
【3 VBAが使えるか】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード】 両面印刷 excel
複数シートに分かれたブックを、ブック全体にわたって両面印刷する場合、
シートごとに1枚1枚プリンタオプションを「両面印刷」に設定しないと
いけない様なのですが...シートが何十枚もあり、めんどくさいです。
なんとか全部のシートを一括して「両面印刷」に設定する方法はないでしょうか?
どうもVBAマクロには対応するプロパティがなく、
APIを呼ぶ必要がありそうなのですが...
両面印刷はプリンタドライバの機能だから
エクセルVBAでは無理ぽ。
同じプリンタだけど、必ず両面印刷の設定の「プリンタ」をマイコンピュータのプリンタとFAX
で作っちゃえばいいんじゃない?
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい (簡単なものなら)
【4 VBAでの回答の可否】 可 (できれば否)
【5 検索キーワード 】 Excel 値 固定
セルの中に入ってる値を固定させるためにはどうすればよいでしょうか?
具体的にはたとえば10行10列程度のセルの値を
他のセルにコピーしたいのですが、
貼り付け先の一部のセルの値は、
貼り付け前後で同じ値を保持させたいのです。
宜しくお願いいたします。
マクロの記録で両面印刷設定したら何て記録される?
マクロの記録で作成されたプロパティ設定式について
すべてヘルプで確認してみましたが
両面印刷の設定は記録されてないっぽいです。
ツールバーの保存やメニューからの保存を選択実行した場合、
自動的にエクセルが終了するトラップみたいなものを仕掛ける方法って無いですか?
VBAでの回答OKっす。
_,.-‐"':" ̄~゙'ヽ、 __
_,---‐" ̄\ / ``ー‐-、 ノ \
/ ヽ ;" ) / \
/ ぐ 記 | / マクロ |ノ/ \
/ ら 録 | | )/.| ・ オ |
| .い で | | ,;';;,, /ノ | ・ レ |
| ・ き | |::::.................:::::::::;;,'^;、::::::'''..,,_;、丿 | ・ に |
| ・ な | /:::::::::::::::::::::::::::;"゙, /゙~゙`''::;'゙; | ・ だ. |
| あ い | `、;;::::::::::::::::;/ ),;' :.'.,、 | ・ っ |
| る 操 | ,へノ `'''''"´ .:; .:::_ヽ | ・ て |
| ・ 作 Y \ .::; ::::ゝ .| ・ |
| ・ ∧ \ ::::::、 .:;` | |
| ・ |ヽ丶 \;; :::;;;;::..,,、. ::i | |
| ・ | ` \;;;;/ `゙" \
>>557 ThisWorkBookのBeforeSaveイベント使えばいいんじゃね
560 :
名無しさん@そうだ選挙にいこう:2006/03/11(土) 00:37:33
OSはXPです。
エクセルで作ったファイルですが、
エクスプローラで見たら、
作った内容が勝手に表示されているものがあります。
善いと思うので、
過去に作ったファイルも
内容を表示させるにはどうすればいいのでしょうか?
>>554 Excel2002だけど、マクロ登録できてるよ。
まさか、いきなりツールバーの印刷を押してるんじゃないよね。
いくら両面印刷設定のプリンターを作っておいても
そこの印刷からは、「通常に使プリンター」にデータを送っちゃうよ。
562 :
554:2006/03/11(土) 10:51:20
>>561 ほんとに?
両面印刷に対応するプロパティ変数だけ教えてください。
>>550 皆さんもいってますが、所望の機能を決め打ちしたドライバを呼べばいいだけですよ。僕もシール印刷と普通紙印刷なんかを自動的に切り替えたりしています。
スマートにAPIとか使おうとするとなかなか大変なので、泥臭くドライバをそれ用にインスコするのが簡単かと思うのですが。
>>561の方法は分かりません。
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel 2003
ところであまりに基本的な質問なんですが、セルA1に「荻窪」と入力してリターンでA2に何かを入力したとします(A2がアクティブです)。
そのときA1を「西荻窪」に変えたいんですが、マウスでA1をダブルクリックしてインサーションカーソルをだして西、とか入力するしかないのでしょうか?
矢印キーでA1をアクティブにして上書き、は無しとして。
要するにマウスを使わず文字列の一部を変更したいのです。
いちいちマウスに持ち替えるのが苦痛で…。
A1アクティブにしたら、
F2 → Home → "西"
でOKでしょ
Homeの代わりに←←でもいいし、1行文字列なら↑でもキャレットを先頭に移動出来る
もしかしてF2で編集モードに移れること知らなかったのかな?
エクスプローラやレジストリエディタなどのWin標準ソフトでもF2は名前の編集モードへの移行だし
他のソフトでもWin標準ソフトとの互換性を持たせるためにF2を編集状態への移行に割り当ててるものは多いから
これを知らないとキーボード派はやっていけないと思うよ
566 :
名無しさん@そうだ選挙にいこう:2006/03/11(土) 12:56:19
XPで2003のバージョンを使っていますが、
関数を連続してコピーしたいのですが、数式はうまくコピーされても
自動で計算してくれません
具体的には
M6にK6のセルを0.2でかける
M7にk7のセルを0.2でかける
〜
ということをしたいのですが、上記のようになります。
今までは問題なかったのですが。
どうすればいいのでしょうか。
「具体的には」と書きながら、具体的なことは何も書かないあたりが素敵だね
実際の数式("="から始まる式)や、コピーの方法(相対コピペやフィルコピーなどいろいろ)、
自動計算設定の状態など、書くべき事はたくさんあるのに。
フィルコピーは最後の数字しかインクリメントしてくれない癖があるから
=k6*0.2
じゃなくて
=0.2*k6
とかやればいいんじゃないかと思った。試してないけど。
569 :
564:2006/03/11(土) 14:20:07
>>565 うわー!
これでほんとにラクできます。素晴らしいです。
ありがとうございました。
>>567-568 助言ありがとうございます
まだ解決しないので継続して調べます
原因は必ずあるはずだから
ほとんどの場合、問題の原因はユーザーだがな
572 :
名無しさん@そうだ選挙にいこう:2006/03/11(土) 19:44:48
Q 一部の名前を指定してブックを開くことは可能ですか?
普通、ブックを開くときは
Workbooks.Open "C:\Book1.xls"
……このようにファイル名を全て指定しますよね。
例えば、”01AAA.xls”というファイルを開くとき、
”「1」を含むファイルを開く”というステートメントにしたいのです。
よろしくおねがいします。
>>572 可能
但し、”「1」を含むファイルを開く”というそのままの機能は無いので、
@任意のディレクトリから"1"と".xls"を含むファイルを探す
A探し当てたファイルを開く
という2段階になるけどな
@の方はDir関数を使うわけだが、まあ使い方は簡単だからヘルプでも見な
但し、"「1」を含むファイル"が単一なら、ネストを使ってステートメント(1行文)に収まるけど、
"「1」を含むファイル"が存在しない場合、複数存在する場合などの例外処理を考慮したり
ディレクトリの下層まで"「1」を含むファイル"を調べたい場合は1行文には収まらないけどね
まあ1行文に拘ってるわけではなく、"ステートメント"の意味を知らないだけかも知れんがな
>>1★4に従ってないので、あとは自分でなんとかすること
>>566 >自動で計算してくれません
手動計算になってませんか?
データ重すぎると勝手に切り替わることあるみたいですので
コピーの後F9を押して再計算してみてください
自動に戻すには
ツール→オプション→計算方法→自動 を選択です
575 :
572:2006/03/11(土) 21:31:08
>>573 ありがとうございます!!
何とかやってみます。
あー自治厨うぜー
どーせテンプレに従って書いたところで全部教える気なんかないくせに
テンプレに従うかどうかより教えたくなるような書き方してるかだと思う
エクセル2000です
vbaは使いたくありません(わからんから)
先月の売り上げと今月の売り上げの差を出したいのですが、
月ごとにファイルは別なので先月.xlsからリンクをはっています
毎月リンクを張りなおさなければならないので何かいい方法はと考えています
例えば、セルa1に3と入れたら指定したセルに2月分の売り上げが出るようにできないでしょうか?
セルはプログラムの変数みたいな使い方はできないのでしょうか?
エクセル2000です。
英語でアナグラム(単語を並べ替えて、別の単語にする。)
を全パターン試した上で選択したいんだけど。
操作を2、3回してリスト作ることは可能でしょうか?
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
みたいな表を系統的に作れるならchar()とかmid()でできるけど
文字数大きいときの表を作る方法が思いつかない
582 :
ぷにお:2006/03/12(日) 01:48:26
【1 OSの種類 .】 WindowsXP SP2
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
質問
20桁くらいの数値があるとしてその数値の法則性を調べたい場合
エクセルで調べられるのですか?
数値は100個くらいあります。各20桁です
>>580のやつだけど、FACT関数で計算すればいいの?
そうだとすると、10文字で3,628,800通りのパターンができるんだけど。
>>582 おそらく、そのような関数はない。
ただ、調べられるかと問われれば、調べられる可能性はある。
要は、582氏のExcelの習得度と数学的発想あたりが
モノをいうのでは?
>>580 ぶるーとふぉーすあたっくでもするんでつか?
Sub Macro1()
Permute Range("A1"), "ABC"
End Sub
Sub Permute(ByRef rngData As Range, ByVal strData As String, Optional ByVal lngNum As Long = 1)
Dim i As Long
If lngNum < Len(strData) Then
For i = lngNum To Len(strData)
' 再帰呼出
Permute rngData, Left$(strData, lngNum - 1) & Mid$(strData, i, 1) & Mid$(strData, lngNum, i - lngNum) & Mid$(strData, i + 1), lngNum + 1
Next
Else
' 結果
rngData.Value = strData
Set rngData = rngData.Offset(1)
End If
End Sub
簡単な記述があれば教えて欲しいのですが
Worksheets("sheet2").Select
Range("A1").Value = 1
Range("A2").Value = 2
↓ずーっとつづいて
Range("A1000").Value = 1000
A1からA1000までずっと同じ処理をするんですが、
まれに500とか511、700とかを省くときがあります。
多分、簡単に記述する方法があるんだと思いながらやってたんですが、
聞いてみる事にしました、よろしくお願いします。
ループして例外処理だな
そうだね
Forでループ回して、RangeではなくCells使って
第一引数にカウンタ当てて、あとは例外処理
589 :
たかこ:2006/03/12(日) 15:55:06
【1 OSの種類】 Windows XP
【2 Excelのバージョン】 Excel2000
【3 VBAが使えるか】あまり・・・
【4 VBAでの回答の可否】 否
本当に初心者の質問でごめんなさい。年賀状のフリーソフトで、
住所録作ったんですけど、それをエクセルに変換っててできますか?
正直、よくわからないんで、お願いします。。。
>>589 そのソフトにcsv出力機能があれば、それで取り込める。無ければ諦める
591 :
たかこ:2006/03/12(日) 16:16:41
csvって何ですか?ごめんなさい。。。。
初心者なので。。。。
わかりやすくお願いできないでしょうか?
「"年賀状のフリーソフト"で住所録をエクスポート(外部出力)する方法」
は一切Excel関係ないのでスレ違い
エクスポートが出来た上で、出力されたファイルをExcelに取り込む方法ならここでOKだけどな
まずはその名前すら隠してる"年賀状のフリーソフト"の使い方を勉強して
Excelに関係有る次元の話になってから出直すように
>>589 とりあえずその「年賀状のフリーソフト」の名前と入手場所を提示
してみては。
奇特な人が確認してくれるかもよ。
594 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 17:53:46
すみません・・
excel2003でRANNDBETWEENなる関数を探しているのですが
すべて表示でもないのです。
これってどうしてですかね・・・
RANNDBETWEEN
まずスペルが違う
RANNDBETWEEN アドイン でぐぐれ
失礼
RANDBETWEEN
597 :
名無しさん@そうだ選挙にいこう :2006/03/12(日) 18:17:42
すみません、教えてください
エクセルでマウスのスクロールをさせると
画面の拡大、縮小のサイズ変換をしてしまいます
ワードとか他のソフトでは普通に上下にスクロール
するのにエクセルだけしません。原因は何でしょうか?
598 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 18:48:53
597です
自己解決いたしました
勉強不足でした
599 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 20:47:45
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 エクセル 再計算 メッセージ
400X50位、計算式の入ったワークブックを開くと、
ウィンドウ下部のメッセージエリア左隅に
「再計算40%」
と表示され、しばらく経つと
「コマンド 再計算」
と表示されます。
オプションの計算方式は、自動計算にしています。
再計算が完全に行われてないのでしょうか?
なにか問題をかかえているのでしょうか?
600 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 20:57:28
>>599 ちなみにワークシート内の計算式を全て消しましたが、
メッセージは消えませんでした。
計算式が多すぎてPCのスペック的に限界超えてるだけじゃね?
602 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 22:05:15
【1 OSの種類】 Windows XP
【2 Excelのバージョン】 Excel2003
【3 VBAが使えるか】使えません
【4 VBAでの回答の可否】 否
シート内に、注文書とマスタ表を作っています。
注文書に入力する際、VLOOKUP関数を使いマスタから参照するようにしています。
これを、同じ形式で30シートくらいコピーしたんですが、ファイル容量が大きくなりました。
もっと、容量を小さくしたいんですが何か方法はありませんか?
マスタを1シート目だけにし、2〜シートは1シートのマスタを参照できないか調べたんですが、わからず
どなたかお願いします!
データが増えたのならファイルも大きくなると思うけど
=Sheet1!A1 みたいなこと?
604 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 22:38:41
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 条件付き書式
セルA1に「110」、B1に「100」、C1に「以上」という値が
こんな感じで入力されています。
110| 100|以上
条件付き書式を使い
C1に「以上」と入力されていて、かつA1がB1以上なら
セルの色を変えたいのですが数式が分かりません
どうすればいいでしょうか?
605 :
604:2006/03/12(日) 22:51:20
すいません
自己解決しました。
606 :
602:2006/03/12(日) 23:16:26
>>603 レスありがとうございます。
大きくなったファイルサイズを何とか小さく出来ないかと考えてました。
たとえば、出来ませんでしたけど2シート目以降は注文書だけにして、
VLOOKUPの範囲を1シート目のマスタにしてといった感じです
>=Sheet1!A1
すみません、もう少し詳しく教えてください
607 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 23:19:00
すみません・・
excel2003でRANNDBETWEENなる関数を探しているのですが
すべて表示でもないのです。
これってどうしてですかね・・・
の者です。
スペルすんません<(_ _)>
そしてやはり見つけ方がわかりません・・・・・
申し訳ないです。
608 :
578:2006/03/12(日) 23:19:52
INDIRECT関数を使うことを教えてもらいやりたいと思っていることは
やれるとおもったのですが、
別ブックのリンクを参照させてもうまくいきません
'C:\Documents and Settings\Owner\My Documents\[06/03.xls]売り上げ'!$L$6
と入力しておいて、INDIRECT関数をつかったのですがエラーがでます。
どうしたら参照先の値が表示されるようになりますか?
610 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 23:31:29
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 関数 条件
IF関数で条件をいれて答えに数値や計算式の値が出ません
例
=IF(F14=0,"",(IF(F14=1,"=A14-B14","A14+b14")))
A14=1の時はA14-b14 の値が欲しいのですが、そのまんまこの式がでてしまいます。
これを計算式でなくA14とおいてみても入れてある数が出ないでA14とかになってしまいます。
なにかエクセルの設定が問題なのでしょうか?
よろしくお願いします。
=IF(F14=0,"",(IF(F14=1,"=A14-B14","A14+b14")))
ではなく
=IF(A14=0,"",(IF(A14=1,A14-B14,A14+b14)))では?
A14=1
の条件式がどこにもないので無理もない
>>610 × =IF(F14=0,"",(IF(F14=1,"=A14-B14","A14+b14")))
○ =IF(F14=0,"",IF(F14=1,A14-B14,A14+b14))
・「"」で囲むと文字がそのまま表示される。式の値を表示したいなら囲まない。
・「=」は式全体の最初に1つだけ付ければよい。
・間違いというわけでは無いが括弧が1つ余計。
614 :
名無しさん@そうだ選挙にいこう:2006/03/12(日) 23:47:58
>>606 例えば
=vlookup(T20,マスタ!A1:B20,2)
みたいに書けば「マスタ」というシートのA1:B20を検索範囲に出来るという事。
617 :
224:2006/03/13(月) 00:00:22
>>606 =A1に 03 と入れるなら
A2あたりにでも
=HYPERLINK("'C:\Documents and Settings\Owner\My Documents\[06/"&A1&".xls")
としておけば便利かと
618 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 01:02:23
>>601 セレロン2.0G メモリ1G
です。
「再計算」が表示されている状態でタスクマネージャを開くと
CPU使用率は、0%でした。
計算式は、COUNTIFやSUMIFを多用しています。
どんなスペックのPCだろうが集計関数多用した計算式が2万マスも書き込まれてたら
いっぱいいっぱいになるだろ
CPU使用率0%てのは、何か問題が生じて計算途中でキャンセルされたからじゃないの?
もっとデータ量を減らしてテストしてみたらどうだ
620 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 01:43:44
>>619 400行を100行まで減らし、
保存して再び開くと、「再計算」表示は消えてました。
「再計算」表示が残ってるという事は、計算が不完全である
という事なんでしょうか?
単に再描画が追いついてないのでは?
それを心配するよりも可能ならシートの設計を見直すことをお勧めします
>>621 そうですね。
今まで馬鹿でかいワークブックばかり扱ってて心配になったもんで。
ありがとうございました。
623 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 03:07:05
624 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 03:08:23
ソルバーに関してわからないことがあります。
変化させるセルを全て整数にしたいのですが、制約条件で区間を選び「整数」にしようとしても、「誤った参照」がなんたらというメッセージがでてきて、制約条件が有効になりません。ちなみに変化させるセルは全部で80個です。縦4×横20の範囲です。
どうしたら整数である条件を加えられるのでしょうか。
>>623 ファイル→プロパティ→ファイルの概要
「プレビューの図を保存する」にチェック
こうやっておいて保存すればエクスプローラの縮小表示で見れるはず。
>>624 ソルバーの問題ではないのでは?
>変化させるセルは全部で80個
文面をそのまま受け取れば80次元の最適化をしたいようですが
そんな計算まず収束しません
制約条件の入力方法等も含め、
1次、2次方程式等の小さい問題で練習してみては?
628 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 03:53:19
>>625-626 回答ありがとうございます。
フォルダではなく、エクセルファイルなんですが・・・・
629 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 13:36:52
630 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 13:42:20
1 OSの種類 .】 Windows2003
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 無知ですが使っています
【4 VBAでの回答の可否】 可
テキストから貼り付けたときに繋がってしまうデータを自動でくぎってセルに入力
するにはいかがするのでしょうか(sde0987 sde0988と繋がってしまう)
>>630 sde0987 sde0988
空白で分けるのではなく、Tabキーを使ったら、
A列とB列に貼り付けることが出来ました。
632 :
630:2006/03/13(月) 14:14:54
??
説明が悪かったかな?
たとえば
der33456 det21348 der45368 dte76528 try23578
というのをテキストで貼り付けると1列になってしまうのです。
記録してみましたが、それだと桁数がちがうと使えない。
なのでいい方法がないかと。
>>632 der33456 <空白> det21348 <空白> der45368 <空白> dte76528 <空白> try23578
とするのではなく、
der33456 <Tab> det21348 <Tab> der45368 <Tab> dte76528 <Tab> ry23578
とテキストで打ってみて下さい。
コレをコピペすれば <Tab> した所で列が変わります。
634 :
630:2006/03/13(月) 14:27:51
そういうことでしたか。
そのファイルは既存のデータなので、作り変える訳いかないのです。
637 :
630:2006/03/13(月) 15:02:45
ごめんなさい。言葉足らずでした。
その区切り位置をマクロで処理したいのです。
639 :
d:2006/03/13(月) 15:35:22
>>630 こんな感じでどうでしょうか。
===== シートモジュール =====
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Columns.Count >= 2 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
Dim R As Range
Dim V As Variant
For Each R In Target.Cells
V = R.Value
If InStr(V, " ") >= 1 Then
V = Split(V)
R.Resize(1, UBound(V) + 1).Value = V
End If
Next
Set R = Nothing
End Sub
>>628 どこで操作するのかが省略されてるのでわかりにくいけど、みんながプロパティで
「プレビューの図を保存する」を設定すると書いてるのは、Excel で、Excel ファ
イルを開いてプロパティを設定するんだと思いますよ。
641 :
d:2006/03/13(月) 16:29:21
>>630 よく考えたらSplitではスペースが連続していたらNGでした。
やはりみなさんがおっしゃるようにデータ-区切り位置でやって下さい。
どうも失礼しました。
642 :
566:2006/03/13(月) 16:33:01
>>574 おそレスですが、ずばりその通りでした
ありがとうございます
たしかにデータかなり重くなってました
>>637 こんな感じでしょうか?
※サンプルではA列に貼付けをしています。
Sub 空白でセル分け()
Application.ScreenUpdating = False
Range("A1").Select
mytimes = Application.WorksheetFunction.CountA(Range("A:A"))
For i = 1 To mytimes
Selection.TextToColumns Destination:=ActiveCell, DataType:=xlFixedWidth, TrailingMinusNumbers:=True
ActiveCell.Offset(1, 0).Activate
Next i
Application.ScreenUpdating = True
End Sub
>>639 ついでに言うと、プロシージャ変数として宣言したRangeオブジェクトは
End Subの時点で破棄されるし、Nothingの代入は破棄とは違うので
Set R = Nothingは必要なし。
Range.Valueの格納用およびSplitの戻り値格納用変数としてVariant型変数を使ってるが
数値型に文字列は格納できないけど、文字列型には数値を数字として格納できるし
後のInStr、Split共に文字列処理なので、String型にした方が良い。
ここではSplitの戻り値格納用に空要素のString型動的配列を用意すべき。
ひとつのVariant型変数をいろんな用途に流用するのは、変数を宣言せずに使うのと近く可読性も落ちる。
RangeオブジェクトのCellcは、引数を省略した場合親となるRangeオブジェクトをそのまま返すので、
Target.CellsのCellsは必要無し。効果のない処理でも可読性を上げるためにあえて入れる場合もあるけど
この場合そういうのも関係ないし。
最後に、ForループのNextの後にはカウンタ変数書いて置いた方が可読性上がる。
ループ一つだけの時はそんなに問題にならないし、VBSだと逆にエラーになるが
VBAの場合は必ず入れるように癖を付けて置いた方が良い。
>>ALL
やる気はあるようだから、みんなでdを育てようぜ。
最近ゴッホ氏とかhoge氏とか来ないし、dを彼らのレベルまで引っ張り上げよう。
645 :
630:2006/03/13(月) 17:05:54
え、dさんので満足したのが出来たのですが、、、まだいろいろあるんですね??
ありがとうです。
646 :
629:2006/03/13(月) 17:26:58
Σ( ̄□ ̄;Accessの質問なのにExcelスレに貼ってしまった。ごめんなさい。
647 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 19:37:20
2000行ある表を作っていますが
奇数もしくは偶数の行のみ一括選択できる方法を教えて下さい。
過去スレにあったようなんですが過去ログ行きで読めなくて。
用途は奇数or偶数行のみ網掛けして校正を行なうのが目的です。
よろしくお願いします。
648 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 19:46:06
シフト管理の作成がしたく、下記のサイトからテンプレをダウンロードして使って作成していたのですが、
この中で決まったもの(必要ないもの)を消したいのですが、削除しようとすると変更しようとしているセルまたは
グラフは保護されている為読み取り専用になっています。
と警告がでて、保護されているセルまたはグラフを変更するには、「ツール」メニューの「保護」をポイントし、「シート保護の解除」
をクリックして保護を解除します。と出るのですが、これを実行するとパスワード入力画面がでて結局は変えられないのですが
この解決策をお教えください
よろしくお願いします
ttp://www.vector.co.jp/soft/win95/business/se373647.html?site=n
>>647 背景色を付けたいだけでしたら、条件付書式で可能です。
偶数行に背景色を設定する場合は =MOD(ROW(),2)=0
奇数行に背景色を設定する場合は =MOD(ROW(),2)=1
で背景色を設定すればOKです。
並べ替えなどをしても、交互の背景色が有効のままです。
650 :
647:2006/03/13(月) 20:19:40
TEIOUさん、できました!!
有難うございました。
早速使わせてもらいます。
最悪ctrlで2000行指定することを考えブルーになっていました。
この度は早いレスポンスに感謝です。ぺこ。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 少しだけ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】文字列 検索 InStr
---------------------------
<CENTER>
・・・・・・・
<DIV>7638 シーマ</DIV>
<DIV align="right">
特定:
10株
</DIV>
<CENTER>
--------------------------
上記の文字列から
10を取り出したいのですがどのようにすればいいのでしょうか?
宜しくお願いします。
シーマは
A = InStr(WebBrowser1.Document.Body.InnerHTML, "<DIV>")
B = InStr(WebBrowser1.Document.Body.InnerHTML, "</DIV>")
Spreadsheet1.Range("A1") = Mid(WebBrowser1.Document.Body.InnerHTML, A + 10, B - A - 10)
で取り出せました。
652 :
名無しさん@そうだ選挙にいこう:2006/03/13(月) 21:27:45
607です。とってもありがとうございました!!!
653 :
606:2006/03/13(月) 23:10:07
>>616,617
レスありがとうございます。
おかげさまで容量が3分の2くらいになりました。
大変参考になりました!
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 ダブルクリック エクセル起動 不可 プロセス 100%
パソコン起動後何度かエクセルを使用後エクセルを終了し、別のexelファイルアイコンをダブルクリック
して起動させることができない
タスクマネージャーのアプリケーションのタスクにはエクセルが表示されない
パフォーマンスのCPU使用率のグラフをみるとほぼ100%となっている
プロセスにはexel.exeがかなりながいCPU時間を表示して稼動している
強制的にこのexel.exeのプロセスを終了させるとアイコンからエクセルを立ち上げることができる
知らない間に裏でexelが目一杯うごいているのが気持ち悪いのですが 原因は何でしょうか
長文失礼しました よろしくお願いします
>>648 > この解決策をお教えください
制作者に問い合わせ
作者が初心者が誤って改変することを懸念して保護しているのなら
問い合わせればパスワード教えてくれるだろ
作者が一切の改変をされたくないということでパス掛けてるなら
改変は著作権侵害になるので、諦めるか最初から自分で作れ
>>651 んー、「特定:」と「株」のを正規表現で抜き出してみるとか?
s = 文字列
With CreateObject("VBScript.RegExp")
.Pattern = ".*特定:|株.*"
.Global = True
MsgBox (CLng(.Replace(a, "")))
End With
658 :
名無しさん@そうだ選挙にいこう:2006/03/14(火) 12:05:05
>>648 同じブックでも他のブックでもいいけど、要は新規のシートを作っておいて
その元シート全体をコピー
それを新規シートに貼り付けりゃ、作者の作り方によってはシート保護は解けるよ
book1のA1にトマトA2にきゅうりと入っていてそのままA100まで物が入っている。
そしてB1、B2にそれぞれ100、200とB100まで数値が(適当な)入っているとして、
book2のあるセルでbook1にあるきゅうりとトマトを検索し、そのすぐ横にある数値を拾ってきて足してその数値を表示
という作業はできますでしょうか?
説明がわかりずらくて申し訳ないですが、よろしくお願いします。
sumif
661 :
651:2006/03/14(火) 19:55:22
>>657 レスありがとうございます。
教えて頂いたコードを元に試してみましたが、
>>651で抜き出そうとしている文字列はWEBのHTMLソースの部分で
初めて使う正規表現ということもあってか、上手く使いこなせませんでした。
文字列を検索するのはInStrやMidをつかって、自分で作るものだと思っていました。
シーマを抜き出せることが出来ても、10が抜き出せないのは
</DIV> が複数あって、ひとつ目の</DIV> は指定できても、2つ目は指定する方法を知らないからです。
この件について相談したいと思いますので宜しくお願いします。
【1 OSの種類 .】 WindowsXPSP2
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
改ページプレビューで印刷範囲を示す
青線の上にマウスを持って行けば
普通、両端矢印マークが出てサイズを拡大、縮小
出来るのですがマークが一切出ない為
サイズ変更が出来ません。
直す方法があれば教えて下さい。
くぐっても出てきませんでした。
教えてエロイ人(´д⊂)
663 :
名無しさん@そうだ選挙にいこう:2006/03/15(水) 00:47:49
複数のシートを選択してません?
そうでなければ私では力不足です。
とりあえず間に合わせで
印刷したい範囲を選択→右クリック→印刷範囲を設定
で範囲設定は可能です。
ふと便利なことを思いついたので、質問させて下さい。
オートコレクトなどで、
「きょう」 と入れると実際の今日の日付が数字で入る
と言うようなことが出来ますか?
665 :
664:2006/03/15(水) 03:52:22
お騒がせしました。
当たり前にありましたね…orz
666 :
名無しさん@そうだ選挙にいこう:2006/03/15(水) 04:27:51
【1 OSの種類 .】 WindowsXP Pro SP2
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 入力規則 変更
コンボボックスではなく、セルの入力規則にて作成したプルダウンリストの変更を検知したいのですが
ワークシート全体を監視して、該当セルの変更を検知するよりもスマートな方法はありますか?
(一度に多量の処理をさせシートへ結果を吐き出すマクロなので、シート出力の度にいちいちifをくぐってしまい効率が良くないもので…)
>>666 入力規則のリストを使おうと、普通にセルに入力しようと
セル内容の変更を取れるのはChangeイベントだけだよ
あとは「一度に多量の処理をさせ」の時は
EnableEvents等を使ってうまくやりくりすれば、
必要ない変更を監視することも無くなるのでスマート
668 :
666:2006/03/15(水) 11:12:48
>>667 すばやい回答ありがとうございます。
一時的にchangeイベントを殺す事で無事解決しそうです。
669 :
名無しさん@そうだ選挙にいこう:2006/03/15(水) 17:22:52
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 タイマー 時間計測
VBAコード上でどこからどこまでの部分の処理時間がかかっているかを1/1000秒単位で調べたい。
671 :
名無しさん@そうだ選挙にいこう:2006/03/15(水) 19:35:35
【1 OSの種類 .】 WinXP
【2 Excelのバージョン 】 2000
【3 VBAが使えるか .】 多少
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 方程式
3次方程式を解くにはどうすればいいですか。そのようなワークシート関数が無いように思えます
ソルバー
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel97
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
excel 塗りつぶし 色 日付 変更
3/2 │りんご
──┼──
3/2 │みかん
──┼──
3/3 │バナナ
というような表で、日付が変わるごとに
塗りつぶしの色を自動的に変更するようには
できないでしょうか。
色は白と灰色の二色で、日が変わるごとに白→灰→白→灰…
という風に自動にしたいのです
>>673 日付を2で割ったあまりを求めて条件付書式
676 :
671:2006/03/15(水) 23:01:21
2つめの解をどうやって出すのですか。項目にそれらしいものがないような
追加って押して味噌
678 :
671:2006/03/15(水) 23:23:19
どう値を見積もったらいいのだろ。式が変わるたびに値を設定しなきゃなんない。マクロで繰り返すしかないのだろうか
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
会社で使っているExcelが2000なので中古でExcel2000を入手しようとおもうのですが、
Office 2000 PersonalにはVBAのヘルプもついているのでしょうか?
ついてるお
【1 OSの種類 .】 WindowsXP,win2k
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可 見づらくてすいません行多すぎなんで空白の改行減らしてます
A列:数字データ(半角) I列:文字データ(数字、全角) J列:文字データ
A列とI列の数字が同じならB列にI列の、c列にj列の各データを入れたくVLOOKUPを使っても
上手くいかなかったので、VBAで下記のソースでやっても、自分の入力した数字データ同士なら
大丈夫なのに、実際に動かしたいデータが動きませんでした
調べた結果、A列とI列が表示形式が違っていたので、右クリックして、
表示形式の分類をそろえても出来ませんでした
A列とI列が半角と全角の違いがあっても駄目ですか?
またその場合の修正はどのようにすればいいのでしょうか?
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Do Until Cells(i, 1) = ""
Do Until Cells(j, 9) = ""
If Cells(i, 1) = Cells(j, 9) Then
Cells(i, 3) = Cells(j, 9)
Cells(i, 4) = Cells(j, 10)
i = i + 1
j = 1
Else
j = j + 1
End If
Loop
i = i + 1
Loop
End Sub
A行に文字列(名前)があります
おがたけん
おざきゆたか
おざききよひこ
おのまさひこ
ここで、特定の文字を含んだ文字列をB行に出したいのです。
そして、A行から抜けたデータの部分を、上につめて空白の行をなくしたいのです。
たとえば上のばあい、「おざき」と入力すると
おがたけん おざきゆたか
おのしんじ おざききよひこ
このようにするには、どういったほうほうがありますか?
683 :
682:2006/03/16(木) 01:48:33
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 できればVBAなしで
>>681 関数でB1に
=IF(VALUE($F1)=$A1,F1)
入れてコピーでできません?
685 :
名無しさん@そうだ選挙にいこう:2006/03/16(木) 02:34:16
【1 OSの種類 .】 WindowsXP Pro SP2
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 文字列操作 HTML 高速化 アルゴリズム
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
<td align=right x:num>1776</td>
<td align=right x:num>1776</td>
</tr>
<tr height=18 style='height:13.5pt'>
<td align=right x:num>1887</td>
<td align=right x:num>1887</td>
<td align=right x:num>1887</td>
</tr>
<tr height=18 style='height:13.5pt'>
<td align=right x:num>1998</td>
<td align=right x:num>1998</td>
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
上記のようなHTMLファイルを可変長文字列に代入し、タグをはずすアルゴリズムなのですが
処理の高速化をするにあたり、現状より効率のいい方法が思いつきません。
HTMLソースはAPIにてバイナリデータを取得し、strconvにてunicode変換をしています。
なにぶん多量のデータのためHTMLソースの分解で時間をくってしまっており、コンマ1秒でも
高速化してくれるとありがたいのです。
下記に抜粋したソースを記載しますので、ご助力頂ければ幸いです。
686 :
685:2006/03/16(木) 02:35:01
最高値 = Len(HTMLソース)
始め = inStr(1, HTMLソース, "</tr>", vbTextCompare) + 5
HTMLソース = Mid$(HTMLソース, 始め, 最高値)
For i = 1 To (テーブルの行数分)
最高値 = Len(HTMLソース)
HTMLソース = Mid$(HTMLソース, inStr(1, HTMLソース, "</tr>", vbTextCompare), 最高値)
For j = 1 To (テーブルの列数分)
if j <> 1 Then
終わり = inStr(1, HTMLソース, "</td>", vbTextCompare) + 5
最高値 = Len(HTMLソース)
HTMLソース = Mid$(HTMLソース, 終わり, 最高値)
End if
始め = inStr(1, HTMLソース, "<td", vbTextCompare) + 4
終わり = inStr(1, HTMLソース, "</td>", vbTextCompare)
項目(j, i) = Mid$(HTMLソース, 始め, 終わり - 始め)
if inStr(1, 項目(j, i), ">", vbTextCompare) <> 0 Then
始め = inStr(項目(j, i), ">") + 1
最高値 = Len(項目(j, i))
項目(j, i) = Mid$(項目(j, i), 始め, 最高値)
End if
Next j
Next i
687 :
名無しさん@そうだ選挙にいこう:2006/03/16(木) 09:14:51
操作方法に関してではないのですが、ここで構いませんか?
Office2000PersonalとOffice2003Personalをインストールしています。
普段使用しているのは2000の方なのですが、昨日OfficeUpdateを実行したところ、
ファイルのアイコンをダブルクリックしたら2003が開くようになってしまいました。
Wordは2000で開くように戻したのですが、Excelが戻せません。
右クリック→プログラムから開くに2000が出ないので、
プログラムファイルにある2000のExcel.exeを指定しても2003が開きます。
まず、Excel2000を起動してからファイルを開けばいけるのですが、
ファイルを直接2000で開けるようにするにはどうしたらいいでしょうか。
【1 OSの種類 .】 WindowsXP SP1
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】
任意のフォルダに2つのファイルを入れ、片側(仮にA.xls)にマクロを書き
もう一方のファイルをマクロで開くにはどうすればいいですか?
A.xls以外のファイル名は、固定ではありません。
dat20060315.csvとかdat20060316.csvとか、dat+日付がファイル名ですが、
必ずしも今日の日付ではありません。フォルダには、手動で追加と削除をします。
>>688 "任意のフォルダ"をDir関数で検索する
A.xlsと"もう一方のファイル"のファイル名が取得できるので
"A.xls"に一致しなかった方のファイル名に"任意のフォルダ"の
パスを保管してフルパスにして開く
Dir関数の使い方や、パスを取得した後のファイルの開き方はヘルプ参照
【1 OSの種類 .】 WindowsXPsp2
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 ヘルプ(関数→一般的に使用される数式の例)を参考にしました
関数についての質問です。
取引手数料を計算したいのですが。
300万円以下は2625円の手数料で、以降300万円ごとに2625円追加されます。
600万円までは5250円、900万円までは7875円、1200万円までは10500円
といった感じです。
よろしくお願い致します。
= (int(A1/3000000) + 1) * 2625
692 :
691:2006/03/17(金) 11:09:57
あ、ちがった
693 :
691:2006/03/17(金) 11:14:23
= roundup(A1/3000000,0) * 2625
これで合ってるか確認して頂戴
694 :
690:2006/03/17(金) 11:24:21
>>693 出来ました。完璧ッス!
ありがとうございました。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 本を参考すれば
【4 VBAでの回答の可否】 はい
図1のような表を図2のように貼り付けたい(それぞれ別シートです)
図1のB列が○の場合、図2のA1、F1、K1という順に図1のAの値を貼り付けたい
図2のK1まで進んだ場合、図2のA2、F2、K2という順に貼り付けたい。
図1
A B
1111 ○
1112 ×
1113 ○
1114 ○
1115 ○
1116 ×
1117 ○
図2
A F K
1111 1113 1114
1115 1117
B1メールアドレスがあります。
例として「
[email protected]」とします
この@以降をB2に出したいのですがどうしたらいいでしょうか?
=RIGHT(B1,FIND("@",B1)-1)
自力でがんばった関数はこれですが、どうもうまくいきません。
OSはXP,Ver2000以降であれば特にこだわりません。
698 :
696:2006/03/17(金) 12:34:00
B1のアドレスをC1にですね。
>>695 ソート、変形に問題を切り分ければ?
自動化しなくていいなら
1.ソートのキーを作る
B列の○を0、×を1に置き換えた後C列i行に=row()*Biと入力
2.A-C列を、C列をキーとしてソートし、ほしいところだけコピぺ
3.offsetなどを使って変形
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 否
たとえば
146 564 268
176 237 127
X Y Z
という数字が並んでいたとします。
一列ずつの平均をそれぞれXYZに表示されるようにしたいんですが、
まとめて入力する方法はありますか?一列ずつするのは簡単なんですが・・・
うぅ・・・うまく書き込めてないorz
下のXYZはそれぞれの列に対応しています。
>>702 フィルでできました。最近はじめたばっかりで難しい・・・・
ありがとうございました。
一年ぶりにVBA再開したので、汚いコードでいいなら
Sub test()
Dim x As Integer
Dim y As Integer
Dim n As Integer
Dim cnt As Integer
x = 0
y = 10
cnt = Sheet1.Range("A1").CurrentRegion.Rows.Count
For n = 0 To cnt - 1
If Sheet1.Range("A1").Offset(n, 1).Value = "○" Then
y = col01(y)
Sheet2.Range("A1").Offset(x \ 3, y).Value = Sheet1.Range("A1").Offset(n, 0).Value
x = x + 1
End If
Next n
End Sub
Function col01(y)
If y = 0 Then
col01 = 5
ElseIf y = 5 Then
col01 = 10
ElseIf y = 10 Then
col01 = 0
End If
End Function
・・・あとは色々修正して。スマートに書けないなぁ
705 :
704:2006/03/17(金) 14:29:22
>>695へのレスです
リアルタイムで書き換えたい場合は
Private Sub Worksheet_Change(ByVal target As Range)
を使ってください。
Cells(bbb, "A").Select の状態で変数bbbを数式(bbb = bbb + 1)で増減すればセルを上下に移動できますが
セルを左右に移動させる場合は、
Cells("1", bbb).Select でbbbに直接"B"などを代入(bbb = B)するしか方法はないのでしょうか?
Cellsって普通にCells(数字, 数字)で指定できない?
709 :
707:2006/03/17(金) 14:59:47
>708
普通にできました。ありがとうございました。
710 :
704:2006/03/17(金) 15:01:48
>696
=RIGHT(B15,LEN(B15)-FIND("@",B15))
>695 補足
Private Sub Worksheet_Change(ByVal target As Range)を使うときには
If Target.Column = 2 Then
For〜
Next
End If
など、イベントが起こる範囲をB列のみなどに指定してあげてね。
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】はい
【4 VBAでの回答の可否】 はい
@=TODAY() で、本日の日付を取得し
A=DAY(@) で、日のみ取得します
=ROUNDUP(IF(A/7<1,1,A/7),0) という計算式で第何週目であるか判定させています
=CHOOSE(WEEKDAY(@),"日","月","火","水","木","金","土")で、曜日を抽出
もっと簡単に本日が第何週目の何曜日か導き出す手段はありませんか?
また、最終土曜日であるか判定するよい方法はありますか?
>>711 最終と判定したいのは土曜日だけですか?
713 :
711:2006/03/17(金) 15:45:39
平たく言いますと、
@本日が第何週目の土曜日なのか
A最終土曜日であるか
を判定させたいです
いまは、最終土曜日になる日付をあらかじめ表にしてそれを参照させ対応しているのですが
できればメンテナンスフリーで対応したいと思っております。
>>713 私はこれ以上コンパクトには出来ませんでした…
この数式では、第○週△曜日 及び 最終△曜日 の表示になります。
A1は =TODAY() が入っています。
=IF(MONTH(A1)<MONTH(A1+7),"最終"&TEXT(A1,"aaa")&"曜日","第"&ROUNDUP(IF(DAY(A1)/7<1,1,DAY(A1)/7),0)&"週"&TEXT(A1,"aaa")&"曜日")
ちなみに最終土曜日のみ 最終△曜日 とするならこちら。
=IF(AND(WEEKDAY(A1)=7,MONTH(A1)<MONTH(A1+7)),"最終"&TEXT(A1,"aaa")&"曜日","第"&ROUNDUP(IF(DAY(A1)/7<1,1,DAY(A1)/7),0)&"週"&TEXT(A1,"aaa")&"曜日")
何週目って、普通
日 月 火 水 木 金 土
|← 1 →|
|← 2 →|
|← 3 →|
じゃないの?
>>714だと
日 月 火 水 木 金 土
.|← 1 →|
|← 1→||← 2 →|
|← 2→||← 3 →|
|← 3→||← 4 →||←終→|
|← 終 →|
になるよね
まあ711の数え方も下の方法だし、質問者がそれでいいってなら構わないんだけどさ
あとは
=IF(MONTH(A1)<MONTH(A1+7),"最終"&TEXT(A1,"aaa")&"曜日","第"&ROUNDUP(IF(DAY(A1)/7<1,1,DAY(A1)/7),0)&"週"&TEXT(A1,"aaa")&"曜日")
を
=IF(MONTH(A1)<MONTH(A1+7),"最終","第"&ROUNDUP(IF(DAY(A1)/7<1,1,DAY(A1)/7),0)&"週")&TEXT(A1,"aaa曜日")
としても同じ結果が返るよ
>>715の式も同じ方法で短縮出来る
>>716 なるほど。そこで別けるんですね!>&TEXT(A1,"aaa曜日")
曜日に関しては、上の数え方は判りませんでしたし、
>>711さんが下の数え方をしてらしたので私も下にしました。
上の数え方ってどうするんですか?
> 上の数え方ってどうするんですか?
週数を数える基準値(DAY関数の戻り値)にWEEKDAY関数で
当月1日の曜日に応じた値を加算すれば良いだけ
>>689 ありがd!
動作確認しましたが、こんな感じでいいですか?
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2006/3/17 ユーザー名 : Y.Yamada
'
ChDir ThisWorkbook.Path
Workbooks.Open Dir("dat*.csv")
End Sub
720 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 00:44:42
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 セル 背景色 取得
セルを方眼状にし、「横列に同じ背景色のついたマス」を数えたいと考えています。
例えば、
■■■■□□ ■4 □2
□□□ □3
○○○○○○ ○6
といったぐあいです。(■、□、○ はそれぞれ背景色です。)
よろしくお願いいたします。
VBAでCells.Iinterior.PatternColorを1個1個数える
のの
各色に対応する数字や記号をセルに入力しておいて、
条件付書式で背景色を決めるようにした方が何かと応用が利いて便利だと思う。
(この場合個数を数えるのはCOUNTIFで)
>>723 確かに便利だけど、それだと3種類しか背景色を使えないのでは?
元色も含めれば4色
さらに色ふやしたければマクロで。
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】はい
【4 VBAでの回答の可否】 はい
現在"E1"に×印をつけるようになっているが、"A1:M10"の範囲に×印をつけるようにしたい
Rangeの()内を修正せず、関数内でE1を参照し、範囲を指定できますか?
※()内の値はその都度変わるため、()内の値から一定の間隔の範囲を取得させたい
fuka Range(E1)
Function fuka(abc As Range) As Shape
Dim Shp As Shape
With abc
Set Shp = .Worksheet.Shapes.AddLine(.Left, .Top, .Left + .Width, .Top + .Height)
Set Shp = .Worksheet.Shapes.AddLine(.Left, .Top + .Height, .Left + .Width, .Top)
End With
Set fuka = Shp
Set Shp = Nothing
End Function
729 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 12:47:00
セル内に関数が入力されてるが表示上は空白セルの場合、
真偽判定するような関数ってありますですですでしょうか?
730 :
727:2006/03/18(土) 12:51:10
fuka Range()の値がE1、S1、AG1・・・という感じで変動します
×印をつけたい範囲もA1:M10、O1:AA10、AC1:AO10・・・と同じように変化します
()内がE1ならA1:M10の範囲、S1ならO1:AA10の範囲というように×印をつけたいのです
計算式で範囲を取得できないでしょうか?
>>729 =IF(A1="",真,偽)
セルの値が0で、ウィンドウオプションのゼロ非表示には対応できません。
>>730 一応コレで動きました。
Sub fuka()
If ActiveCell.Column < 5 Then
MsgBox "E列以降が対象のセルです", vbOKOnly, "選択セルエラー"
Exit Sub
End If
mycolum = ActiveCell.Column
myrow = ActiveCell.Row
myvalue = ActiveCell.Value
mystart = MsgBox("相対セルの値を" & myvalue & "に変更します", vbYesNo + vbDefaultButton2, "セル内容の変更")
If mystart = vbYes Then
Range(Cells(myrow, mycolum - 4), Cells(myrow + 9, mycolum + 8)).Value = myvalue
End If
End Sub
↑追記です。
最初に × が入力されている Range() をアクティブセルにした上で
マクロを実行してください。
734 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 13:20:30
すみません、教えて欲しいのですが、
ネットから取り込んだ表のリンク(ハイパーリンク)を全てはずす方法はありますか?
1個づつはずしているのですが、時間がかかってしまうので困っています。
初歩的な質問ですみませんがお願いします。
735 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 13:32:38
【1 OSの種類】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか 】いいえ
すみません、教えて欲しいのですが、
ネットから取り込んだ表のリンク(ハイパーリンク)を全てはずす方法はありますか?
1個づつはずしているのですが、時間がかかってしまうので困っています。
初歩的な質問ですみませんがお願いします。
>>735 1.適当なセルをコピー(ハイパーリンクでないセル)
2.対象セルを選択状態に
3.形式を選択して貼り付け→乗算を選択→OK
>>730 > fuka Range()の値がE1、S1、AG1・・・という感じで変動します
> ×印をつけたい範囲もA1:M10、O1:AA10、AC1:AO10・・・と同じように変化します
だから、その規則性を具体的に提示しなくちゃダメだっての
E1、S1、AG1:A1:M10、O1:AA10、AC1:AO10と書かれればほぼ予測は付くけど
回答者に予測させるような質問の仕方は間違ってるわけよ
>>731はその辺を予測して書いてくれたけど、本当は質問者が
「引数で与えたセルから、左に4、右に8、下に9の相対範囲を対象にしたい」とか
「引数で与えたセルから、左に4移動した位置を基準に10行13列範囲を対象にしたい」とか書かなくちゃならない
具体例を挙げるのと、具体的な条件を書くのは別物
具体的な条件は必須、具体例は有った方がいいけど、条件をきちんと書いていれば例なんてなくてもちゃんと伝わる
例だけで条件を書かなければ、「この例から規則性を見つけなさい」という問題を回答者に出してるのと同じで不適切きわまりない
誰が見てもすぐに規則性を判断できるよな一目瞭然の例を挙げたとしても、条件をきちんと書かなければ
回答者側としての条件は予測の範囲を超えることは出来ないからな
>>732 >>727のコードを見る限り、セルの値として"×"という文字列を入れたいのではなく
オートシェイプのラインを×字に引きたいようだが
セル個別に130個の×を書きたいのか、範囲全体に対する対角線で×を書きたいのかは
ちゃんと書かれてないので解らないが、Valueで無いことだけは確かでしょ
文章として「オートシェイプのラインで」と書いた方が適切だが、コードでShapes.AddLineと書いている以上、
この点は不明瞭な条件とは言えない
ついでに
mycolum = ActiveCell.Column
myrow = ActiveCell.Row
Range(Cells(myrow, mycolum - 4), Cells(myrow + 9, mycolum + 8)).Value = myvalue
の3行は
ActiveCell.Offset(0, -4).Resize(10, 13).Value = myvalue
とするべきだな
というか、
>>727まで書けるなら、With abc.Offset(0, -4).Resize(10, 13)だけで事足りるかもしれない
うぜえなこいつ
739 :
734 735:2006/03/18(土) 14:15:08
Rangeの()内をCellsの()内に変換は可能ですか?
例:
Range("A1")
Cells(1,1)
742 :
741:2006/03/18(土) 14:40:14
すいません、質問が間違っていました。
アクティブセルの座標を変数に落とし込むことはできますか?
>>742 列なら ActiveCell.Column
行なら ActiveCell.Row
で取得できますよ。
744 :
741:2006/03/18(土) 14:58:43
Cells(1,1).Activate
a = ActiveCell.Column
b = ActiveCell.Row
aに列、bに行を取得はできました。
これをRange()形式に変換したいのですがうまくいきません
Range(Cells(1,1))ではなく、Range("A1")にできませんか?
745 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 15:20:23
>>735 ツール→マクロ→Visual Basic Editor→ Ctrl+G
で、イミディエイトウィンドウが開く
そこに Activesheet Hyperlinks Delete と打ち込んでEnterでおk
だったと思う
>738
しかし、質問の仕方にしてもコードにしても、
指摘点は当たってるわけで。
自分好きの説明下手がうぜえって言ってるんだよ。
説明スキルの無いやつがオナニー目的で書き込むな。
一人でシコシコやってろ。
あ、ちょっと変だな。すまんな酔ってるからな。
説明スキル云々でなく、「俺SUGEEEEEE知識!!!!」と言いたいだけの
奴は死ねと言ってるだけだ。さっさと死ね。
For aaa = 1 To 100 → For aaa = abc To def
For文の繰り返し回数の値を変数で指定することはできませんか?
>>750 質問する前に、やってみればいいじゃないか。
正しいことを言っても、知識自慢だと叩かれるなら、
一切正しい回答も正しい指摘もしない方がいいってことだね。
まあ騒いでる子が単に嫉妬してるだけなんだろうけどw
>>752 別にお前が無理に答えなくても誰も困らないから。
誰もお前に興味は無いから。
755 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 21:02:36
>>753 氏ねよ
まともな質問の仕方も出来ない馬鹿が
数年前に2chで習ったが、学校で習った覚えは無いが。
だが、荒らしに構う奴が荒らしなら、荒らしに構う荒らしに構う756も荒らし。
「荒らしに構う奴も荒らし」という指摘をする行為自体も、この理論上での荒らしになる。
単純に荒らしに反応してる荒らしより、おまえ等は荒らしだと指摘しながら、自分も荒らしてるやつの方が
哀れなので、意味を理解してる奴は、「荒らしに構う奴も荒らし」の理論を持ち出さずに
荒らしになること覚悟で荒らしを弄るか、一切反応を示さないかのどちらかの道を取る。
つまり、これを持ち出す奴が一番意味を理解していないという皮肉w
はい。次の方、どうぞ。
759 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 22:37:46
Dim FoundCell
FoundCell = FoundCell.Offset(1, 0).Address
エラーが帰ってきてしまいます。 なぜでしょうか?
Offsetの基準点となるFoundCellが空だから
お前は「まっすぐ進んで二つ目の信号を右に曲がり100mくらい先にあるコンビニの向かい側が俺の家だよ」と
道順を説明しただけで、俺の家まで来れるか?
「〜県〜市にある〜線の〜駅から、まっすぐ進んで二つ目の信号を〜」というように起点を教えなきゃ
道順だけ教えても目的地には着けないだろ
それと↓だと
FoundCell = FoundCell.Offset(1, 0).Address
↑がString型で ↑がRange型と言うことになるが
Variant型ならこういう処理も出来るけど、きちんと型を指定した別々の変数を使った方がいい
あるいは一つの変数でまかないたいなら
Dim FoundCell As String
FoundCell = "A1"
FoundCell = Range(FoundCell ).Offset(1, 0).Address
MsgBox FoundCell
とか、
Dim FoundCell As Range
Set FoundCell = Range("A1")
Set FoundCell = FoundCell.Offset(1, 0)
MsgBox FoundCell.Address
のようにするとかね
761 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 23:11:59
型はAs range でしっくりときました。
FoundCell = FoundCell.Offset(1, 0).Address
Set FoundCell = .Range(FoundCell & ": F " & myLastRow).Find(製品番号)
みたいな感じでDoLoopでやってるのですが、まだなにかだめみたいで。。。
>>761 >>2 > ▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
> ・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。
とりあえずコード全部貼れ
別に何レス使っても構わないから
ついでに
>>1★1〜4もよろしく
763 :
名無しさん@そうだ選挙にいこう:2006/03/18(土) 23:43:02
>>685ですが、HTMLのタグ分解アルゴリズムをご存知の方いらっしゃいましたら
お知恵を拝借させて下さい。
自治厨うぜえな
定まってもいない俺ルールを振りかざし、
自分の思うとおりにスレを統治しようとするのが自治厨であり、
既に定まったルールを守ってない奴に、そのルールを指摘する場合は、
指摘する側が自治厨なのではなく、ルールを守らない側が自己厨で
指摘する側はまっとうなことをしているだけという法則。
泥棒にとって警備員や警察が鬱陶しいように、
自己厨にはまっとうな奴らが鬱陶しいんだろうけどね。
会社で使ってるExcelは、俺のが2000(WindowsXP)で、他は97(Windows2000)が殆どです。
俺が作ったマクロだと「問題が発生しました」とメッセージが出て使えないんだけど
どこが悪いのか調べる方法はありますか?
>>768 2000で作るのが間違い。
古いバージョンにあわせて作るべきじゃないか。
上位互換があるかもしれないから。
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
今オープンしているブックを、セルA1の内容をファイル名にして、
名前をつけて保存したいのですが、
マクロなら、どのように記述すればいいですか?
既定ルールに則ってるかどうかと、うざいかうざくないかは関係ないけどな
華麗にスルーしないで「によりスレ違い」を乱発する奴はどのみちうざい
せめて
>>763 >>2・7
ぐらいにとどめるのが粋ってもんだ
【1 OSの種類 .】 MacOSX10.4
【2 Excelのバージョン 】 Excel v.x
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 できれば否
【5 検索キーワード 】 抽出 文字列 IF
IF関数の中で、ある文字列を含むデータを抽出するにはどうすればよいでしょうか。
例えば、[リスト]シートA列に、
県立A高校、県立B高校、私立C学園、県立D学院・・・と並んでいて、
別のシート[検索]のA1に「県立」と入れた場合、
「県立」を含むデータに相当する行には1を、含まない行には0を、
同[検索]シートB1、B2、B3・・・に返したいんです。
B1=IF(リスト!A1=$A$1,1,0)で下方コピーにすると、完全一致しか拾いませんよね。
>>462も参照してみたのですがよくわかりません。なにとぞご教授お願いします。
=IF( ISNUMBER(FIND($A$1, リスト!A1)), 1, 0)
774 :
772:2006/03/19(日) 04:59:10
>>773 こんな時間にありがとうございます!
ほんとに助かりました!
775 :
名無しさん@そうだ選挙にいこう:2006/03/19(日) 14:15:16
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 最新のExcel
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
デスクトップなどのxlsファイルをダブルクリックしても
エクセルが起動するだけでファイル自体が開かれません。
エクセルの「開く」からは開けますが、ロックされているとか
読み取り専用だと開くとか、通知のダイアログが出てきます。
どうすれば元に戻るのでしょうか。お願いします。
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 最新のExcel
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
シート1のA列に4桁の数字(1000行)があり、シート2にはA列・G列・M列それぞれに4桁の数字がならんでいる。
シート1のA列にある数字を上から順にシート2にあるA列・G列・M列にて検索し、ヒットした場合、「空白」に置き換える。
ヒットしなかった場合は、そのまま何もしない。
よろしくお願い致します。
>>776 VBA無しで置き換えるのは無理かと
条件付き書式にMATCHを用いてそれっぽく表示するならできるかも
778 :
776:2006/03/19(日) 16:09:39
申し訳ございません。VBAは可です。
779 :
名無しさん@そうだ選挙にいこう:2006/03/19(日) 17:33:10
【1 OSの種類 .】 WindowsMe
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
例えばB2からG300まで選択して
その内の偶数列のみを選択したいのですがどうすればよいでしょうか?
お願いします
780 :
名無しさん@そうだ選挙にいこう:2006/03/19(日) 19:15:12
質問です
クリップアートで検索すると
別のプログラムがOLE操作を完了するまで待機を続けます
と表示され検索ができず…
どうすれば良いですか?
781 :
名無しさん@そうだ選挙にいこう:2006/03/19(日) 19:24:08
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
VLOOKUP,HLOOKUP,MATCH等である文字列を取り出す時。
半角英数字で管理されている場合に全角英数字でもデータを取り出すことは可能でしょうか?
可能であればその方法が知りたいです。お願いします
>>780 >>1★4、
>>3★
>>781 > 可能でしょうか?
不可能
VBAでそういう関数を作れば可能だが、
VBA使っても既存のVLOOKUP,HLOOKUP,MATCH等の仕様を変えることは出来ないし
>>781 ASC関数で文字列を半角に統一すればいいんじゃなかろうか
784 :
名無しさん@そうだ選挙にいこう:2006/03/19(日) 20:35:10
1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
785 :
名無しさん@そうだ選挙にいこう:2006/03/19(日) 20:37:11
≫780
1 OSの種類 .】 WindowsMe
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】
> 指摘されてから書き直しても、その質問にはまともな回答が付かないと思ってください。
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 否
4時間かけて会議の資料を作成したのですが保存をし忘れてしまいました。
復元できないでしょうか?
まだパソコンの電源は切ってません
教えてください
>>787 自動保存機能を有効にしていれば、ユーザープロファイル以下の
\Application Data\Microsoft\Excel\に残ってるかもな
そこになければ諦めるしか無い
789 :
名無しさん@そうだ選挙にいこう:2006/03/19(日) 23:10:24
自動保存設定ならどっかにあるんじゃないの?
790 :
名無しさん@そうだ選挙にいこう:2006/03/19(日) 23:15:14
エクセルのデフォルトを変えるにはどうすればいいの?
意味わからない?
あのね、エクセルを新規bookで開いたときの、
設定を変えたいの、
わかったら、教えて!!
>>790 オプションを探し出してみれば良いと思うお
質問です。
何らかのブック(すでにデータが入っている)を開いたときに、同時に新しいブック(book1)も一緒に起動するのですが、煩わしく思います。
そのブック以外は開きたくないのですが、どう設定すればいいのでしょうか?
794 :
名無しさん@そうだ選挙にいこう:2006/03/20(月) 05:08:03
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
すいません、教えてください。
エクセルのワークシートをテキスト形式で保存したいんですが、
vbaを下記のように書くと、セルの値が””(ダブルクォーテーション)で
囲まれてしまうのです。
それも全セルではなく、値によって囲まれたりかこまれなかったり・・・。
(もちろん全セルを文字列に指定しています。)
これはどうすれば回避できるのでしょうか?
Dim シート名, ファイル名 As String
シート名 = ActiveSheet.Name
ファイル名 = "D:\Savefile\"
Selection.Value = FileName 'シート名を取得しています
ActiveSheet.SaveAs Filename:=ファイル名 & シート名, FileFormat:=xlText
よろしくお願いいたします。
>>790 テンプレート
具体的なやり方は、
>>1★4、
>>3★により伏せる
>>793 関連付け設定の問題
具体的な解決方法は、
>>1★4、
>>3★により伏せる
>>794 SaveAsを使わずに、テキスト形式での保存コードを自分で書けばどうにでもなる
VBのサンプルコードがいっぱい転がってるのでそちらを参考に
796 :
名無しさん@そうだ選挙にいこう:2006/03/20(月) 09:43:07
【1 OSの種類 .】Windowsxp
【2 Excelのバージョン 】Excel2002
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】否
ひとつのセルに斜線をいれて、それぞれの文字を
右上と左下に分けるにはどうすればいいでしょうか。
斜線は入れられるんですが・・・
____
│\いい│
│ \ │
│ああ\│ こんなのです
 ̄ ̄ ̄ ̄
797 :
794:2006/03/20(月) 09:43:57
>>795 RESありがとうございます。
いただいたヒントで色々ググリ、どうにかできました。
Dim strREC As String ' 書き出すレコード内容
Dim GYO As Long ' 収容するセルの行
Dim GYOMAX As Long ' データが収容された最終行
Dim SN, FN As String 'ファイル名
GYOMAX = Cells.SpecialCells(xlCellTypeLastCell).Row
SN = ActiveSheet.Name
FN = "D:\MyDocument\Savefile\" & SN & ".txt"
Open FN For Output As #1 ' 指定ファイルをOPEN(新規作成モード)
GYO = 1 ' 1行目から開始
Do Until GYO > GYOMAX ' 最終行まで繰り返す
strREC = Cells(GYO, 1).Value ' A列内容をレコードにセット
Print #1, strREC ' レコードを出力
GYO = GYO + 1 ' 行を加算
Loop
Close #1 ' 指定ファイルをCLOSE
Open, Printステートメントなんか初心者用の手持ちの資料には
ありませんでした。
やっぱりVBまで行かないといけませんね。orz
お世話になりました。
>>796 □□□いいああ□□□
・”□”はスペース
・”い”と”あ”の間でAlt+Enter
これじゃダメですか?
関数(?)なら
="□□いい" & char(10) & "ああ□□"
ですかね。
799 :
796:2006/03/20(月) 09:57:11
>>796 本当に好きな位置に入れたいなら、セルの上に小さなテキストボックス
作って、そこに文字を入れる以外に方法はないですよ。
801 :
798:2006/03/20(月) 10:03:02
スペース増やしたり、文字のポイント数弄ったりと、少しは工夫せいや
802 :
796:2006/03/20(月) 10:06:26
803 :
798:2006/03/20(月) 10:10:21
801は私じゃないですが、言ってることは正しいです。
テキストボックスはお勧めしませんが・・・。
(色々面倒なので)
804 :
794:2006/03/20(月) 10:20:29
すいません、追加質問です。
>>797 のコードでどうにか動いてくれてるんですが、
シート全体をコピーして、クリップボードから一気に
Print #1ってのはできないですかね?
クリップボードのデータを取り出す方法を知らないんですが・・・orz
>>796 私も表の項目などで同じようなレイアウトを作ります。私のやり方は
1行目にいいを入力 → 右揃え
2行目にああを入力 → 左揃え(デフォルト)
オートシェイプで斜線を引く
なんてモノですね。
どうしても1つのセルに文字を置きたいのでしたら
>>798.801 さんのやり方でしょうね。
796はセルが斜めに分割できると思ったのだろうか…?
まあ俺も始めはちょっと思ったが
>>796 普通に2段に入力して、セルの書式設定で文字を斜めにするってのはどうだ?
斜線に沿わせれば綺麗だぞ
808 :
名無しさん@そうだ選挙にいこう:2006/03/20(月) 11:55:19
すみませんでした。テンプレはこんな感じです。
【1 OSの種類 .】WindowsXPSP2
【2 Excelのバージョン 】Excel2003
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】否
もう一度質問です。
何らかのブック(すでにデータが入っている)を開いたときに、同時に新しいブック(book1)も一緒に起動するのですが、煩わしく思います。
そのブック以外は開きたくないのですが、どう設定すればいいのでしょうか?
たぶん名前を知らなかったんだよ w
>>809 もっと詳しい状況は判らないですか?
エクセルを起動させてからブックを開くのか、
直接ブックから開いているのか、等。
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 最新のExcel
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】
シート1のA列に4桁の数字(1000行ほど)があり、シート2にはA列・G列・M列それぞれに4桁の数字がならんでいる。(数字は重複していないもの)
シート1のA列にある数字を上から順にシート2にあるA列・G列・M列にて検索し、ヒットした場合、数字を削除する。
ヒットしなかった場合は、そのまま何もしない。
シート2にある数字を削除する為のものですが、通常の置き換えなどで作業をすると膨大な量になってしまう為、削除する数字をリスト化し、それを自動で削除する。
可能でしょうか?
よろしくお願い致します。
>>813 削除というのは内容をデリートするだけではなく
セル自体削除するのでしょうか?
また上方向にシフトで良いのでしょうか?
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
Range("A1,C1,E1,F1").Select の()内の行を変数で可変させたいのですが
ABCDEFG
1■□■□■□■ ←■が選択するセル
Range(Cells(aaa, 1), Cells(aaa, 3), Cells(aaa, 5), Cells(aaa, 7)).Select
上記のように変更し、実行させたところ引数の数が一致しませんとでます。
連続しない複数のセルを選択することは可能でしょうか?
816 :
名無しさん@そうだ選挙にいこう:2006/03/20(月) 15:26:45
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 微妙
【4 VBAでの回答の可否】 否
日付の質問です。B列にA列を参照にVLOOKUPでデータを引いています。
31日までない月には次月のデータを引っ張ってしまい純粋に単月の比較
が出来ないので困ってます。
31日ない月にはA列を空白にするのは無理でしょうか?
A B
1 2/1 5点
2 2/2 3点
・・・
27 2/27 3点
28 2/28 4点
29 3/1 5点 ←
30 3/2 3点 ←
31 3/3 4点 ←ここです。
現在日付はA1を基準に「=上段セル+1」で作ってます。
お願いします。
>>813 書いてみました。
>>814で書いた解釈としています。
Sub 削除()
Application.ScreenUpdating = False
Range("A1").Select
Do
acolumn = Application.WorksheetFunction.CountIf(Sheets("シート2").Range("A:A"), ActiveCell.Value)
gcolumn = Application.WorksheetFunction.CountIf(Sheets("シート2").Range("G:G"), ActiveCell.Value)
mcolumn = Application.WorksheetFunction.CountIf(Sheets("シート2").Range("M:M"), ActiveCell.Value)
mycount = acolumn + gcolumn + mcolumn
If mycount = 0 Then
ActiveCell.Offset(1, 0).Select
ElseIf mycount > 0 Then
Selection.Delete Shift:=xlUp
End If
Loop Until ActiveCell.Value = ""
Range("A1").Select
Application.ScreenUpdating = True
End Sub
補足お願いします。
>>816 A2〜A31に
=IF(ISTEXT(A1),"",IF(MONTH(A1+1)>MONTH(A1),"",A1+1))
2月以外は、ISTEXTは必要無いんですがね…
>>815 一気に選択したいときはunionをつかうといいかも。
set hogehoge = application.union(Cells(aaa, 1), Cells(aaa, 3), Cells(aaa, 5), Cells(aaa, 7)
hogehoge.select
820 :
名無しさん@そうだ選挙にいこう:2006/03/20(月) 17:20:55
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 office2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 不可
【5 検索キーワード 】
どなたか教えてください。A列とB列に数値が入っていますす。
このA列の数値をB列にコピーしたいのですが、
A列が空白のときはB列の数値はそのまま残したいのです。
A B
1 あ い
2 う え
3 お か
4 き
5 く け
6 こ
を、
A B
1 あ
2 う
3 お
4 き
5 く
6 こ
という状態にしたいのです。
どうすればいいのでしょうか?
よろしくお願いいたします。
>>820 C列に =IF(ISBLANK(A1),B1,A1)
↓
C列をコピー、B列に値を貼付け(形式選択貼付け)
↓
A列とC列を削除
>>821 A列削除は余計でした。
削除するのはC列のみですね。
>>821>>822 即答ありがとうございます。
早速やってみます。
ちなみにC列(作業セル)を使わずにする方法はありますか?
一度に聞けばよかったのですが、先の質問でC列以降も数値が
入っていることを書き忘れていましたので…。
申し訳ありませんがご教授下さい。
824 :
別の人:2006/03/20(月) 17:44:25
>>823 A列追加
A列に =IF(ISBLANK(B1),C1,B1)
A列削除
825 :
809:2006/03/20(月) 18:04:59
たびたび申し訳ありません。
たとえば、フォルダに「利息計算.xls」というブックがあるとします。そのフォルダを直接ダブルクリックして開きます(Excelを起動させてから開くのでありません)。
そのときに、同時に、「Book1.xls」もなぜか開いてしまうのです。つまり、「利息計算.xls」というブックを開きたいだけなのに、2つのブックが開いてしまう現象が起きるのです。当然、そうなってしまったら、「Book1.xls」はすぐに消しますが、この作業が煩わしく思います。
どうにかならないのでしょうか?違うPCではこのような現象は起きないので、おそらく設定の問題だと思います。
>>825 Excelを起動させないままで、「利息計算.xls」のアイコンを
ダブルクリックしたらあかんの?
827 :
826:2006/03/20(月) 18:10:31
すまん読み違えた。忘れてくれ。
再インストールか修復インストールすれば?
久しぶりに覗いてみれば 又ずいぶんラベルが落ちた門だ。
>820
コピー⇒形式を選択して貼り付け⇒空白セルを無視する
>825
XLSTART
830 :
825:2006/03/20(月) 18:48:38
831 :
823:2006/03/20(月) 18:49:04
>>824 即レスありがとうございます。
早速やってみます
832 :
823:2006/03/20(月) 18:51:02
「H180320」とセルに入力したら日付に認識させてやる方法ありませんか?
「H18.03.20」なら出来るのですがドットを抜かすと認識してくれません。
=DATE(MID(A1,2,2)+88,MID(A1,4,2),MID(A1,6,2))
> ドットを抜かすと認識してくれません。
当然だね
ピリオド無しで日付認識したらバグだよ
そういう通常なら不都合になるようなことを自動でやりたい場合はVBAをどうぞ
あとは
>>1★4・
>>3★を読んで自分でがんばりましょう
スレじゃなくレスか
俺も頭悪いな・・・
このスレに頭いい奴がいるとでも?
840 :
名無しさん@そうだ選挙にいこう:2006/03/21(火) 00:39:35
どうにも困っています。助けてください。
▼━質問テンプレ
【1 OSの種類 .】 WindowsXP pro
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 共有 拡張子 tmp 見つからない etc
1つのブックをファイルサーバに置いて
20台くらい(すべて上の環境)で共有しています。
調子の良いときはいいんですが、
ごくたまに、元ファイルが勝手に
元ファイル名.xls(変な文字列).TMP という一時ファイルになってしまい、
上書き保存ができなくなってしまいます。
(「ファイルが見つかりません。削除か移動されてます。」のメッセージが出ます。)
そうなると、20人で使ってるもんですから大騒ぎです。
いったい何が原因なのでしょうか。
あれこれ調べてもイマイチ確固とした原因にたどり着けません。
どうか、教えてください。
【1 OSの種類 .】 WindowsXP pro
【2 Excelのバージョン 】 Excel2000〜2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】できれば無しで
【5 検索キーワード 】 オートフィルタ 切り取り
例えば
名前 住所
加藤 東京
井上 埼玉
大野 東京
というセルがあります。ここで、オートフィルタを使うと
842 :
841:2006/03/21(火) 01:14:48
オートフィルタで「東京」を選択すると
▼名前 ▼住所
加藤 東京
大野 東京
と表示されます。ここで、東京のみ切り取り>はりつけしたいのですが、このがめんでそれをすると、結局「井上 埼玉」も切り取られ、貼り付けられてしまいます。
ここで、東京のみを切り取り、はり付けするにはいったいどうすればよいでしょうか?
空白のセルを上につめたいのですが、どうしたらいいですか?
【5 検索キーワード 】 セル 空白 つめる
過去ログを見たいんですが
どこかに保管されてないんですか?
845 :
名無しさん@そうだ選挙にいこう:2006/03/21(火) 02:37:55
【1 OSの種類.】 Windowsxp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 否
セル内の時間とPC本体の時間をリンクさせ、サウンドを鳴らす事は可能でしょうか?
>>841 「編集(E)」→「ジャンプ(G)」→「セル選択(S)」→「可視セル(Y)」
として、コピー。
【1 OSの種類 .】 WindowsME
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
セルを塗りつぶしで色をつけている(条件付書式も含む)のですが
隣接するセルに数値を入力するとそのセルに勝手に書式がコピー
されてしまいます。
隣接するセルに勝手に書式をコピーさせないようにするには
どうしたらいいでしょうか。
850 :
841:2006/03/21(火) 09:39:47
>>857 コピーではなく、切り取りがしたいのです。
もちろん、コピーしたあとに削除でもかまいませんが。
可視セルの削除の方法はわかりませんか?
851 :
名無しさん@そうだ選挙にいこう:2006/03/21(火) 10:41:31
【1 OSの種類.】 Windowsxp
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 否
質問です
クリップアートで検索すると
「別のプログラムがOLE操作を完了するまで待機を続けます」
と表示され検索ができず何も出来なくなってしまいます。
どうすれば良いですか?
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 はい
※A(実際は約3000行、各項目間には一行余白有)を「オートフィルタ」機能を使う為※Bの状態にしたいんですが、どうすればよいのか教えてください。
※A
A
■内閣府
宮内庁:
逢沢
愛知
防衛庁:
赤城
■総務省
消防庁:
逢沢
あかま
--------
※B
A B C
■内閣府 宮内庁: 逢沢
■内閣府 宮内庁: 愛知
■内閣府 防衛庁: 赤城
■総務省 消防庁: 逢沢
■総務省 消防庁: あかま
>>851 >>3 > 指摘されてから書き直しても、その質問にはまともな回答が付かないと思ってください。
854 :
816:2006/03/21(火) 11:37:42
やっと進めます。
ありがとうございました<(_ _)>
855 :
d:2006/03/21(火) 13:16:13
>>852 こんな感じでしょうか。^^
Sub test()
Dim RR As Range
Dim R As Range
Dim rngDest As Range
Dim V As String
Dim A As String, B As String
Set RR = Range("A1", Range("A65536").End(xlUp))
Set rngDest = Workbooks.Add.Worksheets(1).Range("A1")
For Each R In RR
V = R.Value
If Left$(V, 1) = "■" Then
A = Mid$(V, 2)
ElseIf Right$(V, 1) = ":" Then
B = Left$(V, Len(V) - 1)
ElseIf V <> "" Then
With rngDest
.Value = A
.Offset(, 1).Value = B
.Offset(, 2).Value = V
End With
Set rngDest = rngDest.Offset(1)
End If
Next
End Sub
856 :
852:2006/03/21(火) 16:38:14
>>855 おおぉ、態々コードまで・・・
コピペでいけました、ありがとうございます。
857 :
名無しさん@そうだ選挙にいこう:2006/03/21(火) 18:25:14
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 初心者です
【4 VBAでの回答の可否】 はい
全国にある市町村(特に合併前の町村)には同じ名前のものが
いくつもありますが(例えば大和町・池田町など)、
それらを都道府県別に区別して認識したいというのが目標です。
現在エクセルに記載されている内容は以下の通りです。
sheet1
列1:全サンプルのID(各市町村名)
列2:サンプルが属しているグループ番号(都道府県番号)
sheet2
列1:同一市町村名が複数ある市町村名のリスト(大和町・池田町など)
で、具体的にやりたいのは以下のような感じです。
@ sheet2・列1に記載されているリストと同一の名前が、sheet1・列1に
存在するかを確認する。
A もし、そのような名前を持つセルを見つけたのならば、sheet1・列3に、
"市町村名(sheet1・列1に記載されている内容)&"_" & "都道府県番号"
例えば "池田町_01"というように記載する。
Bそうでなかったならば(同一内容を持つセルがなかったら)
単に、sheet1・列3にsheet1・列1の内容を記載する。
例えば "札幌市"というように記載する。
すみませんが、誰か宜しくお願いします。
>>850 住所列で並べ替えすればいいんじゃね?
あとで元の並びに戻せるように、あらかじめID番号列作っとくといいよ
859 :
849:2006/03/21(火) 18:55:06
>>849 ツール→オプション→編集→「リスト形式および数式を拡張する」をオフにする
で、勝手に数式や書式をコピーするのを防げます。
860 :
859:2006/03/21(火) 18:56:11
名前間違えた。失礼。
>>857 =IF(@, A, B)
[Sheet1!C11セルの場合]
@ = CountIf($A$1:$A10, $A11)>0
A = $A11 & "_" & @
B = $A11
試してないけどこんな感じか
862 :
857:2006/03/21(火) 20:18:02
>>861 ありがとうございます。残念ですが、ちょっとそれでは無理そうです。
>>862 なぜ無理なんだ?
そもそもその処理でSheet2って要るのか?
Sheet1だけで重複チェックできるんじゃないのか?
864 :
857:2006/03/21(火) 21:36:27
>862
何回もすみません。
まず、処理についてsheet2が必要でないことは事実です。sheet1であってもかまいません。本当はsheet1に市町村の人口などのデータがたくさん記載されているために、とりあえずsheetを分けたのですが、この点については説明上不必要でした。
一応試してみたのですが、。関数・VBAについては初心者なので間違っていたら大変申し訳ござません。
例えばA1:A3000に全市町村の名前の入ったデータが
B1:B3000に各市町村が属している県番号(01から47)
C1:C200に同一市町村名が複数ある市町村名のリストが入っているとします。
私としては、C1:C3000に、同一市町村名がない場合はそのままの名前で、同一名称がある場合は_県番号を入力したいと思っています。
するとA = $A11 & "_" & @、B = $A11 では,仮にA4が同一名を持たない場合には
BにA4と記載したいのに $A11$と記載されてしまうと思うのですがいかがでしょうか。
教えていただければ幸いです。
865 :
857:2006/03/21(火) 21:38:56
訂正
上記
私としては、C1:C3000に、同一市町村名がない場合はそのままの名前で
→
私としては、D1:D3000に
でした。
申し訳ございません。
?? 何でA4に$A11が表示されるんだ?というか$A11$って何?
念のため、確認するけど、$A11っていうのは
A列は絶対指定($)で、11は相対指定ってことだよ
普通にオートフィルとかすれば、4行目ならちゃんと$A4に変わるでしょ
あと、sheet2がいらないってのは、それをsheet1!C列に書けばいいってことじゃなくて
そのデータ自体いらないんじゃないのっていうの
だって、そのA1:A3000に同一の市町村名が二つ以上あるなら、それで重複してるかどうか分かるでしょうに
>>866 >>864は自分で試さないで、頭の中だけで想像してるのでは?
>>864 >>2-3を読み返して、自分の疑問点を整理することをすすめる。
書き方を見ると、最低でも次に違反してると思うよ。欲しい回答が得られなくて当然。
>>2 >・8 うまくいかなかったにしても自分でやってみたことは書きましょう。
>>3 >後出しは駄目
スレ立て人の気持ちも汲み取れない馬鹿は半年ROMってろって事だな。
要するに。
869 :
名無しさん@そうだ選挙にいこう:2006/03/22(水) 00:08:23
今年から社会人になります。
なるにあたってエクセルの勉強を研修前にしとこうと教則本買いに行こうと思います。
分かりやすい&評判が良い教則本のオススメを教えてください。「
百均で売ってたよ
871 :
857:2006/03/22(水) 00:12:28
すみません。いろいろご迷惑をかけました。相対指定と絶対指定についても
あまり認識しないで書いてしまいました。
一応、もう一度試してみたことをそのまま書いておきます。
[Sheet1!E2セルの場合]
@ = CountIf($D$2:$D$3231,$D$3233:$D$3408)>0
A = $D2 & "_" & @
B = $D2
D2からD3231まで市町村名
D3233からD3408まで同一名がある自治体リスト
E2からE3231まで出力予定
今のところ、E2からE3231まではD2からD3231と同じ内容が記載されてしまいます。
>
あと、sheet2がいらないってのは、それをsheet1!C列に書けばいいってことじゃなくて
そのデータ自体いらないんじゃないのっていうの
だって、そのA1:A3000に同一の市町村名が二つ以上あるなら、それで重複してるかどうか分かるでしょうに
>
その通りです。
>>869 それだけの質問で「はい、これがいいですよ」なんて薦められるわけねーだろ。
半年ROMってろ。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
変数 i=1 宣言
sub A()
i
end sub
のように変数宣言と初値設定を外でしたいのですが、どうすればいいですか
なんかずいぶん偉そうなやつがいるな。
>>873 変数宣言は外でできるけど
初期値設定は無理だと思う
定数なら Const で可能
お願いします。
【1 OSの種類 .】 WindowsXp
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】共有 保護 マクロから
「ブックの共有」機能をつかって共有しているのですが、
「共有」モードにすると「ブック」の保護機能が細かく設定できません。
目的としては、マクロでのみブックやシートを操作できるようにし、
あとは全て禁止したいのですが、
VBAのuserinterfaceonlyを使うとエラーになります。
(共有ブックでは、保護の設定はできないそうです。)
(全部禁止か、全部許可なら共有する前に設定すればできます。)
仕様だと思ってあきらめるしかないんですかね。
いい方法あったらお教え願いたいのです。
よろしくお願いします。
【1 OSの種類 .】 WinME
【2 Excelのバージョン 】 2000
ローカルウィンドウの値を全て書き出すにはどうすればいいですか
>>871 そのCountIf何がやりたいのかわからん
で、あいかわらずそのD3233:D3408が何なのかがわからん
D2:D3231の中に重複してる市町村名があるかどうか調べたいってことじゃないの?
そのD3233:D3408は何の役に立ってるの?
どうしてもそのD3233:D3408っての使いたいなら、
@はおそらく範囲と値が逆だし、Aも全然違う式を考えないと駄目だよ
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 VBA コントロール配列
VBA初心者です。
VBAにはコントロール配列が無いようなのですが、
たとえばテキストボックスをズラズラと並べた処理の場合の処理は
どのようにすれば良いのでしょうか?
配列に代わる方法があるのでしょうか?
880 :
857:2006/03/22(水) 02:45:05
>>878 範囲と値を逆にして、CONCATENATEを使い以下のように式を立てたら
お蔭様で、成功しました。本当にありがとうございました。
[Sheet1!E2セルの場合、(B列に都道府県番号表示)]
=IF(COUNTIF($D$3233:$D$3408,D2)>0,(CONCATENATE(D2,"_",B2)),$D2)
おっしゃるとおりD3233:D3408を使う必要はないので、もしD2:D3231の中
だけで操作できる方法をご存知でしたら教えていただければ幸いです。
>>879 EXCELでも同じだと思うんだけど、
For 〜 Eachでまわすんじゃない?
881を訂正
For Each 〜 Next
883 :
d:2006/03/22(水) 08:47:24
884 :
659:2006/03/22(水) 14:12:02
>>885 スレ違いスマソ
誘導ありがとうございます。
887 :
名無しさん@そうだ選挙にいこう:2006/03/22(水) 15:18:11
あるセルに「a-b」と入ってるとき(a,bは共に数値)aの数値だけを取り出したり、
aとbの平均を求めたりする事はできますか?
できないのであれば「-」をどのような記号にすればできるでしょうか?
>>887 aとbを別セルにすればいいよ
どうしても同一セルでやりたいなら関数かVBAで文字列操作
このばあい記号は文字列として取得できる物なら何でも良い
具体的な方法は
>>1★4/
>>3★なのでご自分で
偉い人が来るまでの応急的な手段として
"-*" これ(""は不要)を "" これ(""は不要)に置換すればaだけ抽出できる
同様に、"*-"これを置換すればbだけ抽出できる
あらあら、もう偉い人が来てた
>>888 スマンコッテ
891 :
名無しさん@そうだ選挙にいこう:2006/03/22(水) 15:35:30
質問です。
「216」→「0216」
「895」→「0895」
「47」→「0047」
上の例の様に、セルに入力した数値を4桁の表示にして、
桁の足りない部分には「0」を頭に付けて補いたいのです。
表示の設定変更なのか関数による計算式なのか
どんな方法があるのか分かりませんが、
回答をよろしくお願いします。
自作板から流れ着いてきました。
急ぎなのでageさせてください。
いま会社のPC一台をリプレイスしようと思っています。
そのPCではExcelのマクロを走らせているのですが、Pen3 1GHzのためか、
処理にとても時間がかかります。夜やって朝完了している感じです。
マクロの中身としては、200枚くらいの統一されたフォーマットの経費
が入ったシートの四則演算を行い、事業部ごとに業績を計算させるものです。
一度計算するのに時間がかかるので、担当者が一つ入力を間違えると、また
再計算という感じでビジネスのスピードにも影響が出始めています。
私としては、このようなマクロが、CPU、メモリ容量、HDDのどこを強化すれ
ば一番速度向上に効果があるのかを悩んでいます。
みなさんだったらどこを一番強化しますか?
自作板ではファイルをRAMディスク展開した方がいいというアドバイスを
頂きました。
age・・・?
コードを最適化するのが一番効果が大きいんだけど
ハードのみで対応するならCPUとメモリだな
ブックを展開するのに充分なメモリが無いなら、メモリ強化の効果は大きいが
そうでなければCPU強化の方が大きい
ブック外のデータを読んでるのでも無い限りHDD強化やRAMディスクは
マクロの実行速度にはあまり影響無し
896 :
d:2006/03/22(水) 16:33:18
>>893 ハードの交換よりマクロを見直した方が良さそうな気がします。
マクロの内容が分からないのではっきりとは言えませんが、数時間
かかるマクロはちょっと異常のような気がします。
ワークシートに計算式とかがたくさんあり、再計算に時間がかかって
いるというケースがよくあります。
もしそうなら、
Application.Calculation = xlManual
処理
Application.Calculation = xlAutomatic
のようにすれば改善されるかもしれません。
897 :
名無しさん@そうだ選挙にいこう:2006/03/22(水) 18:56:08
マクロの記録であらかじめマクロを作っておき、その後コマンドボタンを
作って右クリックしたら、以前は「マクロの登録」という項目があったの
ですが、今は右クリックメニューの中にありません。
右クリックメニューは、「切り取り・コピー・貼り付け・プロパティ・コードの表示
・コマンドボタンオブジェクト・グループ化・順序・コントロールの書式設定」
になっていますが、何か根本的に操作が間違えているんでしょうか。
898 :
名無しさん@そうだ選挙にいこう:2006/03/22(水) 19:16:55
897です。解決しました。
コントロールツールボックスの方でやってたわ。
899 :
EXCELはじめました:2006/03/22(水) 19:58:21
EXCELのマクロ機能を使って以下のような処理をするマクロを組みたいのですが、参考意見を頂けないでしょうか?
(1)A001.txt,〜,A100.txtの100個のファイルがある。
すべてのtxtファイルの書式は以下のようになっております(2行のみです)。
---ここから---
作成日:2006/3/22 10:00 作成者:XXXX YYYY ←各txtファイル内1行目
10,12,8,24,30,18 ←各txtファイル内2行目の例
---ここまで---
txtファイル内の2行目はカンマ区切りとなっており、データの個数(ココでは6個)は全てのtxtファイルで共通
(2)(1)の100個のtxtファイルの中身の2行目をEXCELのワークシートに以下のルールで出力したいです。
---出力済みexcelファイル内ここから---
10,12,8,24,30,18 ←1行目(A001.txtから出力)
13,22,38,91,6,88 ←2行目(A002.txtから出力)
77,28,65,37,91,9 ←3行目(A003.txtから出力)
・
・
・
28,54,84,48,44,7 ←100(A100.txtから出力)
---出力済みexcelファイル内ここまで---
以上ですが、かなり初歩的で、なおかつ丸投げ的な質問になってしまいました。参考になるサイトや書籍を紹介して頂けると助かります。『ココを読めばわかるよ』みたいなのがあると助かります。
>>899 VB(VBA)構文でテキストファイルを読み込む部分はExcel関係ないので
>>2・7
ワークシートに出力する部分は、ファイルを一つ読み込むたびに、カウンタ変数を+1するようにして
Cells(カウンタ変数, 1).Value = 2行目の値を読み込んだもの
とすればよし
カンマ区切りの文字列としてシートに出力するのではなく、
カンマ部分でセル区切りにしたいならSplit
以上
一応
>>1★4と
>>3★を読んでおくこと
901 :
EXCELはじめました:2006/03/22(水) 20:34:55
>>900 ありがとうございます。
【1 OSの種類】 WindowsXP Pro sp2
【2 Excelのバージョン】 Excel 2003
【3 VBAが使えるか】 はい
【4 VBAでの回答の可否】 可
です。失礼いたしました。
>>3 > 指摘されてから書き直しても、その質問にはまともな回答が付かないと思ってください。
903 :
833:2006/03/22(水) 20:39:21
遅レスですみません
>>834 ありがとうございます。
それを応用すれば満足行くものが出来そうです。
904 :
名無しさん@そうだ選挙にいこう:2006/03/22(水) 21:33:41
WinXPで、エクセル2002を使っています。
表の列の間隔が異なる3つの表を、1つのシートに作りたいのですが
どうやったら簡単に出来るのでしょうか?
また、こういうことが得意なソフトがあれば教えてください。
よろしくお願い致します<(_ _)>
>>904 3つの表をそれぞれ別シートで作っておいてWordに貼り付ける
>>899 試してないから動くかは知らん
Dim nfile as string
Dim dat(1) as string
Dim i as integer
Dim n as integer
Dim buf() as string
for i=1 to 100
nfile="A" & format(i,"000") & ".txt"
Open nfile For Input As #1
Line Input #1, dat(0)
Line Input #1, dat(1)
Close #1
buf=split(dat(1),",")
for n=0 to 5
cells(i,n).value=Cint(buf(n))
next
next
訂正
cells(i,n+1).value=Cint(buf(n))
908 :
EXCELはじめました:2006/03/22(水) 22:38:26
>>906 ありがとうございます。
デスクトップにフォルダを作り、その中に保存のためのEXCELファイルと『A001.txt、〜、A100.txt』を入れて、
>>906-907でお教えいただいたコードを実行したところ、『ファイルが見つかりません』とのメッセージとともに、
『Open nfile For Input As #1』の行でカーソルが止まります。何か初歩的なミスをしているのでしょうか?
>>908 ヒント1:デバッグ
ヒント2:スレ違い
>>908 デバックでnfileがどうなってるか確認ですね。
ファイルがないかパスが悪いか
参考サンプルだからそのままじゃ動かんかもね
【1 OSの種類】 WindowsXP Pro sp2
【2 Excelのバージョン】 Excel 2003
【3 VBAが使えるか】 はい
【4 VBAでの回答の可否】 可
C:\DATA に入ってるブックそのものを、C:\DATA2へコピーするには、
どうすればいいですか?
912 :
911:2006/03/22(水) 23:05:16
C:\DATA
Book1.xls ←これを
C:\DATA2
Book1.xls ←ここにコピーしたい
1. エクスプローラでC:\DATAを開く
2. エクスプローラでC:\DATA2を開く
3. 1のBook1.xlsを、Ctrlキーを押しながら2のフォルダにドラッグ&ドロップ
914 :
EXCELはじめました:2006/03/22(水) 23:54:55
>>910 『デバックでnfileがどうなってるか確認ですね』
どのようにして確認するのでしょうか?
915 :
名無しさん@そうだ選挙にいこう:2006/03/23(木) 00:10:00
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
ウエブサイトから「1-2」のような文字列をコピペしようとすると、
「1月2日」というように自動変換されてしまうのですが、
これを事前に回避する方法はありますか?
よろしくお願いします。
916 :
名無しさん@そうだ選挙にいこう:2006/03/23(木) 02:16:12
【1 OSの種類】 WindowsXP Pro sp2
【2 Excelのバージョン】 Excel 2003
【3 VBAが使えるか】 いいえ
【4 VBAでの回答の可否】 可
ExcelにWord文書をWord文書オブジェクトとして貼り付けました。
印刷すると、オブジェクトの1頁目は印刷できますが、それ以降は印刷されません。
オブジェクト内の文書を全て印刷するようにすることは可能でしょうか?
>>914 そういうのを確認する作業などを"デバッグ"と言うが、これはExcelでも
Visual Basic EditorというVBのIDEの操作のうちに入るので、そっちの方向を調べましょう。
>>915 >>8 > = FAQ: 入力した値が変わる? =
>>916 ブックをうpして。
ある列のセルの入力内容が同一内容のセルがある場合色が付くなりする方法ってありますか
920 :
d:2006/03/23(木) 09:45:36
>>914 エラーで停止した時に、マウスカーソルを変数の上に持っていけば表示されます。
でも、原因はたぶんフォルダが違うからだと思います。^^
提示のコードではフォルダは省略してファイル名のみを指定しているので、この場合
フォルダとしてはカレントフォルダが適用されます。
確実に動作させるにはフォルダの指定を入れれば良いのですが、簡単に済ませるので
あれば、エクセル上から一旦ファイルを開く動作をして対象のフォルダを指定し、
カレントフォルダを変更してしまえば良いと思います。
(実際に開く必要はありません。)
921 :
d:2006/03/23(木) 10:03:43
>>919 条件付書式でどうでしょうか。^^
数式が、=COUNTIF($A:$A,$A1)>1
922 :
921:2006/03/23(木) 10:35:13
違う方法ですが助かりました、、、忘れてたcountif、、、
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
はじめまして、お世話になります。
「Jチームの試合結果を入力して、順位表を自動作成したい」のです。
皆様ご存知のとおり、Jリーグの順位は勝ち点、得失点差、得点、失点の
優先順番で大きい順(失点のみ小さい順)に順位が振られます。
現在、RANK関数で勝ち点だけでの順位設定はできますが、
勝ち点が同値の複数チームの順位は次の得失点差、得失点差が同値の時には
更には得点、失点の順で数値を比較しないと確定できません。
この4項目の数値全部参照して、順位を自動設定する方法をお願いいたします。
説明が下手で申し訳ありません。よろしくお願いいたします。
924 :
名無しさん@そうだ選挙にいこう:2006/03/23(木) 10:42:56
たとえば0から40まできちんとあるかどうか、ただし同じ表でその0から40がたくさんあります。
それで抜けているか、それ以外の数字かどうか判断するのはどうしたらよいのでしょうか。
ようは40進数であがっていくようなものです。
また別列では16の倍数がなく昇順になっています、数字は無限。そちらはvlookupで判断していますがほかにあるでしょうか。
925 :
名無しさん@そうだ選挙にいこう:2006/03/23(木) 10:46:54
質問です。
EXCEL2003(SP2)で、OSはWindowsXP(SP2)なのですが、
イメージコンボ(SP6)を使いたいと思って色々格闘してみたところ、
イメージリストを作ってそこに画像を読み込んで、
それをイメージコンボに結びつけるところまでは分かったのですが、
実際にそれを動かしてみると、コンボは真っ白なままです。
エクセルでイメージコンボを使う手順として、
何をやったら良いのでしょうか?
どなたか教えて下さい。
926 :
925:2006/03/23(木) 10:48:35
すいません。3,4,5が抜けてました。
3. VBAは使えます。
4. 可
5. ImageCombo Excel
>>923 IFで調べていく手もあるが、
勝ち点の順位*1000 + 得失点差の順位*100 + 得点の順位*10 + 失点の順位
の結果で比較する方が簡単かな
順位数値が2桁になる可能性があるなら、*1000,*100,*10ではなく、*1000000,*10000,*100でやればよし
>>924 意味不明&ルール無視
因って
>>1★4/
>>3★ってことでさようなら
>>926 VBでのイメージコンボの使い方は理解できてるの?
というかVBでちゃんとイメージコンボ使えてるの?
これが出来てないなら、
>>2・7にあるとおり、このスレ以前の問題だが
928 :
名無しさん@そうだ選挙にいこう:2006/03/23(木) 11:29:39
>>927 分かってる範囲では、
ImageList のオブジェクトを作って、そこにイメージを登録。
ImageCombo のオブジェクトを作って、上のImageListをプロパティのImageListに設定。
Private Sub Worksheet_Activate()
Sheet1.ImageCombo1.ComboItems.Add 1, 1, "hoge1", 1, 1, 0
Sheet1.ImageCombo1.ComboItems.Add 2, 2, "hoge2", 2, 2, 0
End Sub
と、ここまでやっています。
Activateでやっていい処理なのかも分からず困っています。
VBでは ImageCombo を使った事はありませんが、
フォームを作って Access に SQL で登録ぐらいまでは出来ます。
929 :
924:2006/03/23(木) 11:35:45
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
単純にいえば0から40まで規則的に並んでいるかどうか判断したいのです。
ルール違反すみません会社からなので、あまりおおぴっらにできないのです・・・・
>>3 > 指摘されてから書き直しても、その質問にはまともな回答が付かないと思ってください。
>>929 データの数が40に満たなければ40並んでない
MODEを取って値が出れば重複があるので40まで並んでない
どんな規則かわからないとこのあたりまでしか
A1のセルに「=(B1+B2)*(C1+C2)」という式が入っていた時にA2、A3・・・とコピー(セル指定して右下をドラッグ)すると
「=(B2+B3)*(C2+C3)」となりますが、「=(B1+B2)*(C2+C3)」、「=(B1+B2)*(C3+C4)」・・・とコピーしていきたいのですが、
どのような操作をしていけばいいでしょうか?
933 :
名無しさん@そうだ選挙にいこう:2006/03/23(木) 12:10:53
>>932 A1 =(B$1+B$2)*(C1+C2)
>>927さま
早速のレス、恐れ入ります。
それぞれの項目で同値内順位付けし、それぞれの重みで総合順位確定させる訳ですね。
了解しました。早速試してみます。
こんな事考えずに、全試合終了後に関連サイトをぐくれば順位表は見られるのですが、
各地試合途中の経過から現在の順位を知りたいという、サポ心理により作成してます。
感謝です。ありがとうございました。
>>928 > VBでは ImageCombo を使った事はありませんが、
VBできちんと使えるようになってから出直しましょう
VBで使えてExcelVBAで使えないってなら、VBのコンポーネントの話題でも多少は関連性があるが
多少VBやフォームの知識があったとしても、全く使ったこと無いVBコンポーネントの使い方の質問なんて
VBAから使うとしてもこのスレには関係ない話題ですよ
937 :
名無しさん@そうだ選挙にいこう:2006/03/23(木) 13:07:41
A B
1 名前 点数
2 あ 20
3 い 10
4 う 30
とあったとき、
C D E
5 順位 名前 点数
6 1 う 30
7 2 あ 20
8 3 い 10
と表示させるにはどうすればいいでしょうか?
よろしくおねがいします
>>937 @
A1:B4をD5:E8にコピペしE列で降順ソート
C列にオートフィルで連番を振る
A
ピボットテーブル
B
VBAで二次元配列に取り込み、点数で降順ソートし結果を吐き出す
C
RANKやINDEX関数で参照する
@は手動操作が多いが簡単確実
Cは点数が重複した場合の処理が面倒なのでオススメしない
あとは
>>1★4/
>>3★を読んだ上で自分でやれ
939 :
924:2006/03/23(木) 13:49:45
昇順に歯抜けなく並んでいるかできないのでしょうか。
わからないので、私は単純に横の列に0から40まで並べておいてvlookupで判断してました。
やはりそうするしかないのかなぁ
>>927さま
無事、順位算出できました。ありがとうございました。
941 :
名無しさん@そうだ選挙にいこう:2006/03/23(木) 18:50:45
フォームにセルを移動させるコードのボタンをつけて
showmodalをFalseにして、表示させたまま、そのボタンを押したときに
アプリケーションもアクティブにするにはどうしたらいいの
activateではセル選択自体は移動しても、フォームはアクティブになったままなので
EXCEL自体をアクティブにしたいのですがそんな方法ありますか
942 :
941:2006/03/23(木) 18:57:13
ごめnできた→AppActivate "Microsoft Excel"
>>939 >>3 > 指摘されてから書き直しても、その質問にはまともな回答が付かないと思ってください。
ここはこういうスレなんだから、あきらめて他で質問しな。
945 :
925:2006/03/23(木) 23:40:08
>>936 色々調べてなんとか出来ました。
Private Sub Workbook_Open()
Dim i As Integer
Set Sheet1.ImageCombo1.ImageList = Sheet1.ImageList1
For i = 1 To Sheet1.ImageList1.ListImages.Count
Sheet1.ImageCombo1.ComboItems.Add , , _
Sheet1.ImageCombo1.ListImages(i).Key, i
Next i
Set Sheet1.ImageCombo1.SelectedItem = Sheet1.ImageCombo1.ComboItems(1)
End Sub
これでイメージコントロールに画像を表示して選択までは出来るようになったのですが、
エクセルの挙動があやしくなり、ファイルを閉じようとするとエラーが発生して
エクセルが落ちるようになってしましました。
Excel2003(SP2)/WindowsXP(SP2)
ImageCombo(SP6)/ImageList(SP6)
という組み合わせなのですが、何が原因か教えて頂けないでしょうか?
946 :
名無しさん@そうだ選挙にいこう:2006/03/24(金) 00:02:42
PC(XP)(ワード、エクセルは2003)を新しく買ったんだけど、前のPC(me)で作ったワード、エクセル(2000)が読めないんです。
どうしてでしょうか?
どうやったら読めるか教えて下さい。
CD−Rに入れてるものが呼び出せません。
「アクセス権がないから問い合わせて」って出るんです。
ググってもスレ内を検索しても解らなかったので質問させてください。
来週プレゼンがあるのです。
プレゼンは会議室にあるプレゼン用のパソコンを使わなくてはなりません。
それでパワーポイントを使うわけですがバージョンが古く、
僕が作ったエクセル2000のマクロ(3D)入りデータが使えません。
技術の人に「office2000をプレゼン用のパソコンにいれてもいいか?」と
聞いたら断られました。
自分のノートを持ち込むのも禁止のようです。
この場合、その3Dの画像だけJPEGにすればいいと思うのですがやり方がわかりません。
どなたかご教授お願いします。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 『範囲』『最小』等
A列には6桁の数値(商品番号。文字列として扱っている)、B列にはそれぞれの商品のカラーバリエーション数が入っています。
そして、C列にカラーバリエーション数だけ商品番号を繰り返したいのですが、どのような方法がありますでしょうか?
A列 B列 C列 D列
000001 3 000001 赤
000021 1 000001 青
000801 2 000001 黄
000021 白
000801 赤
000801 緑
このような感じです。ヨロシクオネガイシマス。
PriSc→編集
>>946 さようなら
>>947 さようなら
>>948 ほれ
Sub Sample()
Dim strCode As String
Dim i As Long, j As Long, k As Long
j = 1
For i = 1 To Cells(65536, 1).End(xlUp).Row
k = Cells(i, 2).Value
Cells(j, 3).Resize(k, 1).Value = Cells(i, 1).Text
j = j + k
Next i
End Sub
事前にC列の表示形式を文字列にしておくこと
処理が遅いようならScreenUpdatingでも使ってくれ
j = 1、For i = 1の「1」は、データ先頭が1行目ってことを意味してるので
1行目からじゃないなら両方データの先頭行番号に書き換えろ
952 :
みゆき:2006/03/24(金) 11:27:21
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 『集計』『総当り』『三角表』等
35000行、85列(問85)の回答データがあります。
問1と問2を同時に回答している、問1と問3を同時に回答している・・・・・・問1と問84を同時に回答している、問1と問85を同時に回答している
問2と問3を同時に回答している、問2と問4を同時に回答している・・・・・・問2と問85を同時に回答している
・
・
・
問83と問84を同時に回答している、問83と問85を同時に回答している
問84と問85を同時に回答している
と言うように、85*85のマトリックス表を作り、相関の件数をカウントしたいのですが、35000*(85*85)/2の処理(三角表なので)にものすごく時間がかかってます。
SPSSを使うと速いらしいのですが、私には使えません。
なんとかエクセルのVBAで高速化を図ることは出来ないでしょうか。
よろしくお願いいたします。
>>952 >>2 > ・8 うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。
> 例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。
> その上で、どううまくいかないのかを具体的に書きましょう。
> エラーが出るなら、何処でどういうエラーが出るのか、
> 想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。
何レス使ってもいいから、まずはルールに従ってその「ものすごく時間がかかってしまう」コードを貼ること
>>952 三角表の出力方法をどうしたいかもわからんですね。
現状ではApplication.ScreenUpdating = Falseとすれば少しは早くなるんじゃないとしか
955 :
みゆき:2006/03/24(金) 11:55:03
すみません、大変失礼いたしました。
Private Sub Count_Rtn(Sheet_Name As String)
Dim i As Long
Dim ii As Long
'サンプル数のカウント
Erase Cnt_01
lRow = 1
Sheets("抽出データ").Select
While Cells(lRow, 1) <> ""
For i = 1 To 85
For ii = 1 To 85
If Cells(lRow, i) <> "" And Cells(lRow, ii) <> "" Then
Cnt_01(i, ii) = Cnt_01(i, ii) + 1
End If
Next ii
Next i
lRow = lRow + 1
Wend
'最終行の設定
lRow = lRow - 1
'結果の出力
For i = 1 To 85
For ii = 1 To 85
Sheets(Sheet_Name).Cells((i, ii) = Cnt_01(i, ii)
Next ii
Next i
End Sub
よろしくお願いいたします。
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】適当なワードが分かりません
@元のデータsheet1
A B C D E F
1あ 0 い う 0 お
20 い 0 0 ろは
3に 0 ほ 0 へ 0
@のように、データの入ったセルと、データ”0”の入ったセルが混在してますが、
Asheet2に、この様に移し変えたい
A B C D E F
1あ い う お
2い ろ は
3に ほ へ
Aの様に、”0”を省き、左詰めしたいのですが、どうすればいいでしょう。
>14のようにVBAなら出来るのでしょうか?
>>952 こんなんでどうですか?
結果の出力はカットで
For i = 1 To 85
For ii = i+1 To 85
If Cells(lRow, i) <> "" And Cells(lRow, ii) <> "" Then
Sheets(Sheet_Name).Cells((i, ii) = Sheets(Sheet_Name).Cells((i, ii) + 1
End If
Next ii
Next i
>>952 そのまま配列で処理すれば少しは早くなるんじゃね?
Dim Val_01(), Cnt_01()
Dim i As Long, ii As Long, iii As Long
Dim QUESTION_COUNT
QUESTION_COUNT = 85
ReDim Cnt_01(QUESTION_COUNT, QUESTION_COUNT)
Val_01 = Sheets("抽出データ").Range("A1").CurrentRegion.Value
For i = 1 To UBound(Val_01)
For ii = 1 To QUESTION_COUNT - 1
For iii = ii + 1 To QUESTION_COUNT
If Val_01(i, ii) <> "" And Val_01(i, iii) <> "" Then Cnt_01(ii, iii) = Cnt_01(ii, iii) + 1
Next iii
Next ii
Next i
For i = 1 To QUESTION_COUNT
Cnt_01(0, i) = i: Cnt_01(i, 0) = i
Next
Sheets("出力先シート").Cells(1, 1).Resize(UBound(Cnt_01) + 1, UBound(Cnt_01, 2) + 1).Value = Cnt_01
959 :
みゆき:2006/03/24(金) 13:12:08
>>957 レスありがとうございます。
インクリメントさせる部分は、セルへの処理よりメモリ上でやってしまった方が速いかと思ってました。
セルに直接足してしまう方が速くなるものなのでしょうか。
ちょっと試してみますね。ありがとうございました。
960 :
957:2006/03/24(金) 13:37:01
試したらセルに直接は激遅でした。。。
>>958のようにメモリーで処理するほうがよさそうですね
>>814 >>817 有り難うございます。
シート1の数字を削除するのではなく、シート2にある数字を削除するようにできますか?
また、削除の方法は内容のデリートでお願いできませんか?
シート1のある数字をシート2で検索して削除する。といった形です。
よろしくお願いします。
>>956 VBAでもできるが、そのデータを正規表現が使えるテキストエディタにコピペして
s/0(\t|$)//g
で置換して、Excel側の元データを消したところに置換したデータを戻せば良い
>>961 やっぱり逆でしたか。読解力無くてすみませ…orz
Sub 削除()
Application.ScreenUpdating = False
Range("A1").Select
Do
mycount = Application.WorksheetFunction.CountIf(Sheets("シート1").Range("A:A"), ActiveCell.Value)
If mycount = 0 Then
ActiveCell.Offset(1, 0).Select
ElseIf mycount > 0 Then
Selection.ClearContents
ActiveCell.Offset(1, 0).Select
End If
Loop Until ActiveCell.Value = ""
'追記場所
Application.ScreenUpdating = True
End Sub
改行エラーでコピペ仕切れませんでした。
G列とM列でも繰り返すように '追記場所 に書いて下さい。
なあ、質問者はともかく、回答者はちゃんとコードをインデント表示できるように貼ろうぜ。
IDEに因ってはそのままコピペすると全角スペースでエラーになるが、ExcelのVBEは
全角スペース張り付けると勝手に半角スペース2個に置き換えてくれるんだからさ。
Sub 削除()
Application.ScreenUpdating = False
Range("A1").Select
Do
mycount = Application.WorksheetFunction.CountIf(Sheets("シート1").Range("A:A"), ActiveCell.Value)
If mycount = 0 Then
ActiveCell.Offset(1, 0).Select
>>956 VBAでやる場合
Sub 選択範囲ゼロ削除()
Dim R As Integer, C As Integer
Dim irows As Integer, icols As Integer
R = Selection.Rows.Count
C = Selection.Columns.Count
For irows = R To 1 Step -1
For icols = C To 1 Step -1
If Cells(irows, icols).Value = "0" Then
Cells(irows, icols).Delete Shift:=xlToLeft
End If
Next icols
Next irows
End Sub
966 :
965:2006/03/24(金) 20:07:53
>>956 Sheet1A1基点アクティブセル領域→Sheet2A1基点ということなら、965で書いたコードの前半に、
コピー貼り付けするコードが必要だった。
Sub シート2にコピーしてゼロ削除()
Dim R As Integer, C As Integer
Dim irows As Integer, icols As Integer
Worksheets("Sheet1").Range("A1").CurrentRegion.Copy Worksheets("Sheet2").Range("A1")
Worksheets("Sheet2").Activate
Range("A1").CurrentRegion.Select
R = Selection.Rows.Count
C = Selection.Columns.Count
For irows = R To 1 Step -1
For icols = C To 1 Step -1
If Cells(irows, icols).Value = "0" Then
Cells(irows, icols).Delete Shift:=xlToLeft
End If
Next icols
Next irows
End Sub
Sheet2にコピーすんならDelete Shiftとかめんどくさいことしないで
普通に0じゃないセルだけ順次コピーしてけばいいんじゃね
968 :
名無しさん@そうだ選挙にいこう:2006/03/24(金) 20:15:19
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
縦のセル(A行)に2/8〜4/1まで日付を入力したいんですが、
手打ちで入力するのが面倒なのです。
A行に、2/8、2/9、2/10・・・と自動で一日ずつ日付を表示させるには、どうすればいいんでしょうか。
969 :
名無しさん@そうだ選挙にいこう:2006/03/24(金) 20:26:40
>>968 A1に2/8って入れてセルの右下あたりでマウス左ボタンを押し下げてそのまま下方向にドラッグ
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel フォーム サイズ変更
VBAでユーザーフォームの最大化・最小化ボタンを表示したり端っこをドラッグしてリサイズしたり
することはできませんか。
ちょっと探したんだけど、キーワードが悪いのかどうも見つからない・・・
970 :
d:2006/03/24(金) 20:41:51
>>956 こんなのはいかがでしょうか。^^
但し、対象範囲に元々空白セルは無いという前提です。
Sub ゼロセル削除()
Dim rngOrg As Range
Dim rngResult As Range
Set rngOrg = Worksheets("Sheet1").Range("A1").CurrentRegion
Set rngResult = Worksheets("Sheet2").Range("A1")
rngResult.Worksheet.UsedRange.ClearContents
rngOrg.Copy rngResult
Set rngResult = rngResult.CurrentRegion
rngResult.Replace What:="0", Replacement:="", LookAt:=xlWhole
Set rngResult = rngResult.SpecialCells(xlCellTypeBlanks)
rngResult.Delete xlToLeft
End Sub
>>969 VBAのフォームで、そもそもボタンがtitle-barに乗ってこないから、
ActiveXコンポーネントでもないんじゃないかなと思う。
VBA フォーム サイズ変更
で検索掛けてみたけど、やっぱりVB6とか2005じゃないと無理なのかなあ。
972 :
961:2006/03/24(金) 22:44:22
>>963 たびたび申し訳ございません。
試してみたのですが、またシート1を削除してしまいます。
シート1 シート2
0000 0000←消す
0001 0001←消す
0004 0002←消さない
0006 0003←消さない
0009 0004←消す
0005←消さない
0006←消す
0007←消さない
0008←消さない
0009←消す
0010←消さない
といった形です。言葉足らずで申し訳ございません。
973 :
961:2006/03/24(金) 22:48:30
表示が崩れてしまいましたΣ(; ̄□ ̄A
消す・消さないの指している数字はシート2にあるものです。
シート1には
0000
0001
0004
0006
0009
がA:Aに入っています。
974 :
969:2006/03/24(金) 23:16:31
>>961 TEIOUさんの改良版です
>>963はシート2で実行すれば動きますよ。
Sub 削除()
Application.ScreenUpdating = False
a = Array("A", "G", "M")
Sheets("シート2").Range("A1").Select
i = 1
Do
For n = 0 To 2
Cells(i, a(n)).Select
mycount = Application.WorksheetFunction.CountIf(Sheets("シート1").Range("A:A"), ActiveCell.Value)
If mycount > 0 Then
Selection.ClearContents
End If
Next
i = i + 1
If Cells(i, a(0)) = "" And Cells(i, a(1)) = "" And Cells(i, a(2)) = "" Then
Exit Do
End If
Loop
Application.ScreenUpdating = True
End Sub
976 :
975:2006/03/24(金) 23:28:59
Sheets("シート2").Range("A1").Select
↓
Sheets("シート2").Select
Range("A1").Select
に訂正
977 :
956:2006/03/25(土) 01:03:42
>962>965>966>967>970
皆さん、ありがとうございます。
参考にさせて戴きました。
>>877ですが、変わる値を全てどこかに書き出せますか?
>>978 意味不明だから却下。値って何の値だよ
とりあえずテンプレ熟読しろ
あらかじめ貼っておくか
>>3 > 指摘されてから書き直しても、その質問にはまともな回答が付かないと思ってください。
981 :
948:2006/03/25(土) 10:58:04
>>951さん、ありがとうございました!
初VBAでしたが、何とかできました。
982 :
956:2006/03/25(土) 11:51:08
テンプレテンプレと鵜材わりには役に立たない奴は放っておいて、
みゆきサン まだ居ますかね?少しは早くなると思います。
For i = 1 To 84
If Cells(lRow, i) <> "" Then
For ii = i + 1 To 85
If Cells(lRow, ii) <> "" Then Cnt_01(i, ii) = Cnt_01(i, ii) + 1
Next ii
End If
Next i
984 :
961:2006/03/25(土) 14:46:55
>>963 >>975 有り難うございます。無事動作しました。
お手数お掛けして申し訳ございませんでした。
次スレ待ち保守
987 :
985:2006/03/26(日) 16:15:29
保守ウメ