1 :
名無しさん@そうだ選挙にいこう :
2005/03/30(水) 22:48:40
= FAQ: 列の表示について = Q.列名がA,B,C,D,Eではなく、1,2,3,4,5になってしまいました。 アルファベットに戻すにはどうしたらいいですか? A.ツールメニュー:「オプション」 -「全般」タグで 『R1C1 参照形式を使用する(C)』のチェックを外せば直ります。 Q:列を256個(IV列)よりたくさん広げることはできませんか? A:エクセルのシートは65536行×256列が仕様上の上限です。 シートを分けるとか、行と列を入れ替えるとか、データの方をまとめるとか、 列数を増やさない方向で工夫するしかありません。
= FAQ: 印刷プレビュー = Q:印刷プレビューではセル内に収まっていた文字が 実際に印刷してみるとはみ出してしまうのですが、 何とかなりませんか? A:「印刷プレビューと印刷結果が一致しない」のは 昔からのExcelの弱点で、どうにもなりません。 セルの幅や高さに余裕を持たせるか、 書式設定で「縮小して全体を表示する」にチェックを入れましょう。 = FAQ: マクロの”””削除””” = Q.マクロを削除したのに、ファイルを開くたびにセキュリティの確認が出ます。 A.モジュールの解放が必要。 【モジュールの解放方法】Alt+F11→Ctrl+R→Module1を右クリック→解放
= FAQ: 合計から元の数を逆算 =
Q:たくさんの数値のリストがあって、
リスト中のいくつかの数の合計と思われる数値が与えられました。
リスト中のどれとどれの合計か調べることはできますか?
A:ナップザック問題(knapsack problem)として知られている難問です。
一般的には総当りで調べるしかありませんが。
しかし、データに特徴がある場合(桁数が限られているなど)には、
うまい方法があって、速く解けることもあります。
下記のページを参照してみてください。
ナップザック問題をExcelで解く
http://www.geocities.co.jp/SiliconValley-Oakland/8139/ = FAQ: 条件によって表示を変更するには? =
Q:セルの内容を判断して、表示を変えたい
A: IF関数を使います。
=if(条件,条件が成立した場合,成立しなかった場合)
例1:基本
セルA1が1の場合○、それ以外の場合×を表示
=IF(A1=1,"○","×")
例2:if文の中にif文
A1が、1の場合○、2の場合△、それ以外×。
=IF(A1=1,"○",IF(A1=2,"△","×"))
例3:ANDやOR活用
A1が、4〜6の場合は、普通と表示
=IF(AND(A1>3,A1<7),"普通","少ないか多い")
例4:計算も出来る
A1が10までなら、A1を10倍して表示、それ以外なら2を引く。
=IF(A1<11,A1*10,A1-2)
詳しくはヘルプを参照しましょう。
= FAQ: グラフについて = Q1:データの空白部分があって、そこで折れ線が切れてしまいます。 繋げたいのですが如何したらいいでしょうか? A1:グラフを選択>ツール>オプション>グラフ>空白セルのプロット「補間してプロットする」にチェック Q2:棒グラフに重ねて、折れ線グラフを表示するにはどうしたらいいのでしょうか? A2:最初、すべてのデータを棒グラフで作成。 次に、折れ線で表わしたいデータ系列のどこかを、グラフ上で右クリック サブメニュー>グラフの種類>折れ線>OK Q3:ある系列だけ、縦軸を別にしたいです。 A3:その系列のどこかを、グラフ上で右クリック データ系列の書式設定>軸>使用する軸「第2軸」にチェック>OK = FAQ: 入力した値が変わる? = Q.セルに入力した値が勝手に変わってしまうのですが 入力したままの形で表示させるにはどうしたらいいですか? A.数字でよくあるケース(先頭のゼロが消えてしまう、日付として解釈されてしまう) 入力する時、先頭にアポストロフィ(')をつけるか、 該当するセルで右クリック−「セルの書式設定」−「表示形式」で「文字列」を選択。 文字列ではなく数値として扱いたいときは 「セルの書式設定」−「表示形式」で「ユーザー定義」を選択し、工夫する。 A.文字でよくあるケース(i⇒I、teh⇒the、cna→can など) ツール→オートコレクト→入力中にオートコレクト の該当する箇所を削除。
= FAQ: 行列の入れ替え = Q.エクセルで作った表が横方向に多くなってきたので 行と列を入れ替えたいのですが。 A.コピーして、適当なセルで右クリック。 形式を選択して貼り付け→行列を入れ替える。 = FAQ: 参照するセルをセルの値で指定する = Q.A1に「5」とか「6」とか指定する値を変えたら B1の関数で「C5」とか「C6」とか参照先が変わるようにできませんか? A.INDIRECT関数を使ってみましょう。 詳しくはヘルプで「INDIRECT」を検索
= FAQ: ブラウザの変更 = Q.Excelでアドレスをクリックした時に開くブラウザをIEからSleipnirなどに変更したい。 A.スレ違いです。 開きたいブラウザの設定画面でそのブラウザを通常使うブラウザに指定してください。 = FAQ: セル内での改行 = Q:セル内で改行したいんですがどうすればいいでしょうか A:改行したい位置でAltを押しながらEnterを押せばセル内改行できます。
= FAQ: ワイルドカード文字の検索・置換 = Q:* 、 ? で検索するとワイルドカードとして認識されてしまいますが、 * 、 ? の文字自体を検索するにはどうすればよいですか? A: ~* 、 ~? のように、頭に ~ を付けることでエスケープ出来ます。 A:全角で*と入力し「半角と全角を区別する。」のチェックを外して検索する (全角なのでワイルドカードとしては使われないが 全半角を区別しないので文字として"*"にはヒットする。)
11 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 22:58:52
少し質問が。OSはXPでエクセルは2003です。 内容はについてですが B1のセルに「セブンイレブン」と入力するとA1のセルに「コンビニ」C1のセルに 「24時間営業」と返すように作りたいのです。 他にいうとB1に「ダイエ−」と入れるとA1には「ス−パ−」C1には「10時間営業」 というふうに関数を作りたいのですが、うまくいかないのです。教えて下さい −−−−−−−−−−−−−−−−−− | A | B | C | −−−−−−−−−−−−−−−−−− |コンビニ |セブン・・|24時間・| −−−−−−−−−−−−−−−−−− |ス−パ− |ダイエ−・|10時間・| −−−−−−−−−−−−−−−−−−
A1に =IF(B1="セブンイレブン","コンビニ",IF(B1="ダイエー","スーパー","")) C1に =IF(B1="セブンイレブン","24時間営業",IF(D1="ダイエー","10時間営業",""))
>>11 対応表を別シートに作ってVLOOKUP/HLOOKUPでそれを参照させちゃ駄目?
SHEET2にこんな表を作ってHLOOKUPで参照
A B
1|セブン… |ダイエー |
2|コンビニ |スーパー|
3|24H… |10H… |
前スレ >994 もう少し条件を判りやすくすれ。 読むからに、単純に10分繰り上げすればいいんじゃねーの? それと、深夜労働時間(午後10時から午前5時まで)というのは、単純に基本給(時給換算)から1.50倍すればいいだけだと思う。
15 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:19:02
質問です。 外部データの取り込みでインポートする取り込み先を相対参照にするかして カレントディレクトリを参照させたいのですがどうすればいいのでしょう。 OS:WinXP、Excel2002使用
16 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:21:44
excel2000を使ってますが、 名簿に生年月日をのせた(A列には名前、B列には生年月日) 表示形式で、例えばB列に入力した「平成17年3月31日」から月日(3月31日)だけを抜き出し、 しかもその月日を月毎に並べ替え出来るようにするには、どういった方法が 考えられますでしょうか。ご教授下さいませ。
17 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:22:07
>>12 ありがとうございます。
>>13 行自体が数百になる予定なので、対応表を作った方が非常にやりやすいです。
逆に
A B C
1 セブン・・ コンビニ 24時間
2 ダイエ−・ ス−パ− 10時間
とシ−ト2に入れて、
シ−ト1のBセルにセブンと入れると自動的にAとCに返すような方が非常に助かります。
出来れば・教えてください・・○TL
19 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:31:31
>>16 生年月日はセルの中は2005/3/17とかになっていて表示だけ
平成〜になっているのか、セルの中に初めから平成〜となって
いるのか?
それによって対処の仕方が違います。
21 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:35:55
>>19 ちなみに、前者であれば
Month()
Day()
Text()
などをつかえばできるでしょう。
22 :
12 :2005/03/30(水) 23:37:48
>>17 何がしたいのかやっと分かった
Aiセルに =IF(Bi="","",VLOOKUP(Bi,Sheet2!$A$1:$C$n,2,FALSE))
Ciセルに =IF(Bi="","",VLOOKUP(Bi,Sheet2!$A$1:$C$n,3,FALSE))
23 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:38:18
>>16 前者でございます。
基本的に、h17.3.31と打って平成17年3月31日と表示されるように
しています。
24 :
23 :2005/03/30(水) 23:38:55
25 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:42:24
>>23 例えばC列に
=TEXT(MONTH(B3),"00") & TEXT(DAY(B3),"00")
などとして、C列に月日の文字列を表示させてからソートしる
26 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:48:28
>>22 何をしたいか人に伝えることができない人は、まず、伝えることを
学ぶ必要がある。それができれば自然とExcelの関数、VBAも
できるわけで、、、
27 :
11 :2005/03/30(水) 23:51:17
ありがとうございました。何とか成功しますた
>>26 え〜っと、ちなみに22さんは僕ではないんで^^;;
28 :
名無しさん@そうだ選挙にいこう :2005/03/30(水) 23:54:20
>>25 =TEXT(B3,"MMDD")
でよかったな。
29 :
23 :2005/03/31(木) 00:05:34
>>28 大変有難うございます! 勉強不足でスマソ。
新スレ乙です。 どなたか前スレ終了間際の質問にアドバイスいただけますでしょうか。 よろしくお願いします。 -------- ところでリストボックスから検索結果を選択して表示フォームに渡したいのですがうまくいきません。 自分で試してみたのは、アドレス格納用に配列(a(256))を用意しておき、 For文でi=2から初めて条件にヒットしたときに該当アドレスを上記配列に格納し、 さらにそのときのiの値も別の配列(b)に保存しておき、 詳細表示ウィンドウを呼び出すボタンをクリック時に呼び出すフォームに アドレス格納用配列をa(b)という形で引数として渡したのですがうまくいきませんでした。 こういう場合はどうすべきなのでしょうか。
>>30 おまえが書いたコードと処理の具体例を書け
質問させていただきます。 OS:WinXP Pro Ver:Excel2002 複数の人間で扱うデータなので、会社のネットワークグループに 新しくフォルダを作り、そこにExcelデータを格納しています。 それを開いて使用後に上書保存しようとすると 「他のユーザーによって変更された可能性があります。 操作を選択して下さい。」 と言ったメッセージが出て、名前を付けて保存か上書保存かを 指定する。といったことが起こってます。 以後、このメッセージを出さないようにする方法はありますか? ツール−オプションでも解りませんでした。 ご存知の方、宜しくお願い致します。
winXP,Offece2000です。 メニューをプルダウンしたときに普段使わないような機能は下向き不等号が 2つ重なった●をクリックしないと展開されませんよね? これをメニューをプレスしただけでフル展開されるように出来ますでしょうか? よろしくお願いいたします
表示 > ツールバー > ユーザー設定 > オプション □常にすべてのメニューを表示する
35 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 11:56:20
セル内で段落わけすることってできますか? 1234 じゃなくて 12 34 みたいに表示したいんです。
12{Alt+Enter}34
37 :
33 :2005/03/31(木) 12:05:49
こういう機能ありますでしょうか?XP,2003です。 A1セル:手入力の数値 A2セル:手入力の数値 A3セル:A1+A2 A4セル:A1*A2 A5セル:(A3+A4)*(A3/A4)---A4は0ではありません のときワンタッチでA5をA1とB1だけであらわしたいのですが、出来ますでしょうか? もっと複雑な式でこういう悩みを持っていまして、分けがわからなくく なってきました。こういう機能需要がありそうなのですが。 ご存知の方お教え願えせんでしょうか。よろしくお願いいたします。
39 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 13:05:39
Win2000,Excel2000です 行ごとまとめてコピーしてどっかべつのところに貼り付け、という時、左側の行番号を選択しますよね で、複数の行をまとめてコピーして……という時は、行番号のところをカーソルでなぞりますよね それで、画面の外に出ちゃうくらいの、数十行の行をまとめて……という時は 行番号をクリックして、例えばそのまま下にドラックするとどんどん行が下に行ってくれますよね その時、しばらく行って「ここだ」という時にドラッグを止めるんですが 勢いがついてなかなか止まってくれないんです 100で止めよう、と思っても、200くらいまでバババババって行っちゃうんです なんかExcelの設定で直せるんでしょうか? SCRLかと思ったんですが、それも違いました
40 :
30 :2005/03/31(木) 13:09:36
>>31 以下のように記述しました。
プロパティの指定に問題があるとエラーがでるのですが・・・。
まずいところがありましたら指摘してください。
詳細表示用のプロシージャで該当アドレスを参照させることさえできればあとは何とかなると思うのですが・・・。
よろしくお願いします。
検索ボタンには
Private A(256)
Dim b
Sub CommandButton1_Click()
Search.ListBox1.Clear
N = 3'検索用
b = 0'アドレスを配列に0から順番に格納する
>>38 =(A1+A2+A1*A2)*((A1+A2)/(A1*A2))
=((A1+A2)+(A1*A2))*((A1+A2)/(A1*A2))
>>39 設定では変えられませんが、作業領域下限から離れた距離によって
速度が変わるので(離れるほど早くなる)適当に調整しましょう。
または100〜500行を選択するなら、先ず100行目を選択して
500行目が見えるところまでスクロールし、Shiftを押しながら500行目の
インデックスをクリックすれば100〜500行の選択になります。
または「名前ボックス」に100:500を入力してEnter
>>40 おまえが書いたコードと処理の具体例を書け
Do '検索条件と比較 If InStr(1, Cells(N, 2).Value, Search.TextBox1.Value) > 0 And InStr(1, Cells(N, 4).Value, Search.TextBox2.Value) > 0 And InStr(1, Cells(N, 6).Value, Search.TextBox3.Value) > 0 And InStr(1, Cells(N, 7).Value, Search.TextBox4.Value) > 0 Then 'ヒットしたらリストボックスに追加 Search.ListBox1.AddItem Cells(N, 2) & " , " & Cells(N, 6) & " , " & Cells(N, 7) 'アドレスを配列に格納 Set A(b) = Application.Cells(N, 2) b = b + 1 End If N = N + 1 Loop While Cells(N, 2) <> "" End Sub 詳細表示ボタンには Private Sub CommandButton2_Click() MsgBox (A(b).Address) ViewRecord A(b).Address Unload Me End Sub
間が開いてしまいました。申し訳ありません。 検索ウィンドウのテキストボックスに入力した値が各行の対応するセルに含まれているかどうかで検索しています。 ヒットしたものをリストボックスに表示させ、 そのアドレスをアドレスに0から順番に格納し、 詳細表示用ウィンドウ(ViewRecord)に引数として渡したいのです。 よろしくお願いします。
45 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 13:33:15
>>39 100〜500行を選択する
>>41 以外の方法としては
行番号100を選択した後→Shiftキーを押しながらPageDownを押す
500行付近に行ったら上下キーで調整(Shiftキーは押したまま)
慣れてくるとマウスよりキーボードでの操作の方が早くなってくる
CommandButton2_Clickの配列Aの引数は bではなくListBox1.ListIndexでは?
47 :
38 :2005/03/31(木) 14:16:42
>>41 レスありがとうございます。
実際にはこの式ではなく色々関数を使ったりした長い式なのですが、何か
エクセルの機能で、ボタン一発あるいは関数か何かで一括自動でA1,A2だけの
式にしてもらえるとたすかるなあと思いまして。
ないのでしょうね。ありがとうございました。
>>47 VBAでできるけどね
詳しくはヘルプでも嫁
49 :
38 :2005/03/31(木) 14:25:46
>>48 ええ〜、そうなんですか!ありがとうございます。調べてみます。
使いこなせないかもしれませんが勉強します!
50 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 15:04:16
>>39 Macの場合だと、
方法1:
100行目を選択
右側のスクロールつまみで、500行目が表示されるまでウィンドウをスクロール
shiftキーを押しながら500行目を選択
方法2:
100行目を選択
shift + page downで一画面ずつ選択範囲を拡大する。
500行目が表示されたところで(行きすぎていてもよい)shiftキーを押しながら500行目を選択
というような手順で、100〜500行が選択されるよ。
Winだとキーが違うかも知れないけど、大体同じ事ができると思う。
「ショートカットキー」でヘルプを見てみ。
52 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 15:17:48
>>48 Excelで、そんな数式処理のようなことができるのか。
俺も知りたい。
探したけど見つからなかったので、ヘルプの項目とか参考ページなどを教えて下さい。
53 :
50 :2005/03/31(木) 15:20:04
>>51 ごめん。見落としてた。
なぜこんなにはっきり書いてあるのを見てなかったのか自分でも不明。
頭を冷やしてきます。
>>52 ついさっき出たばかりのことで「探したけど」って
実は全然探してないだろ。
55 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 16:05:25
>>38 >もっと複雑な式でこういう悩みを持っていまして
それを書いた方がいいように思う
>>38 B1がどこから出てきたのかその説明では解らないんだけど
A5 =((A1+A2)+(A1*A2))*((A1+A2)/(A1*A2))
じゃ駄目なの?
続きがあったのね… 置換は使えないの?
ゴメン。気づがなった…orz
ひょっとして
>>48 は、Replace関数でこつこつ置き換えろと言いたいわけかな。
そりゃワークシート関数のREPLACEでやるよりはVBAだろうが…。
61 :
39 :2005/03/31(木) 17:07:14
いろいろありがとうございました
確かに慣れるとキーボードの方がラクかもしんないですね
基本的な話なんですが
ドラッグをしてからピタっと止めても、狙った位置には止まんないということでいいんでしょうか?
>>41 の
>設定では変えられませんが、作業領域下限から離れた距離によって
>速度が変わるので(離れるほど早くなる)適当に調整しましょう
というのはあまくでもドラッグ速度で、ドラッグをやめたあとの「余韻」の話ではないように思えるのですが
私の現在の環境では、例えば5秒くらいドラッグを続けると
ドラッグを止めてもそのまましばらく動きつづけます
これが、100で止めようとして110くらいで止まる、というのであれば単純に個人の反射神経の問題なんでしょうが
目で確認できるくらい動きつづけてしまうので(「おい、おいおい……まだいくかこら……」みたいな感じです)
>>60 Replaceでだめな理由がわからない。
私は48ではないですが、ちょっと気になったもので。
>>61 それはExcelの問題でなく、PCの処理が遅いだけ。
63 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 17:19:46
Excelはラベル印刷に対応しているのでしょうか? 巷の参考書等ではなかったのもですから。
>>60 俺もReplaceじゃダメな訳がわからない。
VBAの場合「こつこつ置き換え」ではなく「一瞬で一気に置き換え」できるし。
65 :
60 :2005/03/31(木) 17:29:09
>>60 >>64 あー。そうじゃないすまんすまん。
48はもっと違う方法を知っているのかと思っただけ。
66 :
61 :2005/03/31(木) 18:11:13
>>62 SHARPのMURAMASA(PC-MM1-H1V)なんですが……ダメか……orz
Excelの問題ではないという切り分けができただけでもよしとして、PC板いってきます
Replaceで例えばA1をA2+A3と置き換えるとして A10とかA11とか判別するのめんどくない?
68 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 18:25:09
すいません、教えて下さい。 (例)3+5+2=10 上のような計算式で、加算数の「2」を入力しないときは「=8」 と表示しない(=が無表示のまま)方法を教えて下さい。 違う言い方をすると、左から「3」と「5」を入力しておくだけで、 最後に「2」を入力したときに、初めて「=10」と計算(表示) される方法はありますか?
>>68 A1が3、B1が5、C1が2ってことなら
=IF(ISBLANK(C1),"",A1+B1+C1)
で出来るけど、質問が曖昧すぎて意味がよくわからない。
71 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 18:34:02
>>68 A1に3を入力
B1に5を入力しておいて
C1に2を入力したときに
D1に=10と表示されればいいのか?
その場合は
D1に
=IF(C1="","",SUM(A1:C1))
書式を
"="#,##0
とする
72 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 18:36:32
>>38 >エクセルの機能で、ボタン一発あるいは関数か何かで一括自動でA1,A2だけの
>式にしてもらえるとたすかるなあと思いまして。
ユーザー定義で関数作れば?
>>69 そうしたら、A1/B1を(A2+A3)/B1にできなくならない?
74 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 18:40:18
>>70-71 お付き合いいただき、恐縮です
また説明下手ですいません
要するに
A1に3を入力
B1に5を入力しておいて
C1に2を入力したときに
D1に=10と表示したいのですが、
C1の2が未入力のときは、D1は無表示(または0)
のままにしておきたいのです。
どうか今一度ご指導ください、お願いします。
>>74 if(C1<>"",A1+B1+C1,"")
77 :
74&68 :2005/03/31(木) 18:52:46
>>75 ありがとうございます。
ただ、ご指導とおり
if(C1<>"",A1+B1+C1,"") をコピペしたのですが、
やはりA1に3を入力した時点で、D1も=3と表示さ
れてしまいます...
どうかアドバイスお願いします。
78 :
74&68&77 :2005/03/31(木) 18:58:53
>>76 ありがとうございます。
ただ70-71も試(コピペ)したのですが、やはり最初のA1に3を
入力した時点で、すでにD1=3と表示されてしまいました、、、
C1を入力するまでは、D1を無表示のままにしておきたいのです。
何度もほんとうにすいませんが、お願いします。
だれか超能力者が必要だ
うちではその3つとも、C1を入力するまで結果は空白のままだが。 なんか根本的に使い方間違ってないか? ちなみにどの式もC1=0なら合計が返るけど。
81 :
68 ◆gkGvMnGzh. :2005/03/31(木) 19:15:55
74&68&77&78です
>>80 皆さんの教えていただいたものをコピペしたのですが
何度やっても、A1またはB1を入力した時点で、既に
D1も表示されてしまいます...
どうかアドバイスをお願いします。
C1に0(0値非表示で)とかスペースとか入ってるんじゃないの? C1でDELキー押してみな。それでもだめなら解らない。 というか、こっちで再現しない問題はアドバイスのしようがない。
83 :
68 ◆gkGvMnGzh. :2005/03/31(木) 19:39:01
ほんとーーーにすいませんでした
>>82 氏の予想通り、C1に0を表示したままでした
もちろんそれを消したら、すぐに出来ました!
0、、、、そんなことも知りませんでした、、、トホホ
みなさんの貴重な時間に、ほんとうに申し訳なかったです
どうもありがとうございました
84 :
BUGかなー? :2005/03/31(木) 19:39:08
エクセルのシート間でデータの移動を行っています Dim Ws3 As Worksheet Dim Rng As Range Dim i As Long Ws3.Cells(i, 1).Resize(1, 30).Value = Rng.Offset(0, -1).Resize(1, 30).Value こんなプログラムを実行すると '81534','0000001',0,0 が 81534',0000001',0,0 とCOPYされ ’’シングルクオートで囲んだ 文字列の 左のシングルクオートが外れるんです なんでしょうかね? RngはCSV形式のファイルから読んだシートです Excel2000 On WindowsXPでごぜーます
>>84 BUGじゃないよ。
Excelの場合、入力の最初に ' を付けると「文字列」に
指定する演算子になります。
'2 と入れると文字列の 2 と認識されます。
頭に ' を入れたければ ''2と入力する必要あり。
86 :
名無しさん@そうだ選挙にいこう :2005/03/31(木) 19:58:10
>>85 ありがとうございます
私が2ちゃんに初めて助けられました
感謝
87 :
994 :2005/03/31(木) 21:41:15
>>14 レスありがとうございます。長くなってすいません。
・9:00に出勤するパターンの人は、6:00でも9:00でも9:00の出勤とされる。
・9:01は遅刻となり、9:10の勤務開始とみなされる。11:23に出勤したら11:30とされる。
11:29は11:30。11:30は11:30。11:31で11:40となる。
以上出勤は9:00以前と9:01以降で処理が違う:
9:00以前は何時に来ようが9:00勤務開始とされる。
9:01以降は10分単位で労働者に損な感じで丸められる。
・18:29に退勤したら、18:20とみなされる。18:30は18:20。18:31で18:30.
退勤は労働者に損な感じで10分単位で丸められる。
・深夜残業は22:00以降翌5:00まで。
・残業は出勤してから8時間働いてから。
・12:00から一時間は昼休みで労働時間にカウントされない。
なので、例えば9:02に出勤、23:30まで働いた人は
丸められた出勤 : 9:10
丸められた退勤 : 23:20
昼休みが12:00から一時間。
総労働時間 : 23:20-9:10-1:00=13:10
通常残業 : {9:10から9時間後(昼休みを考慮)の}6:10から22:00までの3時間50分。
深夜残業 : 22:01から23:20までの1時間20分(1時間19分と思われるが…)。
という感じになります。
で通常残業と深夜残業を求めよ、というわけです。
会社入ったばっかであんまりよく分かってないのですが、たしかこういう条件だったと思います。
89 :
名無しさん@そうだ選挙にいこう :皇紀2665/04/01(金) 09:20:02
日付 みかん りんご 日付 みかん りんご 3/1 2 3 → 3/1 3 5 3/1 1 2 3/2 0 0 3/3 2 0 3/3 2 0 ・ ・ ・ ・ ・ ・ 左がもとデータで右が完成表(日付ごとの合計)です 3/2はデータがないので 0 を表示させたいのです ご教授宜しくおねがいします
91 :
89 :皇紀2665/04/01(金) 09:48:21
>>90 なんかスペースが消えておかしな表になってしまいましたスイマセン
で、やっぱりVBAでやるしかないのでしょうか?
VBAは自動記録くらいしかできないもので・・・・
>>91 Sub hoge()
Dim myDate As Date, i As Long, j As Long
j = 2
myDate = Cells(2, 1).Value
Cells(j, 5).Value = myDate
For i = 2 To Cells(65536, 1).End(xlUp).Row
Do Until myDate = Cells(i, 1).Value
j = j + 1
myDate = myDate + 1
Cells(j, 5).Value = myDate
Range(Cells(j, 6).Address, Cells(j, 7).Address) = 0
Loop
Cells(j, 6).Value = Cells(j, 6).Value + Cells(i, 2).Value
Cells(j, 7).Value = Cells(j, 7).Value + Cells(i, 3).Value
Next i
End Sub
日付はシリアル値で、各項目は数字ではなく数値で入力してあればこれでいけると思う。
セル位置は元データの「日付」がA1、「みかん」がB1、「3/1」がA2に、
出力は同シートのE〜G列にしてあるのであとは勝手に調整して。
>92がVBAでやってくれてることと同じようなことを手動でやるんだったら 実際に販売(?)されたデータの行のほかに月初か月末に毎月1日〜末日分の 空データ(というかゼロ)を入れた行を挿入してピボットテーブル使って集計するとか。 日付 みかん りんご 3/1 0 0 3/2 0 0 3/3 0 0 (中略) 3/31 0 0 自分だったら>92のを使わせてもらうけど。
94 :
92 :皇紀2665/04/01(金) 12:13:17
>>91 関数でやる方法も一応書いておく。
E2に3/1と入力して、A列の最後の日付と同じになるまでオートフィルでコピー。
F1に「=SUMIF($A:$C,$E2,B:B)」と入力して
列範囲は右に2列、行範囲は下にE列の最終行までオートフィルでコピー。
95 :
89 :皇紀2665/04/01(金) 12:32:18
皆さん親切にありがとうございました やってみます。
Excel2002を使っています。 Range("A1").Addressで$A$1が得られますが、 A1を得るにはどうしたらよいでしょうか。 セルに式を代入するときのアドレスを$のつかない形にしたい。
>>96 Range("A1").Address(RowAbsolute:=False, ColumnAbsolute:=False)
ヘルプ見れ
>>96 Range("A1").Address(0, 0)
99 :
96 :livedoor06/04/01(金) 16:19:50
1行ごとに1レコードを入力してあるリストがあるのですが、 各行の先頭セルにチェックボックスを貼り付け、同行の特定セル(あるいは同先頭セル)の内容を0と1で切り替えたいのですが、 このようなことは可能でしょうか。 ワンクリックで切り替えさえできればチェックボックスである必要はありません。 Wordで差込印刷をする際の判別用に必要なのです。 どなたかアドバイスお願いします。
???なんか日付けがおかしなことになってる???
>>100 右クリでA列が1と0が置き換わる。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim a As Range
For Each a In Selection
If a.Column = 1 Then
a.Value = 1 - a.Value
End If
Next
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim a As Range
If Selection(Selection.Count).Column = 1 Then
Cancel = True
For Each a In Selection
a.Value = 1 - a.Value
a.NumberFormat = ChrW(9745) & ";;" & ChrW(9744)
Next
End If
End Sub
>>102 を改造してみた。
104 :
100 :livedoor06/04/01(金) 17:28:38
>>102 ,103
どうもありがとうございます!
ばっちり行きました。
条件付書式と組み合わせて見やすくなりました。
って右クリックのイベントで書式も変更できるようなのでこっちでやったほうがいいのかな?
ともかくありがとうございます。
ところで
>>102 を先に見てそれでうまくいったのですが、
>>103 は何が違うのでしょうか?
ChrW云々とはどのような記述なのでしょうか?
105 :
103 :livedoor06/04/01(金) 17:41:43
>>104 1.A列のみを選択してる場合は、右クリックしても右クリックメニューを表示しない。
2.選択範囲にA列以外が含まれる場合は処理をキャンセル
3.A列以外を範囲選択した場合のキャンセル処理を高速化(B〜Z列あたりを選択して右クリックすれば違いが解ると思う)
4.A列の表示をチェックボックス文字で表示(セルの値は0と1のまま)
ChrW(9745)は□の中にチェックマークが入っている記号
106 :
104 :livedoor06/04/01(金) 18:01:31
>>105 なるほど。
チェックボックスに見えるのはすごくいいカンジです。
どうもありがとうございました。
107 :
('A`) :livedoor06/04/01(金) 20:46:23
ちょっと、質問させて下さい。 本気で悩んでます(泣) Excelのバージョン:2003 personal OS:Win2k ある、それぞれの各商品コードに、不変の単価が対応付けられてるとします。 例 商品コード 単価 1000 → \3,200 1001 → \2,700 1002 → \5,000 1003 → \1,900 1004 → \6,340 (ちなみに、商品コードは増える可能性があるものとします) などのように、決まっていた場合に、例えばセルA4に セルA4 セルA7 | ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄| | 1003| | \1,900 | |______| |______| 1000と入力したら、セルA7に\1,900と自動的に入ってくるようにしたいのです。 どうかお力添え、お願いしますm(__)m
すみません、下げ忘れました
>>107 A7で以下の数式
=VLOOKUP(A1,商品コード,0,FALSE)
商品コードは増えるとの事ですので、
名前の範囲を多めにして、名前の定義をしておくとよい。
ちなみにこの式は、どこのセルに入れたらいいのでしょうか? 式の中の商品コードは商品コードが入っているセルの範囲ということでしょうか? すみませんm(__)m
>>111 の
>>ちなみにこの式は、どこのセルに入れたらいいのでしょうか?
は無視してくださいm(__)m
> ちなみにこの式は、どこのセルに入れたらいいのでしょうか? 「A7で以下の数式」って書いてくれてるじゃん > 式の中の商品コードは商品コードが入っているセルの範囲ということでしょうか? 「商品コードは増えるとの事ですので、名前の範囲を多めにして、名前の定義をしておくとよい。」 って書いてくれてるじゃん。 せっかく答えてくれてるんだからちゃんと読めよ。 ちなみに俺なら範囲可変参照使うけど、コードと単価の表の位置が解らないと掛けないからな。
>>113 確かに、そうですよね、すみません
セルA1に商品コード セルB1に単価
セルA2に1000 セルB2に\3,200
セルA3に1001 セルB3に\2,700
セルA4に1002 セルB4に\5,000
セルA5に1003 セルB5に\1,900
セルA6に1004 セルB6に\6,340
とし、
A7に商品コードを自分で入力、B7に、表示ということがしたいのです。
つーか、>109が書いてくれてることで十分答えになってるんだから あとは検索するなりちっとは自助努力もしてくれ。
A7、B7を入力、表示セルに使ったら 表を広げられないじゃん・・・
どうか皆様のお知恵を貸してください。 商品が売れると、1行から順番に、A列に売れた商品の商品番号(a01とかb30とか)、B列に売れた個数(1〜10)が入力されたcsvファイルがあり、 このファイルを使って、1ヶ月にどの商品が何個売れたかを集計したいのですが、 とりあえずどの商品が売れたかを集計する方法は判りました。 新しいファイルに各商品番号を上から順番に列に入力し、その隣の列全てに、 =COUNTIF(上記csvファイルをコピー&ペ−ストしたシート名(仮にmoto)!A:A,商品番号が入力されたセル) を記入することで解決できました。 この方法では、1回に付き1個だけ買った場合は問題ないのですが、2個以上買った場合、何回買われたかは判るのですが、全部で何個 買われたかは判りません。 手作業でmotoシ−トのB列の数字分だけ、A列に該当商品番号の入力されたセルを挿入すればよいのですが、 売れた商品数が多くなった場合面倒になりますので、csvファイルのデータだけを利用して集計を実現する方法はないでしょうか? Windows98、Excel2000を使用しています。 よろしくお願いします。
119 :
名無しさん@そうだ選挙にいこう :livedoor06/04/01(金) 22:34:03
VLOOKUPとHLOOKUPをあわせたようなことは、できないでしょうか? 左端の列から特定の内容を検索して、行を選び 上の行から特定の内容を検索して、列を選んで、 特定の行と列の交点にあるセルの値を取得したいのですが。
>>119 indexとmatch関数を組み合わせるのが定法
例: =INDEX(リスト範囲,MATCH(列条件セル,列リスト範囲),MATCH(行条件セル,行リスト範囲))
みたいに書く。
式中の項目は勿論セル範囲やセルを指定。
あ、リスト範囲はデータ部分のトコだけんね。 項目部分は要らんよ。
123 :
名無しさん@そうだ選挙にいこう :livedoor06/04/02(土) 07:59:20
助けて… シートに表示する日時とファイル名を「○○4月分」に変更させるマクロを組んだのですが なんだかPCの日付自体も変えられてしまうのです。 ファイルを保存後PCを再起動すると、マクロで指定した月日に変更されるようです。 最初は電源が外れて狂ったのかと思いましたが、時刻は変わりません。 Win98SE、XPとも同じ現象が起こりました。 使用する度にこれではたまりません。どなたかお知恵を…ちなみに↓のように書いてます Private Sub CommandBox月年_Click() For i = 1 To Worksheets.Count Worksheets(i).Cells(1, 3).Value = TextBox月.Value Worksheets(i).Cells(3, 2).Value = TextBox日.Value Next Mytuki = TextBox月.Value & "/" & TextBox日.Value & "/1" With Sheets("data") .Range("Q2").Value = TextBox年.Value .Range("N2").Value = Mytuki End With TextBoxFILE.Value = ThisWorkbook.Path & "\予定表" & Format(Mytuki, "ggge年mm月") End Sub Private Sub CommandBoxFILENAME_Click() ThisWorkbook.SaveAs Filename:=TextBoxFILE.Value End Sub 上記で5月1日と指定すると、PCの日付も5/1になってしまう
原因はこのコードじゃないと思われ。
>>124 解決しました、このコードでない、ということで別のとこを見てたら
「Date」を変数として使っていたところがあって、MyDateとかにしたら治まりました
ありがとうございます
126 :
名無しさん@そうだ選挙にいこう :livedoor06/04/02(土) 11:40:56
Dictionaryオプジェクと(oDicとする)なんですが、Keyとして 存在しない例えばHogeをoDic("Hoge")とするとEmptyが 返ってきます。まあ、それでよいのですがこれをやると 勝手にoDicのKeyにHogeが追加されてしまい以降 oDic.exists("Hoge")がTrueになってしまうのはどうして なんでしょ? If oDic.exists("Hoge") And oDic.exists(oDic("Hoge”)) Then なんて誤った使い方していて発見しますた。 Andの前がFalseでもAndの後を評価してしまうんですね、とほほ。
127 :
名無しさん@そうだ選挙にいこう :livedoor06/04/02(土) 13:35:00
セル内で段落をつけると同じ行の表示が下につめられてしまうんですが、 どうやって上につめればよいのでしょうか? 例えば 山田太郎 東京 渋谷区 って表示させたいんですけど、東京渋谷区に段落つけると 東京 山田太郎 渋谷区 ってなってしまうんです。 わかりずらくてすいません。
128 :
名無しさん@そうだ選挙にいこう :livedoor06/04/02(土) 13:44:51
>>127 わかりませんよ何がいいたいのか。
セル内改行のことですか?
東京
_渋谷区(_は空白)
と表示したいのなら、初めから空白を入れるしかありません。
あるいはセンタリングするぐらいでしょうか。
129 :
名無しさん@そうだ選挙にいこう :livedoor06/04/02(土) 13:50:30
>>127 山田太郎のセルの「セルの書式設定」で「配置」を選んで
縦位置を調整する。
130 :
127 :livedoor06/04/02(土) 13:57:39
>>128 >>129 お二人とも即レスありがとうございます。
わかりずらかったようで申し訳ありません。
自分のやりたいことは129さんのレスで解決しました。
ありがとうございました。
>>126 oDic("Hoge")と記述することで、新たなkeyである Hoge を宣言し、
""(空白)と関連付けたことになるからですよ。
宣言してない変数Hogeをいきなりマクロの中で使っても0や空白として
認識されるのと同じです。
132 :
名無しさん@そうだ選挙にいこう :livedoor06/04/02(土) 14:31:19
>>131 それは分からないでもないですが、existsというプロパティ
があるにも拘らずなんのために?
そもそもitemを指定しないでkeyだけ追加されることが、add
ではkey,item両方省略できないわけで何でだろうと。
というか、なんかいいことあるんでしょうか。
dim a as integer
とするとaに値を代入しないばあい0になるのとは違うと思ったです。
まあ、そういう仕様だということなんでしょうが、仕様とするメリット
が分からないです。という疑問ですた。
>>132 >dim a as integer
>とするとaに値を代入しないばあい0になるのとは違うと思ったです。
そういう意味ではない。
「代入しなくても」じゃなくて、「変数を宣言しなくても」だ。
dim a as integerを記述しなくても、aは0または空白と認識される、
といってるんだよ。
厳格な変数宣言をプログラムが肩代わりしてくれるのがメリット。
良くも悪くも「Basic」なんだよ。
134 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/02(土) 15:39:23
どなたか知恵を貸してください。 当方、Excel2003を使用しています。 VBAを利用したフォームボタンでブックの保存を行いたいのです。 そこで、ファイル名をそのブック内の特定のセルの文をそのままファイル名にしたいのですが出来ません。 (例えば、A1に「顧客リスト01」とあればファイル名を自動的に「顧客リスト01.xls」とするように) 以下は或るサイトでコピーしたもので、これを利用したいと考えています。 Sub Sample() Const myPath As String = "C:\TEST\" Dim myFileName As String ChDrive myPath ChDir myPath myFileName = Application.GetSaveAsFilename _ (ActiveWorkbook.Name, "Excelファイル,*.xls") If myFileName = "False" Then Exit Sub Else With Application .DisplayAlerts = False ActiveWorkbook.SaveAs myFileName .DisplayAlerts = True End With End If End Sub 宜しくお願いします。
>>134 おいおい、全然違うもの引っ張ってきたな。
特性セルの文字をファイル名にして保存するなんて
腐るほどサンプルコード転がってるからまともなもの拾ってこい。
>>134 そのサンプル中で必要なのは後半だけ。
SaveAsメソッドを調べてみな。
ユーザーフォームを作成する際にラベルに文字を表示するとき、 横位置の設定はTextAlignで設定できるようなのですが 縦位置の設定(上詰め下詰め等)はどこかで設定できないのでしょうか?
138 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/02(土) 17:01:52
>>102-105 で書いてあるように、チェックボックスみたいなことを、僕もしたいのですが、
右クリックでメニューがでてしまいます。
次のようにしたのですが、おかしいところがあれば、指摘してください。
ツール>マクロ>Visual Basic Editor
その後、visualu basic editorで 挿入>標準モジュール
として、
>>102 や
>>103 をコピー&ペーストしました。
A列に0と入力したり、右クリックしても、いつもどおりです。
右クリックすると、メニューが出てしまいます。なぜでしょう??
versionはExcel2003です。
139 :
103 :livedoor6年,2005/04/02(土) 17:17:21
>>138 標準モジュールじゃダメです。
シートタブ(シートの左下でSheet1などと書かれてる部分)を
右クリックして「コードの表示」を選択してそこに貼ってください。
しかし、この程度の使い方も解らない方が、他人の書いたコードをコピペして使うのは危険です。
自分で書けないまでも、コードを見て大まかな内容と使い方が解るようでないと
悪意のあるコードを実行して泣きを見るはめになるかもしれませんよ。
140 :
138 :livedoor6年,2005/04/02(土) 17:30:09
>>139 どうもありがとうございます。
一応、プログラミングの経験はあります。
Sheetオブジェクトのメソッドとして、定義するってことですね。
いや、Excelって今まで使ったことなくて、この4月から、使わないといけなくなったので。。
ありがとうございました。
141 :
138 :livedoor6年,2005/04/02(土) 17:35:57
あと、もしよければ、 a.NumberFormat = ChrW(9745) & ";;" & ChrW(9744) この意味を教えてもらえませんか?? a.valueが、1なら、ChrW(9745)で、0なら、ChW(9744)ってことですよね。 真ん中の";;"って、どういう値に対するものなのでしょうか?? しかも、1、0っていう順番で定義するんですか??? もう一つ、おすすめのリファレンスってないですか?
142 :
103 :livedoor6年,2005/04/02(土) 18:01:55
>>141 NumberFormatはセルの表示形式を操作するプロパティ
そして表示形式の書式には「正数;負数;0値;文字列」という規則がある
つまりChrW(9745) & ";;" & ChrW(9744)は
正数 → ChrW(9745)
負数 → 表示なし
0値 → ChrW(9744)
文字列 → 指定なし
ということ。たとえば「;;;」なら、セルにどんな値を入力しても表示はしない。
このコードではセルの値は0か1なので0なら「ChrW(9744)=チェックなし」
1なら「ChrW(9745)=チェックあり」となる。
視覚的な表示のみを求めてるなら、セルに直接ChrW(9745)とChrW(9745)を
交互に入力するようにしてもいいんだが、今回は質問者が「0と1で切り替え」を求めているので
セルの値は0と1のままで、視覚効果のみチェックボックスになるように表示形式を使っただけ。
んで、オススメなんてのはここで聞くことじゃない。
とりあえずヘルプでも読み漁っておけ。
ヘルプにも金出してるんだから使わなきゃ損だよ。
143 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/02(土) 18:06:51
>>142 丁寧にありがとうございます。
ヘルプも活用してみます。ありがとうございました。
144 :
134 :livedoor6年,2005/04/02(土) 18:21:38
>>135 >>136 ありがとうございます。
が、サンプルコードが見つからず、SaveAsメソッドもヘルプで調べたのですが、
全くわかりませんでした。
当方、VBAは全くの初心者です。
可能であれば、希望するサンプルコードが置いてあるサイトを教えて頂けないでしょうか。
>>144 Sub CommandButton1_Click()
ActiveWorksheet.SaveAs Filename:=Range("A1").Value & ".xls"
End Sub
ゴメン ActiveWorksheetじゃなくてActiveWorkbookです。
147 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/02(土) 19:36:33
>>146 これだとパスはMy Documentsになるんか?
149 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/02(土) 21:57:50
AからCのセルを結合し業務日報という文字を均等割付にて書き込みました。 そして下線をつけたのですが、均等割付をしているせいか 業 務 日 報  ̄  ̄  ̄  ̄ というふうになってしまいます。 業 務 日 報  ̄ ̄ ̄ ̄ ̄ ̄ ̄ としたいのですが良い方法はないでしょうか?
>>149 ・均等割付ではなく中央揃えでスペースで字間調整
・アンダーラインではなく罫線やオートシェイプを使う
151 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/03(日) 00:20:26
abcdefg というセルの値と、hijklmnというセルの値(ハイフンは、下線のつもり) --- -- を結合させて、別のセルに abcdefghijklmn --- -- という風に表示したいです。 つまり、下線の情報を持たせたまま、つなげたいのですが、いい方法はありますか??
偶数行と奇数行のセルの背景を、それぞれ別の色にすることって可能ですか?
153 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/03(日) 00:32:07
154 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/03(日) 02:09:48
Excelで、入力したとおりに表示するには、どういう、表示形式にすればいいんでしょうか?? 最低、数値に関して、そのまま表示して欲しいです。 13.0は13.0。13は13という感じに。
シート1上にボタンを作って、クリックしたらマクロが動くようにしているのですが このボタンの表題が、たとえば別シート2のA1セルに書かれている文字列である ようにすることは可能でしょうか シート2のA1セルに「モナー」と入力→シート1のボタンの表題は「モナー」。 またシート2に戻って、今度はA1セルに「モナー」から「age」と入力し、またまたシート1に 戻ったら、ボタンの表題は「age」になってるという具合に。 ちなみに当方は、いまだにエクセル97を使用しています
>>152 一番簡単な方法は、A列にでも連番振って
条件付き書式で「MOD(A1,2)=0」と設定してあげる。
あとの行はコピーすればOK。
>>154 書式設定を文字列にするぐらいしか思い浮かばない。
>>155 下のマクロをシート2に書く。
Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Worksheets("シート1").CommandButton1.Caption = Target.Value
End If
End Sub
159 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/03(日) 14:47:39
Webページの表をExcelXPに取り込んだのですが、 ハイパーリンクがウザくて仕方ありません。 シート単位でまとめて解除するには、どうすれば よいのでしょうか?
>>159 Sub ハイパーリンクを削除()
Dim hoge As Hyperlink
For Each hoge In ActiveSheet.Hyperlinks
hoge.Delete
Next
End Sub
>>160 コードの内容がわからないのですが、出来ました。
ありがとう。
>>161 ちょっと上にも書かれているけど、自分で理解できないコード
を安易に実行しないほうがいいよ。
破壊工作的なコードだったらどうするの?
実行は自分で理解してからにしな。
163 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/03(日) 20:35:09
>>162 俺は理解していないコードを実行してることのほうが多い。
どなたか、お知恵をお貸しください。 Windows2000 と Office2003な職場で仕事をしています。 手書き帳票の清書→入力会社に出荷→パンチ入力会社から納品→納品されたデータを確認しDB登録 という流れのバックオフィス系の業務がメインの職場です。 上記 「→」の部分は、データの受渡しを表します。そしてそのタイミングで、受渡し件数の確認が必要です。 現状は、「→」の部分では、紙に印刷したエクセルのファイルに、ボールペンで記入して相互参照するという 時代錯誤なことをしております。時代錯誤ですしなによりも帳票を物理的に移動させなければならないという 面倒くささもあります。 これをなんとか、WEB上でやりたいと考えております。 エクセルにこだわる必要性などないと思われるのですが、 1.セキュリティ上の制約から、mysql等、一切のDBアプリが使えない。 2.なによりも、従業員のスキルが低いので、エクセル以外使えない。 という制約から、 エクセルにこだわらざるをえません。 イメージとしては、 「エクセルでフォーマット作成→WEBで公開→ブラウザから入力&保存→一日の終わりにエクセルファイルとして出力&保存」 なんてことをイメージしております。 こういうことは、可能なのでしょうか? 可能であればどのような方法があるのでしょうか? よろしくお願いします。
165 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/04(月) 02:05:01
Excelでセルに = で始まる式を入力すると 数式になるはずですよね。 なぜか、数式を編集したりするうちに、計算結果を表示してくれないで、 単に、数式を文字列のように表示するだけのように、なってしまいました。 一度、消して、入力しなおしても、セルの属性??が、文字としてしか認識してくれないようで、 数式として、計算してくれません。 どうしたらいいでしょうか??
>>165 セルの書式を「標準」し、一度セルをアクティブにする。
>>164 Webでやりとりするってことは、全世界に公開するってことですよ。
それでもいいのですか?
PCの知識のあまりない人が間にかむなら、面倒くさがらずに
紙運用がbestと思いますが。
>>164 状況がよくわからない。
ブラウザから入力するのは誰?
入力代行依頼をやめるってこと?
169 :
164 :livedoor6年,2005/04/04(月) 10:01:29
ご回答ありがとうございます。
>>167 外部公開されていない、社内イントラ上のWEBですので、大丈夫です。
確実に大丈夫とまでは言い切れませんが、確か、アパッチの入っているサーバー自体が
グローバルIPを持っていないはずです。
現状、WEBは、マニュアル類の掲示や部署内掲示板の運用にのみ使っています
>>168 入力代行依頼はやめません。
ブラウザから入力するのは、それぞれの工程の責任者です。そしてその責任者たちは
同じフロアにおります。ただし、そのフロアが自動車工場なみに極めて広大です。
そのフロアの中を、紙に出力した管理台帳をもって行ったりきたりしているというのが、現状の運用です。
社内事情をあまり晒さない方がいいよ。 ブックの操作やVBAに関してならここで聞くのもいいけど それ以上のことは社内で解決しようね。
>>169 ワークシートに直接チェック入力させれば?
入力可能なWeb形式が希望ならDBソフトは不可避だし。
このあたりはソフト屋に聞くほうがいいと思う。
具体的なデータ形式がわからないと、あいまいな回答しかできない。
Webと書いてたからインターネットで使うのかと思ったら違うのかよ… いずれにしてもDBのプログラムを使えないんじゃ話にならないと思うが。 素直に 1:入力用のフォーマットを作ったExcelファイルを作成、共有フォルダに保存 2:そのファイルを各部署の担当者が開いて入力 ってしたら?同時に複数の人間が入力するようなら、 1:マスターになるファイルを共有フォルダに保存 2:各担当者がそれをコピー。コピーしたファイルに日計データを入力。 日計データの入ったファイルを共有フォルダに保存 3:>164なり誰かがそれぞれの日計ファイルを集計 って形にするとかさ。
>>169 外部には漏れないみたいだけど、内部の人には?
責任者以外のひとはLANにさわれないの?
記入できるということは消すこともできるってこと。
素人が触ればミスでとんでもない処理をすることだってある。
それを確実に管理する自身と責任を取る覚悟がおありですか?
なければPC処理なんてやめたほうが「楽」ですよ。
超初歩的な事ですいません。 グラフの凡例って、順番を並べ替える事できますか? office2000 OSはXPの環境です。
175 :
164 :livedoor6年,2005/04/04(月) 11:50:47
みなさん、ありがとうございます。
私の書き方が悪かったようで、なにやら誤解を生じさせているやもしれません。
まず、エクセルに書き込む必要のあるデーターは、単に、「やり取りしたデータの件数」の数字だけです。
特殊なデータ形式のやり取りは必要ありません。ぶっちゃけ、件数がわからなくなってもなんとかなるのが実情です。
>>172 氏 ご指摘の方法が、実をいうと、以前の運用でした。だた、集計記入者の作業負荷が高すぎるのと
どうしても情報のタイムラグが生じるために、現状の紙ベースの運用になりました。
>>173 イントラ上のファイルは、責任者しかさわれません。一般作業員は、WEBのみ閲覧可能です。そもそも一般作業員の
クライアントマシンは、ほぼ、シンクライアントです。
176 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/04(月) 14:10:36
複数のシートに備品の購入したものを書いたのですが、 A B C D 1 えんぴつ 2こ 3月12日 2 にんじん 3こ 3月13日 3 けしごむ 4こ 3月16日 ・ ・ ・ ・つづく こんな表が12枚で一年分あるのですが、実際はものすごい縦長の表で、 これを一括して集計したいのです。 sumifだと、一枚のシートしか集計できないと思ったのですが、複数の シートにわたって集計する方法はないものでしょうか? ご教授のほどよろしくお願い申し上げます。 4
>175 集計くらいVBA使えば労力ってほど手間はかからんような気がするけどな。 じゃなきゃ串刺し集計使うとかさ。 >176 177が書いてくれた他にも「複数 シート 集計 Excel」でググってみるとかな ピボットテーブル萌え
>>175 件数くらいなら簡単なCGIで集計可能。
結果もExcelに取り込める。
172の方法でタイムラグが出る原因が不明だけど。
180 :
おながいします :livedoor6年,2005/04/04(月) 18:09:39
エクセルで『このセルがこの金額以上ならいくら割引』ってのをやりたいのですが、 たとえば 10000円以上なら1000円引き 20000円以上なら2000円引き 30000円以上なら4000円引き みたいにする場合どういった式になるんでしょうか? 心優しい方のお返事お待ちしております。。
IFをネスト
182 :
おながいします :livedoor6年,2005/04/04(月) 18:30:11
ネストって方法を知らなかったのでググッて下のように書いてみましたが 見事に失敗しますた。どの変が悪いんでしょうか? =IF([値引き前のセル]>=10000,[値引き前のセル]-1000,IF([値引き前のセル]>=20000,[値引き前のセル]-2000,IF([値引き前のセル]>=30000,[値引き前のセル]-4000,IF([値引き前のセル]>=40000,[値引き前のセル]-6000,[値引き前のセル]-0))))
183 :
おながいします :livedoor6年,2005/04/04(月) 18:37:29
読みにくいんで書き直しました。。 もうセルも表記しておきます。 =IF(D79>=10000,D79-1000, IF(D79>=20000,D79-2000, IF(D79>=30000,D79-4000, IF(D79>=40000,D79-6000,D79-0))))
>>183 4万円でも5万円でも、最初の1万円以上という条件に引っかかっている。
順序を逆にする。
185 :
おながいします :livedoor6年,2005/04/04(月) 19:05:16
出来たー!! 184の方ありがとうございました。 順序を逆にするという方法がまったく頭にありませんでした。 とても勉強になりましたです♪ 本当にありがとうございました。
186 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/04(月) 21:40:27
コントロールで、「クリア」と言うボタンに コンボボックス.ListIndex = -1 というのをつけてボックスの内容をクリアしているのですが、 その後コンボボックスをクリックすると「プロパティの値が不正です」と出てしまいます。 この警告が出ないようにするには、どうすればいいでしょうか ちなみにMatch Requied はtrue にしてないとまずいんです
コンボボックス.Clear じゃダメなの?
188 :
186 :livedoor6年,2005/04/04(月) 22:00:43
>>187 そうすると、「予期せぬエラーが発生しました」となって
デバック画面になってしまうのです。ビビリます
>>188 (´-`).。oO( なぜそれを最初に書かないんだろう・・・ )
まあ、情報後出しにする奴には教えないのがお決まりなので以下ヌルーで
>189=>187? エラーになんのはあたりまえだろw何を逆切れてるのやらwww
春の妄想
192 :
186 :livedoor6年,2005/04/04(月) 23:38:28
>>186 これって後だしになるんですか?す、すいませんそんなつもりではなかったです。
何かお知恵をいただければと思っています。
>>186 新規ブックにコンボボックス(Match Requied = True)とコマンドボタンを用意して
1.ブックOpen時にコンボにAddItem
2.コンボから適当に選択
3.ボタンClickでコンボのListIndex = -1
4.コンボを再度クリック
の手順でやってみたけど
「プロパティの値が不正です」は再現しなかったな(当方Excel2000 SP3)。
コンボボックスのClickイベントとかでListIndexを使って何か処理していないかい?
もしあるなら、その辺を見直してみては?
どなたかお知恵を頂けないでしょうか。 あるExcelファイルを開いた直後は動作は普通なんですが、 同ファイルの別シートを次々表示していくと動作が急に重くなり、 セルの内容を変更するだけで10〜20秒ぐらいbusy状態になってしまいます。 重いですが、セルの変更は可能です。 Excelを終了して、再度同ファイルを開いても既に重い状態になっています。 普通の動作をするのは初回起動のみでした。 マクロ、VBAのモジュール等はありません。 OS:WindowsXP-Pro SP2 Excel:2003 どうかよろしくお願いします。
195 :
名無しさん@そうだ選挙にいこう :livedoor6年,2005/04/05(火) 00:55:42
>>194 変なフォント使っているとか、、、
全てのフォントをMS Pゴシックとか極普通のにしたらどうなる?
ブックの共有ができなくなっている。。。 なんらかの保護はしていないのになぜだろう。。
リスト機能を使用していたためでした。
198 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 10:29:20
EXCEL2002以降でEXCEL95とかのファイルを開くと 改ページ位置がずれるのですが、 (EXCEL95では1ページにおさまる行数が2002以降ではおさまらない) 双方で同じ書式で扱うのは無理なんですかね。
テンプレに 「情報の後出しをするな」と付け加えてほしいなぁ
200 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 11:17:02
シ−トごとに分離して一つずつのファイルに保存できないのでしょうか?
201 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 11:21:15
すみませんが2ページ目ってどうやって設定するのですか? こんな初歩的なこと知らないオレって、、、、orz
202 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 11:43:28
はじめまして。ご教示ください。 得意先からFAXで送られてきた内容をスキャナで読んで、 その内容に上書きしてプリントアウトして、それをFAXで送って 回答したいのですが、 そのFAXを図形で読み取った場合だと、テキストボックスの重ね方は わかるのですが、セルというかワークシートが重ねられません。 あるいは、読み取って背景化して、そこにかさなるようにワークシートで 作業をすることも考えましたが、プリンタでズレたらばアウトなので やっていません。 これに関して、便利な方法がありましたらご教示ください。
203 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 11:44:25
>>200 面倒臭がらずにシート一つすつ、
シート名右クリック→シートの移動・コピーで
新しいブックにコピーすればどうすか?
>>201 改ページの挿入なら行選択で挿入→改ページ
ただ単純に入力行(または枠)増やせば自然とページ増えるが?
あるページをコピーしたいなら元のページの行を全て範囲選択して
コピーする場所の行を選択して右クリック→コピーした行の挿入だが
204 :
201 :2005/04/05(火) 12:03:01
自己解決しました。お騒がせです(  ̄ー ̄)
205 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 12:15:09
206 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 13:07:30
御教授ください。 例えば1番上の行に四月、五月…と書いていって 下に会計を入れていく。 行がどんどん下にいって どの列が何月だか分かりづらい! こんなとき1番上の行を常に表示する方法 教えて下さい。
207 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 13:11:41
>>206 うーん釣り?
取りあえずその1番上の行選択してウィンドウ→ウィンドウ枠の固定で
やれっけどこれはマニュアルレベルでしょ
208 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 13:22:22
207続き 他人のこと答えてる場合じゃないですから! 誰か198教えてくれエロイ人
>>208 印刷の設定で頑張ってみるか文字を小さくする
あとは「EXCELだから」とあきらめる
210 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 13:41:31
>>207 釣りじゃないっす!ありがとう!
助かりました!
211 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 13:46:36
>>209 orz…あきらめるのかオイ、俺の人生こればっか
鬱だ死脳(ナツカシイ)
212 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 15:12:12
前スレの686の件ではお世話になりました。 再びで恐縮ですが686関連で質問があります。 セルA1に「=INDIRECT("B1")-INDIRECT("C1")」 という関数を設定し、以降にコピーにて A2 「=INDIRECT("B2")-INDIRECT("C2")」 A3 「=INDIRECT("B3")-INDIRECT("C3")」 というようにしたいのですが、カーソルを引っ張っただけでは出来ません。 どのように行えば出来ますか?
>>212 =INDIRECT("B"&ROW())-INDIRECT("C"&ROW())
フィルコピーしても数式の内容は変わらないが、返る結果はきちんと行ごとに変わる。
>>212-213 しかしこれは単に
A1に=B1-C1
と入れるだけじゃないか?
別シートや別ブックの場合でも、相対参照にしとけば、セルのコピーでできるから、
あまり必要ないんじゃないの?
>214 絶対参照の意味が理解できてないようだな
216 :
212 :2005/04/05(火) 16:32:51
申し訳ありません。 例が実状にあっていませんでした。 C2 「=INDIRECT("C1")+INDIRECT("A2")-INDIRECT("B2")」 以降に C3 「=INDIRECT("C2")+INDIRECT("A3")-INDIRECT("B3")」 C4 「=INDIRECT("C3")+INDIRECT("A4")-INDIRECT("B4")」 という感じにコピーしていきたいのですが、 どのようにすればいいのでしょうか? 重ね重ね申し訳ありませんがよろしく御願いいたします。
=INDIRECT("C"&ROW()-1)+INDIRECT("A"&ROW())-INDIRECT("B"&ROW())
218 :
212 :2005/04/05(火) 16:48:03
解決できました。 御教授ありがとうございました。
219 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 19:04:24
Excel2002を使っています。 書式設定で、日付が 2005/ 4/ 5 のように一桁だったらスペースにしたいんですが、どう指定したら よいのでしょうか。
>>219 表示形式だけではでは無理だと思う。
だって表示形式の書式記号には「一桁だったら」という条件を判断できるものが無いから。
年と月のみの表示なら「yyyy/* m/」としてセル幅を調整することで
月が一桁の場合のみスペースが入ってるように見せかけることも出来るけど、
日も表示させたいなら、別セルに
=YEAR(A1)&"/"&IF(MONTH(A1)<10," "&MONTH(A1),MONTH(A1))&"/"&IF(DAY(A1)<10," "&DAY(A1),DAY(A1))
と入れるとか、VBAで↓みたいにするとか
Private Sub Worksheet_Change(ByVal Target As Range)
If Month(Target) < 10 And Day(Target) < 10 Then
Target.NumberFormat = "yyyy/ m/ d"
ElseIf Month(Target) < 10 Then
Target.NumberFormat = "yyyy/ m/d"
ElseIf Day(Target) < 10 Then
Target.NumberFormat = "yyyy/m/ d"
Else
Target.NumberFormat = "yyyy/m/d"
End If
End If
221 :
219 :2005/04/05(火) 21:24:43
帰宅しました。
>>220 ありがとうございます。やはり数値の場合の#のようなものはないのですね。
>>215 Excelの絶対参照($A$1とか)は理解してるけど、
>>212 や
>>216 はただ相対参照したいだけのように見えるんだけど
INDIRECTを使う意味はどこにあるの?
>>222 絶対参照はオートフィルを使っても参照先が変化しないというだけで、
セル・列・行の挿入・削除・移動など参照先そのものの位置が変化した場合は
参照先が相対変化する。
そういう場合でも参照先が変化しないのがINDIRECTによる参照。
ただしオートフィルでコピーしても参照先が固定されるので
複数の相対変化式を使いたい場合は
ADDRESS、ROW、COLUMNまたはINDEX、OFFSETなどを使う。
これが絶対参照(絶対(固定)位置を参照する) と 固定参照(参照先を固定する)の違い。
224 :
名無しさん@そうだ選挙にいこう :2005/04/05(火) 22:04:28
>>223 内容は理解しました。
どういうときに必要になるのかは、よくわからないけど。
瓶レスですが、>212さんは単にオートフィルで数字を増やしたいだけみたいだから D2に '=INDIRECT("C1")+ E2に INDIRECT("A2")- F2に INDIRECT("B2") C2に =D2&E2&F2 と入力してオートフィル、C列コピー→値貼り付け データ→区切り位置→完了、DEF列削除。でわ?
227 :
名無しさん@そうだ選挙にいこう :2005/04/06(水) 09:32:21
A B C 1 10cm ≧ 5cm (A1、C1はユーザ設定でcm表示させている) を別セルに例えば&を使って結合すると、10≧5 となり、cmは 反映されません。これをうまく単位まで反映される方法はあるでしょうか。
>>227 ユーザー定義関数でも使えば?
.Valueで取得すると「10」になるけど
.Textで取得すれば「10cm」になる。
あとは繋げればいいだけだし。
ワークシート関数は値を取得する物なので
文字列値ですらないcmは取得されないし、
ユーザー定義の表示形式書式を取得するものも無い。
あとはそれぞれの値を10、5から10cm、5cmにするか
結合式の中で"cm"を付加するかだな。
229 :
名無しさん@そうだ選挙にいこう :2005/04/06(水) 11:13:02
質問です エクセル2000で WindowsXP上で動かして います 文字列の検索なんですが 旨くマッチしてくれません 文字列の最後に’(シングルクオート)がある文字列 を探したいのです セルの中にたとえば abc' や 123'' などのセルを ピックアップしたいのですが 旨く行きません Dim RE, strPattern As String Set RE = CreateObject("VBScript.RegExp") Dim r as Range strPattern = "$'" With RE .Pattern = strPattern .IgnoreCase = True .Global = True If .Test(r.Value) Then 見つけた! これだ! End If END With
230 :
名無しさん@そうだ選挙にいこう :2005/04/06(水) 11:30:09
>>229 strPattern = ".*'$"じゃないの?
スマートじゃないのは認めますよ。だったら "C"&ROW()-1←これはスマートかっつー事です。 手間も大してかからない。 これが手間に思えるならもう少し訓練した方がいい。 要は最終形をいかに楽して実現するかです。
かわいそうな奴┐(´ー`)┌
>>233 操作としては
>>226 より遙かにスマートだろ
式入れたらオートフィルでコピーするだけだし
ここは厳しいインタネツですね
あんまり粘着するなよ
スマートな方法が常に最良とは言えんがな。 一緒に働く人たちの環境や自分のかかわり方によっては、 泥臭いやり方が最善なこともある。ケース・バイ・ケース。
239 :
227 :2005/04/06(水) 13:48:27
227です。228さんありがとうございます。結局 A B C 1 10cm ≧ 5cm を別セルにtext関数で10p、5pと表示させ、 &でつなげるという方法をとってみました。しかし、 text関数の表示形式で 10p(cとmでcmはなくp)ならうまくいきますが、cmで分けると うまくいかないのと、mの単位はうまく表示させることができませんでした。 根本的にやりなおす必要があるのでしょうか。
240 :
名無しさん@そうだ選挙にいこう :2005/04/06(水) 13:49:11
227です。228さんありがとうございます。結局 A B C 1 10cm ≧ 5cm を別セルにtext関数で10p、5pと表示させ、&でつなげるという方法をとってみました。しかし、 text関数の表示形式で10p(cとmでcmはなくp)ならうまくいきますが、cmで分けるとうまくいかないのと、 mの単位はうまく表示させることができませんでした。根本的にやりなおす必要があるのでしょうか。
241 :
227 :2005/04/06(水) 13:56:38
ちょっと補足させてください。 text関数の表示形式に例えば#.00あや#.00a なら反映されるのに、#.00mとか#.00cmのように入力すると #VALUE表示になってしまいます。どうやら単位になり得る アルファベットはNGみたいな雰囲気ですが、対処法はあるでしょうか。
>>240 =A1&"cm"&B1&C1&"cm"
じゃだめなの?
243 :
227 :2005/04/06(水) 14:08:05
>>242 ありがとうございます。
mのところはその方法でしのぎます。
>>241 =TEXT(C1,"#.00""cm""" )
246 :
名無しさん@そうだ選挙にいこう :2005/04/06(水) 14:53:37
|← a →| |← b →| . _____________ 1| c d 2| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | このような表で、1行目は月を、2行目は日を入れて a の範囲を表示しているときは c の位置に b の範囲を表示しているときはd の位置に月を表示させたいのですが、 どのようにすれば良いでしょうか? つまり↓みたいな感じです。 . ________ 1| 4月 2| 1 | 2 | 3 | 4 | 5 | 6 | ↓横にスクロールしても月の表示位置は同じ . ________ 1| 4月 2| 4 | 5 | 6 | 7 | 8 | 9 | 1行目には「4月」などという文字を複数入れたくないので どうかご教授ください。Excelは2002です。
初めて質問します。 当方、Wndows2k sp4・Excel2k sp3(VB6.0)で、VBAを使って開発しています。 (MS OfficeサイトでUpDate済み) 開発しているのは割と単純な業務支援アプリなのですが、 保存するたびに何故かファイルサイズが肥大化して困っております。 もちろん、何か編集を加えていれば当然増えるのは分かっていますが、 ブックを開いて何もせず即保存して確認してもファイルサイズが増えているのです。 増えるのは約200KB〜400KBほどですが、何度もヴァージョンを更新していくと とんでもないファイルサイズとなり、クライアントのスペックによっては 開くだけでフリーズする恐れも考えられます。(現在550KB程度) 何かわずかな情報でもかまいません、原因や解決にお心当たりのある方 どうかアドバイスをお願いいたします。
>>247 すべてエクスポートしてインポートしてみれば?
>>246 アクティブセル位置にラベルを追従させるとかならいいけど、
スクロールはイベントが無いからむずいな。
251 :
247 :2005/04/06(水) 16:58:40
>>248 アドバイス大変ありがとうございます。
さっそくやってみましたが状況は変わりませんでした。
VBA側ではなくてExcel側の問題かな?と思い、
使用している6枚のシートを順番に削除しながら保存してみましたが
これでもサイズが増えます…。
シート自体を削除しているのに、なぜでしょうか?
>>246 無理やり作るならこんな感じだと思いますが、
多分意図するものではないと思うのでご参考までに。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case ActiveWindow.ScrollColumn
Case Is < 20
Cells(1, 10) = Format(Now(), "m") & "月"
Cells(1, 30) = ""
Case Else
Cells(1, 10) = ""
Cells(1, 30) = Format(Now(), "m") & "月"
End Select
End Sub
>>251 Wordでは差分保存にしているとどんどんファイルサイズ増えますが、
Excelには差分保存の設定ないですしねぇ。
他のファイルはどうなのですか?
Excelの問題なら、どのファイルでも同じ現象が起こると思うのですが。
253 :
名無しさん@そうだ選挙にいこう :2005/04/06(水) 17:06:27
エクセル2000です。ご伝授お願いします。 A1セルにオートシェイプが有ればB1セルに”1”を無ければ”0”を返したいのですが 特定セルにシェイプが有るのか、無いのか調べる方法ってありますか? よろしくお願いします。
254 :
247 :2005/04/06(水) 17:42:47
>>253 ちょっと原始的ですが、こんな感じはどうでしょう?
Privete Sub cmdBtn1_Click() ←適当にボタン作りました
Dim objShp As Shape
For Each objShp In Sheet1.Shapes 'そのシェイプが存在するかどうかのループ
If objShp.Name = "シェイプ名" Then '存在したとき
If ActiveSheet.Shapes("シェイプ名").Top = 0 And _
ActiveSheet.Shapes("シェイプ名").Left = 0 Then '例)セルA1の左上端の座標
Range("B1") = 1 'セルB1に1を入れる
Exit Sub
End If
End If
Next
Range("B1") = 0
End Sub
>>252 他のブックで同様の操作(開いて何もせず保存、即閉じる)をしたところ、
・マクロありブック → サイズの変動あり
・マクロなしブック → サイズの変動なし
となりました。時間もなかったのでサンプル数は少なめですが…。
ちなみにマクロありブックでは、逆にサイズが減ったブックもありました!
いよいよ私には不可解になって参りました。
とりあえず更新内容は、エディタでコーディングして保存しておき、
ブック自体を更新させないようにしておくことで緊急回避しています。
255 :
247 :2005/04/06(水) 17:44:29
×Privete Sub → ○Private Sub ヤッチマッタ…
256 :
227 :2005/04/06(水) 18:04:44
WinXP上でOfficeXPでエクセルを用いてグラフを作成しております。 これまで、グラフ作成ののち、プロットエリアの書式設定、目盛り線の書式設定、 凡例マーカーの書式設定などでグラフの書式を変更してきました。 グラフの作成後にこうした作業をひとつひとつ繰り返すのは若干面倒なので、 事前に何らかの方法でこうした設定はできないものでしょうか。
設定済みのグラフをアクティブにし、 グラフの種類>ユーザー設定>ユーザー定義>標準 で登録すると良いよ。
お願いします。WinXP、OfficeXP、Excel2002です。 GETPIVOTDATA関数を使い、ピボットテーブルのフィールドごとの総計を 取得しようとして、フィールド・アイテムを一つだけ指定したのですが#REF! が出てしまいます。(2つ目の行フィールドだけを指定したせいでしょうか) [GETPIVOTDATA("金額",SHEET1!$A$3,SHEET1!$B$4,"三月")]?→#REF! ピボットテーブルに総計を表示させて、それをアイテムとして指定しようにも、 フィールド名にセル参照を使ってるのでどうしたものか見当がつきません [GETPIVOTDATA("金額",SHEET1!$A$3,SHEET1!$B$4,SHEET1!$B$4+" の合計")]?→#REF! なんとか、ピボットテーブルのフィールド2の総計を取得したいのです。 同データを元にした別のピボットテーブルを作って、行を一つに減らすことを 考えましたが、ページフィールドを一括管理したいのでできればこれはさけたいです。
>>259 値を表示したいセルをクリックして「=」だけ入力し、
そのままピボットテーブル内の取得したいセルをクリック。
…であかんの?
GETPIVOTDATAは、それ以外の方法で使ったことない。
262 :
名無しさん@そうだ選挙にいこう :2005/04/06(水) 22:39:34
>連続するデータ入力についてです。 >「1,3」と入力して下へドラッグすると「5,7,9」と連続データが入力されるし >「第1章、第3章」を下へドラッグしても「第5章、第7章」となります。 > >それなのに「=債権者一覧表!B3、=債権者一覧表!B5」を下へドラッグすると >「=債権者一覧表!B5、=債権者一覧表!B7」となってしまい >同じような「3,5,7,9・・・」というような連続データができません。 >いちいち入力していかないといけないんでしょうか? >やり方がわかる方いらっしゃれば教えていただけませんか、お願いします。 誘導されてきました。 職場のPCで、多分EXCEL2002の前のバージョンだと思うのですが どうぞよろしくお願いします。
>>262 「"=債権者一覧表!B3、"=債権者一覧表!B5」
↓
置換「"= → =」
>>263 !!!
できました!!
目から鱗です、どうもありがとうございましたヽ(´∇`*)ノワーイワーイワーイ
明日が楽しみです♪
265 :
名無しさん@そうだ選挙にいこう :2005/04/06(水) 23:02:00
>>262 え?
当然ですけど、、、
数式とデータでは違いますよ。
266 :
257 :2005/04/06(水) 23:06:55
>>258 神降臨!!できますた。ありがとうございます。これでグラフ作成が楽になります。
268 :
259 :2005/04/07(木) 00:18:52
>>260 ・・‥考えつきませんでした。ありがとうございます、明日試してみますね。
269 :
パニクリ :2005/04/07(木) 10:48:57
エクセルのVBEを起動しようとするとEXCELのページ違反です モジュール VBE6で強制終了します OSはwindows98でoffice2000premium オフィスの再インストールを行いましたが直りませんでした 対処方法を知っている方がいたらお願いします
271 :
名無しさん@そうだ選挙にいこう :2005/04/07(木) 14:10:15
>>271 =SUMIF(A2:A10,DATE(2005,5,1),B2:B10)
273 :
パニクリ :2005/04/07(木) 14:48:39
WINXP,2003です。 17年度のある日の勤務時間と16年度の同じ日の時間の差を求めたいのです。 シート17---A1には20時間 シート16---A1には23時間30分が入っているとします。 ='17'!A1-'16'!A1 で-2:30と表示させたいのですが。#####になってしまいます。 IF(("'17'!A1-'16'!A1")>=0,'17'!A1-'16'!A1,"-ABS('17'!A1-'16'!A1)")でも だめですし…。文字としてのマイナス記号のあとに時刻の絶対値がつづけば 表面上は体裁がととのうかと思いましたがダメでした。 セルの書式は出来るだけどのPCに持っていってもいいように、ユーザー 定義を使わなければそれにこしたことはありません。 どなたかお知恵を授けてください。お願いします。
>>274 =IF('17'!A1>'16'!A1,TEXT('17'!A1-'16'!A1,"h:mm"),"-"&TEXT('16'!A1-'17'!A1,"h:mm"))
276 :
名無しさん@そうだ選挙にいこう :2005/04/07(木) 15:41:18
>>272 サンクス
すいません追加です
日付 名前 数
2005/5/1 Aさん 1
2005/5/1 Bさん 2
2005/5/1 Cさん 3
2005/5/1 Aさん 4
2005/5/1 Aさん 5
2005/5/6 Bさん 6
2005/5/7 Bさん 7
2005/5/8 Bさん 8
2005/5/9 Bさん 9
すいません追加です。
2005/5/1分のAさん
Bさん
Cさんのそれぞれの合計はどうすればよいでしょうか?
日付を打ったら自動でA,B,Cの合計が出るようにしたいです。
また教えて下さい
http://j-sound.k1.xrea.com/vmelo/melo/no128.zip
277 :
274 :2005/04/07(木) 15:44:59
>>275 神!助かりました。
今度はその結果を計算してみたいと思いますが、データ形式を変換すれば
できそうな予感がしてきました。
本当にありがとうございました
>>275 さんにいいことがありますように!
>>276 そういうことは最初に書こうよ。
条件が2つになると配列数式使わないとならないので
=SUM(IF(A2:A10=DATE(2005,5,1),IF(B2:B10="Aさん",C2:C10,0),0))
これを入力してCtrl+Shift+Enter。数式が { } で囲われればOK。
「日付を打ったら自動で」としたいなら、日付の部分である「DATE(2005,5,1)」を
実数ではなく参照にすればいいだけ。
名前の部分も参照にしてもいいし、あとはお好きなように。
>>273 メニューの「ヘルプ」→「アプリケーションの自動修復」はやってみた?
それでも駄目なら
1.Office2000をアンインストール
2.アンインストール後に
<インストールしたドライブ>:\Program Files\Microsoft Officeと
<インストールしたドライブ>::\Program Files\Common Files\Microsoft Shared\VBA\VBA6
が残っていたら削除
3.再インストール
でやってみたら?
280 :
パニクリ :2005/04/07(木) 18:59:28
>>280 うーん、正直お手上げ。
識者の登場を待つしかないっすね。
自分ならOS再インストールするけど…
282 :
247 :2005/04/07(木) 19:30:34
>>261 大変遅くなりました。
エクスポートしていたら、あることに気づきました。
1つのVisual Basic Form Binary File(.frx)が
ファイルサイズのほとんどを占めるサイズになっておりました。
このバイナリファイルを使用するフォームは、いたって普通の作り方だと思うのですが
他のフォームと違う点を挙げるとすれば、FlexGrid6.0を使用しているだけです。
どのファイルかは突き止めたものの、解決策まで思いつかず未だに困っております。
バイナリファイルをスリム化させる方法や、別のものと差し替える方法などないのでしょうか?
どうかご教授くださいませ。
報告です。
>>260 すいません、やってみましたが関数の指定がおかしなことになって駄目でした。
今ははINDEX関数で無理矢理気味に指定して何とかしてます。(今日思いついたんですよ)
[ INDEX(ピボットテーブル,MATCH(CONCATENATE(フィールド2," 合計"),ピボットテーブル!$B:$B),MATCH("総計",ピボットテーブル!$4:$4)) ]
284 :
名無しさん@そうだ選挙にいこう :2005/04/07(木) 22:06:44
質問です。 EXCEL2002を使っているのですが、 個人用マクロブックにマクロを新規登録しようとすると 「起動フォルダにある個人用マクロブックは、記録のために開かれた状態でなければなりません。」→「記録できません」 というメッセージが出て、登録できません。 personal.xlsを一旦削除すると登録できるのですが、保存して終了後再度エクセルを起動すると 使用できるマクロには個人用マクロが表示されず、また新規登録しようとすると上記のメッセージがまた出てしまいます。 このスレの過去ログを調べたら、 「エクセルがpersonal.xlsのパスを忘れてしまっていたので、ファイル名を指定したら直った」 なるものを見つけたのですが、何をどうしたらいいのかさっぱり分かりません。どうか教えてください。
285 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 03:54:26
他人が作ったexcelデータファイルを貰いました。 そして、そのexcelデータファイルの中にボタンが使われていて、 邪魔なのでそのボタンを消したいのですが、ボタンの消し方がわかりません。 ボタンの上で右クリックしてみたり、 ボタンを選択してdelキーを押したりしましたが、 全然消えません。 これはmicrosoftの嫌がらせかなんかですか?
>>285 いまいちよく解らないけど、オートフィルタなら
ツールバーの「データ」→「フィルタ」の
オートフィルタのチェックを外せば消えるはず。
コマンドボタンとかだったら右クリックして
切り取りで消せるはず。
後者に関しては削除後、動作の保証はできないけどね。
あとヴァージョンによって多少の表記の違いがあるかもしれないことを
頭の片隅においといてね。
連続カキコですみません。 あと、シートの保護とかされているから削除できないのかも。
288 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 10:22:38
日付 名前 数
2005/5/1 Aさん 1
2005/5/1 Bさん 2
2005/5/1 Cさん 3
2005/5/1 Aさん 4
2005/5/1 Aさん 5
2005/5/6 Bさん 6
2005/5/7 Bさん 7
2005/5/8 Bさん 8
2005/5/9 Bさん 9
2005/5/1Aさん 数の合計
2005/5/1Bさん 数の合計
2005/5/1Cさん 数の合計
それぞれの条件での数の合計を出すにはどんな計算式が必要ですか?
http://j-sound.k1.xrea.com/vmelo/melo/no129.zip
290 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 10:36:18
>>290 書かれている通り配列数式という使い方。
278のやり方で入力していろいろ試してみるとか、
ヘルプで「配列数式」を引いてみるとかしてください。
>>288 C13をクリック → 数式バーをクリック
=SUM(IF(A2:A10=$A$13,IF(B2:B10=B13,C2:C10,0),0)) を張り付け
CtrlキーとShiftキーを押しながらEnterキーを押す
C13セルの黒枠の右下の点をC15の位置までドラッグ
すべての式が
{=SUM(IF(A2:A10=$A$13,IF(B2:B10=B13,C2:C10,0),0))}
のように { } で囲われてればOK。
つーか、解らないことがあるなら
>>288 の時点で書こうよ。
回答付けてるのに無視して催促質問されるとかなり傷つく・・・_| ̄|○
293 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 10:48:22
>>292 すいません
解決しました
ありがとうございました
横に長い表を折り返して一枚に印刷したいのですが どのようにすればよいでしょう?
295 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 11:30:58
ここで質問していいものかわからないけど、 IE上にあるアドレスからExcelを直接開くと、Excelが立ち上がらずに、 ブラウザ上で立ちあがるよね? で、上がってきた時に、マクロが入ってるとエラーが出るんですよ。 どなたか、IE上で立ち上がるExcelと通常起動のExcelの違いとか 分かる方いらっしゃいますか?
297 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 11:44:47
>>292 一つ質問ですが
{ } で囲む意味は何なのでしょうか?
>>297 { } で囲うことに意味があるんじゃなくて。
配列数式として扱われてることの証明として { } が付加されるだけの話。
ただ単に { } で囲っただけでは文字列扱いになってしまう。
299 :
295 :2005/04/08(金) 11:48:41
IE上のリンクでExcelを立ち上げようとすると、ExcelがIE上で 立ち上がると思います。 そのとき、マクロが入ったExcelを立ち上げようとすると、 一部の命令がエラーになりました。 上記のような、IE上でExcelが起動された際の通常起動のExcelとの 違い(制限?)をどなたかご存知ないでしょうか?
>>299 マイクロソフトが知ってるよ。
IE(Windows)もExcelも金払って購入したんだから
きちんとMSにサポートしてもらいな。
>>300 やっぱり、そっちの方が早いですかね・・・
すみませんでした
302 :
285 :2005/04/08(金) 12:06:30
>>286-287 レスありがとうんこ。
ボタンは、オートフィルタじゃなくて「データ初期化」と書かれているボタンで、ボタンを押すアクションも出来ました。
あと、シートの保護とかはかかってないみたいでした。
303 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 13:05:33
>>300 すみません、MSに回答を求めると
大体何日くらい返答に掛かりますか?
304 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 13:14:40
質問です。 Excelの関数の中に、文字列をコピーするという関数はありますか? Excelで伝票を発行する際に、発行した内容をコピーしておきたいと思っています。 ただ、入力するフィールドは決まっており、伝票を発行したら、内容をクリアして また次の…となるので、手間になってしまいます。 ネットで関数一覧を見てみましたが、見つかりませんでした。
>>304 日本語で具体的に要望を書いてください。
ちなみにワークシート関数は、関数を入れたセルに値を返す以上のことは出来ません。
>>305 それ聞くだけで、1インシデント取られたりしてorz
308 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 14:01:04
初歩的な事で質問ですがお願い致します。 CEILING関数またはROUNDUP関数を用いて、 小数点以下を切り上げて整数にしたいのですが、 少し問題が起こって困っています。 まず元のデータを、入力した割合で計算させます。 (下は不具合が出てる部分の実際の数字) A B C D 1|1,320,000|4.2%|55,440| ? (C1はA1×B1を計算させてます。) ここでD1に、CEILING(C1,1)を入力すると、 何故か55,441が返ってきます。 C1に、実数で55,440を入力すると、 当然D1は55,440を返すのですが。 どうしてこのような現象が起こるのでしょうか。 また、どうすれば回避出来ますか? 当方Excel 2000です。
>304 コピーして保存しときたいセルが決まってるならマクロで コピー→別シートに貼り付け(値のみ貼り付け)すればいいのでは。 ついでにコピペが終わったら元のシートの入力用のセルの値を クリアするとこまでマクロにいれればラクだろうに。
310 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 14:37:42
質問です。 OSはXPでExcel2000を使っているのですが、確かエクセルってセルに直接URLを打ち込むと 勝手にハイパーリンクに変換される筈なんですが、WWWだと変換されるのにhttpだと何故か 変換されないんですけど何でなんでしょう? XPとの相性問題のせいでしょうか? HPチェック用の一覧表がわりに使いたいもので不便で仕方が無いのですが・・・
>>310 ツール >オプション > スペルチェック > オートコレクトオプション
>>308 自分の環境では55,440が返ってきたけど(Excel2000 SP3)
313 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 14:51:16
>>312 あぁっ!すみません。少し状況が間違っていました。
実際には、B1の値が95.8%で、
C1の計算がA1×(1-B1)となっています。
この状態だと上記のような現象が起こると思います。
>>310 自分の環境では55,440が返ってきたけど(WinXP SP1a、Excel2002 SP3)
>>313 C1の表示形式を数値にして小数点以下の桁数を10桁にすれば理由がわかるよ
>>313 Excel内部の数値計算の誤差によるもの。
95.8%とかの割り切れてるんだか何だか分からないような数字を使って計算して、
かけ算の答えが整数にならないと文句を言うのは筋違いだと思う。
>>315-316 ありがとうございました!仕事の書類で少し急いでいたので助かります。
(1-B1)自体の端数をCEILING関数で整えたら改善することが出来ました!
実際にはもっと複雑な数式で(初心者の私にとっては、ですが)、
IFをつかったり、データをインポートしたりと、いろいろやっているので、
どこがおかしいのかもわからなかったんです。
本当にありがとうございました。
319 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 15:20:02
>>311 やってみたけど駄目でした・・・・・・というか、「半角英数」で打ち込むと認識するのですが
「直接入力」だと駄目なんですよね。
理解不可能です・・・・・
直接入力でも、wwwで始まるものはちゃんと認識するんですよ。
アドレスなんてコピーしたものを貼り付けるのではなければ、面倒でやらないだろうに、コピー
して張り付けたものは直接入力扱いみたいだし・・・・
なんかわけわかりませんよ本当。
320 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 15:21:44
いっその事、ハイパーリンクを張ろうかと思ったら、ハイパーリンクの入力画面では 右クリックも貼り付けも出来ない仕様だし・・・・・・ 舐め天の課と。
321 :
304 :2005/04/08(金) 15:37:58
>>309 一度、それを試したのですが、新しいデータを次の行に
コピーするところで詰まってしまいました。
コピー元が同じでコピー先は1行ずつ下へずれる感じです。
単純にマクロの記録だけでできると良いのですが…。
>>321 行挿入してペーストすれば?
新しいのが上に来てしまうが
範囲内でのグループ化した件数を取得したいのですが ワークシート関数で実現出来ますか? 11 11 22 22 33 44 44 ↑を 4 と取得したいです。 SQL で表現すれば、 select count(*) from range(hoge) group by range(hoge) ってな感じです。
>>323 データがソートされてるなら
{=SUM(IF(A1:A6=A2:A7,1,0))+1}
とかで4を取得できるけど。
あとはユーザー定義関数を使うとか
>321 >新しいデータを次の行に >コピーするところで詰まってしまいました。 意味がわからん。次の行にペーストするところで、の間違いか? マクロの記録だけで無理なら、マクロの記録で書かれたVBAのコードを見て いろいろ勉強して修正すればいいだろ。
If文の2重構造の書き方を教えてちょ♥ If hage=0 Then If hoge=0 Then Else End If Else End If で委員ですか?
>>326 別に問題はないけど、Elseの処理が必要無いなら
If hage=0 Then
If hoge=0 Then
処理
End If
処理
End If
とか、2つの条件を満たしてる場合のみ処理するなら
If hoge=0 and huga=0 Then
処理
End If
とか
If hoge=0 and huga=0 Then 処理
みたいな感じでもOKだよ。
あとはヘルプなりWebの解説なり読んで勉強しよう。
328 :
323 :2005/04/08(金) 21:29:43
>>324 なるほど!!
データはソートされてます。
ありがとう、ございました。
329 :
326 :2005/04/08(金) 21:57:01
330 :
名無しさん@そうだ選挙にいこう :2005/04/08(金) 22:54:25
ピボットでは、登場しない項目を集計できませんよね a 1 a 2 b 1 c 2 b 1 とかだと 1 2 a 1 1 b 2 c 1 とかなるけど、登場しないけど0とか3とかdとかもテーブルにして欲しい時はどうしたらいいですか? 0 1 2 3 a 1 1 b 2 c 1 d みたくにしたいです
>>330 フィールドを右クリック→「フィールドの設定」→[データの存在しないアイテムを表示する]をオンに
自分は330じゃないけど、330のデータの場合「データのないアイテムを表示する」を使うのは 無理じゃないか? 自分とこでもためしにやってみたら、月日ならその方法で補完されるけど 330のようなデータだと補完されなかったんだけど(Excel2003)。俺のやり方に問題があるのか? 自分なら表示用に0やDの行を入れる。
333 :
331 :2005/04/09(土) 01:11:21
334 :
330 :2005/04/09(土) 07:29:25
>>332 さん、表示用に入れるというのをもう少し説明してくれませんか?
a 0とかd 0とかを入れるということですか?でもそれだと表に集計されてしまうと思うんです
335 :
332 :2005/04/09(土) 08:02:28
>334 仮に>330で出してる例が販売レポートみたいなもので、 A列=科目 B列=商品コードなんだったら、 C列に販売数を入れて、実態のあるレコードの行に1を入れる、 んで、表の最初か最後にA列にa,b,c,dの値を入れた行を挿入、 それぞれのB列に0,1,2,3を入れる。 それでピボットテーブル作るときに列側にA、行側にB、 集計するレコードにCを入れる。 集計の方法はレコードの個数でも合計でもいい。 A列 B列 C列 科目 商品コード 販売数 a 0 b 1 c 2 d 3 a 1 1 a 2 1 b 1 1 c 2 1 b 1 1 スマートじゃないけど、自分の求める表が簡単に欲しいなら自分ならこうするだけ。 もっと楽でスマートな方法があれば別の方法をつかう。
336 :
330 :2005/04/09(土) 20:29:06
なるほど!よくわかりました 項目数を数えるための列をもうひとつ用意するのか〜 表示しないようにしたら表面上変わらないですね
337 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 22:13:41
質問ですが エクセル2003で 行列を入れ替えてリンク貼り付けできないでしょうか?
できる
339 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 22:23:33
どうやればいいですか?
340 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 22:27:29
できるって単なる願望とか妄想ですよ w
341 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 22:33:19
やっぱ無理ですかねー ヤフーで検索したら 「嫉妬されるほどエクセルが上手くなる222の技」って本の目次に 行列を入れ替えてリンク貼り付け って項目があったので もしやできるのかと思ったんですが...
342 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 22:48:53
あえてやるなら、まずリンク貼り付けをする。 それから貼り付け先を選択してコピー。 形式を選択してコピーで、行列の入れ替えにチェックを入れて 数式をコピー。 行列の縦横の数が一致していないとできない。
343 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 23:06:18
すいません 形式を選択してコピーってどうやるんですか? コピーじゃなくて貼り付けでしょうか? 一応貼り付けでやったんですが リンクもとの数値を書き換えても 反映されないんですが
344 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 23:23:40
貼り付ける前に、準備段階で貼り付け先の書式を文字列に変更しておく、とか。
貼り付けたら、該当箇所の"="を""に置換。
347 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 23:43:08
どうもありがとうございます 1 "="を""に置換はできました。が、 2 あらかじめ書式を文字列にするやりかたがうまくいきませんでした。 最終的にはクエリの編集でデータの更新ボタンで1アクションで取り込みたいので 2がうまくいってほしいんですけど。
348 :
名無しさん@そうだ選挙にいこう :2005/04/09(土) 23:58:59
>>343 Book Aがリンク元
Book Bがリンク先とする。
AをBに「リンク貼り付け」する。
Bの表をコピーしてそれから)右クリックをして「形式を選択
して貼り付け」を選ぶ。
(別の場所に貼り付けないと駄目のようだ)
そして、「数式」をチェック、更に下のほうにある「行列を入れ替える」
にもチェックしてからOKする。
結果は単に数式をしこしこリンクさせたものとなるだけだが、
作業は楽になる。
349 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 00:05:55
>>347 クエリで取り込んで置換で=を取るマクロを登録すればよし
>347 webクエリ使って取り込むんだったら文字列に指定云々は無理っぽかったね。スマソ。 自分も>349の置換をマクロでやるのに賛成。 WebクエリをRefreshした直後に置換させるマクロ組んでボタンに割り当てるか、 Worksheet_SelectionChangeで処理させるとか。
351 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 00:50:43
347です 置換をマクロの記述は知らないのでマクロの記録でしてみました。 ボタンの登録も今はじめてできました。 これならなんとかいけそうです。VBAはまるでわかりませんが Worksheet_SelectionChangeの意味をちょっと調べてみました。 今回はこのやりかたはあきらめます。だいぶ助かりました ありがとうございます
352 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 02:24:45
テキストエディタにある一覧表のデータを Excelにまるごとコピーしたら、 行ごとにすべてが一列に丸め込まれてしまいました。 1 69.891 SG 8.609^SG 8.688^SG 8.469^SF 8.109^SE 9.047 SI 7.859^SD 9.453 SJ 9.657 A 19 05.04.08 2 72.125 SI 8.360^SF 8.281^SF 9.750 A 9.188 SI 9.000 SI 9.468 SJ 9.610 A 8.468^SF 13 05.04.09 3 73.422 SI 11.047 C 7.890^SD 8.266^SF 10.344 B 9.047 SI 8.921 SH 9.344 SJ 8.563^SG 14 05.04.06 3 73.422 SI 9.391 SJ 9.156 SI 9.250 SJ 8.344^SF 9.406 SJ 9.125 SI 9.438 SJ 9.312 SJ 9 05.04.09 5 73.438 SI 9.719 A 9.313 SJ 8.078^SE 8.937 SH 8.000^SE 8.860 SH 10.000 B 10.531 B 19 05.04.06 6 73.734 SI 8.343^SF 9.297 SJ 10.641 B 8.625^SG 8.469^SF 8.781 SH 10.000 B 9.578 A 6 05.04.09 7 73.937 SI 8.375^SF 9.516 A 8.984 SH 8.828 SH 9.672 A 10.344 B 8.953 SH 9.265 SJ 13 05.04.09 8 73.953 SI 10.109 B 8.016^SE 9.609 A 9.500 A 10.328 B 7.875^SD 9.281 SJ 9.235 SI 13 05.04.09 9 74.000 SJ 9.625 A 7.703^SC 8.203^SE 8.359^SF 9.563 A 10.500 B 10.406 B 9.641 A 12 05.04.08 10 74.063 SJ 9.188 SI 8.719^SG 10.031 B 8.547^SG 9.765 A 8.782 SH 9.859 A 9.172 SI 21 05.04.09 11 74.157 SJ 8.000^SE 10.422 B 7.625^SC 11.203 C 9.766 A 9.500 A 9.312 SJ 8.329^SF 13 05.04.08 ・・・ こんな感じのデータなんですけど、 スペースごとに、セルを変えて一気に入力することは可能でしょうか?
スペース区切りのデータならCSVとして扱えるから メニューから [ファイル] -> [開く] でスペース区切りとして開くべし
>>354 スペース区切りはprnね。
タブ区切りがtsvでカンマ区切りがcsv
オートフィルで、質問! 1 1 2 2 3 4 ↑は出来るんですが、 1 1 1 1 2 2 2 2 3 3 4 4 ↑は出来ないんですか?
>>357 1
空欄
2
空欄
このA1:A4の4セルを選択してA7までフィルコピー
A1:A7を選択してコピー、A2を選択して形式を指定して張り付け
「□空白セルを無視する」にチェックを入れるか演算を「○加算」にして[OK]
1
1
=A1+1
A3を選択してフィルコピー
フィルコピーした範囲を選択してコピー→値の張り付け
359 :
1/2 :2005/04/10(日) 20:33:14
Excel 2000(XP)です。 A(日付) B(分類) C(社名) D(電話番号)の入ったデータを使って名簿を作成したいのですが、 重複するデータを削除する方法を教えてください。 ・D(電話番号)が同一の場合のみ重複と判定(社名が同じでも電話番号が違えば別データ) ・元のデータは1行目からデータです ・名簿は一行目をタイトル行にしたいです 元のデータ A列B列C列D列 4/7○A社111-1111 ←(1行目データ) 4/8△B社222-2222 4/6□C社333-3333 4/5△B社222-2222 4/8△B社444-4444 4/9○A社111-1111
360 :
2/2 :2005/04/10(日) 20:33:38
名簿 A列B列C列D列 日付分類社名電話番号 ←(1行目タイトル行) 4/7○A社111-1111 4/8△B社222-2222 4/6□C社333-3333 4/8△B社444-4444 よろしくお願いします。
361 :
359 :2005/04/10(日) 20:36:58
すみません、なんか見にくいですね。 もう一度書きます。 A列 B列 C列 D列 4/7 ○ A社 111-1111 ←(1行目データ) 4/8 △ B社 222-2222 4/6 □ C社 333-3333 4/5 △ B社 222-2222
362 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 21:43:20
>>348 よくわかりませんでしたが
違うやり方でできました。
その違うやり方ってやつをスレ住人にも教えなさい
>>359 社名の重複は許すってこと?
B列、C列、D列のうちひとつでも違う場合は残したいってこと?
ワークシート関数でできるかなぁ。
マクロ使ったらかんたんだけどね。
365 :
359 :2005/04/10(日) 22:21:55
>>364 おお、レスありがとうございます。
>社名の重複は許すってこと?
はい。
社名は支店名が省略されている場合などがあり、同じ社名なのだけれど実は違う会社ということがあるので、電話番号(D列の違い)で判断したいです。
よろしくお願いしますm(。_。;))m ペコペコ…
366 :
359 :2005/04/10(日) 22:25:18
>>364 >マクロ使ったらかんたんだけどね。
そうなんですか?
教えていただけると嬉しいです。
367 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 22:32:48
CSVファイルから必要な数値だけを、 あらかじめエクセルで作った表に現すにはどうするんですか? 師匠方、教えてください!
368 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 22:39:49
>>366 自動でばんばん削除したいのか、重複データに印をつけて
手動で削除したいのか。
369 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 22:42:14
370 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 22:48:50
371 :
359 :2005/04/10(日) 22:55:11
372 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 23:08:30
>>371 なら、
1) D列でソート
2) D列を上から順番に、一つしたのセルと同じなら行削除
というマクロ
でやればいいんでないの?
2)の部分は
dim i as integer
i=1
while cells(i,4)<>""
if cells(i,4)=cells(i+1,4) then
rows(i+1).delete
end if
i=i+1
wend
つう感じでいいでしょ。
(試してないからどっか間違ってるかもしれないが w)
373 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 23:09:08
>>363 リンク元をコピーして
行列を変えて張りつけて
transpose関数を使って
ってかんじで
エクセルでスクロールする時、 セルが大きいと、いっきにスクロールしてしまい何かと不便です。 セルの影響を受けずにスムーズにスクロールする方法はありますか?
375 :
359 :2005/04/10(日) 23:35:57
>>372 >(試してないからどっか間違ってるかもしれないが w)
なぜか一度では削除できず1回実行する毎にデータが少なくなっていき
5〜6回マクロを実行すると重複がなくなりましたw
今まで手作業で消すのに時間がかかっていましたが、これでかなり作
業時間を短縮することが出来ます。すんごい便利だー。
どうもありがとうございました。
376 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 23:42:54
質問があります。 XP Excel 2000 2002 ユーザーフォームで最小化、最大化といったことは、出来るのでしょうか? ヘルプを見ると(勘違いかもしれませんが)それらしい事が、書いてあります。 もし出来るとしたら、どのように、するのでしょうか? よろしくお願いします。
377 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 23:45:20
>>375 ああ、重複データが最大2つしかない前提で作ったから w
>>375 試してないけど。
dim i as integer
i=1
while cells(i,4)<>""
if cells(i,4)=cells(i+1,4) then
rows(i+1).delete
else
i=i+1
end if
wend
379 :
名無しさん@そうだ選挙にいこう :2005/04/10(日) 23:53:38
>>375 直しました。
ソートもマクロにしています。
Sub test()
Dim i As Integer
Cells.Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
i = 1
While Cells(i, 4) <> ""
While Cells(i, 4) = Cells(i + 1, 4)
Rows(i + 1).Delete
Wend
i = i + 1
Wend
End Sub
380 :
359 :2005/04/11(月) 00:15:21
>>378-379 >>378 は実行したところ動いていない様子?で削除されませんでした。
>>379 は「アプリケーション定義またはオブジェクト定義のエラーです。」とのメッセが表示され、
デバックボタンを押すと下記の部分が黄色表示となっていました。
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
ホント何回もありがとうございます。
見も知らぬ方に親切にしていただき感謝です。
先に書きましたが最初に作っていただいたもので十分助かりますので、
あのマクロを使わせていただきますm(_ _)mデハデハ...
381 :
名無しさん@そうだ選挙にいこう :2005/04/11(月) 00:20:51
>>380 へんだな?
せめて下のを使ってけろ。
Sub test()
Dim i As Integer
i = 1
While Cells(i, 4) <> ""
While Cells(i, 4) = Cells(i + 1, 4)
Rows(i + 1).Delete
Wend
i = i + 1
Wend
End Sub
>>380 すでに削除してあってダブりがないとかソートし忘れとか。
多分faqな内容な気もするのですが、ググッても分からないので教えてください。 横に(1行に)入っている数値を 縦に(1列に)変換するマクロはどのような設定になりますでしょうか?
384 :
名無しさん@そうだ選挙にいこう :2005/04/11(月) 10:25:30
Excel2002でセルに入力を開始したとき、状態を「入力」ではなく最初から「編集」にするにはどうすればいいですか? たとえばB1を選択してhogeと入力すると、状態は「入力」になり、B1内のキャレット位置が「hoge|」となりますが、 ここから←キーを押すと、A1が選択されるのではなくB1内のキャレット位置が「hog|e」となるようにしたいのです。 つまり、セルの内容を入力・編集してるときは方向キーでキャレットを移動し、そうでないときは方向キーでセルの移動がしたいのです。 毎回F2を押すのは煩わしいしいので、どなたかお助けください。
>>383 形式を指定して張り付け
□行列を入れ替える
>>385 おおお。そんな簡単に出来たんだ。dクス
うわー、ごめんなさい。 すでに削除済みのデータで試してました。 もう消すものがないから動かなかったんですね(大汗 今日他のデータで試したところ一発で決まりました! 本当にありがとうございました。
>>359 さんへのレスについて。
せっかくマクロを使うんだったら1回ですべて処理できる
マクロにすべきだと思うのですが。
While使わずにFor〜Nextで最下行からまわした方がよくない?
例えば、
Dim Rn As Integer, i As Integer, KW As Variant, C As Range
Rn = Sheets(1).UsedRange.Rows.Count
For i = Rn To 2 Step -1
KW = Cells(i, 4).Value
Set C = Range("D1:D" & i - 1).Find(KW, LookAt:=xlWhole)
If Not C Is Nothing Then
Rows(i).Delete
End If
Next i
390 :
389 :2005/04/11(月) 13:22:40
スマソ ちゃんと処理できるのもかかれてましたね。 ・・もっとちゃんとレス読むです。 ほんとにごめんなさい
391 :
名無しさん@そうだ選挙にいこう :2005/04/11(月) 22:23:44
すいません =(SUM(G47:I47)=0,"",SUM(G47:I47)) これって、どう解釈するのでしょうか?
>>391 If式じゃないの?
=IF(SUM(G47:I47)=0,"",SUM(G47:I47))
IFが入らないと何の意味も持たないと思われ
393 :
359 :2005/04/11(月) 22:49:53
>>389 作ってくれてありがとう〜
マクロって便利ですね!自分でも勉強してみようかと思います。
ホント皆いい人だねー。
394 :
名無しさん@そうだ選挙にいこう :2005/04/11(月) 22:56:29
>>392 すいません、おっしゃるとおりIFが抜けてました。
どういう意味なのでしょうか?
>>394 G47+H47+I47 の結果が0なら何も表示しない
それ以外なら G47+H47+I47 の結果を表示する。
>>396 ありがとうございます。
助かりました!
398 :
>>367 :2005/04/12(火) 00:32:00
マクロがまだ組めないんですが、 簡単な策がありませんか? 読み込んで表に配置させる方法。 ぶしつけな質問で、すいません。
だったらもっと情報を出せば?どんなデータが入ったCSVから何をどう取り出したいのか。 今のままじゃ情報が少なすぎる。検算も出来やしない。
400 :
>>367 :2005/04/12(火) 00:51:57
定食屋四店舗分のメニュー名、単価、売上数、売上金額、 等の日報数値データです。
で、その日計データから何をとりだして、どんな表を作りたいのよ… 単に店舗別の集計ならCSVで読み込ませた後ピボットテーブル作れば済むだろうけど 400の話だけじゃ何もできない。他人が読んで理解できるように書いてくれ。 つーか、マクロも使えないんじゃ、DBソフト使った方が楽なんでないか?
402 :
名無しさん@そうだ選挙にいこう :2005/04/12(火) 05:06:40
こんばんは。どなたか教えてください。 住所のデータ、 例えば 横浜市円円区祖師谷1-2-1 というものを 横浜市 円円区 祖師谷 1-2-1 の4つに分割する方法を教えてください。 もしくはセルの数字部分だけ削除する方法を教えてください。 郵便番号をあてるソフトをみつけたのですが、 番地が入っていると正しく検索してくれないので。 よろしくお願いします。
403 :
402 :2005/04/12(火) 05:11:16
連続ですみません。 数字を消すというのは以下のマクロで出来たのですが、 シートの数値が全部消えてしまうんですね。 なんとか任意のセルの数字部分を消せれば(一番いいのは セルの分割)と思ってご相談しています。 Sub Sample() Dim myCell As Range Dim i As Integer For Each myCell In ActiveSheet.UsedRange For i = 0 To 9 With myCell .Replace CStr(i), vbNullString .Replace StrConv(CStr(i), vbWide) _ , vbNullString End With Next Next End Sub
>>402 分割は先頭から「3文字、3文字、3文字、残り」の4分割でいいの?
それとも「先頭から"市"まで、その次から"区"まで、その次から数字の前まで、残り」の4分割?
データベース無しに市区名で正確に区切りを入れることは出来ないからどちらかになるけど
前者は市区村名の文字数が揃ってないと狂ってくるし、
後者は市区町に"市・区"が入ってると狂ってくる。
で、数字を削除ってのは「横浜市円円区祖師谷--」となればいいの?
それとも「横浜市円円区祖師谷 - - 」とか「横浜市円円区祖師谷」?
どちらもマクロで出来るけど、条件をきちんと書いてくれないとこっちでは何にも出来ない。
対象セルも固定単一セルなのか固定範囲なのかアクティブセルのものなのか、選択範囲のものなのかはっきりして。
ちなみにExcelで検索してるなら、完全一致じゃなくて部分一致にすることで、
「横浜市円円区祖師谷」を検索しても「横浜市円円区祖師谷1-2-1」がヒットするようになる。
ついでに言うと
>>403 のマクロでは「For Each myCell In ActiveSheet.UsedRange Next」が
全セル(使用範囲)を対象にさせてる部分。
405 :
名無しさん@そうだ選挙にいこう :2005/04/12(火) 11:28:15
htmlの表をコピーしてExcelに張り付けると、既定ではHTML張り付けになり、 表形式で書式(フォント、背景色、罫線など)も一緒に張り付けられますよね。 で、テキスト張り付けにすると、文字列のみを1列に繋げたものが張り付けられる。 (テキスト張り付けの場合5行*5列の表をコピペしても5行*1列になってしまう) そこで質問なのですが、表形式で文字列のみを張り付けるにはどうしたら良いのでしょうか? 一度HTML形式で張り付けてから、もう一度コピーして値の張り付けをするのではなく 最初から文字列のみを表形式で張り付ける方法を教えてください。 環境はWindowsXP、Excel2002です。
>>405 Excel2002がインストールされているなら
Internet Explorer(またはそのコンポーネントブラウザ)のHTML表の部分で
マウス右クリックし「Microsoft Excelにエクスポート」で出力する方法は?
もっとシステマチックにやりたいのなら
VBAからHTMLDocumentオブジェクトを使って、HTMLテーブルセルの値を直接Excelのセルに書きこむ方法もある。
>>405 貼り付けた後でスマートタグをクリックして「貼り付け先の書式と一致させる」を
選べば済むことなのでは?
408 :
405 :2005/04/12(火) 12:38:25
>>406 回答ありがとうぞざいます。
前者は、張り付け位置を既存のブックのの任意位置に指定したいので無理です。
後者は5*5の表をコピーしてB3:F7に張り付ける場合は具体的にどうすれば良いのでしょうか?
409 :
405 :2005/04/12(火) 12:40:06
>>407 既存の書式を壊したくないので、「貼り付けた後で」という方法ではダメです。
前スレで回答が無かったのでもう一度質問させていただきます。 WindowsXP SP1a、Excel2002 SP3 入力規則のリストに関する質問なんですが、 通常、ドロップダウンリストは |___|___|___| |___|___[▼]___| |___|項目1 |___| |___|項目2 |___| | | ̄  ̄  ̄| ̄ | こんな感じに表示されますが、これが |___|___|___| _|___|___[▼]___| |項目1 |___| |項目2 |___|  ̄| ̄ ̄ ̄| ̄  ̄  ̄| ̄ | こんな風になってしまう場合があります。 リストの値をa,b,cなどと短いものにしても変わらないし 一度入力規則を削除してから再設定しても、幅はそのままです。 これを通常のように「セル幅+ボタン」の幅内で表示させるにはどうすればよいですか?
>>409 いったん貼り付けるとHTMLの書式通りになるように見えるが、
その後で「貼り付け先の書式と一致させる」を選べば、
HTMLの書式は無視されてもとのセルにあった書式になる。
ご要望通りだと思うが?
414 :
405 :2005/04/12(火) 14:06:17
>>413 一回でも書式が変わるとイベントマクロが動いてしまうので問題ありです。
操作上Application.EnableEvents = Falseも使えないし。
なので今までは「別シートに張り付け→コピー→値を張り付け」とやってました。
HTMLDocumentオブジェクトの方を調べてるんですが、
コピーしたデータってどういう風に取得させればいいのかわからない。
Dataオブジェクトを使ってクリップボードの値を取得する方法ならわかるけど
これではテキスト張り付けと同じ全列繋がった文字列になる。
>>406 氏の再降臨を待ち望みます。
415 :
名無しさん@そうだ選挙にいこう :2005/04/12(火) 14:06:30
>>414 なるほどね。
405や409ではそんな理由は一言も書いてないが。
後出しはやめてくれ。それなら最初から無駄な答えは書かないから。
417 :
405 :2005/04/12(火) 14:25:18
「何がやりたいか」は
>>405 で
「最初から文字列のみを表形式で張り付ける方法を教えてください。」
ってはっきり書いたんだけど・・・。
要望以外の回答(代用案)に対しても万全な情報なんて書ききれないですよ。
まあ、あんまりゴネると教えてもらえる物も教えてもらえなくなりそうなので
HTMLDocumentオブジェクトについて検索しながら
>>406 氏か
「最初から文字列のみを表形式で張り付ける方法」をご存じの方の降臨を待ちます。
まあ、一理あるな。
>>403 Sub 数字以降を削除()
Dim hoge As String, i As Byte
hoge = ActiveCell.Value
Do
i = i + 1
Loop Until Mid(hoge, i, 1) Like "#"
ActiveCell.Value = Mid(hoge, 1, i - 1)
End Sub
Sub 数字を削除()
Dim i As Byte
For i = 0 To 9
ActiveCell.Replace CStr(i), vbNullString
Next
End Sub
対象はアクティブセルね。
>>417 ならキミの書いた409に410のような反応があったのはなぜか
よく考えることやね。断っとくが410は私じゃないよ。
答える側は書かれた情報だけで判断して知恵を絞っている。
たとえキミの気にいらない答えでもね。そこらもよく考えや。
スレ汚しになるのでここらで消えるよ。
>419 ____ i´-======-`i } . .. ..::;:;;;;;彡{ i . .. (,,゚Д゚);;;| ∬ } (ノ .::;:;;;;彡{つ旦<まぁ、茶でも飲んでもちつけ !, .. .:.::;:;;;彡j ヽ、.. ....::::;;;ジ └∪゙∪┘
>>414 >>407 をマクロに登録してその中でApplication.EnableEvents = False
をすればいいんじゃない?
書式が変わるのをトリガにしてるイベントあったっけ?
負けず嫌い?
漏れも
>>406 のは知りたいな。漏れの場合書式云々じゃなくて、
単に普通に張り付けするとでかい表の場合時間が掛かるから。
htmlから表を張り付ける場合に書式ごと張り付けたいことなんて
ほとんどないから、テキストのみ張り付ける方法があるなら
使いたいもんだな。
424 :
402 :2005/04/12(火) 16:42:00
>>404 さん、
>>418 さん
ありがとうございます。
私が使わせてもらおうとしているozzipというソフトは番地が
入っていると綺麗にあたってくれないので、数字を削ろうと考えました。
ただ、番地は最終的には必要なので分割できないものかと
ご相談申し上げました。
分割は市、区、地名、番地で分けられたらいいんですけど
むずかしいですよね。
数字を削る方にします。マクロ使わせて頂きますね。
お世話になりました。またお願いします。
>>424 とりあえず番地(アラビア数字)以降を右に分けるなら
Sub 数字以降を右に移動()
Dim hoge As String, i As Byte
hoge = ActiveCell.Value
Do
i = i + 1
Loop Until Mid(hoge, i, 1) Like "#"
ActiveCell.Value = Left(hoge, i - 1)
ActiveCell.Offset(0, 1).Value = Right(hoge, Len(hoge) - i + 1)
End Sub
下3行を
ActiveCell.Offset(0, 1).Value = Left(hoge, i - 1)
ActiveCell.Offset(0, 2).Value = Right(hoge, Len(hoge) - i + 1)
End Sub
とすれば、元の住所はそのままで、対象セルの1つ右に番地の前、2つ右に番地を振り分けられる。
市区町村名に"市・区・町・村"の文字がある場合に区切り位置がおかしくなることを承知してくれるなら
"市・区・町・村"の文字位置で分割するマクロくらい書いてもいいけど。
全て手動でやるよりはマクロで処理した後、修正した方が早いだろ。
もし欲しかったらデータの範囲を書いてくれ。
426 :
402 :2005/04/12(火) 17:55:23
>>425 さん
わあ、ありがとうございます。
一個のセル、番地前後で分離できました。
ぶっ飛ばされそうなんですけど、列全体を指定する時は
どのようにしてかくんですか?activerow?
>>426 Sub 数字以降を右に移動()
Dim hoge As String, i As Byte, r As Long
Const c As Byte = 1 '列番号を指定
For r = 1 To Cells(65536, c).End(xlUp).Row
i = 0
hoge = Cells(r, c).Value
Do
i = i + 1
Loop Until Mid(hoge, i, 1) Like "#"
Cells(r, c).Value = Left(hoge, i - 1)
Cells(r, c + 1).Value = Right(hoge, Len(hoge) - i + 1)
Next r
End Sub
列番号は1ならA列、2ならB列、
開始行が1行目からじゃないなら「For r = 1〜」の1を書き換え。
んで、元データそのままで処理するには
Cells(r, c + 1).Value = Left(hoge, i - 1)
Cells(r, c + 2).Value = Right(hoge, Len(hoge) - i + 1)
でよろしく。
住所を県市区町村などで分けたいというのは時々あるけど、 八日市場市とか十日町市とか市川市市川とか今市市今市とかあるので、 データベースを参照しながらじゃないと無理でしょう。
430 :
402 :2005/04/12(火) 19:17:03
>>427 さん
ほんとにあほ丸だしですみません。
列指定してできました。700件くらいのデータなんですが、
オーバーフローといって50件目で止まってしまいます。
これは50件ごとにマクロをしていくしかないのでしょうか。
お時間あったら教えてください。
>>430 50件の制限というわけではなく、
数字のない住所の位置でオーバーフローしますね。
i = i + 1
の下の行に
If i > Len(hoge) Then Exit Do
を入れてみてください。
これでダメなら止まってしまう位置の住所を貼ってみて。
432 :
402 :2005/04/12(火) 19:28:27
>>431 さん
早速のご回答ありがとうございます。
できました!これで、郵便番号がふれます…。
ここの方たちみなさんに感謝します。
また教えてくださいね。
>>432 Do
i = i + 1
Loop Until Mid(hoge, i, 1) Like "#" Or i > Len(hoge)
もう見てないかもしてないけどこれの方が良かったかも。
結果は同じはずだけど、こっちの方がちょっと処理早いかな。
ついでに気が向いたら、最初に Application.ScreenUpdating = False 最後に Application.ScreenUpdating = True を入れておくとより処理が早くなる。
435 :
402 :2005/04/12(火) 19:37:33
>>423 406じゃないけど、ググって作ってみた。
自信は無いけどどうだろう?
文字を取り出してもテーブルの区切りがわからんので、
スペースがセルの中にあると思った結果にならない。
MSFormsを参照してるのと、
クリップボードの形式を事前に調べてはいない。
Dim cc As New MSForms.DataObject
Dim s, t
Dim i As Integer
Dim j As Integer
cc.GetFromClipboard
s = Split(cc.GetText(1), vbCrLf)
For i = 0 To UBound(s)
t = Split(s(i))
For j = 0 To UBound(t)
ActiveCell(i + 1, j + 1) = t(j)
Next j
Next i
----------------------------------------------------
ここまで読んだ。ここまで読んだ。ここまで読んだ。ここまで読
----------------------------------------------------
Dim oHttp As Object
Dim s
Dim i
Set oHttp = CreateObject("MSXML2.XMLHTTP")
oHttp.Open "GET", "
http://www.yahoo.co.jp ", False
oHttp.Send
s = Split(oHttp.responseText, vbCrLf)
For i = 0 To UBound(s)
Cells(i + 1, 1) = s(i)
Next i
----------------------------------------------------
んだ。ここまで読んだ。ここまで読んだ。ここまで読んだ。ここま
----------------------------------------------------
439 :
405 :2005/04/13(水) 07:36:20
>>436 また情報後出しとか言われそうだけど、自分が以前書いたマクロです。
Dim myData As New DataObject
Dim w As Variant, i As Integer
myData.GetFromClipboard
w = Split(myData.GetText, vbCrLf)
For i = 0 To UBound(w) - 1
Range(ActiveCell.Offset(i, 0), ActiveCell.Offset(i, UBound(Split(w(i))))) = Split(w(i))
Next i
>>436 と同じような物ですが、
>>414 でも書いた通りDataオブジェクトを使って
クリップボードの値を取得すると繋がった文字列になってしまいます。
区切り位置に半角スペースが入るのでそこで分割しただけだけど、
自分がコピーしたい表には半角スペースが含まれないことの方が希なので全く使い物になりませんでした。
>>423 の言うとおり、速度面の問題もあるのでなんとか
「VBAからHTMLDocumentオブジェクトを使って、HTMLテーブルセルの値を直接Excelのセルに書きこむ方法」
を実現したいのですが、コピーしたhtmlデータをどうやってテーブル区切りで取得させるかが全く解らない状況です。
かなり頻繁に検索を使うのですが、グーグルの検索ツールバーのようにツールバーに検索窓を追加 するようなことは出来るのでしょうか?
441 :
405 :2005/04/13(水) 08:16:05
443 :
406 :2005/04/13(水) 15:02:00
>>439 405さんに質問です。
コピー元(HTML)のセルは1つのテーブル<table>〜</table>全体ですか?
それともテーブルの中の一部分のセルですか?
前者であれば表示中のHTMLDocumentからtableエレメントオブジェクトを特定し、
Rows(i)Cells(j).innerTextでエクセルライクに値を取得できますが、
後者だとdocument.selection.createRange().htmlText等で
選択範囲のHTML文字列を取得し、<tr><td>タグを解析して縦横の値を
自力で取り出す必要があるかと。
なお、これらの方法ではクリップボードは不用です。
いずれにしてもコピー元のHTMLの構造が一定であればプログラミング可能ですが、
不特定のHTMLのテーブルセル文字列を汎用的にExcelの選択セル等に埋め込むような
ルーチンを作るのはかなり大変だと思いますです。
444 :
405 :2005/04/13(水) 15:42:14
>>443 テーブルの中の一部分のセルです。
Webブラウザから表の一部をコピーしたあと、どのようにすれば良いのでしょうか?
VBAは初歩的なことしか解らないので
>>443 の解説だけでは
無能な自分には全く理解出来ません。
ローカルのhtmlから表全体を取得するならなんとかなるけど
いちいちローカルに保存するくらいなら、今までの方法の方が早いし。
コードを書いていただけるとありがたいのですが、
失礼ながら406氏も具体的なコードは書けないというなら、ここで期待して待つのはやめて、
何とか出来るところまで足掻いてみます。最後にはあきらめることになるだろうけど・・・
445 :
名無しさん@そうだ選挙にいこう :2005/04/13(水) 15:51:47
WindowsXp・Excel2003ですが 新規のシートの状態から29行、E列ぐらいでセルを埋めて表を作ったんですが そのまま普通に印刷すると29行目ぐらいがA4の真ん中ぐらいになるのですが これの縦横をA4の用紙にいっぱいに自動で合わせて印刷するには どう操作すればよいでしょうか?
>>444 具体的にURLとどの部分をコピーしたいのか書いたほうが早いと思うよ。
447 :
405 :2005/04/13(水) 15:59:22
>>446 Webページから表をコピペしたいことが多いというだけで、
利用するサイト、ページは特に決まってません。
でも、ExcelにHTML張り付けした場合はどの表でもWebブラウザの表示と同じになるので
ソースの記述が多少違っても、1つで可能なら理論上は全てに通ずるはずですよね。
ExcelにHTML張り付けしても崩れるようなものは例外かもしれないけど。
お伺いしたいのですがEXCELのシート数の制限は何枚でしょうか? ある競技の集計ソフトを作成中でVBAで成績速報を新規シートで出力していますが 種目が多く枚数が増えるため速報のシートが31枚以上は追加出来ません 本体のシートは参照データベースや入力シート等で既に59枚あります 一度保存し再度ブックを立ち上げるとリセットされる見たいですが 私が運用するのではなく競技大会のの運営者が使用するので なるべくトラブルを回避したいと思い質問させて頂きます OS WindowsXP HOME Microsoft Office Excel 2003です
>>448 物理メモリ容量、及びシート内容依存です。
シートが追加できないなら、それがおそらくあなたの環境でのシート数限界です。
>>449 ご回答有り難うございます
うっかりしていましたメモリ512Mです
>物理メモリ容量、及びシート内容依存です。
判りました対策を考えます
VBAの質問です。 For i = 10 To 1 Step -1 For j = 1 To 10 If Cells(i, j).Value = hoge Then 処理 Exit For A End If Next j @ Next i このようにForを2段使っていて、ある条件を満たしたら何らかの処理をして Forを抜けたい場合、上のコードだとFor jは抜けられるけどFor iは抜けられませんよね。 この場合、Gotoを使ったりこのFor文以降の処理を別プロシージャにしたり@の部分にコードを入れたりせず、 Forの2段目のIf文内(Aの位置)だけのコードでFor iを抜けるにはどうすれば良いでしょうか? 実用上困ってるというわけではなく、興味があっただけなのですが、 何か方法があるなら知っておきたいのでご存じの方が居りましたらご教授ください。
453 :
名無しさん@そうだ選挙にいこう :2005/04/13(水) 17:46:33
>453 「実用上困ってるというわけではなく」 って書いてあるぢゃん ちゃんと嫁よw なぜgoto以外の方法が知りたいのかはわからんが
>>447 Excelのクリップボードの内容って、
Webページを入れた場合も、テキスト入れた場合も同じじゃない?
>456 をいをい・・・ 同じだったらhtml形式での張り付けすら出来ないだろ つーか「Excelのクリップボード」って何よ? クリップボードは全ソフト共通ですが、何か? 奴も言ってる通りDataObjectで取得した場合はテキスト扱いになるけどな
>>451 その部分をFunctionに記述してExitするぐらいかな。
そうするメリットは感じられないが。
>>457 Excelはhtml、xmlで処理してなかったっけ?
htmlのソースコードをExcelに貼り付けてみて。
460 :
名無しさん@そうだ選挙にいこう :2005/04/13(水) 21:50:57
関数の質問です。OSはXPでエクセルは2003です。 質問の内容ですが・・ A B C D E 1 SH900i ドコモ 999 2 902SH ボータ 223 3 W31SA au 582 4 ・ ・ 5 ・ ・ このような形でA・B・C列に400行データが入っています。 Aが商品名でBがメーカーでCが販売数となっています。これをD・E・F行 にTOP10だけ出したいのですが、対応出来る関数はありますでしょうか? D E F 1 ドコモ SH900 999 2 ドコモ D900 870 3 ドコモ N900 825 ・ ・ ・ ・ 11 ボーダ 902SH 999 12 ボーダ 802SE 650 13 ボーダ 603SH 540 ・ ・ ・ ・ 21 au w31SA 920 22 au w21H 650 23 au ・ ・ みたいな感じにしたいのです
461 :
名無しさん@そうだ選挙にいこう :2005/04/13(水) 23:32:20
体重測定のExcelをつくりたいと思っているのですが 流れ的には ------------------------------------- 4月 5月 6月 〜 スズキイチロウ 55kg 57kg 54kg ヤマダハナコ 44kg 45kg 42kg タナカタロウ 32kg 30kg 36kg ------------------------------------- というデータを作成して、 200名分くらいをA5の紙に一人一人グラフで 出力するという感じで考えているんですけれど、 Sheet1部分がデータベース部分 Sheet2にグラフを表示、印刷部分 という風に考えたのですが、 どうもあきらかにSheet2の部分が能率的ではなさすぎるなあという感じです。 マクロとかがよくわからないので、下地は地道にコピペでつくるという(泣)感じなのですが。 こういうものをつくろうとした時に参考になりそうなページはございませんでしょうか? またこれをすっきりさせるためにはどういう方法がありますか?
> こういうものをつくろうとした時に参考になりそうなページはございませんでしょうか? ヘルプ
>>438 前スレ950までしか見てないんだけど、
デザインモードは試したの?
464 :
名無しさん@そうだ選挙にいこう :2005/04/14(木) 00:02:51
465 :
名無しさん@そうだ選挙にいこう :2005/04/14(木) 00:21:02
>>460 Dをドコモの列: =if(B1="ドコモ",C1,"")
Eをボーダの列: =if(B1="ボーダ",C1,"")
FをAUの列: =if(B1="AU",C1,"")
として、キャリア別の台数を抜き出す。
次にRANK()関数でそれぞれのキャリア内での順位を出しておく。
(G列とかね)
最後にVLOOKUPで順位からデータの並べ替えを行なう。
この場合、同じ台数となっているデータはうまくいかない w
素直にソートを使って加工するのが早そうでつ。
(別にVBAでもいいが)
466 :
名無しさん@そうだ選挙にいこう :2005/04/14(木) 00:25:05
エクセルはADOを使ってMDBにアクセスできるけど ファイルメーカーのデータベースにアクセスする方法ってある?
467 :
名無しさん@そうだ選挙にいこう :2005/04/14(木) 01:33:53
エクセルで作った表を印刷しようとすると横に長いために二枚組になってしまいます。 用紙を90度回転させて印刷すれば解決できるのですが、 回転させないでそのまま「用紙の横サイズに合わせて縮小する」みたいな 便利なコマンドってないのでしょうか?
>>467 ページ設定>ページ>次の次数に合わせて印刷 横「1」×縦「1」
469 :
463 :2005/04/14(木) 06:35:52
470 :
名無しさん@そうだ選挙にいこう :2005/04/14(木) 07:01:43
>>465 やはり、そうなってしまいますか・・現状は同じような設定をしてたもので
自分でももうちょい、VBAとかで試してみます。ありがとうございました
VBAで指定セルの文字のバイト数を取得したいんですが VBA関数のLenBでは半角文字も2バイトになってしまうし なぜかWorksheetFunction.LenB()も使えない。 作業セルを設けて.Formula = "=LenB()"とやるのではなく VBAコードのみで文字列のバイト数を求めるにはどぷすればいいでしょうか? Excel97〜2002まで使える方法を教えてください。
473 :
471 :2005/04/14(木) 09:58:43
>>472 LenB(StrConv(Cells(1, 1).Value, vbFromUnicode))
でバッチリいけました。ありがとうございます。
エクセルのエンコードはどこで指定したらよいのでしょうか。