Excelに関する質問は、ここで!
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に
>>2-20あたりの注意書きやQ&Aも読もう。
★4 質問テンプレは必須じゃないけど、
OSやExcelのバージョン、VBAの可否など(下記テンプレ1〜4の情報)は必須情報。
これを書かなかった場合は、以後まともな回答は付かないと思ってください。
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード 】 Googleやヘルプでの検索キーワード
※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
※【5】は、あなたがGoogleやヘルプで検索した際に使ったキーワードを書いてください。
まだ検索してないなら、質問の前にGoogleやヘルプで検索してみてください。
ttp://www.google.co.jp/ 前スレ(52):
http://pc10.2ch.net/test/read.cgi/bsoft/1167923180/
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
・1 現行スレ内で既出の質問が無いか、ページ内検索をしよう。(Ctrl+F)
・2 図やコードを書く場合、TABや連続する半角スペースは無視されるので注意
・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。
・5 回答内容でわからない部分があっても、すぐに聞き返さずにヘルプやGoogleなどで検索しましょう。
・6 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。
ここは技術的な質問のみで。
・7 VBAはプログラム言語のVisualBasic(6以前)に近い処理が可能で Excelに関係ないことも出来ます。
Excelの操作に関係ない部分は、スレ違いなのでここで聞かずにVB言語やAPI、COMについて自分で勉強し、
どうしてもわからない部分はVBスレやAPIスレなどの該当スレで質問しましょう。
但し向こうはプログラマのスレなので、構文規則などの最低限の事は覚えてから質問しましょう。
ここみたいに丸投げはダメですよ。
・8 うまくいかなかったにしても自分でやってみたこと(組んだ数式やコード)は書きましょう。
例えエラーになる式やコードでも、何をやりたいのかを的確に把握する手がかりになります。
その上で、どううまくいかないのかを具体的に書きましょう。
エラーが出るなら、何処でどういうエラーが出るのか、
想定外の結果が出るなら、条件と想定上の結果、実際の結果などを詳しく書いてください。
・9 マルチはダメ。
・a テキストボックス(エディトボックス)、コンボボックス(ドロップダウンリスト)、リストボックス、コマンドボタン、
チェックボックス、オプションボタン(ラジオボタン)、スピンボタン、スクロールバー、等の質問をするときは、
ユーザーフォーム、コントロールオブジェクト、フォームオブジェクトのどれなのかを必ず書くこと。
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)
▼環境・書式
・ 列数を256列以上、行数を65'536行以上に増やす (Excel2007では16'384列、1'048'579行扱える)
・ 条件付き書式を3つ以上設定する (文字色だけなら、入力規則でも3つ設定可能。それ以外はVBA)
・ 行の高さを0.25きざみ以下の単位で指定する
・ セル内の文字を○で囲む、一部のみ2段にする (オートシェイプ、オブジェクト)
・ オートフィルタで英字の大小文字を区別する (小文字 → 半角、大文字 → 全角、と使い分ける)
・ 祝日を判断する (作業セルに祝日を列挙、VBA)
・ 同一列内でセル(行)ごとに列幅を変える、同一行内でセル(列)ごとに列高を変える (セルの結合)
・ ヘッダー・フッターのページ番号の開始番号任意指定、ページ番号演算、同シート内で違ったものを指定など
・ セルのサイズ(幅、高さ)を、長さの単位(ミリメートルなど)で指定する
・ 罫線幅の自由指定
・ 表示形式で「10/ 1」といった書式を指定し、日付が一桁の場合のみ日付の前にスペースを入れる (TEXT関数、VBA)
・ 書式設定の「折り返して全体を表示する」と「縮小して全体を表示する」を同時に使う (折り返しを有効にして、手動で文字サイズを調整)
▼操作
・ ファイラーの右クリックメニューからの新規作成で、Excelで設定したシート数のブックを作る (任意のシート数のテンプレートを作成)
・ 複数シートを選択して入力規則やシートの保護を設定する (VBA)
・ オートコンプリート機能を、別列や離れたセルで動作させる (VBA)
・ 選択範囲から一部を除く、Ctrlを押しながらの複数選択で一部を取り消す (VBA)
・ 優先キーを3つ以上指定しての並べ替え (優先度の低い方から順に並べ替える)
・ 1セルを分割 (分割したいセル以外を結合)
★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)
▼数式・関数
・ 表示形式以外の書式の取得設定、書式情報を条件とする数式 (ユーザー定義関数)
・ 関数式でセルの選択状態を取得する (VBA)
・ セルの値でパスを補完して、開いてないブックのセルを参照する (VBA)
・ 入力したセルに結果を返す (VBA)
・ 範囲を引数にしての文字列連結 (ユーザー定義関数)
・ 値の書き換え、値の保持 (VBA)
・ 複数の結果を抽出、不定な数の結果を返す (VBA、結果の最大数が解っていれば最大数以上の式を論理式で組む)
・ 空白のセルの部分を上詰め、左詰めなどで表示する (作業セルを使って別セルに詰めて表示なら可能、それ以外はVBA)
・ VLOOKUP,HLOOKUP,MATCH等の関数で、検索語を全半角両方にマッチさせる (ユーザー定義関数)
▼VBA
・ ExecuteExcel4Macroの参照で空セルと0値を区別する
・ セルの値や変数値で直接変数名を指定する (配列、コレクション)
・ VBのコントロール配列と同じような操作をしたい
(イベント以外ならコントロール名を「同名+連番」にしてControls(名前 & インデックス)で処理、イベントはクラスでWithEvents)
▼ユーザーフォーム
・ フォーム上から変更したプロパティ値の保持 (シートや外部ファイルに書き出して、次回読み込む)
▼グラフ
・ 棒グラフでひとつだけ突出したデータがあった場合に波線を入れて位置を合わせる
(オートシェイプなどで見た目だけそうなるように弄る、別アプリでグラフを作り、オブジェクトとして挿入)
┌┐
〜〜
||
上記 「Excelで出来ないこと、仕様上の制限」 は、一般的に出来ないとされていること、出来ないと思われるものです。
間違いがある可能性もあるので、上記に挙がってるもので「コレはこうすれば出来るよ」というものがあったらご指摘ください。
また、ここに書かれてないことでも、Excelで出来ないことはたくさんあります。
ここに書かれてないからといって必ず出来るはずだなんて思わないように。
6 :
名無しさん@そうだ選挙にいこう:2007/01/26(金) 20:13:15
ハ〜ぁ、バカな質問とバカな回答の繰り返しか
レベル落ちたなぁ〜
前スレ996です
馬鹿でサーセンwwwww自己解決しますたwwwwwww
>>6のレベルじゃ、スレのレベルが落ちたかどうかなんて判断できないだろ
例え落ちたとしても、
>>6の及び付かぬ領域だからな
10 :
名無しさん@そうだ選挙にいこう:2007/01/26(金) 21:04:13
スグ興奮しちゃって、カワウィー
なぜこんなに簡単に釣れるのだろう…
この時期は毎年オコチャマが集まるからしかたないね
エクセルで、文字色変更を普通にしようとすると
20秒くらいかかります。
ひとつのセルですし、他のアプリでメモリくってるわけでもないのに
文字色変更がやたら遅いです。
セルの塗りつぶしはさっとできるんですけどね・・・。
xp home Pen4 2.2G メモリ512
エクセルは2002です。
14 :
名無しさん@そうだ選挙にいこう:2007/01/26(金) 22:56:29
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
A B
1 | 3.4 | 2.3
2 | 5.6 | 1.7
3 |空白| 空白
4 |空白| 空白
5 |12.3 | 1.3
:
10| 2.4 | 3.4
11|空白| 空白
12|空白| 空白
13|14.4 | 2.4
:
上のような一つのシートに空白2行で区切られた複数行2列のデータを
それぞれ別々のシートに分けたいのですが、データ数がとても多いので
簡単な方法はないでしょうか?
>>13 Excel完全に消してから、再度インストールしなおしてみ。
>>14 その説明じゃ、どうしたいのかが、誰にも伝わらないかと。
>>13 それはエクセルを立ち上げて最初の文字色変更時だけですか?
>>14 1行空白(連続しない空白行)が存在する可能性はあるの?
あるとしたらその場合はどうするの?
最後以外で3行以上の連続空白行が存在する可能性はあるの?
あるとしたらその場合はどうするの?
データは数値だけ?
それとも書式も設定してあるの?
19 :
みそ:2007/01/26(金) 23:29:55
エクセルです
複数のセルに入力されている範囲を
まとめて絶対値に変えるのはどうしたらいいすか?
終電行ってしまうまえにだれかぼすけて・・・
>>19 別な場所に関数で絶対値を返して、
元の場所に値をコピーして、関数を消去してみそ
21 :
名無しさん@そうだ選挙にいこう:2007/01/26(金) 23:37:21
「A班からF班までが総当りで試合をする。表の灰色の部分(罫線で区切られた右側)
に自分たちの班から見た得点を例えば15-5のように入力すると白の部分(罫線で区切られた左側)には相手の班からみた
得点5-15という表示がされ同時に勝ち数、負け数、引き分けの数、勝ち点、順位が表示されるような表を作れ。
勝ち点は、勝ち・・・3点、負け・・・0点、引き分け・・・1点で計算
順位は勝ち点の多いほうが上位とする。同順も可。」
A B C D E F
A\ ←15-5
B \
C↑ \
D5-15 \
E \
F \これの「15-5と入力すれば5-15と返す」、「勝ち負けの判定をする」がわかりません。
得点入力のセルは全ておなじ「15」、「-」、「5」を三つに分けてはいけないのです・・・お願いします。m(_ _)m
22 :
みそ:2007/01/26(金) 23:46:43
>>20ありがとうですもう少しバカな俺に
詳しく教えてくださいです申し訳ありません
今使ってる1枚目のシート(ご飯汁)に別のシート(みそ)から
小計を合計しながらひっぱって来てるデータが
B2に=SUM('みそ'!AD96:AD100)
B3に=SUM('みそ'!AD101:AD110)
B4に=SUM('みそ'!AD111:AD150)
とかってえんえんと入ってて、ご飯汁シートのリンク先の
みそシートの範囲をまとめて絶対値にしたいのです
要は
B2に=SUM('みそ'!$AD$96:$AD$100)
B3に=SUM('みそ'!$AD$101:$AD$110)
B4に=SUM('みそ'!$AD$111:$AD$150)
にしたいのです・・・
>>14 基本こんなかな?フィルタかけて、空白以外を抽出して、
それぞれをコピーする感じ。
新規シートの位置とか名前は適当にかえてみて
Set r = Worksheets("sheet1").Range("A1:B17")
r.AutoFilter 1, "<>"
Set r = r.SpecialCells(xlCellTypeVisible)
For i = 1 To r.Areas.Count
Set s = Worksheets.Add
r.Areas(i).Copy s.Range("A1")
Next
r.AutoFilter
>>21 文字列関数使え
特定文字が先頭から何番目にあるかを調べる関数とか、
先頭から何文字、指定位置から何文字を切り出すなんてことが出来る関数もあるので
=「-」の次から末尾まで&"-"&先頭から「-」の前まで
という式で、15-5を5-15に出来る(他にもやり方はあるが、これが一番基本)
左辺と右辺の数字切り出しが出来てしまえば、比較して勝ち負け判定するのは簡単でしょ
>>21 LEN FIND LEFT RIGHT IF RANK
で、どうにかなるかな・・・
基礎学力のない子ばっかだね
28 :
みそ:2007/01/26(金) 23:56:30
>>27 そうです絶対参照(A1→$A$1)にしたいのです
まとめてやる方法が分らないんです
もう一時間以上F2押してF4を押していく方法で
やってたんですがくたびれました・・・
このままじゃ終電に間に合いそうにありません…
>>28 Sub 絶対参照に変換()
Dim objCell As Range
For Each objCell In Selection
objCell.Formula = Application.ConvertFormula(objCell.Formula, xlA1, xlA1, xlAbsolute)
Next objCell
End Sub
絶対参照に変換したい範囲を選択して、このマクロを実行しろ
例外処理取ってないんで、範囲選択はきちんとしろよ
VBAは嫌とか言うなら俺はパス
30 :
21:2007/01/27(土) 00:06:43
解決しました。
みなさんありがとうございます。
>>28 それ一括でやるのは難儀だな。
なぜそうしたいのか分かれば、そっち方面から突破口考えるが?
32 :
31:2007/01/27(土) 00:08:28
絶対値って中学で習うよね。それを知っていれば$A$1形式を絶対参照と呼ぶってことを知らなくても
絶対値と呼ぶのが明らかに間違ってるってことは解るはずだが、みそは中学生以下か?
そんな子供が終電時間と競りながらExcelと格闘?いったいどういう状況なんだか。
34 :
みそ:2007/01/27(土) 00:15:38
>>29 ありがとうございます
アホなんでVBAはスイッチ切ってあります
>>31 課長の言い付けです。今日中に仕上げねばなりません
>>34 VBA無効にしてあるなら、有効にして実行すればいいだけだね。
解決して良かったな。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 弩初心者
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 VBA 分析 連続 一定間隔
下図のようにランダムにABCや●が入ったシートがあります。
1つの列の中で,●と●の間にあるABCの個数が6以上なら,
その個数をQの列にそれぞれ出したいです。
A B C D E F G H I J K L M N O P Q
1 B A B B C A ● B C .A B C A ● ● .A 2
2 ● C A B C .● B .C A .● A B C A ● ● 0
3 C A B A C .A ● .C .A B C A C ● .B 1
4 A B C ● B C .A B A B C .1
※行3のようにA〜Cのデータの途中に空白がある場合は,その分はカウントしません。
※行4のように空白があってもA〜Cのデータが連続していれば,Q4に数値を算出します。
このような条件の時,どのようにしたらいいのでしょうか。ご教示お願いします。
excelで
1/27
と入力すると、今年であれば
2007/1/27
に解釈されますが、これを
2006/1/27
と解釈させる方法は無いでしょうか?
関数使って1年引く方法も考えたんですが、
列を増やしたり削ったりする分かえって作業が
増えてしまう感じだったのでやめました。
2006/1/27
と入力すれば済むことのなのでしょうが、
2006/
を入力しないで済むならそうしたいのです。
そのやりかたは、おじさん賛成できないな。
>>36 >1つの列の中で,
は行の間違いだな?
Function CountX(ByVal Target As Range)
Dim c As Range, burstFlag As Boolean, countBurst As Long, counter As Long
burstFlag = False
countBurst = 0
counter = 0
For Each c In Target
If c.Value = "●" Then
If burstFlag Then counter = counter + 1
countBurst = 0
burstFlag = False
ElseIf InStr("_ABC", c.Value) > 1 Then
countBurst = countBurst + 1
If countBurst >= 6 Then burstFlag = True
Else
countBurst = 0
End If
Next
If burstFlag Then counter = counter + 1
CountX = counter
End Function
=CountX(A1:P1)
>>40 ありがとうございます!
「1つの列の中で」は「行の中で」の誤りです。スミマセン。
42 :
名無しさん@そうだ選挙にいこう:2007/01/27(土) 01:56:54
Excel2002を使っています。
セルに小数の数字を入力するとき、
小数点以下の桁を指定することは出来ますが
有効数字を指定するにはどうしたら良いのでしょうか?
例えば
322
4.23
0.00567
みたいな感じで上3桁だけ残したい場合にはどうしたら良いのでしょうか?
=TEXT(TEXT(A1,"0.00E+00"),"G/標準")
こんな感じかな・・・
44 :
37:2007/01/27(土) 02:10:40
>>38 やっぱ時計いじるのが手っ取り早いですよね。
不整合は起きないだろう、と勝手に思ってますが、
時計を戻し忘れてしまいそうなのが若干心配。。。
45 :
名無しさん@そうだ選挙にいこう:2007/01/27(土) 02:46:07
Excel2002を使っています。
Excelでグラフを書くときに
目盛り線はY軸のものしか付けることが出来ないのでしょうか?
X軸(垂直な目盛り線です)にも付けたいのですがどうすれば良いのでしょうか?
46 :
名無しさん@そうだ選挙にいこう:2007/01/27(土) 02:55:47
>>43 回答ありがとうございます。
でもその式はどのようにして使えば良いのですか?
コピペしてもうまく使うことが出来ないのですが。
>>34 すんごい遅レスだが
絶対参照に変換するセル番地が殆ど一緒で
他に可変にする必要が無い という条件下でだが
Ctrl+H
検索対象 AD なり みそ'!AD なり !AD なり好きなのを。
置換後を $AD$ なり $AD(列だけ絶対参照にするなら
エクセル98は知らんが2000から数式内の文字列置換は標準で装備されてる。
わざわざVBA使うまでも無い。
そして仕事放棄して終電で帰ったのか
50 :
45:2007/01/27(土) 13:05:48
どうなんでしょうか?
お願い致します。
>>46 ↓これのどこが上3桁なの?
例えば
322
4.23
0.00567
54 :
みそ:2007/01/27(土) 14:29:12
みなさん本当にありがとうございます
無事今朝方お仕事終わりました。
おはようございますです。
>>47 実はあなたのレス以降さくさくと進めることができました。
数式内の文字列置換が出来ることを忘れておりました。
本当にありがとうございました。
55 :
37:2007/01/27(土) 15:47:21
>>49 置換をすっかり忘れてました。(日付データは1900/1/1からの日数で
保持しているのだろうから置換はできない、と勝手に決め付けてました)
ありがとうございました。
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
A(身長):161/165/176/163/169/155....
B(体重): 58/ 46/ 73/ 45/ 57/ 38/...
C(性別): M/ F/ M/ M/ M/ F/...
なる表があり,フィルタ機能で「M」を抽出,身長−体重のグラフを作りました。
次に「F」でフィルタすると先に作ったグラフが「Fのデータ」に変ってしまいます。
先に作ったグラフを固定(後日Excelとしてデータ改定可能な状態で)する方法があれば
教えて下さい。現在はそれぞれCopyして別の表にしてからグラフを作成しています。
>>56 グラフを貼り付ける際に図として貼り付ければフィルタを変更してもグラフの要素は変わらないが
データを増やした時には再度グラフを貼り付けなおさないとできない。
俺はVBA無しで思い当たる方法は無かった。
>>56 データの抽出にフィルタを使わなければ出来るが
それはVBAじゃないと無理っぽい
59 :
56:2007/01/27(土) 22:31:32
>>57-58 所用有り、遅くなりました。VBAなるものを調べて(勉強して)から出直します。
60 :
56:2007/01/27(土) 22:36:45
途中で送ってしまったので、以下書き直します。
---------------------------------------------
>>57-58 所用有り、遅くなりました。VBAなるものを調べて(勉強して)から出直します。
ありがとうございました。
ただ、調べたり詳しい人に聞けば理解可能かも知れませんので、その「VBAを使った対応策」の
例を教えて頂ければ幸いです。
初心者です。A1に1と入れると20とC1に表示されて
A2に3と入れるとC2に140というように対応した数字を
計算でなく表示させるのはどうすればいいでしょうか。
62 :
名無しさん@そうだ選挙にいこう:2007/01/27(土) 23:20:00
>>61 自分で入力すりゃいいだろ
そんな質問文じゃこんな回答しか来ねぇぞ
>>62 別表作って、
=VLOOKUP(A1,Sheet2!$A$1:$B$100,2,FALSE)
と入れても動かないんですよ。別表のA1は数字じゃ駄目?
>61,63から答えを導き出せる奴は天才
質問の意図が全く分からん
C1=IF(A1=1,20,"")
66 :
名無しさん@そうだ選挙にいこう:2007/01/28(日) 09:32:50
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 VBE 開かない
excelのVBEを開こうとすると、VBEを開けるどころかexcelそのものが閉じてしまいます。
ウィルススキャンをしたところウィルスに感染はしていませんでした。
ちなみにwordのVBEは普通に開けます。
どうすれば正常にVBEが開けるようになれば良いのか、よろしくお願いします。
67 :
名無しさん@そうだ選挙にいこう:2007/01/28(日) 09:59:48
すれ違いかもしれないけど、あえて質問させてもらいます。
エクセルのエキスパート(MOS)の検定とエクセル1級では何が違うのですか?
どちらの方が権威が上なのですか?
68 :
名無しさん@そうだ選挙にいこう:2007/01/28(日) 10:11:58
「権威」なんて言葉は、詐欺師・役人・成金が使う言葉
気にするな!
71 :
HIRO:2007/01/28(日) 12:48:10
【1 OSの種類 .】 WindowsXP【2 Excelのバージョン 】 Excel2000【3 VBAが使えるか .】いいえ 【4 VBAでの回答の可否】 否
タイピングのデータ整理をするためにエクセルで2つの文を比較して間違いを検索し、 その文字と単語を抽出したいです。 それぞれの数を調べたいとおもっています。 テキスト文は英文です。何かいい方法はありませんでしょうか?
the deed freed the rugged deer
rhe deed freed rhe rugged deer
72 :
HIRO:2007/01/28(日) 12:50:03
先ほどのつけたしなのですが、
文字を1つのセルにして同じような処理はできないでしょうか?
表示例.
___________________________
i n m y f a m i l l y
i n m u f a m u l
y:1 u:
my:1 familly:1
____________________________
myのyを間違えているのでこれをぬきだし、文字数を調べたいです。
同様にfamillyのiを間違えているのでこれをぬきだし、文字数を調べたいです。
そして間違えたmyとfamillyをぬきだし、
この間違えた数を調べたいのですが、セルの関数などで、この様な方法はできないでしょうか?
セルの関数にできれば、根気よくコピー、ペーストでさがしていきたいのですが…
よい考えをお持ちの方よろしくお願いいたします。
>>71-72 普通に切り出して単純に比較すればいいじゃん。
A1:A2に
the deed freed the rugged deer
rhe deed freed rhe rugged deer
を入れるとしたら、
B1=MID(A$1,ROW(),1)
C1=MID(A$2,ROW(),1)
D1=IF(B1=C1,"",B1&" / "&C1)
とかをフィルコピーすれば、文字単位での違いは簡単に見つかる。
文字単位の違いが解れば、ROW()の値を元に違いのある単語の切り出しが出来る。
ROW()が16を返したら、「the deed freed the rugged deer」の先頭から16文字目が
違うってことだから、16文字目を含むスペースで囲われた範囲を切り出せば良いだけ。
間違い文字数はBかC列が空白な行単位で、D列が空白じゃない個数をカウントすれば良い。
あとはヘルプを読んで自分で頑張ろう。でもこれ、Excelの仕事じゃないぞ。
スレ違いだから紹介は控えるが、専用ソフトもあるし、自分でやるにしても「コ根気よくピー、ペーストで」ってことは
元々Excel上にあるデータじゃないんだから、PerlやWSHなんかでやった方がいいだろうし。
>>60 適当に直して
Sub sample()
Dim i As Integer
Dim Rng As Range
If Cells(2, 3) = "M/" Then
Range(Cells(2, 1), Cells(2, 2)).Select
Set Rng = Selection
End If
For i = 3 To 7
If Cells(i, 3) = "M/" Then
Range(Cells(i, 1), Cells(i, 2)).Select
Set Rng = Union(Rng, Selection)
End If
Next i
Set Rng = Union(Rng, Range("A1:B1"))
Rng.Select
Charts.Add
With ActiveChart
.ChartType = xlColumnClustered
.SetSourceData Source:=Rng
.Location where:=xlLocationAsObject, Name:="Sheet1"
End With
Set Rng = Nothing
End Sub
Excelでカレンダーを作ってるんですが、
祝日を自動的に入れる方法がよくわかりません。
教えていただけませんか?
>>76 マクロ組むか休祭日の条件を判断する列や行を作れ
78 :
HIRO:2007/01/28(日) 14:07:34
返信ありがとうございます。
頑張ってやってみます。
他のアプリケーションを勉強がらやる時間がないので
地道に努力します。
また、こんなのあるじゃん!!みたいなのを思いついたら
教えてください♪(^0^)
>>74 間違いだらけで、一から書いた方が良さげなふいんき
82 :
60:2007/01/28(日) 18:36:57
>>74 ありがとうございました。色々調べてみます。
>>70 速攻自分でできました。すいません。案外簡単ですね。
こんなもんやる気でやったらすぐ上級まで行けそう。
とりあえず、やってみようとせずに質問すんの、やめぃ。
【1 OSの種類 .】 Windows2000
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 可
http://vista.crap.jp/img/vi6998742850.gif セルの幅より長い文字列だと右側にはみ出して表示されるのですが、
画像下の様にはみ出さないように表示させるにはどうしたら良いでしょうか?
画像は右側のセルに空白を入れてはみ出ていない様に見せかけています。
初心者質問ですみませんが宜しくお願いします。
86 :
名無しさん@そうだ選挙にいこう:2007/01/28(日) 21:50:25
ExcelとAccessのピボットテーブルの違いがわかる方いますか??
それぞれの長所と短所とか教えていただけたら助かります。
よろしくお願いします。
>>85 書式の設定→配置で折り返して全体を表示する をチェックするとか
>>86 使って分からないなら、ExcelとAccessの差だけと思ってればおk。
総計とかデフォで出ないのがAccess。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】勉強中
【4 VBAでの回答の可否】 可 と言うか、お願い
ix = 0
i = 0
Do
i = i + 1
If Cells(i, 10) = "a" Then
ix = ix + 1
Worksheets("sheet1").Range(Cells(i + 1, 1), Cells(i + 1, 9)).Copy _
Destination:=Worksheets("結果").Range(Cells(ix, 2), Cells(ix, 10))
Worksheets("結果").Cells(ix, 1) = "a"
End If
If Cells(i, 11) = "b" Then
ix = ix + 1
Worksheets("sheet1").Range(Cells(i + 1, 1), Cells(i + 1, 9)).Copy _
Destination:=Worksheets("結果").Range(Cells(ix, 2), Cells(ix, 10))
Worksheets("結果").Cells(ix, 1) = "b"
End If
Loop Until Cells(i, 1) = ""
と書いたマクロで
Worksheets("sheet1").Range(Cells(i + 1, 1), Cells(i + 1, 9)).Copy _
Destination:=Worksheets("結果").Range(Cells(ix, 2), Cells(ix, 10))
の部分でエラーになっています。
実行時エラー '1004'
アプリケーション定義またはオブジェクト定義のエラーです。
ってメッセージが出てるんですけど、どう直せば良い?
>>89 CellsにもWorksheetsをつけてやれ
>>90 ありがとぉ〜
Worksheets("sheet1").Range(Worksheets("sheet1").Cells(i + 1, 1), Worksheets("sheet1").Cells(i + 1, 8)).Copy _
Destination:=Worksheets("結果").Range(Worksheets("結果").Cells(ix, 2), Worksheets("結果").Cells(ix, 9))
としつこく Worksheets("〜"). を付けて直りました。
dim s as variant, k as variant
set s = sheets("sheet1")
set k = sheets("結果")
s.Range(s.Cells(i + 1, 1), s.Cells(i + 1, 8)).Copy _
Destination:=k.Range(k.Cells(ix, 2), k.Cells(ix, 9))
最後に
set s = nothing
set k = nothing
こっちのほうがコードが見やすいと思う。
93 :
89:2007/01/28(日) 23:46:33
> dim s as variant
dim s as Worksheet
型宣言はきちんと
> set s = sheets("sheet1")
set s = Worksheets("sheet1")
sheetsはグラフシートを含むコレクション
ワークシート限定の場合はWorksheetsコレクションを使う
> 最後に
> set s = nothing
> set k = nothing
不要。
プロシージャレベル変数は、プロシージャを抜けるときに自動で破棄される。
Terminateイベントに処理があるものは明示的に破棄した方がいいし
グローバル変数では必要に応じて任意に破棄しなきゃならないけどね。
あと、これは間違いではないけど、一文字変数はループカウンタ以外ではやめとけ
95 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 10:46:55
教えてください。
2つのブックを持つひとつのワークシートが有り、ブックAに項目[A番号][共通]、
ブックBには[B番号]が有ります。
[A番号]にある番号が[B番号]にもある場合[共通]に[B番号]、あるいは何かのマークを
表示したいのですが[共通]の項目のセルにどのような関数を書けば良いのでしょうか?
>>95 ワークシート関数「VLOOKUP」をGoogleなどで調べてごらんなさい。
あと、ブックとシートの考え方が間違ってる。逆。
97 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 10:51:06
教えてください。
2つのブックを持つひとつのワークシートが有り、ブックAに項目[A番号][共通]、
ブックBには[B番号]が有ります。
[A番号]にある番号が[B番号]にもある場合[共通]に[B番号]、あるいは何かのマークを
表示したいのですが[共通]の項目のセルにどのような関数を書けば良いのでしょうか?
>>96 ありがとうございます。調べてみます。
PS. 2重投稿してしまいました。すみません
99 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 11:35:16
Excel2003を使っていますがどうしても分からなかったので質問させていただきます。
10
25
43
37
と縦に並んでいる数値の上位3位までを自動で足したい場合どのような関数を使えばよいのでしょうか。
数値は横列計算で弾き出される数値ですので固定ではありません。
>>101 例えばA1:A20が集計範囲だとしたら、配列数式で
{=SUM(A1:A100*(RANK(A1:A100,$A$1:$A$100,0)<4))}
とかかな?
RANK関数で順位を計算して、その上位3つを足し算してる。
同じ値のものがあると、意図したようには動かないかも。
そんな場合はいきなり関数でなくて、並べ替えしてから、
=SUM(A1,OFFSET(A1,1,0),OFFSET(A1,2,0))
とかでいいんじゃないかな?
あ、A1:A20でなくて、A1:A100の場合の式だった。ごめんごめん。
105 :
101:2007/01/29(月) 15:27:07
>>102-104 の方
ありがとうございました、少しやってみます!
>>103にあるように並べかえれば楽なんですが横計算によっては順位がガラリと変わってしまうのでどうしてもそれが出来なかったのです。
別シートにでも、ピボット組んでおけば、更新するだけで、
毎回上位順に並ぶけど。…ってもう解決してんだね。。
LARGEがいいとおもう
108 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 17:03:30
1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
「レーザープリンター」を縦書きで書きたいんですが、
セルの書式設定→文字列でやると、
レ
一
ザ
一
プ
リ
ン
タ
一
となってしまいます。哀れな僕に一のところを縦棒に変換する方法教えてくださいませ。
>>108 セルの書式設定の方向って囲みの中、
文
字
列
って書いてる所をクリックしておk。
111 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 17:55:38
Excelアウトプットにコメントを加えなさいって言われたけど
Excelアウトプットってなに?
言った奴に聞いてくれ
ヘッダかフッタだろうと予想
114 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 18:37:06
>>101 107の言う通り。
=LARGE(範囲,1)+LARGE(範囲,2)+LARGE(範囲,3)
でできると思う。
115 :
108:2007/01/29(月) 18:41:17
109さん.110さん。アドバイスありがとうございます。
職場のパソコンだとできなかったんですが、
家のパソコンでやったら普通にできました。
116 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 20:27:54
質問です
同じセル内に文字と数値を入れて、数値だけを合計計算できますか?
たとえば、
セット
5000
6000
3000
セット
2000
のような感じで、一つのセルの中に文字が入る場合でオートサムを使えますか?
117 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 20:33:11
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 VBA、JS、DS、インポート、共通、別ファイル、tips
同じ関数(モジュール?)を複数の別ファイルで使いたいのですが、その方法が分かりません。
人にちらっと聞いたところ、DSだかの拡張子のファイルを作成しインポートするというのを聞きました。
しかし検索してもDSだと全くヒットしないので、もしかしたらJSかと思って検索をしていますが、やっぱり分かりません。
共通のファイルをインポートするだけでいけるのか、DLLしか方法はないのか、良い方法を教えてください。
>>116 オートサム限定ならやったんだろ?無理だよ。
つか、計算する数字を何故に文字列と同セルにぶちこむ?
120 :
名無しさん@そうだ選挙にいこう:2007/01/29(月) 20:58:33
>>118 そうですか・・・無理ですか
一つの商品に、一つの値段じゃないもので、セット価格と言う意味でわかりやすく作ったのですが、
計算ができず。
121 :
117:2007/01/29(月) 20:59:39
>>119 なるほどアドインを使うんですね。分かりました。
クラスモジュール?と探していたところでした。
ありがとうございます。
もう一台PCがないとVBA走らせてる間なーもでけんヽ(冫、)ノ
あと20分くらい?
今日は静かだな
Excel2007で遊んでいるのか?
質問答えるしか趣味無い奴必死だなw
128 :
名無しさん@そうだ選挙にいこう:2007/01/30(火) 22:40:33
質問お願いします
ある特定のセルの値が「達成」なら「達成」
違えばあとB1のセルとC1のセルの差を出し、
「あと○○%です」と返す式を作りたいのですが、
=if(A1="達成","達成","あと"B1-C1"です")
と言う式だと作成することができません。
このようなことは可能でしょうか?
>>128 =if(A1="達成","達成","あと"&B1-C1&"です")
130 :
名無しさん@そうだ選挙にいこう:2007/01/30(火) 22:57:30
>>89 亀だが、
Destinationはシートが違うと使えん。少なくとも俺は。
範囲コピー→コピー先アクティブ→ペースペ
で我慢。
132 :
名無しさん@そうだ選挙にいこう:2007/01/31(水) 00:20:29
初心者質問ですみません
二つ以上の条件に一致した件数を抽出するにはどうすればよいのでしょうか?
countifでは1つの条件にしか適用できず困っております
134 :
132:2007/01/31(水) 00:25:29
>>133 早速のレスありがとうございます
複合とはどういった処理でしょうか?
>>134 組合すの
=COUNTIF(…)-COUNTIF(…)とか
どういう複数条件か知らないのでこれは一例
具具って調べて
136 :
132:2007/01/31(水) 00:44:56
度々すみません
例:列Bが「Aさん」でかつ列Cが「有休」である件数を抽出
A B C(列)
1 1日 A 有休
2 2日 B 有休
3 3日 A 有休
4 4日 C 有休
(行)
※実際には有休以外に項目はあります
どのような数式を当てはめればよいのでしょうか?
>>136 =SUMPRODUCT((B1:B4="A")*(C1:C4="有給"))
>>136 D1に=AND(B1="A",C1="有休")
下までコピー
COUNTIFでTRUEの数を数える
139 :
132:2007/01/31(水) 01:02:50
140 :
名無しさん@そうだ選挙にいこう:2007/01/31(水) 02:16:44
すいません。
マクロで複数のシートで同一形式のグラフを作りたいんですが、
シートごとに要素数が異なるためうまくつくれません。
アクティブなシートごとに行数を取得する方法はありませんか?
例えば
Sheet1:A1:A898
Sheet2:A1:A894
の場合、Sheet1でできてもSheet2では引数が足りずエラーになります。
よろしくお願いします。
>>140 CurrentRegionプロパティ使ってみたらどう?
Range("A1").CurrentRegion.Select でA1からの表を選択
142 :
名無しさん@そうだ選挙にいこう:2007/01/31(水) 05:18:29
>>141 ActiveChart.SetSourceData Source:=Sheets _
("hoge").Range("A1:A893,D1:D893"), PlotBy:=xlColumns
の場合Range("A1").CurrentRegion.Selectをどう使えばよいでしょうか?
▼がセルの右側に出て
複数の選択で選ぶことのできるヤツってどうすればできますか?
入力規則のリストか
コントロールツール、又はフォームツールのコンボボックス
>>144-145 ありがとうございます。無事できました
エクセル2000です。
1.他のシートに選択肢の一覧を置いて選択できるようにはできないのですか?
=CONCATENATE(A1+B1)を他のシートを参照したいのですが。
148 :
名無しさん@そうだ選挙にいこう:2007/01/31(水) 19:46:24
149 :
89:2007/01/31(水) 19:49:41
>>131 ExcelヘルプのRange オブジェクトの Copy メソッド の使用例にはこうあるんですよ。
それでこれを使おうと思ったんです。
次の使用例は、シート 1 のセル範囲 A1:D4 をシート 2 のセル範囲 E5:H8 にコピーします。
Worksheets("Sheet1").Range("A1:D4").Copy _
destination:=Worksheets("Sheet2").Range("E5")
>>148 C3は = C2 + B3
C4以降はC3をフィル
152 :
名無しさん@そうだ選挙にいこう:2007/01/31(水) 20:20:29
153 :
名無しさん@そうだ選挙にいこう:2007/01/31(水) 22:46:39
復活したかな?
154 :
名無しさん@そうだ選挙にいこう:2007/01/31(水) 23:16:28
読み取り専用にチェックがついていないエクセルファイルを
読み取り専用で開く方法を教えて下さい
156 :
名無しさん@そうだ選挙にいこう:2007/01/31(水) 23:22:55
>>155 読み取り専用で開く場合って、右クリ⇒プロパティの読み取り専用にチェック
するじゃないですか
そうじゃなくて、読み取り専用でないファイルを読み取り専用で開く方法ないですかね?
ってこと
>>156 「シートの保護」or「ブックの保護」でGoogle
>>156 ファイルを開くダイアログでファイルを右クリック
エクセルで
1.テキストファイルを大量に検索して
2.そこにある特定の文字列を正規表現で抜き出す
3.セルに書き出す
ってできますか・?
>>159 質問があいまいなので出来るとも出来ないとも言える
1.とあるフォルダに入ってる大量のファイルから
2.特定のパターン文字列を取り出して
<font size="3"><b>大阪名物</b></font>
p;[0120]
(500円(税込))
3.エクセル内のセルに貼り付ける
行A B C
大阪名物 | 0120 | 500
>>161 >>159の人?
「特定パターン」の必要な情報がさっぱり無いからはっきりとは言えないが、書かれている内容から推測すると正規表現では難しそうだね
>>165 できました!!!
ありがとうございます!!!
シート名が変更できなくなってしまいました。
変更すると頭に .8.xls] と自動で入ってしまい、
それ以外に変更しようとすると、
シートまたはグラフの名前が正しくありません のエラーが出てしまいます。
ご助力お願いします。
>>161 grepなどで正規表現置換したあとExcelにインポートするか
VBAでテキストファイル読み込んで解析・整形・代入をするかだね。
正規表現についてはスレ違いだし、VBA書けないという情報は出されてないので
コードは自分で書いてね。
164は難しそうとか言ってるけど、数値と「大阪名物」の部分が
可変なだけなら正規表現でも簡単に出来るから。
>>142 離れている行ならこんな感じで
Dim rngA As Range
Range("A1").Select
Set rngA = Union(Range("A1").Range(Selection, Selection.End(xlDown)), _
Range("D1").Range(Selection, Selection.End(xlDown)))
ActiveChart.SetSourceData Source:=rngA, PlotBy:=xlColumns
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel 合計 組み合わせ 特定
ある列の数値の内いくつかを合計した数値だけがわかっています。
どの数値を合計したものなのかを特定する方法があれば教えて頂きたく思います。
ちなみにいくつの数値を合計したものなのかはわかりません。
具体的にはこんな感じです。
「この中から足すと87になる数値の組み合わせを特定しなさい」
15
25
3
56
34
28
35
60
よろしくお願いします。
>>170 B1:I1にその15〜60
B2:I2に1 2 4 8 16 32 64 128
A3:A258に1〜255
B3に =MOD(INT($A3/B$2),2)*B$1 I258までフィル
J3に =SUM(B3:I3) J258までフィル
オートフィルタで抽出
データ数が増えると簡単に破綻するけどね
つーか確定された手法でしょ
公式に当てはめてやるのと同じ
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 Excel 文字の大きさ 揃える
半角、全角それぞれ一文字の大きさを揃える方法は
無いでしょうか?
例えば
’あああああ’と、
’くくくくく’と書いた場合の長さを揃えたいのです。
175 :
名無しさん@そうだ選挙にいこう:2007/02/01(木) 14:47:04
プロポーショナルフォントを使う
ゴシック → Pゴシック
等に変更する
>>174 プロポーショナルフォント(文字毎に文字幅が異なるフォント)を使わなければ良いだけでは?
具体的には「MS Pゴシック」の変わりに「MS ゴシック」とか
>>175 逆だろw
177 :
174:2007/02/01(木) 14:58:27
「MS ゴシック」で出来ました。
ありがとうございました。
セルA-1 draemon
セルA-2 nobi nobita
とあってもし空白があったら
空白を+に置き換えしてなければそのままでBに返すってできますか?
セルA-1 draemon
セルA-2 nobi+nobita
>>178 >>4 > ★ Excelで出来ないこと、仕様上の制限 (括弧内は代用法)
> ▼数式・関数
> ・ 値の書き換え、値の保持 (VBA)
別な場所に結果を返して元の場所に値の貼付をするか、VBA使うしかない
>>178 文字列があるかどうかの判定は「=FIND()」関数。
あとはオートフィルタで絞ってGo。
置換つかえ
ふむ、フィルタ(" "を含む)と置き換えでおkだな
183 :
名無しさん@そうだ選挙にいこう :2007/02/01(木) 20:37:25
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
1 ○○ 1 ○○
2 2
3 3
4 4
5 5
6 6
・ ・
・ ・
・ ・
・ ・
25 ○○ 148 ○○
・ ・
49 ○○ 289 ○○
・ ・
73 ○○ 433 ○○
左図を右図のように、行挿入を繰り返したいのですが、
達人お教えください。
左図を右図のように行の挿入を行いたいのですが、
疲れているんだろうか・・・
>>183が何を聞きたいのか分からない
俺漏れも…
手動でやってくれ
187 :
名無しさん@そうだ選挙にいこう :2007/02/01(木) 20:55:16
すみません。みなさんは疲れてません俺が馬…。
24行おきの行を
144行おきにかえたいのですよ。
上の右図148は間違いで145でした。
どういう処理でそれが発生しているのか、非常に気になるw
>>187 +24でまわしてるループを+144でまわせばいいじゃん。
>>183 @B列をクリア
AC1あたりに、「=MOD(A1,145)」と書き、下までフィル
Bオートフィルタ展開→C列が「0」で絞る
CB列にマーキング
DC列をクリア
1行目は手動で。
>>187 これでどうだ。
Sub test()
Dim cnt As Long
Dim arr As Long
Dim arr2 As Long
Dim temp() As String
cnt = 0
arr = 0
arr2 = 0
Do While cnt < 1000
temp(arr) = Cells(cnt, 1).Value
arr = arr + 1
cnt = cnt + 24
Loop
ActiveSheet.Clear
cnt = 0
For arr2 = 0 To arr
Cells(cnt, 1).Value = temp(arr2)
cnt = cnt + 144
Next
End Sub
ちなみに未テスト
192 :
名無しさん@そうだ選挙にいこう :2007/02/01(木) 21:05:54
一年間、一時間ピッチのデーターを10分ピッチのデータに貼り付けるのです。
>>190さん
やってみます。できるかなー。
193 :
名無しさん@そうだ選挙にいこう :2007/02/01(木) 21:07:18
>>192さん
それもやってみます。
みなさん、忙しいのに感謝。
194 :
名無しさん@そうだ選挙にいこう :2007/02/01(木) 21:11:25
temp(arr) = Cells(cnt, 1).Value
デバックエラーがでまつ。
>>194 ぱっと見、動的配列で宣言してるからじゃないのか?
めんどくさいからためすことはないが
時間かけてVBAでやる必要はないしなw
197 :
名無しさん@そうだ選挙にいこう :2007/02/01(木) 21:20:40
ああ、わたしのレベルでは無理そうです。
朝まで手動でいきます。
ありがとうございました。
>>194 Do While cnt < 1000
Redim preserve temp(arr + 1)
temp(arr) = Cells(cnt, 1).Value
じゃあこうに変更でどうだ。
テストなしじゃ通らんな。
>>197 Doの上の行に ReDim temp(arr) って付けてみ
俺は試さないが
201 :
170:2007/02/01(木) 21:28:07
>>171 レスありがとうございます
勉強不足を痛感しました
頭の使い方が悪かったのも理解しました
これから励みます
temp(arr) = Cells(cnt, 1).Value
やはりでバックエラーでつね。
>>198 すみません。ほんとだめなやつなんす。
>>197 Sub test()
Dim cnt As Long
Dim arr As Long
Dim arrTwo As Long
Dim temp() As Variant
cnt = 1
arr = 1
arrTwo = 1
Do While cnt < 65500
If Not IsEmpty(ActiveSheet.Cells(cnt, 1)) Then
ReDim Preserve temp(arr)
temp(arr) = ActiveSheet.Cells(cnt, 1).Value
arr = arr + 1
End If
cnt = cnt + 24
Loop
ActiveSheet.Cells.Clear
cnt = 1
For arrTwo = 1 To arr - 1
ActiveSheet.Cells(cnt, 1).Value = temp(arrTwo)
cnt = cnt + 144
Next
End Sub
完成。
テスト済み
204 :
203:2007/02/01(木) 22:09:39
シートがどういう状態かしらんけど、
このマクロは動くからな、ちゃんとコピーして予備つくっといてくれよ。
24行ごとが144行になるってことは1万行くらい書いてあったらあふれるんだからな。
手遅れでもしったこっちゃないが。
205 :
名無しさん@そうだ選挙にいこう :2007/02/01(木) 22:13:10
ありがとうございました。出来ました。スゴス。
これを機会に私も勉強してみます。
連続した行に144行空けるってーのは
簡単に出来るもんなんすか?
>>205 1発で動かんかったからでかいことはいえんけども、
単純な入力作業を楽にするってだけなら簡単。
[VBA]でぐぐって頑張って。
簡単なのは[マクロの自動記録]で。
208 :
名無しさん@そうだ選挙にいこう :2007/02/01(木) 22:25:20
>>207 自動記録。うし、やってみます。
あのマクロは大事にとっておきます。
どもでした。
>>206 表示 〜 改行プレビュー
とか何とか、その辺じゃねーの
>>206 E列より右の全列が非表示になってるだけ。
書式→列→表示しない
211 :
206:2007/02/01(木) 22:39:05
>>209 表示系のメニューも含めてほぼ全メニューを見たのですが、
どうしてもわからないのです。。。
212 :
206:2007/02/01(木) 22:45:27
>>210 どうもありがとうございます。
部分的な列の非表示はやったことがあったのですが、
「E列より右の列全て」非表示という発想がありませんでした。
ありがとうございました。
windows xp
excel2003を使用しています
画像を挿入して、その画像の上に文字を入力したいのですがわかりません
貼り付けた画像→右クリック→順序→背面へ移動
としてみましたが、何もかわらず・・・・・
わかる方いらっしゃいましたらよろしくお願いいたします。
質問の意味わかりにくいでしょうか?
>>213 セルの背景に画像を表示させる感じにしたいのか?
画像の上に矢印やら注釈文を付けたいのか?
前者は無理だった気がするが、後者ならテキストボックスを挿入しろ
>>214 大満足してますよ。
今は別のことで悩んでる。
もう、聞く勇気はありません。
217 :
名無しさん@そうだ選挙にいこう:2007/02/01(木) 23:30:35
エクセルの質問ではないのだが、ここで質問している奴、答えている奴は普段はどんな仕事
してるんだ?
職場(事務の仕事なんだが)ではエクセルを使うことが多くて、ある程度のことなら(基本作業なら)できるが、
このスレの質問のレベル、答えている人のレベルはかなり高いと思う。
どうやってここまで知識を得たのか教えてくれないか?お勧めの参考書などがあれば
教えてくれ
>>219 こんなスレがあったのですね、
ちょっとのぞいてみます。ありがとう。
>>215 ありがとうございます
前者のほうなんですが、後者でも十分いけそうです
前に使っていたスタースイートでは出来たのでエクセルでも出来るかと思ったのですが無理なんですね・・・
すっごく早いレスありがとうございました
>>217 株やってるとVBAまで使いこなせるようになるよ。
毎日のデータ更新、明日の仕掛ける銘柄の計算があるから。
理論、数式をコードに書き換えるだけだから、はじめは時間が
かかってもそれなりに動くよ。
必要は発明の母。株をやってエクセルも金も一石二鳥(嘘半分
>>218 基礎的な知識無しでMSDN読んでると眠くなりそうな気がw
バカで無知な奴がMSDN読むと眠くなる
予備知識のある奴や、頭の回転が良い奴なら問題ない
本来こうではいけないんだけどな
こういうものは無知なバカが理解できるように作らないと
この「日本語訳」丸出しの文章が難だよなぁw
英語ページ読めばいいだけじゃん。
英語ページの方が情報量も多いし。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 移動 マクロ オブジェクト
グラフの上にテキストボックスとオートシェイプをいくつか配置してあり、
そんなシートが60枚ほどあります。
全てのシートのテキストボックスだけをグラフの端に揃えたいのですが
マクロでやろうとすると元の位置から○○座標分移動となってしまい上手くいかんとです
Selection.ShapeRange.IncrementLeft 31.5
これを指定した絶対座標に移動させるにはどうやったらいいんでしょうか?
229 :
228:2007/02/02(金) 10:26:57
ごめん、事故解決しますた
Selection.ShapeRange.IncrementLeft -9999
Selection.ShapeRange.IncrementLeft 移動量
ヘルプ見ててもサッパリわからず、一度X座標を0に揃えてやる方法しか思いつかなかった
玄人目にはダメダメに見えるかもしれないけど・・
windowsXPを持っているのですが、excelが入っていません。
どこか無料でダウンロードできるところがあるでしょうか?
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| |
>>230 / ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
233 :
名無しさん@そうだ選挙にいこう:2007/02/02(金) 17:51:45
テストを受けなかった人は零点なんですが、零点の人を除いて平均を出した
いときはどうすればいいですか?(受けて零点、というケースはないとして)
>>233 それに対応した関数があるのでヘルプで調べてごらん
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】合計
たとえば、
2 4 5 4
2 6 11 15
というように、上の段が今日の数字。下の数字がそれまでの数字の合計。
自動的に、上の段の数字を入力するだけで、下の合計を出す関数ってありますか?
>>235 自分自身は足せないと思う。
関数では。
>>233 A1〜A10に点数がある場合。
=SUM(A1:A10)/COUNTIF(A1:A10,"<>0")
>>235 もう1行、数式を入れる行を用意すれば可。
2 4 5 4 →今日の数字
=SUM(A1,A3) →この行を挿入。
2 6 11 15 →昨日までの数字
関数なんか使わんだろ
A B C D
1 2 4 5 4
2 2 6 11 15
A2=A1
B2=B1+A2
C2からはB2をフィルコピー
239 :
名無しさん@そうだ選挙にいこう:2007/02/02(金) 20:25:23
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
2002年から2006年までの膨大な情報を年毎にフォルダに分け、
それぞれの年間総合計シートを筆頭に、2枚目以降のシートは
月毎にIDナンバー順に並べ替えるという作業をしています。
同じ作業の繰り返しなので、マクロ記録をして簡略化しています。
が、基本となる年間総合計シートの名前がそれぞれ違うので、
実行するとエラーになります。そのためフォルダ毎に
マクロ記録を1から作り直しています。
何か無駄な作業をしているような気がします。
もっと一回作った記録を使いまわせる効率のいい方法があるような…。
あと何が悪いのか、作った記録がエラーになる場合も多いです。
今回初めて使う機能なので戸惑います。
マウスに少し触れてしまって行の幅がずれてしまっただけでもう実行
してくれないものなのですね。
何かあらかじめこういうところに気をつけてから記録を開始したら
エラーを防げるよなど知恵があれば授けてください。
いくらでも時間をかければ仕上げられますが、量は膨大でも
簡略化さえできればきっと短時間で終わる作業だろうと思っています。
>>239 そのシートが常に一番左にあるなら、
Worksheets(1)
と指定してやればおk。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】 もはやプロ級で、神の領域にすら到達しつつあるようだ。
【4 VBAでの回答の可否】 可
【5 検索キーワード 】色々検索しすぎて忘れちゃったよ。もう歳なのかな。
既に作られているオートシェイプや図が、どのセルに表示されているか取得することは可能?
つまんね
244 :
242:2007/02/02(金) 21:50:32
褒めてくれてありがとう。
どのセルかってのは知らん。
位置なら、
Sheets(1).Shapes.Item(1).Left
.Top
で取れるんじゃ?
246 :
242:2007/02/02(金) 22:07:17
それって、図が表示されてるドットとかの位置での取得じゃ?
セル単位での位置の取得方法は無いでございますか?
さぁ我慢しないで答えてくれたまえ
君のためならこの命尽きるまで待ってあげるから・・・
249 :
242:2007/02/02(金) 22:13:54
>>247 アアあった。どうもありがとうございまする。
>>248 私の質問は君が調べなさい。
それではエクセル制作に戻るので、ごきげんよう。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2002
【3 VBAが使えるか .】 少しぐらいなら
【4 VBAでの回答の可否】 可!
Excelでテストをして、その結果を結果n(nは1,2,3〜)シートを
作成して貼り付けていきたいと思ってます。んで、そこで現在
結果nの最大値は何かって知りたいんですけど。
最初の時点では当然結果1シートも無いので、そこから判断していく
方法を教えたってください〜。
Sheets.Count
>>250 結果nを随時シートにコピーしていくなら
ForEachステートメントでワークシートをカウントして調べるか
シート名を調べれば拾える
結果nをシートにコピーしていない状態だと
>>251の言うとおり
メモリに依存するかもしれない
というか詳細書いて無いから詳しく答えられん
Excel2002を使用しています。
出勤表を作成していますが
A B C
出 退 出勤時間
8:30 17:00 7.5
7時間半勤務なので↑こんな風にCを7.5と表示させるにはどうすればようでしょうか?
ものすごいズレてしまいました。お願いします……
>>254 =MAX(7.5,(B2-A2)*24)
こうですか?
257 :
名無しさん@そうだ選挙にいこう:2007/02/03(土) 00:00:03
質問させてください
手書きで上がってきた紙ベースのデータを
日々、打ち込むという単純作業をしています
これを以下のようにして短絡化するのは無理でしょうか?
@手書きのデータを(A3)スキャンする
Aスキャンしたデータを文字だけのデータにして(ラスタデータみたいなかんじ)
縮尺をPC内のエクセル表と同じ倍率にして貼り付ける
B手書きのデータの数字がPC内の表に貼り付けられる
C数字が貼り付けられたところをなぞるイメージでデータ打ちこみ
というかんじです
CADのトレース作業などでよく行われる手法ですがそれを
エクセルでも応用できるでしょうか?
またそのためのフリーソフトなどありましたら教えてください。
258 :
256:2007/02/03(土) 00:10:21
MINだったか
>>257 Excel単体じゃ無理。
OCR系のソフト買って、テキストエディタで加工して貼り付けがベター。
直でExcel形式に取り込めるものだと、うまくいかない場合が多い。
>>256さん有難うございました。
どうやら24を掛け算するだけで僕は幸せになれそうです。
手書きだからOCRはどうかな?
まあ、なに使うかは自由だけど
手書きだったら読めないな
265 :
名無しさん@そうだ選挙にいこう:2007/02/03(土) 00:23:33
どうして24掛けるの?
人によっては手書き対応のOCRでも読めないよ
267 :
257:2007/02/03(土) 00:50:37
皆様、反応ありがとうございます
OCRソフトというものがあるんですか 知らなかった・・
ちょっとじっくり勉強させてもらいます
その後また報告させてください
>>250 これがわからん。
@どの段階でシートが作られるのか
Aどんな形式でシートに結果が出力されるのか
B結果1シートがない状態(つまりなにも結果がない状態)で最大値を判断とは
シートのすべてのセルを走破して値を調べてたらえらいかかるし…。
一見セルの中には文字列、例えば「二十歳」とあるけど、
数値として「20」が記入されている様にするには、どうすればいいの。
272 :
名無しさん@そうだ選挙にいこう:2007/02/03(土) 12:25:53
携帯のメールみたいに予想入力する方法ってあるんですか??
>>271 273の「Excel 漢数字 関数」は間違い
関数ではなく表示形式で出来る
関数だと別セル表示になっちゃうからな
>>272 予測入力はVBA使わないと出来ない
同列入力値からの補完なら標準で有効になってるはず
276 :
名無しさん@そうだ選挙にいこう:2007/02/03(土) 12:51:50
メールアドレスを入力するとメーラーが起動してしまいます。
これを無効にしたいのですがどうしたら良いでしょうか?
>>277 ツール > オプション
の中をよーく調べよう
279 :
名無しさん@そうだ選挙にいこう:2007/02/03(土) 16:47:29
5分ごとに自動保存するにはどこで設定したらいいですか?
>277 メールアドレスを入力しただけでは起動しません。
>278 バージョンで異なるのでは?
>>279 オプションの中に「自動保存」タブがあれば、そこで。
古いバージョンだと無い。
>>273,275
どうもありがと。おかげで出来ました。
そうだ、明日は県知事選挙だ。
2000なので、ないですか。。。ありがとうございました。
>>284 Excel2000なら
ツール→アドイン
の中にないか?
そこにチェックを入れればツールメニューに出るはず。
アドイン使うなら、Excel97からあるはず。
287 :
名無しさん@そうだ選挙にいこう:2007/02/03(土) 20:16:02
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2000
【3 VBAが使えるか .】いいえ
【4 VBAでの回答の可否】 いいえ
すいません。日報にexcelを使用したいのですが。
簡潔に、日々の売上累計を記入するにはどのような方法がありますか?
やはり、関数を使用して、本日売上を記入してその後累計を求めるしか無いのでしょうか?
理想は、本日売上のみを日々記入すれば、完了っと言うのが良いのですが。。。
>>287 オマイが何を売っていて、どのような表になるかを書け。
289 :
名無しさん@そうだ選挙にいこう:2007/02/03(土) 20:37:53
>>285>>286 ありがとうございます。
アドインにありました。ディスク要求されましたが、うまくいきました。
この自動保存って、Wordの自動保存と同じですよね?
みなさんは使ってらっしゃらないんですか?
290 :
287:2007/02/03(土) 20:56:02
2/1 2/2
本日 累計 本日 累計
A ¥100 ¥100 A¥200 ¥300
B ¥100 ¥100 B¥300 ¥400
C ¥200 ¥200 C¥100 ¥300
D ¥500 ¥500 D¥300 ¥800
計 ¥900 ¥900 計¥900 ¥1800
って感じです。日々を数字と入力後、ページレイアウトで1ページ毎に区切って、1ページづつプリントする予定です。
1シートで1ヶ月分を作成したいと考えてます。
宜しくお願いします。
>>287 その表を縦に繋いで書いてって、どっかにピボットテーブルで
日々の合計と累計取っておき、毎日ピボットを更新、みたいな。
SUMIFでも何でも良いが。
何せ、日別に表を横に進めるのは、データの使い方を間違ってる。
日付 商品 売上
02/01 A \100
02/01 B \100
02/01 C \200
02/01 D \500
02/02 A \200
02/02 B \300
02/02 C \100
02/02 D \300
こんな感じ。
印刷する時は、オートフィルタで日付を絞ってから。
293 :
EX音声読み上げ:2007/02/03(土) 23:05:47
すみません。2003では設定すれば「ツール」→「音声」→「[読み上げ]ツールバー」でできた音声読み上げが
VistaでExcel2007ではできません。vbaではspeakメソッドで英語だけは読むのですが。
どなたか、お教えいただくか、何かの情報をいただけないでしょうか。
>>293 その環境を持ってるの、君だけだと思うので、
Microsoftに訊いてみよう。
293はマルチだから放置でいいよ
>>230 すげー遅レスだけど、いまならOffice2007体験版が使えるよ。
2か月だけだけどExcelも入ってる。
298 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 01:28:41
293です。
申し訳ありません。ルールをよく知らなかったもので。
もし、おわかりになりましたら、お教え願えないでしょうか。
まだVista使ってる人少ないから気長に待ちましょう。
願えません
万引きが犯罪とは知らなかったので、このまま金も払わず
商品を持ち帰ることを見逃してもらえないでしょうか
ってのと同じだ
こういうのに教えちゃうと「教えたがり厨」の烙印押されるし
302 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 02:30:40
すいません。教えて下さい。
例えば、間借りで申し訳ないですが、
>>148サンのシートで(A列)日付部分が部門別のの表示、(B列)が本日売上として、(C列)にその累計を表示します。
それを(
>>148サンのシート)で当日売上として保存して、なお同じシート内で次の日の計算を行うには、どの様な方法がありますか?
部門別の売上(毎日更新)と光熱費(月イチで各種更新)とその他日誌的スペースを備えた日報を作成したいのです。
当日の数字の足し引きは解るのですが、本日累計を次の日に持って行き、
更に次の日の本日売上を累計する方法が解りません。
何か適切な関数があれば教えて下さい。
148サンをお借りした、たとえは余分だったかも知れません。。。。
303 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 04:51:26
VBAでセルA1〜J1までに、ランダムで0〜9までの数字を入れる
にはどうしたらいいですか??
>>302 よくわからんが部門を列方向に作れば良いのでは?
A B C D E F
1 日付 部門1 部門2 部門3 合計 累計
2 3/1 100 200 300 =SUM(B1:D1) =E1
3 3/2 200 300 400 =SUM(B2:D2) =F1+E2
:
32 3/31 100 200 300 =SUM(B32:D32) =F31+E32
日付が代わっても毎回同じセルに入力をしたいとか思ってるのかも知れないけど
それじゃ記録が残らないし、間違って入力した場合の修正も面倒。
そもそも
>>4に書いてあるように関数では不可能でVBA必須になるし。
そういうことをやりたい場合でも、上記のような日別の表を作った上で
ユーザーフォームなりシート上のどこかなりに入力インターフェイスを用意すべきだ。
>>303 Rnd()で乱数発生させてForでループ回して代入すればいいと思うよ。
最初にRandomizeをお忘れなく。
305 :
303:2007/02/04(日) 06:02:02
>>304 ありがとう、いかんせん初心者なもんで、
自分なりにやってみたんですけど
全くできません、どこが悪いんですか??
少数のランダムが入っちゃうから0〜9の命令が効いて
ないと思うんですけど…。
Private Sub CommandButton1_Click()
Randomize
Dim A As Integer
For A = 0 To 9
Next
With Worksheets("sheet1")
.Range("A1").Value = Rnd(A)
.Range("A2").Value = Rnd(A)
.Range("A3").Value = Rnd(A)
.Range("A4").Value = Rnd(A)
.Range("A5").Value = Rnd(A)
.Range("A6").Value = Rnd(A)
End With
>>305 普通に10倍して少数切り捨てればいいじゃないか。
Int(Rnd *10)
でいいだろ。
あっ、なんか嫌な予感。
もしかして、重複なしか?
だったら既出の数字をさらう必要もあるね。
それから、細かいことだがループカウンターはi,j,kを
使用したほうがいいよ。コーディング上の慣例だから。
重複なしの場合、既出をさらうより、
配列に順番に数字を入れて、その配列をランダムソートしたほうがいいよ
ついでに言うとループカウンターはIntegerではなくLong使おう
これは慣例ではなく実際にLongの方が処理が速いから
309 :
303:2007/02/04(日) 09:27:50
>>307 >>308 ありがとうございます。そうなんです、重複なしで入れたいんです。
ループカウンタのi,j,kとはどういうことですか?
それとやっぱりFor Nextが全く意味が無いのですが、どうしたらいいの
でしょうか??
Private Sub CommandButton1_Click()
Randomize
Dim A As Long
For A = 1 To 3
With Worksheets("sheet1")
.Range("B3").Value = Int(Rnd * 10)
.Range("B4").Value = Int(Rnd * 10)
.Range("B5").Value = Int(Rnd * 10)
.Range("B6").Value = Int(Rnd * 10)
.Range("B7").Value = Int(Rnd * 10)
.Range("B8").Value = Int(Rnd * 10)
End With
Next
End Sub
1〜3までって言ってるのにやっぱり0〜9から選ばれちゃうんですよ〜。
3重にループさせろって事じゃね?
311 :
303:2007/02/04(日) 09:48:09
すいません、乱数生成は0〜1までの実数なんですね。
For Nextの意味を履き違えてました。
配列に数字を入れて、順番を入れ替えてなんてできるんですか??
ネットでVBA入門検索しても全然わかりません…。
Private Sub CommandButton1_Click()
Dim lngArray(9) As Long
Dim lngBuf As Long, lngRnd As Long, i As Long
' 配列に0〜9の数値を代入
For i = 0 To 9
lngArray(i) = i
Next i
' 配列の値をランダムに入れ替え
Randomize
For i = 0 To 9
lngRnd = Int(Rnd() * 10)
lngBuf = lngArray(lngRnd)
lngArray(lngRnd) = lngArray(i)
lngArray(i) = lngBuf
Next i
' セルに代入
Range("A1:J1").Value = lngArray
End Sub
313 :
303:2007/02/04(日) 10:18:02
>>312 すごい、できました。
自分じゃ絶対書けないプログラムです…。
ありがとうございました!!
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Ctrl+D
範囲指定した後,Ctrl+D で下方向へコピーできますが,罫線もコピーされてしまいます。
「罫線がコピーされない下方向へのコピー」 をVBAで実現する方法を教えて欲しいです。
>>314 ツール→マクロ→新しいマクロの記録で、
カーソル右下角を下方向に右クリフィル→値のコピー
を記録してコード見てみ。
ただ、数字の連番にはならん。
>>312 10枚カードがあるから10回切ればランダムソートという考え方はナンセンス。
その考え方では10回切ろうが100回切ろうが同じ。元に戻る可能性があるからね。
10枚カードがあったら1枚づつ別の山へと抜き出していくという考え方がオーソドックス。
一度選んだカードは元に戻らないように二度と動かさない。
ひとつの配列でやりたいなら、ランダムに入れ替える配列の位置をきちんと制御する。
cardList = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
For i = UBound(cardList) - 1 To 0 Step -1
tmpCard = cardList(i + 1)
pulledOutCardPosition = Int(Rnd() * i)
cardList(i + 1) = cardList(pulledOutCardPosition)
cardList(pulledOutCardPosition) = tmpCard
Next
[A1:J1].Value = cardList
318 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 11:38:15
立方メートルの、「m」と「小さい3」を別々に打ちたいんですけど
小さい「3」のみってどうしたら出るのですか?
できるようなら教えてください、お願いします
>>316 カードを10回切るのとは全く違う。
順次、ランダムな位置との入れ替え。それによって結果がランダムになる。
もちろん元に戻る(「インデックス=値」になる)可能性もあるが、
君の方法だって「インデックス=値」になる場合もある。
要素数分の一の確立でそうなんることを含めてランダムと言うんだよ。
>>318 3だけ後からフォント指定で上付きにするしかない
>>315 「A1の内容を,A2〜A9の範囲へ下方向コピーする」
1.マクロ記録開始
2.A1を選択
3.A1の右下を右クリックしてドラッグし,「書式なしコピー(フィル)」を実行
4.記録終了
とすると,
Sub Macro1()
Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A9"), Type:=xlFillValues
Range("A1:A9").Select
End Sub
と記録されました。この決めうちで記録された範囲の部分を,
「現在選択している範囲」に置き換えられたらよいのですが…
>>320 初めてなのですが…もし過去に同様の解決策が出ていましたら教えてください。
こんな教科書に載るほどのオーソドックスな手法を知らない奴もいるんだなw
お前らはそのままでいいよ。
他の人が馬鹿の方法を鵜呑みにするのに疑問を持ってくれればね。
325 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 12:53:18
>>321 偉そうな御講釈。ありがとう。
数学的に無知な速度厨の方ですか?
それともアルゴリズムに興味無い速度厨の方ですか?
いやあ、勉強になりましたwww
>>323 VBA使用→可なんじゃないの。
「選択範囲」という用語が分かってるなら、検索したまえよ。
元に戻ることも含めてランダムじゃないか
>>324 >>326 EXCEL VBA 選択範囲 取得 などで先ほどから検索しているのですが…
y1 = ActiveCell.Row'選択範囲左上の行番号
x1 = ActiveCell.Column'選択範囲左上の列番号
y2 = Selection.Rows.Count'選択範囲の行数
y2 = Selection.Columns.Count'選択範囲の列数
として,Range(y1,x1,y2,x2)などとしてみたのですが…
うまくいきません。
>>327 数学やってる人に聞いてみればわかるよ。
俺もそう思ってた。
元に戻ることが重要じゃないんだ。
元の集団に戻すことがアホなんだ。
>>323 適当に直して
Sub sample1()
Selection.Copy Destination:=Selection.Offset(1, 0)
Selection.Offset(1, 0).Select
With Selection
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
End With
End Sub
>>330 ありがとうございます。
でも,思うような動作にはならないようですので,参考にさせていただきます。
ソートだのシャッフルだのというアルゴリズムはVBAが生まれる前から
プログラミングの世界では最も基本となるスタンダードな処理。
当然、その処理のためのアルゴリズムも何十年も前から様々に議論されてる。
その中の「間違い」と同じコードを書きながら「俺は正しい」みたいな
アホ丸出しの態度を散れるやつは井の中の蛙。恥ずかしすぎるww
偉そうに講釈垂れたいならせめて先人の苦労したノウハウくらいは頭に入れとけ馬鹿。
地方の中小企業の自称SEにでもなってお山の大将気取ってたいなら
そのままでおk。
>>325 m9(^Д^)プギャー
>>332 全くその通りだな
316みたいなバカはここには来ないで欲しい
VBAごときであらそうな( ´∀`)σ)´Д`)
>>334 そう思うよ。マクロの自動記録ベースで思ったようなことができるのが
VBAの魅力。好きに書けばいい。無駄なコードでも本人的にOKならそれでいい
ってのが魅力。
でも型変換に拘って速度廚っぷりを発揮してるくせにアルゴリズムは
馬鹿丸出し。しかも本人は気づいてもいないような馬鹿にはしっかり馬鹿だと
言ってあげないといけない。なぜなら馬鹿はいるだけでウザいから。
>>316はまだ何が間違ってるのかわかってないんだろうな。
こういうヤツと仕事するとすげー疲れる。
能無しのくせに口だけは減らないヤツ。
337 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 14:00:19
つーか速度にしてもあっちのが早いんだけどな。
はいはい、おしまい。
↓次の質問ドゾー( ´_ゝ`)
>>336 ゲラwww
お前が周りにそう思われてるってwwww
典型的wwwww
>>338 ごめんごめん。もう書かないよ。
このスレを見てるVBA勉強したい人、馬鹿の断定は常に
疑って自分で試すことをしようね。
>>339 余程悔しかったんだね
そんな顔真っ赤にしてモニター睨んでもどうにもならないよ
だから、もうやめとけって馬鹿
本当にやめとけよ、馬鹿!
蒸し返して悪いが、
>>312は下の2つを混同してると思うよ。
For i = 1 To 100 '100回シャッフル
lngRnd = Int(Rnd() * 10)
lngBuf = lngArray(lngRnd)
lngArray(lngRnd) = lngArray(0)
lngArray(0) = lngBuf
Next i
For i = 0 To 8
lngRnd = Int(Rnd() * (10 - i)) + i
lngBuf = lngArray(lngRnd)
lngArray(lngRnd) = lngArray(i)
lngArray(i) = lngBuf
Next i
>>341 よく俺が血まみれだと分ったな。
いま341を殺してきたところだ。
結局無理でした…
教科書並みとのことでしたが,検索しても欲しい情報には行き当たらず…
Sub Macro1()
y1 = ActiveCell.Row '選択範囲の左上の行番号
x1 = ActiveCell.Column '選択範囲の左上の列番号
y2 = Selection.Rows.Count '選択範囲の行数
y2 = Selection.Columns.Count '選択範囲の列数
Selection.AutoFill Destination:=Range(R&y1&Cx1:R&y2&Cx2), Type:=xlFillValues
Range(R&y1&Cx1:R&y2&Cx2).Select
End Sub
>>346 Selection.Rangesは試したか?
これもダメでした・
Sub Macro2()
y1 = ActiveCell.Row '選択範囲の左上の行番号
x1 = ActiveCell.Column '選択範囲の左上の列番号
y2 = Selection.Rows.Count '選択範囲の行数
y2 = Selection.Columns.Count '選択範囲の列数
Selection.AutoFill Destination:=Range(Cells(y1, x1), Cells(y2, x2)), Type:=xlFillValues
Range(Cells(y1, x1), Cells(y2, x2)).Select
End Sub
>>314 Sub hoge()
With Selection
For i = 0 To .Columns.Count - 1
Range(Cells(.Row, .Column + i), Cells(.Row + .Rows.Count - 1, .Column + i)) = Cells(.Row, .Column + i)
Next
End With
End Sub
>>331 式でも入っているのか?
Sub Sample()
Dim Rng As Range
Dim fillRng As Range
Set Rng = Selection
Set fillRng = Application.Union(Selection, Selection.Offset(1, 0))
Rng.AutoFill Destination:=fillRng, Type:=xlFillValues
End Sub
>>350 ああ、そういうことか。
勘違いしてたよ。
>>331 んじゃこれは?
Sub Sample2()
Selection.Cells(1, 1).Copy Destination:=Selection.Cells(2, 1)
With Selection.Cells(2, 1)
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
End With
End Sub
>>350 >>350 ありがとうございます。でも,やっぱり異なるようです。
参考にさせていただきます。
もともとの目的が,「CTRL+D 下方向コピー」で,罫線もコピーされてしまうことを
回避したいことですから,式が入っていることも多いですし,番地も相対的に変わって
ほしいわけです。
例えば,カレンダーを作るとして,日曜日の日付を羅列するときに,
A1 2007/2/4
A2 =A1+7
A3 =A2+7
・・・
となるとして,A2〜A50を選択してからCTRL+Dを押せば,一気にすべて下方向コピー
してくれるわけですが,罫線もコピーされてしまいます。それを回避したいと…
y1 = ActiveCell.Row '選択範囲の左上の行番号
x1 = ActiveCell.Column '選択範囲の左上の列番号
y2 = Selection.Rows.Count '選択範囲の行数
y2 = Selection.Columns.Count '選択範囲の列数
で,選択範囲の左上と右下の座標を取ることはできたので,
それを,Rangeの引数として入れることができればよいのですが…
もう少し頑張ってみます。
もう少し頑張ってみます。
>>353 ありがとうございます。
でも,上左右の罫線を消すわけではなく,コピー先の元の書式(罫線)のままにしたいのです。
1.A1〜A50にはすでに同じような式が入っていて,罫線も引いてある。
2.A1の式を手直しした。
3.A1〜A50をctrl+Dで下方向へコピー
4.式はきちんと相対的な番地になってコピーされた。
5.でもA2〜A50の罫線も,A1のものになってしまった。
という流れのうち,5だけを削りたいと。
そろそろ疲れてきました…
>5.でもA2〜A50の罫線も,A1のものになってしまった。
>という流れのうち,5だけを削りたいと。
何を削るのか良く分からない。
罫線は要るのに罫線を削りたいとはこれいかに?
まあ、詳しい情報が後から後から出てくるんじゃ仕方ないな('A`)
>>355 そろそろ疲れてきました…
Sub Sample2()
Dim Rng As Range
Dim fillRng As Range
Set Rng = ActiveCell
Set fillRng = Selection
Rng.AutoFill Destination:=fillRng
End Sub
>>356 罫線を削りたいのではなく,「罫線が変更される」ということを削りたい という意味です。
「情報後出し」になってしまっているというご指摘ですが,
本来,
>>341に書いたとおり,
>範囲指定した後,Ctrl+D で下方向へコピーできますが,罫線もコピーされてしまいます。
>「罫線がコピーされない下方向へのコピー」 をVBAで実現する方法を教えて欲しいです。
しかないのです。
「Ctrl+D での下方向コピー」は,もちろん「式」もコピーされますし,相対番地もきちんと
コピーされます。ただ罫線もコピーされてしまうのが難だと…
それとも「Ctrl+Dでの下方向コピー」とうショートカットキーは,データの中身も提示しないと
意図が伝わらないマイナーなショートカットキーだったのでしょうか…orz
>>357 ありがとうございます。後で試させていただきます…
359 :
350:2007/02/04(日) 19:52:18
=Cells(.Row, .Column + i) を
=Cells(.Row, .Column + i).Formula に
>>357 感激です。
Type:=xlFillValues
を付加して,ようやく完成しました…ありがとうございます。
Sub Macro357()
Dim Rng As Range
Dim fillRng As Range
Set Rng = ActiveCell
Set fillRng = Selection
Rng.AutoFill Destination:=fillRng, Type:=xlFillValues
End Sub
>>359 これもバッチリです。ありがとうございます。
Sub Macro359()
With Selection
For i = 0 To .Columns.Count - 1
Range(Cells(.Row, .Column + i), Cells(.Row + .Rows.Count - 1, .Column + i)) = Cells(.Row, .Column + i).Formula
Next
End With
End Sub
>>357は,コピー先の表示形式を変えず
>>359は,コピー先の表示形式をコピー元のものに変える
という違いがあって,それぞれ使い分けができそうです。
ありがとうございました。
361 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 21:33:28
始めにある行を選択して、書式を Century にしました。
ところが、実際に入力すると MSP明朝になってしまうのはどうしてでしょうか?
入力のときは、半角英数でアルファベトを入れてるんでsが。
362 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 21:59:36
すんませんヒントきぼん
環境
XP,office2003
やりたいこと
雛形にcsvを流し込みたい
(ハメこみたい)
なんかヒントありましたら
ご教示ねがいますm(._.)m
364 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 22:30:30
エクセルXPでVBA可です
セル内に × がいくつあるか判定できる方法ってあります?
例えば
「100」なら 0
「100×200」なら1
「100×200×300」なら2
ってな感じの値を隣の列に出し、それにIF文で処理わけするつもりなんです。
LEFT関数とか組み合わせればいけそうなんですが脳味噌がたりないようです。どなたか知恵貸して下さい
>>364 1)何も無いシートのB列にずらっとデータを貼る。
2)データ→区切り位置。「×」で区切る。
3)A1に「=COUNTA(B1:IV1)-1」。下までフィル。
A列が答え。
>>360 それ以外の違いとして、
>>357の処理は1列のみ、それとActiveCellだから
下から上に選択した場合、一番下の値がコピーされる。
これは Ctrl+D と異なる。
>>363 ども
369 :
名無しさん@そうだ選挙にいこう:2007/02/04(日) 23:04:55
>>364 A1にデータがあったらB1とかに=LEN(A1)-LEN(SUBSTITUTE(A1,"×",""))
でできる。
>>362 どっちかでやるんだろうね。
1) VBAでCSVを直読みして好きなように雛形に貼り付けていく
2) Sheet1に雛形、Sheet2でCSVを読み込む。Sheet1からSheet2へしこしこと
参照式を書いていく。CSVってんだから同じ形式なんでしょ。
371 :
364:2007/02/04(日) 23:09:38
>366 サンキュ、それでいきます
>365 それつかったほーが軽そうだから時間あるときやってみまーす
372 :
364:2007/02/04(日) 23:11:21
>369 それサイコーです考えて形です
ありがとです
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 初心者
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 VBA Worksheet_Calculate
下のようなシートで、A列に名前が、E列に式が入っています。
B列からD列は数値入力用のセルです。
A B C D E
1 山田 2 1 2 =sum(B1:D1)
2 佐藤 1 2 1 =sum(B2:D2)
3 鈴木 1 1 2 =sum(B3:D3)
4 田中 1 2 1 =sum(B4:D4)
さて、特定の行を入力していて、途中でも、
その行のD列の計算値が5以上なら、メッセージボックスで
"山田さんの数値が5を超えています"のように、当該行A列
の文字列を表示させたい場合、どのようなマクロを書いたら
よいのでしょうか?
ちなみにシートの中には、他にもたくさん式が入っており、
セルE1〜E4までの範囲の中だけでこの処理を行いたいです。
宜しくご教示お願いいたします。
374 :
373:2007/02/04(日) 23:43:09
訂正です。
下から8行目
「その行のD列の計算値」×
「その行のE列の計算値」○
スミマセン m(_ _)m
376 :
373:2007/02/04(日) 23:55:02
>>375 お返事ありがとうございます。条件付き書式でE列の表示を変える
ことは出来るのですが、「○○さんの数値が5を超えています」
のような警告をだしたいのです。
378 :
373:2007/02/05(月) 00:23:13
>>377 たしかにそれでもいいのですが、VBAでそれをやったら
どのようになるのか、知りたくて書き込みました。
わざわざなんでそんなことをするのと叱られそうですが
教えてください。
>>378 うっとうしいかも
Private Sub Worksheet_Calculate()
Dim i As Integer
For i = 1 To 4
If Cells(i, 5).Value >= 5 Then
MsgBox Cells(i, 1).Value & "さんの数値が5を超えています"
End If
Next i
End Sub
380 :
373:2007/02/05(月) 01:59:13
>>379 大変ありがとうございます。すごい…。
でも仰るとおりうっとうしいですね。
入力した行の式が格納されたところだけ、
判定してくれるようにしたいです。いい手はありませんでしょうか?
5以上で通知するの?それとも5を越えたら通知するの?
「5」は、「5以上」だけど「5」を越えてはいない。>=なのか>なのか解らん。
それと、5以上の場合は、通知するだけで入力訂正の必要は無いのかい?
入力訂正を義務付けないなら、複数箇所で5以上になる可能性が出てくるわけだが、その場合はどうするの?
最後に入力した部分だけ通知するのか、5以上のもの全て通知した方が良いのか。
もうちょっと条件固めようよ。
あと、俺だったらMsgBoxではなくBeepとStatusBarで通知するな。
382 :
373:2007/02/05(月) 02:43:30
>>381 スミマセンはっきりしてなくて…。
5>=です。
入力訂正の必要はありません。(警告だけ)
最後に入力した部分だけ通知したいです。
383 :
373:2007/02/05(月) 02:45:50
訂正します。
>= 5 です
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B1:D4")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
With Target.EntireRow
If .Cells(5).Value >= 5 Then MsgBox .Cells(1).Value & "さんの数値が5を超えています"
End With
End Sub
385 :
373:2007/02/05(月) 06:16:19
386 :
名無しさん@そうだ選挙にいこう:2007/02/05(月) 09:54:25
教えてください。
1001東京池袋店
1002広島店
1004鹿児島店
ある項目に上記の3つのデータがあるとして別項目にこの項目の
最初の4桁だけを以下のように置換えて一括入力するにはどんな関数を使えばいいのでしょうか?
1001
1002
1004
LEFT
詳しくはネットで検索してください
>>386 単なる置換え?
4桁の数字を入力したら前文のデータが入るようにしたいの?
夜勤明けなんで頭回らんのだ
分かりやすく説明ヨロシク
389 :
386:2007/02/05(月) 10:37:34
390 :
386:2007/02/05(月) 11:48:07
>>388 レスを見落としました。回答ありがとうございます。
>>387さんのLEFT関数でうまくいきました。
もうひとつ質問が出てきてしまったのでまたお願いします。
>>386で変換した下記の値を文字列に変更するにはどうすればいいのでしょうか?
1001
1002
1004
LEFT の戻り値は文字列、わざわざ変更する必要はない。
数値に変更したいのであれば VALUE
392 :
名無しさん@そうだ選挙にいこう:2007/02/05(月) 15:05:26
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類 .】 Windows2000とXP
【2 Excelのバージョン 】 Excel2003と2007
【3 VBAが使えるか .】 いいえ (使わないとできないなら覚えます)
【4 VBAでの回答の可否】 一応可
【5 検索キーワード 】 エクセルの説明が載っているサイトを見てみましたがわからないのでお願いします。
現在エクセルで商品管理や顧客管理を行っています。
日付、顧客の名前、住所、連絡先、注文商品番号
のように分けているのですが
商品番号は
001.003.009.052.006
のようにピリオドで区切り一つのセルに入れています。
これを今までのデータなどすべて売り上げランキングのようなものを出したいのですが
どのようにすればいいでしょうか?
現在は001などで検索をかけて数えています。
393 :
386:2007/02/05(月) 15:23:03
>>391 ありがとうございました。
うまくいきました。
>文字列に変更するにはどうすればいいのでしょうか?←×間違いでした
数値に変更するにはどうすればいいのでしょうか?←○正しくはこっちでした。
>>392 商品番号の入ったセルだけを全部コピーする
適当に新規作成でまっさらなBookに貼り付ける
名前を付けて保存→、txt形式(タブ区切り)で保存
保存したtxtファイルを適当なエディタで開き、置換「.」→「,」
csv形式で保存し、それをエクセルで開く
好きなように図表作っておk。
まずピリオドを使うような糞システムの開発に文句言え
>>392 [データ]-[区切り位置]で[区切り文字]の「その他」に「.」を指定すればいいよ。
>>394 テンキーだけで読み上げながらデータ入力してんじゃね?
ものすごい普通の入力方法だよ?
396 :
392:2007/02/05(月) 16:05:07
ありがとうございます。
1個のセルに1つの数字になるようですが
今後データを入力するときは1個のセルに1個のデータの方がいいのでしょうか?
その場合は別に注文表だけのファイルを用意しようかと思います。
397 :
392:2007/02/05(月) 16:07:55
すみません別のファイルではなくシートでした。
>>392 セル内で番号の重複なし、番号桁数固定なら、E1:E20に番号が入っているとして
=SUMPRODUCT((SEARCH("001",$E$1:$E$20&"."&"001")<=LEN($E$1:$E$20))+0)
とか
399 :
392:2007/02/05(月) 16:30:53
>>398 ありがとうございます。
重複は別のセルにすればいいのですが
商品数は200ほどあるのでその場合全部作らないといけないことになるので
グラフでやっても大変なことになりそうです。
例えば
別のシートに売り上げ個数順(もしくは注文番号順)にならべ下記の用に横のセルに売り上げ数字を出すことは叶でしょうか?
001 6
005 5
004 4
009 4
035 3
>>389 とりあえず、多少なり調べるか試してからレスしろ
ちょっとベースさえ作れば簡単な事を1から全部他人に丸投げすんな
丸投げおk擁護派が登場すると見たw
402 :
386:2007/02/05(月) 16:51:20
VLOOKUP関数で値が見つからなかったときには#N/Aのようなエラー表示になるのですが
その場合未定義or空欄(表示上)にする方法を教えてください。
403 :
386:2007/02/05(月) 16:54:25
>>400 一応ぐぐって調べているんですが調べ方が足りなかったかもしれません。
もうちょっと調べてから質問します。
406 :
386:2007/02/05(月) 17:30:49
407 :
名無しさん@そうだ選挙にいこう:2007/02/05(月) 17:44:52
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
機能があるか教えてください。
1 12
3 16
6 18 こんなのを
1 12
2 12
3 16
4 16
5 16
6 18
見たいに、連続値データにできますか?
フィルではできませんでした。教えてください。
409 :
名無しさん@そうだ選挙にいこう:2007/02/05(月) 17:52:39
410 :
392:2007/02/05(月) 17:56:38
すみませんたぶん私へのレスですね。
もう少し調べてみます。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
A B C
5 4 −1
6 3 +3
5 5 +- 0
こんな風にA〜Bを引いて、Cに答えを出すときに、自動的に+とかマイナスとかに出す設定は
ありますか?
また、+-のように出すようにするにはどうしたらいいですか?
>>412 書式設定によって、マイナスは設定できるのですが、+と、+-が出来ません
どこを設定すればよいのですか?
書式設定→表示形式から探せ
ちょうど自分の用途に合うものがピッタリ無ければ
一番下のユーザー定義で設定
>>411 ユーザー定義で以下の一行を入れて。
[>0]"+"0;[=0]"+-"0;[赤]0
>>414 それが見つけられないし、作れないんだろ。
416 :
414:2007/02/05(月) 19:09:27
そこまで言えば
ユーザー定義 書式設定 等で検索すれば
幾らでも作り方ぐらいヒットするだろ。
>>415 表示形式は、標準で 「正数;負数;0;文字列」 という形式なので正数と負数と0で表示形式を分けるなら、[>0]とか[=0]等の条件は不要。
ついでに言うと+,-符号は""囲みしないのが慣例になってる。+-の代わりに±を使うなら""囲み必要だけどね。
[>0]"+"0;[=0]"+-"0;[赤]0
↓
+0;-0;+-0
それに[赤]が必要とも書いてないので、親切のつもりなら[赤]は抜いておいて「最後の 0 を [赤]0 にすると、負数が赤文字になるよ」と添えるのが良いのでは?
俺が書いたやつなら「真ん中の -0 を [赤]-0 にすると、負数が赤文字になるよ」だね。
そうでないと無駄で余計なお節介になりかねない。(もしかしたら書き忘れただけで希望通りかも知れないけど)
>>418 すまん、ググって適当にコピペしたもんで。
420 :
名無しさん@そうだ選挙にいこう:2007/02/05(月) 19:58:45
教育改革の犠牲者だから仕方ないよ
ほんと生まれた時代が悪かったね
可哀想〜〜〜〜〜
>>360 修正したお
Sub Sample3()
Dim Rng As Range
Dim fillRng As Range
On Error Resume Next
Set Rng = Selection.SpecialCells(xlCellTypeFormulas)
If Rng Is Nothing Then
Set Rng = Selection.SpecialCells(xlCellTypeConstants)
End If
On Error GoTo 0
Set fillRng = Selection
Rng.AutoFill Destination:=fillRng, Type:=xlFillValues
End Sub
422 :
名無しさん@そうだ選挙にいこう:2007/02/05(月) 21:46:33
エクセルの条件付き書式で、あるセルに何かしらの文字が入っていたら色を変えるということをやりたいのですが、
どうやったらいいでしょうか?
特定の文字のやり方は分かったのですが、
不特定の文字の場合はどうすればいいのかが分かりません。
>>422 ヒント:何か文字が入っている=空白ではない
424 :
417:2007/02/05(月) 22:05:47
>>418 ありがとうございます。
その形でやってみました。
そしたら・・・
>>411を例として話します。
C2に、=A2−B2
ってしたら、なぜかエラーが出てしまって・・・
エラーが出る原因がわからず、そこから先に進みません・・・
>>422 [セルの値が]→[次の値に等しくない]→[=""]
426 :
392:2007/02/05(月) 22:30:56
すみませんシートからシートで関数を使うやり方はわかったのですが
希望の方法のやりかたが見つからないので教えてもらえないでしょうか?
現在はシート1に顧客の情報
シート2に顧客の名前と注文を入れています。
シート3に上から順に
|商品番号|売れた数|
の形式で売れた数の順でソートをかけたいのですが
リストや集計ではうまくできないのでやり方を教えてください。
427 :
名無しさん@そうだ選挙にいこう:2007/02/05(月) 23:11:22
>>423,
>>425 レスありがとうございます。
[数式が]で、複数の条件をつけるにはどうしたらいいのでしょうか?
Aセルが「日曜日」という条件と、
Bセルに何かしら不特定の文字が入っている場合に条件付き書式で書式を変えたいのですが。。。
「!=」←こういう条件は使えないみたいで困っています・・・
>>426 .区切りの状態からやりたいならVBA使った方が手っ取り早いよ
商品番号が固定桁数なら、ちょっと邪道だが全行の商品番号をつなぎ合わせた文字列を作り、
商品番号でSlpitしてUBoundを調べるだけで、その商品番号が何個含まれてるか解るよ。
429 :
427:2007/02/05(月) 23:20:39
どうやら「<>」を使えばできるみたい?ですかね?
430 :
名無しさん@そうだ選挙にいこう:2007/02/05(月) 23:24:24
>>427 関数の「IF、OR、AND」を調べてごらん
431 :
427:2007/02/05(月) 23:34:53
ORは使ってたんですが、「!=」のやり方が分かりませんでした。
「<>」を使ったらできました。ありがとうございました。m(_ _)m
>>427 追加ボタンを押して条件を追加したらダメなの?
内部収益率を算出するXIRRという関数がありますが、これを自前で計算することは
可能でしょうか?よろしくお願いします。
>>433 それがめんどくさいから関数が用意されてるわけで・・・
それでも良いなら自分でIRRの公式に該当セルを入れてけば。
435 :
427:2007/02/06(火) 00:03:43
>>432 追加で設定できる条件は3つまでのようで、
全て使い尽くしてしまっている関係上無理でした。
Excel2007では条件追加は無制限らしいので羨ましいですねぇ。
>>433 Excelとしては可能。
君自身がそれを可能とするスキルを持ち合わせてるかどうかは知らないけど。
>>433 ネットとかで調べないでこんなところで聞くの?
438 :
433:2007/02/06(火) 01:32:45
レスありがとうございます。
現在Excelで内部収益率を算出しているのですが、別言語で算出する必要が
ありましてうまく算出する方法があるのかと思い質問させていただきました。
ネットでもある程度は調べたつもりですが、いい案が記載されているものが
見つからなかったため、こちらで質問させていただきました。
言葉足らずで済みませんでした。
そういうことならスレ違いだし
440 :
たのんます:2007/02/06(火) 02:07:19
エクセルに関する質問なんですが
統計数字データをグラフに変換して、統計データによるグラフを作成する際に
統計データの始点と終点を同じにして、重ねて比べられるようなグラフにしたいのですが
統計データの量が、比較したいAとBでは異なるため、
始点終点を同じにして、重ねて比べることができません。
何か関数とかその他の方法で、
違うデータ量のものを重ねて比較する方法はないでしょうか?
あるけどマルチしたので教えません
442 :
名無しさん@そうだ選挙にいこう:2007/02/06(火) 13:45:23
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類 .】 Windowsxp
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 2軸上 縦棒 複合グラフ
2軸上の縦棒と折れ線の複合グラフというのがありますが
縦棒のみで複合グラフを作りたいと思っています。
ただ、やろうとするとグラフの縦棒が重なってしまいます。
重ならないようにする方法はありますか?
>>443 その画像のようなもので右軸の目盛りが
たとえば10,20,30,40,50となっているようにしたいのです。
>>444 グラフウィザードで、グラフの種類を「積み上げ棒グラフ」にすりゃいい。
あと、目盛りの間隔は、グラフが出来てから、目盛りの所を右クリックして
軸の書式設定から変えれる。
>>445 ごめん、言い方が悪かった。
積み重なってちゃマズイ。
目盛り幅が違ってて横に並んだ状態にしたい。
447 :
名無しさん@そうだ選挙にいこう:2007/02/06(火) 15:53:17
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
エクセル表の一番上の行に「品名」「数量」など項目の行がある。
印刷すると2枚目以降はこの一番上の行が印刷されない。
プレビューの設定をさんざん見たけど分かりませんでした。
2枚目以降も印刷する場合の設定法をお教えください。
ページ設定、シートタブの印刷タイトル
449 :
名無しさん@そうだ選挙にいこう:2007/02/06(火) 16:07:56
>>448 どうもありがとうございます。
そこは何度も見ているのですが、チェック箇所がグレーになっており
クリックできません。白くなっている状態にするにはどうしたら
いいですか?何度もすみません。
450 :
名無し募集中。。。:2007/02/06(火) 16:17:38
プレビューの設定からではなく
ファイル→ページ設定
451 :
名無しさん@そうだ選挙にいこう:2007/02/06(火) 16:20:19
わかった!!ありがとうございました!
プレビューから入らずに
ファイル→ページ設定
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
Wordに2列10行ほどの表があります。(シンプルなプロフィール表みたいなもの)
左の列に項目名(住所、氏名、電話etc)、右に内容となっています。
毎ページごとにこの表が1個あり、改ページがなされています。
これが100ページほどあります。
巨大な1個の表であればExcelで取り込んでしまえると思うのですが、このように
統一形式の表が大量に毎ページあるようなものをExcelに取り込む方法は無い
でしょうか?
住所 氏名 電話
xxx aaa 1234
zzz bbb 5678
このようなExcel表へと取り込みたいと考えています。
>>453 項目が全ページ同じ行数なら、Excelにベタっとコピペして、
項目の方の列(A列か?)で並び替えれば、
名前ばかり→住所ばかり→電番ばかり→…って感じになるだろうから
別シートにでも貼り付けたら。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 不可
A B C
5 7 4
3 5 5
3 6 1
・ ・ ・
・ ・ ・
たとえば、C列だけ一気に( )をつけることは出来ますか?
>>455 D1に、
="("&C1&")"
下方向にフィル。
>>456 ありがとうございます。
ついでといってはなんですが、その関数(っていうのかな?)の意味ってどういう意味ですか?
ダブルクオテーションの使い方というか・・・
お願いします。
458 :
名無しさん@そうだ選挙にいこう:2007/02/06(火) 19:32:59
↑
ついでといってはなんですが、自分で調べてみてはいかがですか
お願いします。
459 :
名無しさん@そうだ選挙にいこう:2007/02/06(火) 19:55:32
すみません、また自動保存の件なんですが、10分ごとに自動保存する設定
にしていると、最後にファイルを閉じるときに「変更を保存しない」を選択
しても、最初にファイルを開いたときの状態にはもどないんですが、どうした
らいいでしょうか?
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel 関数 中身
Excel関数の中身って分からないのでしょうか?
MSだけのひ・み・つなのでしょうか?
こんな事を聞くのは、例えばExcel2007でCOUNTIFSとか新しい関数が使えますよね。
こういうなのはユーザー定義関数とかで同じような機能を実現できないでしょうか?
いちからというのはとても…という感じなのでヒントでもないかなあと思って。
C言語とかみたいに関数の使い回しとか出来たらいいのにと思います。
宜しくおねがいします。
>>460 VBAからもWorksheetFunctionオブジェクトのメンバとしてワークシート関数が呼び出せるが
当然ソース自体は参照できないよ。仮にも商用ソフトだからね。
>>459 多分、そのアドイン誰も使ってないから、MSに質問しては?
>>462 ありがとうございました。あきらめます。
464 :
460:2007/02/06(火) 20:23:42
>>461 レスありがとうございます。
やっぱりブラックボックスなんですね。
1から全部自分で作れば桶
>>460 Excel2000(無印)でマイクロソフトがパスワードかけ忘れで、アドインの関数が読めた。
>>466 苦労して汗水たらして生きていくんだ
その先に きっと希望はあるから OH My Baby
じゃあ死ね とにかく死ね
命を粗末にしちゃいけない
これがExcelのスレでのやりとりかw
468 名無しさん@そうだ選挙にいこう sage 2007/02/06(火) 21:58:50
>>466 苦労して汗水たらして生きていくんだ
その先に きっと希望はあるから OH My Baby
469 名無しさん@そうだ選挙にいこう sage 2007/02/06(火) 22:32:20
>>468 汗かくの嫌いだもん
470 名無しさん@そうだ選挙にいこう sage 2007/02/06(火) 22:46:43
じゃあ死ね とにかく死ね
471 名無しさん@そうだ選挙にいこう sage 2007/02/06(火) 22:48:40
命を粗末にしちゃいけない
フラシュメモリーに保存してるファイルが開けん
サイズは6MB
会社では開けるxp
自宅98
>>473 自宅のExcelのバージョンを上げて下さいです。
下位互換。
それExcelのバージョンか?
フラッシュメモリのドライバをインストール
Excelをインストール
なんで6MBもあるんだ?
変なもの入れてるな。
策を出してもこうもやる気がなく、ネタで返すなら、諦めた方がいいな。
USBフラッシュメモリは、WinXPでは自動認識されますが
Win98では、デバイスドライバをインストロールしないと
認識されません。フラッシュメモリを認識した上で読めないのか
メモリ自体が認識できないのか、切分けてください。
>>481 気に障ったらスマン
>>482 認識はしてる
一緒に入ってるファイル KB程度はサックと開く
MBのファイルをクリックすると
ファイルを開いていますとなり、フリーズみたくなる
>>475 で、あった様に新しいのをインストールすれば解決するとは思うが
知恵を借りたい
>>483 可能性的には、外部メモリに移す際にファイルが壊れたものと思う。
そのファイルをデスクトップなどにコピーしても開けないか?
あとそのファイルは、もともとMBあったのか?
画像とか貼りまくってんのか。
HDD上にコピーしてから開いてみろ
>>484 デスクトップに移しても同じ症状だ
容量がでかいのが原因?
ファイルはワークシートが6つに計算式
出し惜しみすんなよ。Excelのバージョンは同じなのか?
同じであれば、きっと壊れてんぜぇ。
デカいのが原因じゃなく、移す際にファイルが壊れてる。
例えば、データの断片が入りきる前に抜いたとか。
ExcelViewer使って開かんかな?
開かなかったらファイルが壊れているかメモリ不足だと思う。
マンキツでも逝って来い。
ExcelViewer2003はWindows98にはインストールできないと思った
ExcelViewerは根本が同じだから無理だとオモ
他社製のExcel読めるアプリがあれば、断片的に数字を見る事は可能かも。
ファイルメーカーなどの簡単なデータベースソフトとか。
OpenOffice 2.0.4 か・・・
Vista買え!
>>487 会社のは2002以上だと思う
自宅のはexcel2000みたいだ
>>488 ダウンロードしてみる
>>489 ほんとだ
サポートされているオペレーティング システム : Windows 2000 Service Pack 4; Windows Server 2003; Windows XP
だって
まずExcelViewerでいけたとして、見るだけのソフトなのだが、
それで良いのか、とw
あれだな、2002ファイル形式でしか無い機能使ってたりするんだろうな。
ファイルは生きてるが、下位バージョンでは開けないと。
壊れていないことが分かるだけでも前進だ
>>489 >>490 新しいwindowsが必要って言われた
買い換えは考えているが
明日、使うんだよなぁ
>>498 ダウンロードしてみる
10分くらいかかるみたいだ
インストールはできた
ファイルをクリックすると
ドキュメントを開く、行の高さを調節ってのはサクサクと進んだが
計算ってとこで少しずつ進んでいる状況
ある列の任意のセルをダブルクリック(DC)すると
その列の数値が最初のDCで昇順に、次のDCで降順に
ソートされるようにしたいと思います。
(各行のデータも列と一緒に並べ替えます。)
拾ったコードを混ぜ合わせたものの、所詮は私、ここまでが限界でした。
xlDescending も使うことになるはずなのですがorz
Sub prcSort()
ActiveSheet.OnDoubleClick
Range("A2:G60").Sort _ 'A1からG1まではデータ種別が入っています'
Key1:=Column. _ 'ここがまずいのでは・・・'
, Order1:=xlAscending _ '昇順'
, Header:=xlGuess _
, MatchCase:=False _
, Orientation:=xlTopToBottom _
, SortMethod:=xlPinYin
End Sub
当然、このままではエラーが出てしまいます。
有識者の方、どうか回答をお願いします。
【1 OSの種類 .】 Windows XP Professional
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 ・・・は、はい、ColorIndex云々程度なら(汗)
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 Excel VBA 並べ替え ダブルクリック 等
今は2000を使ってるんですがそれより新しいエクセルって
セルにフォーカスするだけで計算式に含まれるセルの枠の色が変わるようになってないですか?
計算式チェックを手早くしたいので
>>501 Private lngBeforeSortCol As Long
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row <> 1 Then Exit Sub
Dim lngTargetCol As Long
lngTargetCol = Target.Column
If lngTargetCol > 7 Then Exit Sub
Range("A2:G20").Sort Key1:=Target, Order1:=IIf(lngBeforeSortCol = lngTargetCol, xlDescending, xlAscending)
lngBeforeSortCol = IIf(lngBeforeSortCol = lngTargetCol, 0, lngTargetCol)
Cancel = True
End Sub
こういうことか?
>>502 2003だと
メニュー > ツール > オプション > 表示 > ウィンドウオプション > □数式
にチェックを入れると、セルの表示が数式結果ではなく数式そのものになり
そのセルを選択すると参照先が色枠表示されるようになる。
確か2000でも同じようなことが出来たような気がするが。
いちいちオプションダイアログで切り替えるのが面倒なら、ツールバーを右クリックして
ユーザー設定 > コマンド > ツール > ワークシート分析モード(たぶん一番下の方)
のコマンドボタンをツールバーに出しておくと良い。Ctrl+Shift+@でも切り替えられる。
504 :
名無しさん@そうだ選挙にいこう:2007/02/07(水) 09:48:27
フォントは普通何使えばいいんだ?
>>504 普通って何だ。
デフォルトは「MS Pゴシック」。
506 :
名無しさん@そうだ選挙にいこう:2007/02/07(水) 10:01:46
>>505 会社の書類を作り直さなきゃいけないんだが
記号とか入ってると文字の幅が下と崩れたりするから
通常、皆さんはどぉしてるのかと…。
>>506 書類によるから「普通」とかは無い。
文字の横幅を揃えたいだけなら、「MS ゴシック」など
等幅フォントを選んでおけば、安定。
508 :
名無しさん@そうだ選挙にいこう:2007/02/07(水) 10:28:59
509 :
名無しさん@そうだ選挙にいこう:2007/02/07(水) 12:29:10
画面上でのセルの数字は「50,422」でもクリックすると数式が入っていて
「=G147-N147」などの場合、数式はコピーせずに画面上に現れた数字のみを
コピーすることはできますか?
>>509 貼り付けたいセルを選択→Altキー→Eキー→Sキー→値を選択→Enter
【1 OSの種類 .】 WindowsXPsp2
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 少し
【4 VBAでの回答の可否】 可
教えてください。
ユーザフォーム上にテキストボックスとラベルとボタンがあり、ボタンを押して
各コントロールに書かれているテキストを取ろうと
Private Sub CommandButton1_Click()
MsgBox TextBox1.Text
MsgBox Label1.Text
End Sub
としましたが、実行すると「コンパイルエラー:メソッドまたはデータメンバが見つかりません」とアラートが出てしまいます。
フォーム上のラベルに書いた文字列が取得したいのですが、どうしたらいいのでしょうか。
よろしくご教示下さい。
514 :
512:2007/02/07(水) 13:51:14
>>513 ありがとうございました。
たすかりました。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 はい
【4 VBAでの回答の可否】 否
[A]
1: 10
2: 20
3: 40
4: 50
5: =SUM(A1:A4)
という感じのとき
4行目と5行目の間にデータを追加したいのですが
5行目を選択して行挿入をしても5行目の計算式は
=SUM(A1:A4)のまま
4行目を選択して挿入をすると計算式は自動で変わりますが
3行目と4行目の間のデータ追加になってしまいます
どっちかやって修正するしかないんでしょうか
516 :
509:2007/02/07(水) 14:19:53
517 :
名無しさん@そうだ選挙にいこう:2007/02/07(水) 14:26:45
「10684.764」 などをコピーしたら自動的に「10685」に繰り上げられています。
コピー先で、繰り上げずに小数点以下切捨てに設定するにはどうしたらいいですか?
>>517 自動的に切り上げられてるんじゃなく、表示形式で、そう見えてるだけ。
セルを右クリ→セルの書式設定の一番左のタブで設定。
完全に、切り捨てたいなら、関数「=ROUNDDOWN()」。
>515
=SUM(INDIRECT("A1:A"& ROW() - 1)) とか
520 :
名無しさん@そうだ選挙にいこう:2007/02/07(水) 14:48:16
>>519 ぬおーすごいです!ばっちりです
ありがとうございました
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
ひとつのセルの中に
73827−47832B−1
という数字と文字を入れています。
その一つのセルの中にある文字を、
A B C D E F G・・・・・
7 3 8 2 7 - 4・・・・
という風に、分ける方法を教えてください
>>522 A1に元データが入ってる場合。
A2に「=MID($A$1,COLUMN(),1)」、
右方向にフィル。
>>523 すげえええええ
ありがとうございました。ほんとに助かりました
この感謝の気持ちは忘れません
525 :
501:2007/02/07(水) 20:00:19
>>503 すごーい!!カンペキです!
仕事が楽になりました。ありがとうございます!
全国から喜びの声が続々と届けられています−状態だな。
SUM使うときにかっこの中に数字入れる時、A〜Cは入れられるのですが、
A〜C+Eの合計出すときはどう入力するのですか?
>>527 自分でやってみたらいいじゃん
=SUM(A:C,E)
529 :
名無しさん@そうだ選挙にいこう:2007/02/07(水) 20:41:11
エクセルのアイコピーのやり方おしえてください
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
A B C D E F・・・
1 4 5 3 4 6・・・
上のような行になった数字を、列に変換する方法を教えてください
[コピー]→[形式を選択して貼り付け]→[行列を入れ替える]にチェック→OK
533 :
名無しさん@そうだ選挙にいこう:2007/02/07(水) 23:01:56
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 VBA、1つのセル、上限、まとめる、複数のセル、マクロ
他のスレッドにもお邪魔したのですが、誰もいらっしゃらないようだったので、
こちらでも質問させてください。
例えば、A1〜A3000位まであるセルの文字列を1つのセルにまとめたいのですが、
関数の"CONCATENATE"や"=A1&A2&A3・・・・"のようなやり方では時間が掛かりすぎる為、
良い方法があれば教えてください。
総文字数は、問題無く1つのセルに入りきる量です。
コピーしてメモ帳とかワープロに張り付けてそれをまたコピーしてひとつのセルに貼り付け
536 :
533:2007/02/07(水) 23:23:41
>534
ああ。
ありがとうございます。こんなに単純な事だったんですね。
とても助かりました。そして、すごく恥ずかしい。
537 :
533:2007/02/07(水) 23:27:58
>536
レスありがとうございます。
今後の為に今からよく読みます。
質問させてください。
A
2 あ
3 あ
4 い
5 あ
6 あ
のように1つでも違う場合にA7に印を付けたいのですが、
IF(A2=A3,IF(A3=A4,IF(A4=A5,IF(A5=A6,""),"★")))
ではうまくゆかない場合があります。どうしてなのでしょうか。
(違うものの出現はランダムで、複数個ある場合もあります。)
>>538 全てのIFに対して条件が偽のときの値を設定していないから
つまりその書き方では"★"が1つじゃ足りない
>>538 ネストごとに判定してあげないとうまくいかないんじゃね?
=IF(A2=A3,IF(A3=A4,IF(A4=A5,IF(A5=A6,"全部同じ","★"),"★"),"★"),"★")
それか考え方変えて、A2に入力してある内容が5個なきゃ違うって考えるとか
=IF(COUNTIF(A2:A6,A2)=5,"5つ同じ","★")
>>539 >>540 早速の御回答、恐縮です。。
うまくゆきました。理由も納得です。
単純なことなのに、恥ずかしいです。
COUNTIFを使うというのは洗練されている感じですね。
どうもありがとうございました。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 初心者
【4 VBAでの回答の可否】 可
【5 検索キーワード 】 VBA 入力規則 Change
以前このスレで(勤務表の作成で)お世話になった者です。
更に質問します。
いろいろ教えていただいたことを元にばっちり動くようになりました。
ところが、入力規則を設定し、リスト▼で勤務の部分を入力するように
設定したら、この下に書くマクロがほとんど動かない状態になりました。
一部、'BA勤務等を警告するのみ通常に動きますが、他が動きません。
キーボードで打ち込めば、すべて動くのですがどうしてでしょうか?
543 :
542:2007/02/08(木) 05:07:25
This Work Bookに格納↓
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Targetが"E11:AH52"以外の場所で処理を中止
If Intersect(Target, Range("E11:AH52")) Is Nothing Then Exit Sub
Dim r As Long, c As Long
r = Target.Row: c = Target.Column
'"E"及び"E1"と入力したら,右隣のセルに"-"と自動入力する
If cells(r, c) = "E" Or cells(r, c) = "E1" Then cells(r, c + 1) = "-"
'右隣のセルが"-"の時,"A"〜"研"と入力したら,右隣のセルを消去する
If cells(r, c) = "" And cells(r, c + 1) = "-" Then cells(r, c + 1).ClearContents
'<中略>
544 :
542:2007/02/08(木) 05:08:01
'BA勤務等を警告する、警告1は標準モジュールに格納されています。
If cells(r, c) = "A" And cells(r, c - 1) = "B" Then 警告1
If cells(r, c) = "B" And cells(r, c + 1) = "A" Then 警告1
'<中略>
'もし6日連続勤務以上なら冴子先生が警告する
If Intersect(Target, Range("E6:AI52")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
With Target.EntireRow
If .cells(49).Value >= 1 Then
With Assistant.NewBalloon
Assistant.Filename = "saeko.acs"
.Heading = cells(r, 1).Value & "さんが6連勤です。"
.Show
End With
End If
End With
End Sub
>>542 デバッグすればいい
デバッグはコード書き始める前に覚えるべきことだから、初心者でも出来るだろ
デバッグできないならブックうp
公開しちゃまずいデータは適当なものに置換してもいいけどね
ブックうpも出来ないならさようなら
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
セルの結合で悩んでいます。
A B
1 行程 1.削る
2 2.磨く
3 3.着色
このように3行になっている表を、
A B
1 行程 1.削る
2.磨く
3.着色
といった具合に、B1セル内に改行された状態で格納し、行程という項目の1行で
収めたいのです。
セルの結合を使うと「1.削る」だけになってなってしまうので困っています。
これがシート内に数十箇所あるのでうまく1セル内に格納しながら作業を進めて
行きたいのですが、何か良い方法はあるでしょうか?
結合じゃなく、Alt+Enter
>>547 やはりそれしかありませんか。orz
今のファイルでざっと見で80箇所ほどあるので効率化を考えてたんですが
これはキツそうですね。
>>546 ・A、B列に全部データがあるということ。
・B列のデータは3個ずつであること。
が確定であれば、
@C1に「=A1」
D1に「=B1&CHAR(10)&B2&CHAR(10)&B3」
E1に「=MOD(ROW(),3)」
C、D、E列とも下までフィル。
Aオートフィルタ展開→E列を「1と等しくない」で絞る。
B絞った状態のC、D列の2行目より下をDeleteキーで数式削除。
Cフィルタを「全て表示」→C、D列を選択して値で貼り直す。
D今度はC列「空白セル」で絞る
E絞った状態で、全行を行ごと削除。
Fフィルタ外して、A、B、E列を削除。
551 :
550:2007/02/08(木) 14:41:39
ごめん、よく見たら、Dで全行消さず、1行目残さないと。
あと、E列いらんなw
A列で絞れば良いんだ。すまん。
80程度なら下の関数を使ってコピペでもいいかな
区切り文字は CHAR(13)&CHAR(10)
'値でセル範囲を連結
Public Function JoinValue( _
ByRef Source As Range, _
Optional ByVal Delimiter As String = "" _
) As String
Application.Volatile
Dim strJoin As String
Dim objCell As Range
For Each objCell In Source
If objCell.Value <> "" Then
strJoin = strJoin & objCell.Value & Delimiter
End If
Next objCell
If strJoin <> "" Then
JoinValue = Left$(strJoin, Len(strJoin) - Len(Delimiter))
End If
End Functiontion
>546
B列じゃなくて、A列を結合すれば?
1行で納めるのが目的なんでは。
自分もA列を結合したほうが良いと思う
一行に収めたいなら、行列置換えで十分な気がする
>546
C1に =B1&CHAR(10)&B2&CHAR(10)&B3
C1:C3を選択して下へオートフィル
選択状態のまま コピー⇒値貼り付け
選択状態のまま 編集⇒ジャンプ⇒セル選択⇒空白セル
削除⇒行全体
B列削除
結合の方が処理大変だろ。
ま、Excelの結合機能や、セル内改行使う奴は、基本印刷目的だろ。
そんなのどっちでも一緒。やりやすい方法でやりゃ良い。
どっちもデータとしては使い回しの効かない糞だがな。
558 :
546:2007/02/08(木) 17:25:12
ありがとうございます。
ファイルの随所に問題の個所があるので、教えていただいた方法を
組み合わせて試みたいと思います。
セル結合は、極力使わない方が良いと思うが、
処理は、書式コピペで、そんなに大変じゃない。
>>559 後学の為に教えてください。
80箇所あれば80回、F4キーしか思いつかない…。
>>562 コピー元の範囲を選択し右クリック→コピー
対象セルをCtrlを押しながら順次クリック(希望範囲の左上角に該当するセルだけで良かったはず)
選択が完了したら右クリック→形式を選択して貼り付け→書式→OK
ってのはダメ?
行数が固定じゃないなら無理だな。
VB無しじゃ、
{選択→F4→}×α
しかやりようがない。
565 :
542:2007/02/08(木) 18:29:32
566 :
名無しさん@そうだ選挙にいこう:2007/02/08(木) 19:33:53
こんばんわ。
約6万データをグラフ化するのに
突出していた部分のひげを手動でとっていました。
それを間違えて消してしまった。
簡単に取れる方法ないですか?泣きそう。
なだらかなグラフを作りたいのです。
手動でとったあと、移動平均を掛けようと思ってたんです。
わー、だめだ。説明も悪い。
>>565 > どうしてでしょうか?
セルへの代入部分で
「アプリケーション定義またはオブジェクト定義のエラーです。」
というエラーが発生しているから。(非通知)
原因
CountXというユーザー定義関数。
対処法
いろいろ。このくらいは自分で見つけよう。
それにしても、やたらと冗長な処理を書くのが好きなんだね。
>>543-544で'<中略>した部分に書いてある数十行のコードなんて10行も使わずに書けるのにさ。
他にも引数取れば1つで済む関数を幾つも並べたり。
>>566 日本語でおk
予想で書くが、グラフの元データが万を超えるなんて、
何の意味もないかと。
569 :
542:2007/02/08(木) 20:40:19
>>567 ご指導ありがとうございました。勉強します。
すみません、VBAのことで質問です。
リンク先のプログラムで、コマンドボタンを押した後に表示されるフォーム(モーダレス)の
コマンドボタンを押して処理を実行中にシートをダブルクリックしたりすとエラーで落ちちゃう
んですが、これを防ぐにはフォームをモーダルでshowするしかないですかね?
http://555.sytes.net/up/img/375.zip
>>570 ダブルクリックする暇ないと思うけど…
無理やりダブルクリックしたらエラーメッセージが出るだけだった
572 :
名無しさん@そうだ選挙にいこう:2007/02/08(木) 21:12:10
>>570 ダブルクリックするコツを教えてくれ
俺には無理だった・・・
エラーを無視したら?
574 :
570:2007/02/08(木) 21:27:16
>>571>>572 ごめん、upする奴だからあんまり回しすぎると迷惑かと思って500しかカウントしてないです
コマンドボタンを押した後にすぐシートのセルをダブルクリックすると1004のエラーがでます
多分、Rangeプロパティの参照がおかしくなってるからだと思うんですが・・・
>>573 実際は他にも処理が走るので、その処理のエラーまで無視できないんです。
575 :
名無しさん@そうだ選挙にいこう:2007/02/08(木) 21:30:21
みなさまこんばんは。
エクセル2003使用者です。
質問なのですが
>相対参照 ある数式を別の列または行にコピーすると、その数式の中の相対セル参照は変更されます。
とマイクロソフトのサイトに書いてあったのですけど
以下の式だとコピーしても行が9のままで10、11…と行が変更になって欲しいところがそのまま9から変わりませんでした。
=IF(ISNUMBER(FIND("買",E9)),I9*J9, "-I9*J9")
これをコピーでうまく入力する方法はありませんか?
>>575 =IF(ISNUMBER(FIND("買",E9)),I9*J9, "-I9*J9")
↑
ここにスペースが入ってるから。
ズレそうだなぁ。
ダブルクォーテーションの前。
スペースが入ってるのもアレだが、計算式に
ダブルクォーテーションがついてるの自体、
表の作りとして、間違ってる予感w
>>575 ("買",E9)),I9*J9
ここは数式だから変わるけど
"-I9*J9"
この部分は文字列だから変わらないんぢゃなかったっけ?
>>542 まだ見てらっしゃるでしょうか?
とりあえず、CountXは関係ないと思いますよ。
どうやってCountXが動いてるのかすごい知りたいですが…。
おそらく入力規制中の値の変更は受け付けないようです。(アクティブセルの変更なんかもできませんでした。)
まだ解決策は考えていませんが(考えないかもしれませんが…。)
入力規制が終わったタイミングで、改めて値が変更されたセルの値を調べる形にすることに
なるんじゃないかと思います。
この間そういうのと同じようなツール作ったんですけども、会社いかないとどんなんだったか思い出せません…。
日本語でおkですね、すみません言い直します。
入力規制が終わったタイミング→カーソルが移動したタイミング
です。
誰か徹夜になる前に助けて欲しい…(;_;)
Excelであるコード番号を入れたら、それに該当する品名が隣りのセルに出るようにするには、
どうしたら出来る?特急で教えて欲しいよ〜。
テーブルを作って、それを参照するように
すれば良いと思うよ。
?LOOKUP
584 :
名無しさん@そうだ選挙にいこう:2007/02/08(木) 23:43:00
急いでるならぐぐれ!
585 :
名無しさん@そうだ選挙にいこう:2007/02/08(木) 23:44:35
おまいら特急だぞ!ここはスルーだ!
587 :
581:2007/02/08(木) 23:52:27
ありがとうごぜいました。みんな!
速攻でできました!
588 :
名無しさん@そうだ選挙にいこう:2007/02/08(木) 23:55:42
VBAでこれのアスタリスクってどういう機能なの?
Dim Lpstr As String * 5000
>>579 おいらはよくわからないけど、CountXを消したら問題なく動いたよ
やりかたは3月シートの保護を解除したらAW15のCountX式を消す
次にO14,O15でそれぞれEを選ぶ
CountXを消した15行目は右となりに-が出るけど、14行目はちゃんと動かない
AW14の式を消してAW15の式を残せば、結果もそれに追従する
>>588 固定長文字列
その意味についてはググれ
テーブル作ってLookup関数使えはいいのか〜!さっそくやってみよっ。
vlookupな。
593 :
579:2007/02/09(金) 00:31:10
>>589 どうもです、申し訳ない。
CountXがどこで動いてるのかわかりました。
質問者さんとは関係ないですけど感謝いたします。あんな技あったんですね…。
CountXは必要な処理っぽかったのでそのまま残すと考えて、
共通変数をひとつとり、
今"-"をいれてるところでフラグをON
Selection_ChangeでフラグチェックしてONだったら"-"をTargetの右上に挿入→フラグをOFF
って感じで考えてたもんであの答えに行き着いてるわけです。
今試してみて無事に動いたのでまぁ悪かないかと…。
【1 OSの種類 .】 Windows*XP
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード 】 積み上げグラフ 積み上げ横棒 入れ替え 順序
積み上げ横棒グラフを作成したのですが、
割合が多いものを左端に寄せたい場合はどうすればいいのでしょうか?
データ系列の書式設定で系列の順序を入れ替えると、
入れ替えたくない項目の系列まで入れ替わってしまいます。
分かりにくいのですが、例で言うと下記のような感じのグラフにしたいです。
(1月、2月、3月というのは項目です。)
今のグラフ
1月 | a200 b150 c100 |
2月 | a100 b150 c150 |
3月 | a150 b200 c150 |
↓こう並べ替えたい
1月 | a200 b150 c100 |
2月 | b150 c150 a100 |
3月 | b200 a150 c150 |
>>594 元のデータを並べ替え
並べ替えの方法くらいは自分で考えろ
596 :
542:2007/02/09(金) 07:26:33
>>579,589,593
ありがとうございます。返信もせず申し訳ありませんでした。
確かにCountXが問題になっています。だがその先が皆目見当が付きません。
とりあえず会社に行きます。いい方法があったら教えて下さい。
597 :
542:2007/02/09(金) 08:33:33
>>593 解答を提示していただいたのによく読まないで出勤してしまいました。
お詫び申し上げます。会社でやってみます。
598 :
名無しさん@そうだ選挙にいこう:2007/02/09(金) 10:17:46
VBAでWebにあるファイルをダウンロードして指定したフォルダに保存するには、どうしたらいいですか?
TEST
600 :
名無しさん@そうだ選挙にいこう:2007/02/09(金) 11:15:47
すみません。教えてください。
ひとつのパソコンで作った計算式が入ったエクセルファイルを、別のPCで開くと、計算式のところが「###」となってしまいます。
計算式は「=IF(I5=0,"",QUOTIENT(L5,I5))」こんな感じのもので、ちゃんと計算されるものと、「###」になるものがあります。
何か設定が必要なのでしょうか?
どちらのパソコンも2003です。よろしくお願いいたします。
セルの幅と書式設定見ろ
602 :
名無しさん@そうだ選挙にいこう:2007/02/09(金) 11:27:09
ありがとうございます。
セル幅は問題なさそうなので、書式設定を確認しようとしたのですが、「書式設定」がアンクリッカブルになっています。
これは何かの設定なのでしょうか。
また、セル幅も変えられないようになっているようです。
すみません。エクセルをあまりつかったことがなくて・・・
よろしくお願いいたします。
604 :
名無しさん@そうだ選挙にいこう:2007/02/09(金) 11:41:24
ありがとうございます。
なんか、分析ツールっていうものをアドオンすると使えるようになりました。
助かりました・・・
605 :
福さん:2007/02/09(金) 11:58:44
excel で ソートするとハイフンは」無視されるのですか?
半角の英数字です。無視しない方法を教えて下さい。
607 :
福さん:2007/02/09(金) 15:56:26
VBAでAシートで実施していることをBシート(同じブック)で実施しようと
ActivateやらselectなどやってみたのですがAシートでしか動きません。
助けて下さい。
>605
A.EXCEL95をつかう
B.自分でソートマクロを組む
C.置換⇒ソート⇒置換
D.あきらめる
この時間に自治厨が現れたかw
>>607 VBEのAシートの所に書いてあるのを、Bシートの所にも
コピペすりゃ、だいたいそっちで動くよ。
Excel2003です。
急に、斜め方向にドラッグして選択ができなくなりました。
縦か横にしか選択範囲が動かず、必ずオートフィルオプションが出ます。
特にオプションなど変えてないのですが・・・
再起動しても変わらず、どのファイルを使っても同様です。
よろしくお願いします。
>>611 マウスを刺し直す
別のマウスに変えてみる
610
>>611 Excelだけじゃなく、OSを再起動する。
散らかしたまま、飲みに逝ってしまったか、、、3連休だもんな、、
世間は3連休か。
言い身分じゃないか、え?オマエら。
俺?俺はあれだ。今日で何連休目だこれ。
ちょっwそれ、お前ニー(ry
すみません。
関数の引数でセル範囲指定する場合ってありますよね。
あのセル範囲指定を簡単に指定する方法ってありますか?
たとえば、ある2つのセルにそれぞれA2、A10と入れれば、
その二つのセルを参照して関数の引数のセル範囲指定(A2:A10)できるような方法なんですが・・・
>>619 INDIRECT関数をヘルプとGoogleで見てみよう。
>>621 レスありがとうございます。
やっぱりINDIRECTですか・・・ヘルプみたんですけど、それみたら逆にわからなくなってきてしまったもんで・・・
調べてみます。
ありがとうございました。
>>622 A1=B1
A2=B10
A3=SUM(INDIRECT(A1&":"&A2))
これでB1からB10の合計がA3にはいる
とあるExcelファイルを開こうとしたとき、「ファイルエラー:データが失われた可能性があります」
ってエラーメッセージが出てきて開かない。ファイルが壊れているのかを確認しようと、もう1台の
PCにその開かないExcelデータを移動して試してみたら、今度は開いた。ちなみにデータが開かない方のPCは
WinXP (SP2) Excel2003で、データが開いた方のもう1台のPCはWin98 Excel2002。
それでWin98の方で開くときに「このブックには、ほかのデータソースへのリンクが設定されています。」って
メッセージが出てくるんだが、これはデータが開く開かないに関係があるのか?
誰か詳しい人教えてください
【1 OSの種類 .】 WindowsXPsp2
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
Ctrl+ページダウン・アップでのショートカットキーを押しても反応がありません・・
よろしくお願いします。
628 :
名無しさん@そうだ選挙にいこう:2007/02/10(土) 14:04:50
1 | 2
AB | CD
という表があったとしまして,数字の場合は単純に合計(1+2=3),文字の場合はABCDと文字をつなぎ,どちらも同じ計算式で行いたいのですが,どうやったらよいでしょうか?
オートフィルでさくっとやる必要があります.
どなたか教えてください.
629 :
名無しさん@そうだ選挙にいこう:2007/02/10(土) 14:12:16
>>620 あー、すみません。自己解決しました。
ありがとうございます。
>628 A、B列で文字と数値の混在はないものとする。
=IF(ISNUMBER(A1),A1+B1,A1&B1)
>>628 その1とか2とかABってのはその文字ひとつでひとつのセル?
A1=1、A2=2でA1+A2ってことならば
Function test(target As Range)
If IsNumeric(target.Offset(0, -1).Value) And IsNumeric(target.Offset(0, -2).Value) Then
test = target.Offset(0, -2).Value + target.Offset(0, -1).Value
Else
test = target.Offset(0, -2).Value & target.Offset(0, -1).Value
End If
End Function
かのぅ…。
632 :
名無しさん@そうだ選挙にいこう:2007/02/10(土) 15:10:33
VLOOKUPでシート内を検索しているのですが、
VLOOKUPの戻り値はセルの値ですよね?
ここでセルの値ではなくセルの座標を欲しいときはどうしたらいいんでしょうか?
よろしくお願いします。
>>628 A1に 1 でA2に 2 とか A1に 1 でA2に CD とか
A1に AB でA2に CD とか A1に AB でA2に 2 とかだったら
A3に =IF(AND(ISNUMBER(A1),ISNUMBER(A2)),A1+B1,A1&B1)
>>634 ごめん
× A3に =IF(AND(ISNUMBER(A1),ISNUMBER(A2)),A1+B1,A1&B1)
○ A3に =IF(AND(ISNUMBER(A1),ISNUMBER(B1)),A1+B1,A1&B1)
636 :
名無しさん@そうだ選挙にいこう:2007/02/10(土) 16:44:41
マクロの記述で
Range("F8").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
これが上手く動いてないようなんですが、何故でしょう。
やろうとしてる事は
A1に在る顧客番号をA4に【=A1】を使用して、反映です。
イマイチ言ってる事がわからないと思いますが、これだけで理解していただける方教えてください。
>>636 理解できませんが
>A1に在る顧客番号をA4に【=A1】を使用して、反映
ということなら
Sub test()
Range("A4").FormulaR1C1 = "=R[-3]C"
End Sub
>>611です
回答くださったかたありがとうございました。
OS再起動も試しました。
また、複数台のマシンで
同じ現象が出ているのでマウスとは考えにくいかなと。
再インスト試してみます。