前スレ
Excel総合相談所 102
http://toro.2ch.net/test/read.cgi/bsoft/1334818676/ ▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問テンプレ(雛形)は必須じゃないけど、出来れば使ってね
▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類 .】 Windows**
【2 Excelのバージョン 】 Excel**
【3 VBAが使えるか .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
・1 現行スレ内で既出の質問が無いか、ページ内検索をしよう。(Ctrl+F)
・2 図やコードを書く場合、TABや連続する半角スペースは無視されるので注意
・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。何レス使っても構いません。
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。
・5 回答内容でわからない部分があっても、すぐに聞き返さずにヘルプやGoogleなどで検索しましょう。
・6 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。
ここは技術的な質問のみで。
前スレ
>>998 > 例えば6月30日の21時に到着したくて
> そこまでたどり着くのに30時間21分かかるとして
> だったら何日の何時に出発すればいいのかという質問なのですが
セルの書式設定の表示形式を変える
到着日時のセル→m"月"d"日 "h"時"m"分"
かかる時分のセル→[h]"時"m"分"
出発日時のセル→m"月"d"日 "h"時"m"分"
意味が分からなければここを全部読んでみて(「関連情報」も含めて全て)
http://support.microsoft.com/kb/883199/ja
前スレで質問したのですが 1000いっちゃったのでサイド質問させてください 6月30日の21時に到着したいと思い そこまでたどり着くのに30時間21分かかるとして だったら何日の何時に出発すればいいのかという計算は エクセルでどう入力すればいいのでしょうか
>>4 ぎゃーごめんなさい そのページ見てきます ありがとうございました
>>6 入力する値はこんな感じでね
到着日時のセル→6/30 21:00
かかる時分のセル→30:21
>>前スレ991 >A+B、D+E、G+Hの和が必ず60になるように、 >そして@に数字を入れたらAに40+20-@の数値が入り、Bが60-Aになる >さらにCに数字をいれるとA+B-Cの数値がDに入りEが60-D、 >Fに数字をいれて・・・の繰り返しをやりたいのですがどのような方法がありますか? "40"と"20"ってのは数値なの? それともA~Hと同様に何らかの変数なの? 数値なのだとしたら前掲の条件はすなわち A=60-@ B=@ D=60-C E=C G=60-F H=F ただし、@,C,F,は任意の数 ってことだし、 "40"と"20"も変数なら 最初のAのところがA="40"+"20"-@になって、 BのところがB=@+60-"40"-"20"になるだけだけど。 とにかく、質問の意味が良く理解できないよ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 前から気になっていたことなのですがExcelで保存した箇所までしかやり直し(元に戻すじゃなくてやり直し)が出来ないのは仕様なのでしょうか。 (例えばセルA1からA10まで順番に適当に入力して、A5まで元に戻すを実行して、その後ファイルを保存、やり直しを実行しようとしても実行出来ません)
>>10 違ってたらうれしかったのですがやっぱりそういう仕様でしたか。
ありがとうございます。
>>前スレ942-943 ありがとうございました。
すいませんお願いします。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 ピポットテーブルを今勉強し始めたのですがうまくいきません。 行ラベルに1つドラッグしました(商品名とします)。 もう一つその下にドラッグする(担当者とします)と各商品名の下に担当者が来ると思うのですが、 なぜか表では1つ右の列に表示されます。 下に表示するにはどうすればいいでしょうか?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 マクロの記録程度 【4 VBAでの回答の可否】 可 やりたい事 アクティブセルにコメントを挿入 コメントにはA1セルとA2セルの値を入れる A1セルとA2セルの値の間で改行 ネットで拾ったコードを弄って以下のようなコードを書きましたがエラーになってしまいます どのようなコードにすればいいでしょうか よろしくお願いします Dim 一行目 As string Dim 二行目 As string 一行目 = Range("A1") 二行目 = Range("A2") ActiveCell.AddComment Text := 一行目 & VbCrLf & 二行目
>>13 ワカンネ
>>14 subつけた?2003だと動いたんだけどな
2010で記述方法が変わってるのかもしれない
Sub a()
Dim 一行目 As String
Dim 二行目 As String
一行目 = Range("A1")
二行目 = Range("A2")
ActiveCell.AddComment Text:=一行目 & vbCrLf & 二行目
End Sub
16 :
14 :2012/06/21(木) 20:47:05.83
>>15 早速の回答ありがとうございます
省略しましたが実際のコードではsubも付けています
A1の値のみをコメントに入れることなら出来たのですが、&を付けるとエラーになってしまいます
>>16 これを追加したらどうなる?
ActiveCell.ClearComments
18 :
14 :2012/06/21(木) 21:39:28.01
>>17 一度クリアしてからコメントを挿入する感じでしょうか
今手元にパソコンが無いので明日会社で試してみます
ありがとうございます
>>18 もし、
>>17 でエラーでなくなるなら、AddCommentのかわりにNoteTextでもいけるよ
ActiveCell.NoteText Text:=一行目 & vbCrLf & 二行目
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 少し 【4 VBAでの回答の可否】 可 グラフのデータを複数範囲を指定して入れたいのですがうまくいきません 何がよくないでしょうか? With .SeriesCollection(1) .Values = Application.Union(Worksheets("sheet1").Range(.Cells(i * 2, 1), .Cells(i * 2, 5)), Worksheets("sheet1").Range(.Cells(1, 1), .Cells(1, 5))).Select End With
>>13 どんな表を元にどんな風に集計しようとしているのか全く読みとれない
>>20 withの使い方間違ってないか?
あとselectも?
>>22 .
selectは無しでした。試してたのをそのまま間違って書いてしまいました。
withよくないかな?複数の範囲を指定する前はこんな感じでまともに動いていました。
set chart = Activesheet.chartobjects.add(0,100,100,100)
.seriesCollection. NewSeries
With .SeriesCollection(1)
.Values = Worksheets("sheet1").Range(.Cells(i * 2, 1), .Cells(i * 2, 5))
.chartType = xlLineMarkers
End With
24 :
名無しさん@そうだ選挙にいこう :2012/06/22(金) 13:37:51.23
「糞サマータイム」が導入されたら、 Excelの時間計算で、内部データは本来の時間、表示形式は夏期間だけ1時間ずらす、みたいな変なしくみになるのですか? 現状にサマータイムを導入してるヨーロッパの国々のExcelはどうなってますか?
25 :
14 :2012/06/22(金) 19:13:00.73
>>15 のコードを忠実に書いたら上手く処理されました!
&の前後にスペースを入れていなかったことが原因のようです
とても助かりました
回答くれた方ありがとうございます
>>23 それだって、↓ということだから、エラーになると思うけど
.SeriesCollection(1).Cells(i * 2, 1)
そもそもコードの示し方が中途半端すぎだよ
こんな感じか Set sh = Sheets("Sheet1") .SeriesCollection(i).Values = sh.Range(sh.Cells(i * 2, 1), sh.Cells(i * 2, 5)) .SeriesCollection(i).XValues = sh.Range(sh.Cells(1, 1), sh.Cells(1, 5))
来月を変数に入れる方法を教えてください。 kongetsu = Format(Date, "mm") * 1 & "月" raigetsu = Format(Date, "mm") * 1 + 1 & "月" これだと、12月のとき13月になってしまいます。
30 :
名無しさん@そうだ選挙にいこう :2012/06/22(金) 21:53:58.34
Vista Office2007 の環境です。 いつの頃からかわかりませんが、エクセルのセルにアルファベットや数値を入力するとPCから読み上げる音声がながれます。今日ボリュームをいじっていて気づきました。 恐いです。助けてください。
>>28 raigetsu = Format(DateAdd("m", 1, Date), "m") & "月"
33 :
28 :2012/06/22(金) 22:11:50.82
>>28 これしきのことでvbaに頼らないとすれば、
作業セル=month(date(year(today()),month(today())+1,day(today())))
35 :
28 :2012/06/22(金) 22:55:48.47
た
36 :
28 :2012/06/23(土) 00:31:54.64
>>34 わざわざワークシート関数でのレスありがとうございます
お互いVBAの勉強頑張りましょうね
>>26 >>27 単純に.Cellsにしてたのが悪かった・・・けど今回のでグラフで勘違いしてたところに気付けました。
大変助かりましたありがとうございます。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 少々 【4 VBAでの回答の可否】 可 Book1 Sheet1のA1セルに =[Book2.xls]Sheet1!$B$1 と入れて閉じておきます。 Book2を開いて、Sheet1のセルがどこにリンクされてるか確認する方法を教えてください。
>>38 ブックを開く→"Workbooks.Open"でググれ
セルに数式が入力されているかどうかを調べる→"Range.HasFormula"でググれ
文字列の検索はLike演算子とかInStr関数使え
43 :
名無しさん@そうだ選挙にいこう :2012/06/23(土) 13:40:01.96
複乳さんがお亡くなりになられたのは本当ですか?
>>38 まず閉じたBook1を開いてみ
話はそれからだ
せんせー◆adhRKFl5jU = 複乳なの?
VBAをやるにあたって英語って最低限わかってなだめなのか 自分の頭は中1で止まってるんだが
今の時代Google先生とExcite先生がいるじゃないか
>>47 VBAなら日本語の情報あふれてる
英語なんて全く不要
MSDNライブラリの日本語訳が狂ってる時がある 英語が必要になるのってその時ぐらいかと
51 :
38 :2012/06/23(土) 21:14:39.37
>>51 矢印をダブルクリックすると「ジャンプ」で参照元が出るよ
53 :
38 :2012/06/23(土) 21:39:39.17
そうだよ、よかったね
よかったね よかったよ よかったね よかったよ カプカプカプカプカプカプカプカプ!!!!!!!!!
VBAのハウツー本を買ってきたがまずオブジェクトってなんやねん、ということから始まって 4か月。未だにまったく進歩がない、果たして私はそれでも覚えられるのだろうか
>>57 If Cells(i, j) > 0 or Cells(i+1, j)>0 Then かな?
60 :
57 :2012/06/24(日) 13:36:14.01
>>58 オブジェクトってのは実体
実体という言い方だと捉えにくいが、最低限エクセルで見えてるものは絶対にオブジェクト
bookやワークシート、セル、コマンドボタンに図形は全てオブジェクト。
ただVBAはセルの操作が主になるので、セルの操作を極めたほうがいいと思う
オブジェクトはクラスという概念と密接に関わるのだが、vbaはクラスを意識しなくても操作できちゃうから覚えにくい
オブジェクトはC++やJAVAやれば一発で理解できるよ
>>60 If Cells(i, j) > 0 and PLN <= EXC Then これもかな
>>57 実績>計画、だと思うんだけど、
E5はどうなん?計画だけで実績がないところも塗るのかい
64 :
57 :2012/06/24(日) 13:55:28.19
あぁ、コレもしかして二行で1セットなのか。 説明せんと分からんわwww まぁいいわ a b c d 10 30 10 10 20 00 10 1000 この場合はどう塗るんだ? ABはわかるがCDの条件が分からん
>>64 んんー、どこが駄目なのかよくわからん
塗り方のルールが理解できん、というか見本間違ってないか?
E3:K3とE4:K4の合計といった感じで比べてるはず
>>64 For i = 3 To TTL Step 2
EXC = 0
For j = 5 To 35
If Cells(i + 1, j) > 0 Then
EXC = EXC + Cells(i + 1, j)
End If
Next
PLN = 0
For j = 5 To 35
If Cells(i, j) > 0 Then
PLN = PLN + Cells(i, j)
If PLN <= EXC Then
Cells(i, j).Interior.Color = 16776960
End If
End If
Next j
Next i
70 :
57 :2012/06/24(日) 14:16:41.42
条件付き書式だと一瞬でできた B3=IF(B3<>"",SUM(4:4)>SUM(B$3:B3))
前後は問わねえってことか・・・?
>>70 >>69 で理解したつもりが、それ見せられたら、またわかんなくなったじゃねーか
こういうやつ困るよなあ 説明したつもりにだけなっていてその実全然説明できてないっていう 説明したつもりになってるから何を聞いても「さっき言っただろ」みたいな態度とるし
>>70 計画がリセットされるタイミングがわからん
10か20しか出てこないのか? もっと細かいレベルまで対応させないとダメなのか? あーくそわかんねえ
ここまで周到に準備してるって事は 釣りって事だよ
ようするに、その月の計画で、どの日以降の分から未達かをしりたいだよね
だったら、
>>69 や
>>72 でOK
81 :
57 :2012/06/24(日) 14:39:45.55
>>74 3行目は計画の累積が60、実績の累積も60なので、
全ての計画のセル(E3, I3, K3, O3)が塗られます。
5行目は計画の累積が60、実績の累積も60なので、
全ての計画のセル(E5, H5, J5, K5, O5, P5)が塗られます。
7行目は計画の累積が50、実績の累積は40なので、
計画の累積40を満たすセル(E7, I7, K7, P7)が塗られます。
9行目は計画の累積が80、実績の累積は110なので、
計画の累積80を満たすセル(H9, J9, L9, O9, Q9)が塗られます。
11行目は計画の累積が80、実績の累積は40なので、
計画の累積40を満たすセル(E11, I11)が塗られます。
82 :
57 :2012/06/24(日) 14:43:27.19
>>80 69は動きませんので、正解でもOKでもないです。
条件付き書式は全てのセルに設定するのでしょうか?
>>83 70は私、本人です。
69は頭の Sub 着色() Dim TTL As Long, PLN As Integer, EXC As Integer Dim i As Integer, j As Integer TTL = Range("B1048576").End(xlUp).Row を省いてるんだろ。足したらちゃんと動く
実際の数字はもっと複雑って・・・だから説明不足だって言ってんだろ 常に計画の累計と実績の累計は一致すんのかよ? 一番大事なデータ部分を端折るんじゃねえクソが
なんで質問してる人のほうが偉そうにしてるの?
>>88 >常に計画の累計と実績の累計は一致すんのかよ?
月末になれば一致します。
誤記訂正 誤:月末になれば一致します。 正:月末の前日になれば一致します。(棚卸しで入出庫禁止があるため)
はいはい じゃあ月末までは一致しない部分が出てくる訳だろ その説明はどこにあんだよ もう最初から塗りつぶしのグラフでも作ったほうがいいんじゃねえのか こうやって都度説明求めて方向転換させるのは大迷惑なんだが? いやそういう誤記はどうでもいいから
>>92 計画の累積と実績の累積が違う場合の条件は
81に書いてます。
ははははこりゃすごいや ここまで偉そうな質問者初めて見たよ
96 :
名無しさん@そうだ選挙にいこう :2012/06/24(日) 15:24:50.91
低脳はすっこんでろよ
>>93 貴方がそれで十分だと認識していても
相手が不足だと認識していれば意味はありませんよ
私の書込みではありませんが
たとえば
>>66 に対して答えてあげては如何ですか?
エスパー検定!エスパー検定の認定者はまだか!!
僕みたいな低能が思うに月末の前で一致するならそんな表はいらないと思うんです。
>>98 そこそこ自信があったつもりだったが、これは無理だ
>>97 66は計画の累積が60、実績の累積が1030なので、
全ての計画のセルが塗られます。
すみません、バイトに行って来ます。
ワロタwwww
なぜ戻る時間を書かないw
>>70 でわざわざ手書きまでして囲ったのが意味不明にした根源なんじゃ…
とりあえず
>>69 と
>>72 であってるよ
これで正しくないってのなら
>>57 が手順をミスってるだけ
じゃあ俺もバイト行ってくるわ
最初の
>>57 のコードでミスリードされた感じ
釣りだとしたら月後半部分のデータをみせてないのも絶妙
>57のウンコードの手直しはさすがにやる気起きなかった Sub a() gyo = Range("D20").End(xlUp).Row For i = 3 To gyo Step 2 goukei = WorksheetFunction.Sum(ActiveSheet.Range(i + 1 & ":" & i + 1)) For k = 5 To 35 kei = WorksheetFunction.Sum(ActiveSheet.Range(Cells(i, 5), Cells(i, k))) If (goukei > kei) And (Cells(i, k) <> "") Then Cells(i, k).Interior.ColorIndex = 6 End If Next Next End Sub
otto,(goukei >= kei)kouka 酒買いに行こう
>>110 ようやく質問の意味を理解して
書き始めたはいいが一瞬で飽きてしまい
一秒でもこんな無駄な作業を終わらせたい
そんな思いを込めて私、書きました
質問の意味を理解するのに2時間とかwww こんなとき、複乳さんがいれば10分も掛からなかっただろうにwww
あいつはエスパー能力高かったなw
116 :
名無しさん@そうだ選挙にいこう :2012/06/24(日) 21:42:00.50
117 :
名無しさん@そうだ選挙にいこう :2012/06/24(日) 22:01:55.76
広告にいちいち反応するなよ恥ずかしい
前日比のある日報を書いています 左に前日、右に今日のデータを入力しているのですがこれを 新規ブックを作成して右の部分を切り取って左に張り付け、の動作を行いたいのですがこのマクロを作りたい場合どのようなワードで検索を行えば調べられますか?
>>120 基本はマクロの保存
>新規ブックを作成して右の部分を切り取って左に張り付け、
ではなく、
右の部分を切り取って左に張り付け、新規ブックに保存
ならマクロの保存が効く
また詰まったら来るといい
出てくんな死ねカス
エクセルみたいなソフトってOoo以外にありますか?
>>124 GoogleドキュメントとかLibreOfficeとかKINGSOFT OfficeとかLotus1・2・3とか
メッセージを出して、「はい」ならスルーさせ、「いいえ」なら終了させるマクロは?
数値か文字かを分けるのを探してたら 2つのサイトでこんなのがありました。 If VarType(Range("A1").Value) = vbDouble Then
>>130 試してみたが、文字列でもlongになるね
このスレまるごとコピペしてみたけどlongだった
(ちなみに
>>23 ぐらいで、あとは切り捨てられた)
ポインタっぽい値の保存の仕方をしてると思う
ちょっとわかりづらいかも知れませんが 毎日列を挿入して日付列が増えていく日報があり 最終列に SUM(G2:M2)として直近7日間の合計を入れてます。 日付を挿入しても相対アドレスだからSUM(G2:M2)のままですが これを挿入掛けた時点でSUM(H2:N2)にしたいのです。 今は ・日付挿入 ・合計列を次の隣の列にコピー :SUM(H2:N2)になる ・今の合計列を削除する でやってますが もっとシンプルに出来ませんか? SUM([このセル-8]:[このセル-1])のようなポインタ的使い方とか無いですか? 絶対アドレスとも違うし・・・・相対固定アドレスというか
ありがとう 調べてみます
136 :
名無しさん@そうだ選挙にいこう :2012/06/25(月) 11:18:40.88
【1 OSの種類 .】 Windows7 HomePremium 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 シフトを作っています。 A列にWEEKDAY関数を使用して、“1(日)”のように表示させています。 そこでB列に、日曜日ならAさん・月曜日と水曜日はBさんのように、曜日に対応した名前を入力する方法があれば教えてください。 IF関数とかを見てみたのですが、上手くできませんでした。 お手数をおかけしますが、よろしくお願いいたします。
>>136 別表作ってvlookupを使う。
もしくはCHOOSE()
C1を参照しているとして
=CHOOSE(WEEKDAY(C1),"aさn","bさn","cさn","dさn","eさn","fさn","gさn")
もしくはまとめてしまっても
=TEXT(C1,"d(aaa)")&CHOOSE(WEEKDAY(C1),"aさn","bさn","cさn","dさn","eさn","fさn","gさn")
ワンタッチで Aさん=1 Bさん=2・・・・に数値化しちゃうやつなかったっけ?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2010 A列にボタンを貼り付ける A列を非表示にする。 保存する。再度開いて A列を再表示するとボタンが左端に消えかかっている。 ボタンを貼り付けた位置にちゃんと表示させるにはどうすればいいのですか?
>>72 今さらですが・・・
条件付き書式の設定がわかりません。
>>141 そのセルを選択して右クリック→ハイパーリンクの削除
>>140 死ねカス二度と出てくんな
あれだけ迷惑かけて謝罪のひとつもなしか
人間として恥を知れ!
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 少し 【4 VBAでの回答の可否】 可 Dim kare As String Dim deta As String Dim hyou As String Dim goukei As String Application.ScreenUpdating = False kare = ThisWorkbook.Path & "\" & "データ.xlsx" deta = "データ.xlsx" hyou = "表.xlsm" goukei = "合計" Workbooks.Open Filename:=kare, UpdateLinks:=0 Workbooks(deta).Worksheets(goukei).Range("A1:c10").Copy _ Workbooks(hyou).Worksheets("sheet2").Range("A1") 'ここでエラー Workbooks(hyou).Worksheets("sheet2").Range("A1:C10").Copy _ Workbooks(hyou).Worksheets("sheet1").Range("c2").Value With Workbooks(deta) .Close End With データbookのデータを表bookのsheet2に入れて計算してから 表bookのsheet1に表示させたいのですがどう直したらよいでしょうか?
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2000、2003 【3 VBAが使えるか .】 ちょっぴり 【4 VBAでの回答の可否】 可 A1からA30くらいまでに人の名前が入ってます。一部のセルは空白です。 また人名が入ったセルのうち、一部のセルは色がついてます。 人名が入っていて、なおかつ色がついてないセルを抽出して、別シートに貼り付けたいです。 どんな方法があるでしょうか?よろしくお願いいたします。
>>147 ループ:A1:A30
条件分岐:セルは空ではない
条件分岐:セルに色が付いていない
別シートにコピー
でいいんじゃね?
>>148 'Value外しても
実行時エラー '1004':アプリケーション定義またはオブジェクト定義のエラーです。がでます。
ここを
Workbooks(deta).Worksheets(goukei).Range("A1" & ":" & "c10").Copy _
Workbooks(hyou).Worksheets("sheet2").Range("A1")
こちらに変えてみたらエラーはでないけど
sheet2の内容がsheet1に反映されないです。
Dim copy1, copy2 As Range
Dim workb As String
Set copy2 = Workbooks(hyou).Worksheets("sheet2").Range("A1:c10")
Set copy1 = Workbooks(hyou).Worksheets("sheet1").Range("A1")
copy1 = copy2
データに目印をつけるために 1文字目に記号を付ける場合 アスタリスクを使うのはやめたほうがいいですか? (列を挿入してその列を目印用に使うのはこの場合は無しです)
検索しにくくなるからな。個人的には使わない ハイフンおすすめ、と言いたいがエクセルではハイフンで始めるとエラーになるんだった。 /*ではじめればコメントっぽいぞ、と思ったらメニューバーに飛ばされる。 一文字で打てる@がいいんじゃね?やっぱりエラー\(^o^)/ アスタリスクでいいと思います。 それかセルの色を変える。 そういえば@で始めるとどういう扱いになってるんだろう?
>>150 コレでできたよ。ってかそもそも
>>148 の通りvalue抜くだけで動くけど
Sub a()
Dim kare As String, deta As String, hyou As String, goukei As String
Application.ScreenUpdating = False
kare = ThisWorkbook.Path & "\" & "データ.xls"
deta = "データ.xls"
hyou = "表.xls"
goukei = "合計"
Workbooks.Open Filename:=kare, UpdateLinks:=0
kare = ThisWorkbook.Path & "\" & "表.xls"
Workbooks.Open Filename:=kare '表を開いてなかったので追加
Workbooks(deta).Worksheets(goukei).Range("A1:c10").Copy _
Workbooks(hyou).Worksheets("sheet2").Range("A1")
'ここでエラー
Workbooks(hyou).Worksheets("sheet2").Range("A1:C10").Copy _
Workbooks(hyou).Worksheets("sheet1").Range("c2")
With Workbooks(deta)
.Close
End With
End Sub
154 :
名無しさん@そうだ選挙にいこう :2012/06/26(火) 04:59:28.55
excel2010 グラフのデータ範囲の自動追加について 下記のデータで、5日目以降のN01、N02のデータを打ち込んでいくと自動でグラフが更新 されるようにしたいのですがご教授願います。 1 項目 1日 2日 3日 4日 2 N01 10 15 20 25 3 N02 20 25 30 35 名前定義とOFFSET関数を使えばできそうなのですが、表全体を名前定義するのか 個々の行を名前定義するのか、よくわかりません。 @A1:E3を定義する必要はありますか?その場合設定したあとはどのように なりますか? =offset(A1,0,0,3,counta(1:1),1 A各行ごとに名前定義を設定する必要はありますか?その場合の設定後の 流れはどのようになりますでしょうか? =offset(A1,0,0,0,counta(1:1)) =offset(A2,0,0,0,counta(2:2)) =offset(A3,0,0,0,counta(3:3)) 名前定義した後、グラフのN01を選択し、編集の系列値で数式で使用▼からNo1の名前定義を 選択しようと試みたのですが、必ず1つは数字がはいってないといけませんとエラーになりました。
156 :
名無しさん@そうだ選挙にいこう :2012/06/26(火) 09:58:26.30
エクセルの最新版って、オフィス2010なの?
はい。予定では7月に2012がでるそうで。
>>157 ありがとうございます
7月になるまで待つことにしました
>>158 マックにもexcelってあるんですね
>>159 エクセルは元々Mac用に開発されたソフトで、その後Windowsに移植されたんだよ。
Macrosoft なんつって!
HAHAHA
ギャー静止ふんじゃった
>>165 http://goo.gl/iDgBv このサイトに、条件付き書式について詳しく書いてあるよ!
コレさえ見れば、今日からお前も条件付き書式マスターだ!
2010ならデータバーでグラデーションとかできて、まじエクセルが楽しくなるYO
短縮URL怖い
>>148 >>153 さん無事動きました。ありがとうございました
value抜いても動かない動いても反映されない
>>153 で動くのにと調べていてCopy _をCopyで試したら動きました。
Workbooks(hyou).Worksheets("sheet2").Range("A1:C10").Copy _
Workbooks(hyou).Worksheets("sheet1").Range("c2")
↓
Workbooks(hyou).Worksheets("sheet2").Range("A1:C10").Copy
Workbooks(hyou).Worksheets("sheet1").Range("c2")
これが正しい書き方だったのかな?
>>167 ハゲどー
166は、グロとかウィルスとかですかね?
170 :
名無しさん@そうだ選挙にいこう :2012/06/26(火) 22:12:53.78
作品名 全巻数 サザエさん 全4巻 アンパンマン 全5巻 作品数が1000ぐらいあって処理に困っています。 上を下記のようにしたいのですが、どうすればいいですか? よろしくおねがいします。 作品名 全巻数 巻数 サザエさん 全4巻 第1巻 サザエさん 全4巻 第2巻 サザエさん 全4巻 第3巻 サザエさん 全4巻 第4巻 アンパンマン 全5巻 第1巻 アンパンマン 全5巻 第2巻 アンパンマン 全5巻 第3巻 アンパンマン 全5巻 第4巻 アンパンマン 全5巻 第5巻
>>169 いい加減黙れよ
おまえのせいで妙なリンクまで貼られてるんだぞ
なんとも思わねえのかよこの池沼白痴野郎が
>>171 気に入らない書き込みはスルーを推奨スルー
俺からも質問 時間の計算をしたいのですが、なんてググっていいのかわかりません。 検索ワードだけでも回答お願いします。 時間の形式は yyyy/m/d h:m:s となっており、 A1とB1に上記形式の時間データが入ってます B1が翌日になっていた場合、C1にA1の日付かつB1の時間+24時間で表示をしたいです。 例) A1:2012/5/1 16:18:34 B2:2012/5/2 1:14:15 C2:2012/5/1 25:14:15 AとBの差は最大で15時間程度です。 よろしくおねがいします。
174 :
153 :2012/06/26(火) 23:10:09.61
>>168 それはおかしい。改行されてるんじゃないか
Workbooks(hyou).Worksheets("sheet1").Range("c2")
だけではエラーが起きるはず。onerror resume nextとかやってんなら別だけど
つか.copyの後は.pasteと書くほうが見やすい気がする。
>>170 http://www.dotup.org/uploda/www.dotup.org3134912.xls vba作ってやったぞ
ボタン押せば自動的に全部出る
>>171 気持ちはわかるが、相手はゆとりだ。ゆとりはこういう生き物なんだと思う。
>>173 ぐぐるわーどは「シリアル値」
C1=IF(INT(B1)>=INT(A1)+1,INT(A1)+((B1)-INT(B1))+1,"nanika")
timeとかdateとかあるけど、簡単に言うとint()にすると日付のみのデータになる。
逆に(B1)-INT(B1)で時間のみのデータになる
"nanika"は一日以上差がついてない場合。A1でもB1でも好きに入れればイイ
>>174 あなたがネ申ですか。
TIMEとかHOURにこだわってて、INTするなんて発想ぜんぜんありませんでした。
ぶっちゃけ、目的の表示にはなりませんでしたが活路が見えたのでマジ感謝です。
にちゃんねるが初めて人生の役に立ちました。
条件が足りてなくてすいません、"nanika"の部分はB1でした。
176 :
170 :2012/06/26(火) 23:36:46.77
>>174 先生ありがとうございます。
スルーされると思ったのに、即レスで感動しました。
ところで、visual basicを勉強すれば、作って頂いたようなコードが書けるのでしょうか?
おすすめの本はありますか?
甘えるない・・・ ゆとりだからと許せるほどこっちも人間できちゃいないさァ 被った迷惑の分はキッチリ償ってもらうぜ それが嫌ならもう二度と出てきなさんな
>>173 =TEXT(A1,"yyyy/m/d ")&TEXT(A2-INT(A1),"[h]:mm:ss")
でいいんじゃないの?
>>174 みたいにシリアル値として算出する方向性では無理だよ
シリアル値で「2012/5/1 25:14:15」的な表示が出来るならわざわざ計算する必要も無いからね
なので、シリアル値ではなく文字列として値を返す式を組まないと目的は達せない
179 :
153 :2012/06/26(火) 23:53:00.37
>>175 間違ってたかな、まぁいいや
>>176 本は知らん。多分役に立たない。
最初は「マクロの記録」を使って、それを改変するって感じで
自分でコードを書くのが一番いい。
それか今のコードを読むとイイ。ちょっとしんどいけどな。実線が一番身につく。
ある程度できるようになれば「office田中」をググってみるといいと思う
初心者にはわかりにくいページだけど。
>>178 すまんかった
ああ、そうか、25時か。よく見てなかった。
さて、訂正するかと思ったら
>>178 が完璧すぎて涙目。
181 :
名無しさん@そうだ選挙にいこう :2012/06/27(水) 00:00:33.21
>>179 ご親切にありがとう。
薄謝をさしあげたいぐらいだ。
もしブログがあって楽天アフィリエイトを貼ってたら、
そこから購入しますよw
>>181 39-
でももってないや、残念
まぁそこそこ覚えたらここで回答者にでもなっておくれ
183 :
147 :2012/06/27(水) 00:13:03.87
>>149 ありがとうございます。ループとか条件分岐をしっかり勉強します。
>>171 画像付きで、
>>81 でも細かく説明したのに
説明不足だとか、そんな表はいらないとか、釣りだとか、
月後半部分のデータをみせてないのも絶妙とか
バカ丸出しの己を哀れだと思うがよろし
別の意味でゆとりだなw
経過時間の表示[h]:mm:ss なんて初めて知ったわ
187 :
名無しさん@そうだ選挙にいこう :2012/06/27(水) 11:48:40.61
質問しておきながら遅くなりすみません。
(言い訳ですが娘が熱を出し仕事場を離れてしまったので)
1 OSの種類 .】 Windows7 HomePremium
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
シフトを作っています。
A列にWEEKDAY関数を使用して、“1(日)”のように表示させています。
そこでB列に、日曜日ならAさん・月曜日と水曜日はBさんのように、曜日に対応した名前を入力する方法があれば教えてください。
IF関数とかを見てみたのですが、上手くできませんでした。
お手数をおかけしますが、よろしくお願いいたします。
>>136 別表作ってvlookupを使う。
もしくはCHOOSE()
C1を参照しているとして
=CHOOSE(WEEKDAY(C1),"aさn","bさn","cさn","dさn","eさn","fさn","gさn")
もしくはまとめてしまっても
=TEXT(C1,"d(aaa)")&CHOOSE(WEEKDAY(C1),"aさn","bさn","cさn","dさn","eさn","fさn","gさn")
申し訳ありませんが もう少し詳しく説明して頂けないでしょうか?
不勉強で すみません よろしくお願いいたします
>>187 不勉強はどっちでもいいんだけど、
元のファイルがよくわからない
A列の数式と書式設定が知りたい
189 :
名無しさん@そうだ選挙にいこう :2012/06/27(水) 12:38:59.26
>>188 A1に 2012(年)
D1に 7(月)
A3に =DATE(A1,D1,1)
A4に =A3+1
表示形式は d(aaa)です
新しい月を作成する場合 年月を入力して
A列に 日(曜) B列に自動で曜日に対応する氏名が出れば助かります
>>189 どこかに
日 | Aさん
月 | Bさん
火 | Cさん
水 | Bさん
: :
土 | Cさん
という対応表を作り
B3に、=VLOOKUP(TEXT(A3,"aaa"),対応表の絶対参照,2,FALSE)
191 :
名無しさん@そうだ選挙にいこう :2012/06/27(水) 14:34:28.82
>>190 対応表の作り方 検索したのですが よくわかりません
また 対応表の絶対参照とは 作成した対応表のセル番号を入れればいいのでしょうか?
とりあえずvlookupを使えるまで練習するんだ
193 :
名無しさん@そうだ選挙にいこう :2012/06/27(水) 14:46:56.81
189です 対応表の作り方 =IF(A1=日,"○○","")(A1=月,"○○","")(A1=火,"○○","") では ダメですよね
194 :
名無しさん@そうだ選挙にいこう :2012/06/27(水) 14:58:24.85
189です 仕事で外に行かないといけない時間になりました また あす ご教授いただければ幸いです よろしくお願いいたします
>>193 別にいいけど、vlookupは無茶苦茶便利なので絶対に覚えておいたほうがいいと思う
ちなみに書くなら↓こんな感じ
=IF(A3=1,"○○","")&(A3=2,"○○","")&(A3=3,"○○","")
>>171 なんで俺のせいなの?
おバカさんでも分かるように、元のデータとマクロ実行後の図を用意したし、
質問のやりかたも完璧だったし、必要と感じた質問には答えたのに。
「計画と実績を書いた表があります」と文章に書き、わざわざ図まで用意しておいたのに、
「あぁ、コレもしかして二行で1セットなのか」とか書いてくるDQNもいたな。
「じゃぁーお前は、今までどこを見てたんだよ(プ 」って途中で書きたくなったけど
俺はオトナなので我慢してたけどね。
最後までグチ一つ言わずに我慢するのが大人 最初から我慢できない奴も、途中で我慢できなくなっちゃう奴も子供
>>196 気に入らない書き込みはスルーを推奨スルー
>>196 なろほど、あなたはゆとりではなくオトナだったのですね!失礼いたしました!
オトナの方はそんなつまらないことでは反論しないので勘違いしてしまいました
>>196 件のリンクが張られた書込みはおまえにアンカーが引いてあるわけだが?
であるのにおまえのせいじゃないと?
ほら調子に乗るからすぐにブーメランされる今の気持ちはどうだ?
この書込みすらもおまえのせいで書かれているんだが?
これが他の人の迷惑になってないと言えるのか?
おまえさえ黙っていればみんな迷惑しないんだよわかったら黙ってろハゲ
202 :
名無しさん@そうだ選挙にいこう :2012/06/28(木) 14:13:59.81
187〜195 の件です 仕事場に居れる時間が短いので とびとびですみません シート1に目当てのシフト表を シート2のA1に =IF(Sheet1!A3=1,"○○","")&(Sheet1!A3=2,"○○","")&(Sheet1!A3=3,"○○","")&(Sheet1!A3=4,"○○","")&(Sheet1!A3=5,"○○","")&(Sheet1!A3=6,"○○","") &(Sheet1!A3=7,"○○","") ・・・を 入力したのですが エラーが出ます すみません 説明して頂いた内容 取り違えているのでしょうか?
203 :
名無しさん@そうだ選挙にいこう :2012/06/28(木) 14:44:09.06
202 の続きです シート1の B3には =VLOOKUP(TEXT(A3,"aaa"),Sheet2!A1,2,FALSE)と入れました
>>202 冗談か冷やかしか、>195が書いた意図はわからないが、
その回答は根本的に間違ってる
Ifで書くなら
=If(Sheet1!A3=1,"○○",If(Sheet1!A3=2,"△△",If(Sheet1!A3=3,"□□","")))
見たいな感じにIfを入れ子で使う。
(ここでは3重だけど実際には7重にする)
でも、Chooseのほうがよりシンプルに書ける
これの問題例2を参考に、曜日の変わりに人名を選ぶようにすればOK
http://www.eurus.dti.ne.jp/yoneyama/Excel/kansu/choose.htm さらにいうとVlookup覚えたほうがさらに良いと思われる。
てか、さんざんヒント貰ってるんだから少しはぐぐったらどうだい?
205 :
名無しさん@そうだ選挙にいこう :2012/06/28(木) 14:54:34.40
>204 ありがとうございます Vlookupの解説HP いくつも見たのですが 入れ子がよく理解できなくて・・・ 時間がなくて焦ってたものですから すみません もう1度 時間をかけてゆっくり理解できるまで 読んでみます
COUNTIFについて質問です。 SUMIFSのように条件を複数指定してカウントさせたいのですが、どうすれば可能でしょうか?
COUNTIFSじゃね?
>>208 ( ; ゜Д゜)マジですか!
ウチのEXCEL本は古いのか…
載ってませんorz
SUMIFSと同じ条件式ですか?
2007だか2010からしか使えない
>>209 ぐぐれば出てくる
>>210 SUMIFSもCOUNTIFSも2007からの関数だから
SUMIFSが使える環境ならCOUNTIFSも使える
わかりました。 ありがとうございました。
>>200 166のリンクをクリックするとどうなるの?
それで被害が出たなら、批難すべきは166のカキコをしたヤツだろ?
166に触れないのは、書いたのがお前さんだからか。
余談ですが俺はまだ27歳なので、お前さんのようにハゲていません。
残念でした。
これ以上池沼を相手にしないでほしい 頼む
VBEのコードの表示色ですけどもっと色を増やせないのかな? 背景を濃い緑にしたいのに明るすぎる。お勧めの設定変更はありますか?
なんかしつこい人ですね。
>>213 今更だけど、実際
>>57 の質問内容は普通に最初の画像と説明だけで十分理解できたけどね。
>>73 >>74 >>75 >>76 >>77 >>78 で頭の悪い回答者が続いたのは確かだと思う。
でも動作確認までしてないが見た感じ
>>79 >>80 で正解。もし動かないとしてもコードを
読んで考えれば自分のコードで何がダメだったかわかるはず。
それを何も考えずにコピペしただけなのか、「うごきませんので正解でないです」
とりあえず自力で考える気が無さすぎなのと態度悪すぎなのは
>>57 に非があると思うが、
それぐらいは理解できんか?
たぶんあなたはヤフー知恵袋とかのほうが合ってると思う。
>>216 知的障害者ってさ、どんな説得力のある文章を書いても意味ないのよ
だから
>>214 なのよ
頼むわ
>>213 リンク先だけが問題だと思ってるのか?
被害が出たらその責任は全部おまえだよ
ハゲだって文字通りの禿げっていう意味じゃないことも知らないのかハゲ
これだから池沼白痴野郎は困るんだよ
迷惑だからいい加減黙っててくれないか!
スルーできない馬鹿
スルーできない馬鹿がうざいから
>>213 は黙れよ・・・マジ迷惑だぞ
馬鹿と馬鹿が争ってらプゲラw
E F G H I J K L M N O P Q R S 1 2 3 4 5 4月 5月 6月 6 7 入荷 確定 不足 使用 残量 入荷 確定 不足 使用 残量 入荷 確定 不足 使用 残量 8 9 このような氷河あって、8行目以下にデータが入っています。 B列とC列はタイトル列になっており、不足の欄にマイナスの値があったら シート"不足一覧"に書き出していますが、マイナスの値がないときは 書き出さないようにするにはどうすればいいですか? Sub 不足一覧に書き出す() Sheets("過不足").Select 最右端 = Range("XFD5").End(xlToLeft).Column 最下行 = Range("B1048576").End(xlUp).Row 月 = StrConv(Format(Date, "m"), vbWide) & "月" If 月 = "4月" Then 列 = "G": 対象 = 5 * 1 - 2 ElseIf 月 = "5月" Then 列 = "L": 対象 = 5 * 2 - 2 ElseIf 月 = "6月" Then 列 = "Q": 対象 = 5 * 3 - 2 ElseIf 月 = "7月" Then 列 = "V": 対象 = 5 * 4 - 2 ElseIf 月 = "8月" Then 列 = "AA": 対象 = 5 * 5 - 2
ElseIf 月 = "9月" Then 列 = "AF": 対象 = 5 * 6 - 2 ElseIf 月 = "10月" Then 列 = "AKB": 対象 = 5 * 7 - 2 ElseIf 月 = "11月" Then 列 = "AP": 対象 = 5 * 8 - 2 ElseIf 月 = "12月" Then 列 = "AU": 対象 = 5 * 9 - 2 ElseIf 月 = "1月" Then 列 = "AZ": 対象 = 5 * 10 - 2 ElseIf 月 = "2月" Then 列 = "BE": 対象 = 5 * 11 - 2 ElseIf 月 = "3月" Then 列 = "BJ": 対象 = 5 * 12 - 2 End If Sheets("不足一覧").Select Columns("A:C").Delete Shift:=xlToLeft Sheets("過不足").Select Range("E7:BL7").AutoFilter Range("$E$7:$BL$" & 最下行).AutoFilter Field:=対象, Criteria1:="<0" Range("B7:C" & 最下行).Copy Destination:=Sheets("不足一覧").Range("A1") Sheets("過不足").Select Range(列 & "7:" & 列 & 最下行).Copy Destination:=Sheets("不足一覧").Range("C1") Range("E7:BL7").AutoFilter End Sub
test
225 :
名無しさん@そうだ選挙にいこう :2012/06/29(金) 09:05:18.92
>>207 ありがとうございました!!
しっかり頑張って理解したいと思います
お手数おかけしました
>>222 別のマクロを用意して、ifで分岐、callする。何月まで続くか分からんが後はテキトーにテキトーな範囲をコピーしておいて
Sub a()
For Each b In Range("g:g")
If b.Value < 0 Then
Call 不足一覧に書き出す
Exit Sub
End If
Next
For Each b In Range("l:l")
If b.Value < 0 Then
Call 不足一覧に書き出す
Exit Sub
End If
Next
End Sub
すごい初心者質問ですがおねがいします。 表を作っているのですが、、、 例えば、1行目のA、B、Cに名前、住所、TELLという項目を作っておいて 100行目までスクロールしたときに1行目の項目が見れるようにしたい。 1行目だけ、スクロールしても画面セルの一番上に表示させるやりかたがあったとおもうんですけど なんて名前だったかも忘れてしまいました。 キーワードだけ教えてください。あとはぐぐります。 よろしくお願いします。
ウィンドウ枠の固定
ウィンドウ枠の固定
>>229 これ複乳か?
反応の遅さや回答が出てても答える辺り、かなり似てる
>>231 どっちでもいいけどゆとりの相手は本当にやめて欲しい
>>231 さん
お願いですからこの辺で抑えてください
どちらがおかしいかは彼以外みんな判ってます。
2007でグラフのデータの質問ですが グラフのデータを作るときに条件に合わないところは空白にしています。 条件に合わない空白のセルに""やNa()を入れているのですが、 グラフのデータ選択の空白セルの表示を空白を選択しても線が繋がってしまいます。 線が切れるようにするのはどうしたらよいでしょうか?
>>236 円グラフなのかロウソク足なのかわからんが、
仮に折れ線グラフだとすると、グラフの性質上 線が切れることはないのではないかと思う。
棒グラフとかバブルチャートとか使ってみれば?
何を表現するんだか知らないけどw
>>233 あぁ確かにおまえは惨めだな
死ねばいいのに、いや、死ね
>>237 AとBのデータを折れ線グラフで比較したいんです
Aデータ 30,70, =if(A1=1,"",2) ,70,80,50
Bデータ 60,70, ,70,80,50
A1=1だとして
関数を入れて空白を作るif(A1=1,,2)やif(A1=1,"",2)やif(A1=1,Na(),2)だと
Aデータの70と70の間が0扱いなのかグラフが0に下降してしまいます。
Bデータの関数も何も入っていない空白なら60から70、70から50のグラフに分かれるので
Bのグラフを作りたいけど、0扱いにならない空白は作れませんか?
>>239 グラフが途切れるのは、セルに何も入ってない時
=na() は端の時限定で可能
"" 空白でも無理
>239 VBAでがんばるしか無いが、うーん 微妙
無理そうですか VBA使って空白だけ何も入れないデータを作り直すぐらいしか想像できないけど手間がかかりそう ""やNa()以外に空白になって0扱いになるのがあればいいのに
>>239 ' でも無理
逆は可能(入力してないところを0扱い)
後は非表示にすればいいんだけど、AB両方消える
VBAしかねーな
後、VBAでやるなら表まるごとコピーしてそこを参照したグラフを作るといいぞ 元の表いじると面倒だからな
""にすれば簡単にいけそうでよかった。 アドバイスありがとうございました。
質問なのですが、あるソフトで、数値の羅列があって、その羅列に エクセルに表として取り入れたいのですが、そのソフト内でコピーペーストが できません。 スクリーンショットなどで、映像をとって、その数値部分だけ抜き出して エクセルにコピーなど出来れば良いのですが、そういうようなソフトとか 機能とかあるものってどなたがご存知でしょうか?
OCRソフトで文字に変換
リストボックスやリストビュー、グリッド系コントロールなら WinAPI駆使して取得できる場合もあるけどね 最初作るのに手間は掛かるが、作ってしまえば マクロ実行から取り込み完了まで一瞬で終るので 1回きりではなく何度も行う予定なら利が大きい 画像を介さないから誤認識の可能性も0だし とはいえExcelの分野ではなく、汎用プログラムの分野なので VBAで出来るとはいえ、ここではスレ違いの扱いになるから 自分で勉強してもらわにゃならんけど、今後、毎日数回 それを何年も行うとかなら、勉強時間を浪して尚、利があると思うよ
>>250 ホントにそれでいいの!?
最近のはだいぶマトモになったとはいえ、OCRなんて完璧じゃないからな。
自分で手打ちしたほうがマシなレベル。
> OCRなんて完璧じゃない その通りだが、 > 自分で手打ちしたほうがマシなレベル は日本語、特に漢字の場合や、手書き文字の場合ね 数字はもちろん英数字でも、機械フォントなら手打ちするよりは OCRで取り込んで目視確認だけ行うのが一番効率良い 数字の機械フォントで、紙スキャンではなくゴミや傾きもない スクリーンショットからなら、正解率99%は確実に超える
254 :
248 :2012/06/30(土) 14:47:41.44
>>251 一応OCRソフトはもっていたりするんですが、それでもいくつかの
ソフトを起動して、経由してというと少し時間がかかります。
VBAで出来るそのWinAPIというのはどういうところで勉強すれば
良いんでしょうか?
割とよく行う作業になるので、出来るのであれば。
少しググルとWin32APIというのが出てきますが、これは同じことなのでしょうか?
この辺のページを勉強すれば良いですか?
>>254 対象ソフトが解らないと、この手が使えるかどうかは解らないが
とりあえずウインドウハンドルとかウインドウメッセージ(LB_GETTEXT等)について勉強してみよう
これ以上はスレ違いなのでお引き取りを
256 :
248 :2012/06/30(土) 15:43:17.39
>>255 ありがとうございました。OCRを使いながら、そちらも勉強してみます
Excel2003ですが セルの値の数値の最後に必ず改行コードが混入していてセルがふくれあがってるデーターがあるのですが 置換処理等でなんとか取り除くことは出来ないのでしょうか?
>>257 改行コードは置換の入力ボックスに入力出来ない感じです、、これはどうした物か・・
・VBAで改行削除 ・関数式で改行削除したものを別なところに描き出し、値の貼り付けで戻す ・CSVに出力して、正規表現置換してから取り込む ・コピーしてテキストエディタに貼り付けて正規表現置換してからExcelに戻す いろいろあるわな
>>258 [Ctrl]+[J]で改行コードが入力できる
261 :
257 :2012/06/30(土) 17:51:09.04
>>259 >>260 >[Ctrl]+[J]で改行コードが入力できる
大成功でした!ありがとうございました!!\(^o^)/仕事オワタw
>>257 =LEFT(A1,LEN(A1)-1)
で値貼り付け・・・と思ったら終わっちゃってたか、おめでとう
今まで普通に使えていたVBAのプロシージャが急に不良をおこすようになり パソコンを再起動したら、普通に使えました。 長く立ち上げておいて、何度もプロシージャ実行したりしたら、こういうことって 起こってくることは、あるものなんでしょうか?
Office2003、2007、2010を入れてます。 フォルダからファイルをWクリックして開くとき、2007で開いてしまいます。 xlsは2003で、xlsxとかxlsmは2010で開くにはどうすればいいですか?
>>265 それができないから聞いてるんですが?
xlsを関連付けしようと\Office11\Excel.exeを指定しても2007になってしまいます。
確か弄るのはcommandだけじゃダメなはず つーか関連付けはWindowsの機能だからスレ違いでしょ
>>266 試したんなら、試したって先に書いておけばいいのに…
265さんカワイソす
出た!スレ違いと書いて逃げちゃうヤツ
とヤジを飛ばすだけで答えることは出来ない奴のカッコ悪さについてw
Excel2003ですが
文字列として認識されている数字を数値に変換する事を試みていますが
莫大な数のセルを変換したいのですが
http://support.microsoft.com/kb/181298/ja の方法 6 : [区切り位置] を使用するは成功しましたが
列が大量に存在しこの方法では時間がいくらあっても足りません。
そこで方法 5の: VBA
Sub Enter_Values()
For Each xCell In Selection
xCell.Value = xCell.Value
Next xCell
End Sub
をやってみましたが何もおこらないのですが、、、
何か他に良い方法がありましたら宜しくお願い致します。
>>271 そのコードだと、「'123」などで文字列扱いになっている数字は数値化出来るけど
表示形式が文字列になっているセルは数字のままになる
なので
xCell.Value = xCell.Value
の前に
xCell.NumberFormatLocal = "G/標準"
を入れてやれ
別に"G/標準"ではなく"0;[赤]-0;0"とかの表示形式でもいいけどな
それでダメなら具体的にどういう値が入ってるのか書いてくれ
>>269 これ以上恥を晒すな
>>272 部分的にうまくいきました!
"G/標準"の箇所を色々と変えてみて試して見ます。
ありがとうございました。
>>271 今はどういう理由で文字列になってるの?
>>274 CSVに書き出しましてテキストエディターで開きますと
直らない箇所はこのような表記になていました
","43.8719
","-66.1342
","17.0875
","99.9111
",,
これはやっかいそうですね。。
>>275 275
補足ですが改行の箇所に何かコードがありまして、置換などをかけてみましたがこのコードはExcelでは認識されていないようです。
>>275 いや、そうじゃなくて何をして文字列として認識されてるのかってことです
できkればファイルごと(その数字の部分意外は消して)アップしてくれるとありがたい
改行コードにCRとLFとCRLFの3種類があって、 excelが標準で処理する改行コードはCRLF だったかと
LFCRというのもあるから4種類
確かLfが要素内改行(セル内改行)で Crから始まるもの(CrとCrLf)が改レコード(下段セルへ移動)じゃなかったか? LfCrはこのスレ的(Excel上、Excelから出力されるファイル)には無いよ vbLf&vbCrとかで意図的に作れば話は別だけど
ファーストサーバの件、仕事柄いろいろ調べていくと「サイボウズASP提供の場合、 標準で付いているデータエクスポートがkillされ、 ファーストサーバのバックアップサービスのみ使える」ということを知ってすんげえ頭抱えている。 ユーザはどうしようもなかったってことじゃないか…
282 :
名無しさん@そうだ選挙にいこう :2012/07/01(日) 11:55:04.78
Excel2010で検索・置換ってどこから出すんでしょうか? 友人に聞かれたんですが、2010持ってないのでわかりません Ctrl+Fで出ないみたいですがそうなんでしょうか?
いつも、Ctrl+Fで出しているから、メニュー(リボンって、言うんだっけ)からだと不明。 ごめん。
Ctrl+Hじゃないのか ミリなのか
>>282 俺は2010だが、ふつーにCtrl+F or Ctrl+H で出るよ
セルの編集中に押してるとか??
ちなみにリボンからのアクセスは、デフォで開いてるホームってタブの一番右側に検索あるね(今日はじめて知ったけど)
セル内の置換をしようとしていたのかもね
すいません、キングソフトのSpreadsheet2012なんですが 使い方は同じだと聞いたのでお願いします。 家計簿を作ろうと思って 2011年5月 2011年6月 って左のセルに打ち込んで行きました で、家計簿の書き込みがセルが打ち込んだところまで来たので 延長しようと思って 書き込んだセルの右下のフィルハンドを引っ張ってきたのですが なぜか、 2013年6月 2013年6月って 同じ月しか表示されません。 2013年7月 2013年8月 ってフィルハンドを引っ張って表示されるようになるのは どうしたら良いのでしょうか?
マイクロソフトと同じなら、フィルターで抽出したままオートフィルしているとか?
>>288 2011年5月
2011年6月
を選択してからオートフィル
少し仕様が違うみたいね。エクセルでもバージョンに酔ってはその辺違ったりするけど
>>290 おお!!
ありがとうございます。
すごい簡単なことが分かりませんでした。
何故だろうって、ずっと悩んでいました。
並び替えについての質問です、よろしくおねがいします。 セル範囲 A1から Z100 の2600セルに100セル数値データ(12とか452とか)が点在しています。(他は空白です) 範囲が広く確認が困難な状態です。 AA列に小さい順に並び替えたいのですがどのようにすればいいですか? VBAも可です。すみませんがどうか教えてください。お願いします。
>>292 AA列にこの式を入れる
=SMALL($A$1:$Z$100,ROW())
>>293 ありがとうございます。
こんなに簡単にできるとは思いもしませんでした。
勉強になりました。
毎回リストの特定行だけを一瞬で非表示にするにはどういった選択肢があるのでしょうか? 行の位置が毎回変わるのでセル番地指定も出来ず、 セルの色や文字もマチマチなんですが
297 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 00:42:58.80
久しぶりに感動した
>>296 vbaなら
Sub Macro1()
hoge = InputBox("")
Cells.Find(What:=hoge).Activate
ro = Selection.Row
Rows(ro & ":" & ro).Select
Selection.EntireRow.Hidden = True
End Sub
300 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 00:58:21.04
全米が泣いた
ちょっとコード酷すぎね?
普通にセル表示チェック列増やせば済むだろハゲ
>>299 のコードを
Sub Macro1()
hoge = InputBox("")
Cells.Find(What:=hoge).EntireRow.Hidden = True
End Sub
と書くと、余計に時間かかるのか?
動作は全く同じだぞ
つーかどっちにしろ
>>299 の動作じゃ質問者は満足してないだろうけど
>>296 普通にオートフィルタが使える形の表ならオートフィルタ、
日程表みたいな横に伸びた表でオートフィルタが使えないならマクロだね。
たとえば一列目A列にA店・B店・小計・C店・D店・小計・合計と並んだ項目のうち小計だけ非表示にするマクロと再表示用マクロ
Sub 小計非表示()
Dim i As Long
With ActiveSheet
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(i, 1).Value = "小計" Then
.Rows(i).Hidden = True
End If
Next
End With
End Sub
Sub 全行再表示()
ActiveSheet.Rows.Hidden = False
End Sub
【1 OSの種類 .】 Windows7 64bit 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ(多少の経験はあります) 【4 VBAでの回答の可否】 否(やり方まで教えてくださるなら可) シート(設定)に、 A 北海道 B 青森 C 秋田 ・ ・ (以下略)があります。 シート(入力)に、「A」を入力しただけで北海道を表示することは可能でしょうか?(別セルに表示されてもいいです) また、実際は「あ」と入力しただけで北海道と表示が出ればうれしいのですが、日本語でも大丈夫でしょうか。 北海道…が数百に及ぶので、ドロップダウンリストは使いにくいです。よろしくお願いします。
【1 OSの種類 .】 Windowsvista 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 A B 1 あ 10 2 い 20 3 う 30 4 あ 40 VLOOKUPで下から検索しB4セルにある40と表示させたく調べていたのですが excel2003だとINDEX関数は範囲を指定しないと配列は仕様上不可能みたいなので 下のような数式だとエラーになってしまいます =INDEX(B:B,MAX(INDEX((A:A="あ")*ROW(A:A),))) excel2003でエラーを出さずにB4の値を出す数式 もしくはVLOOKUPを下から検索する方法はありませんか?
310 :
309 :2012/07/03(火) 12:27:34.03
セルの指定範囲は列でお願いします
>>309 =SUMPRODUCT(MAX((A1:A65535="a")*(B1:B65535)))
か配列数式
=MAX(IF(A1:A65535="a",B1:B65535))
ちなみにA1:A65535をA:Aと記述することは、使用上できない
312 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 20:47:07.60
Excel 2003でメールアドレス入力時に 自動でハイパーリンクになる設定を解除する方法を教えてください。
>>312 ちょっと上の方に書いたぜ
自動で解除ではなく自動でハイパーリンクしない方法だが
314 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 21:03:23.51
2010ですが、取り消し線のアイコンをホームタブに追加できますか?
315 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 21:04:41.72
>>313 この一つ一つやる
>>142 はみつけたんですけど、
設定でずっとやる方法どこにありますか?
今日はじめてきたので、どこの場所に書いてあるか
おしえてください。
316 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 21:04:42.97
>>312 そのセルを長押し、、ポインタの形が変わったらクリック、「ハイパーリンクの削除」でできないかな。
317 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 21:06:35.83
>>316 レスありがとです。
設定でずっとしておく方法はないでしょうか?
>>314 2003ならツーッルバーのユーザー設定でナントカカントカ
320 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 21:27:44.40
321 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 23:15:50.72
>>319 2010って書いてあるだろ?
バカか?
>>321 いや2010もってないので知らん
よければお前が回答してくれ
2007でVBAのコメントだけを削除したいのですが 一括削除と置き換えのように選択して消せるとよいのですが便利な方法はどんなのがあるでしょうか?
324 :
名無しさん@そうだ選挙にいこう :2012/07/03(火) 23:48:38.58
みんなエクセルのバージョン何つかってるの?
97、2000、2002、2003、2007
>>324 97はバグが多く、2007-2010はリボンがうざい
よって2000-2003が多いと思う
328 :
名無しさん@そうだ選挙にいこう :2012/07/04(水) 01:11:46.72
○○■△△△△△△△△△■×××■☆☆☆☆ ■=半角スペース ○は1〜2文字 △は10文字以内 ×は2〜3文字 ☆は3〜4文字 ここから△のみだけを取り出す関数が(A1セルの場合) =TRIM(MID(A1,3,FIND(" ",A1,4)-3)) なんですが、どうしてこの関数で抜き出せるのでしょうか? ぐぐってみたけどイマイチ仕組みが理解出来ないです。 今後も色々適用できそうなので、なぜこの関数で取り出せるのか解説出来る人いますか? 一応わかる範囲は、TRIMで前方の空白を無くし、FIND関数で半角スペースの位置を返してる。 そこからがイマイチわかりません
揚げ足を取るようで申し訳ないが、その条件だと正しく取得できないケースも起こりうるよ。 具体的には○が1文字で△が0文字だと、その式は×××を返してしまう。 (△は10文字以内ってことは0文字もあり得るよね?) ○が2文字あれば△が0文字のときには空の文字列が返るし、 ○が1文字でも△が1文字以上あればきちんと△△△△△△△△△を返すから ほとんど問題ないといえば言えるんだけどね。 つまり、△は1〜10文字という条件ならこの式は問題ない。 (もちろん、最初からそういう意図でしょ?) ということで本題、まず FIND(" ",A1,4)-3 だけど、 これはA1の4文字目以降にある最初の半角スペース(=△と×の間の■)の 文字列先頭からの位置を求めて、そこから3を引いてる。 先頭の3文字は○○■または○■△だから、 これで△△△△△△△△△■または△△△△△△△△△の文字数が分かる。 次に、それを踏まえて MID(A1,3,FIND(" ",A1,4)-3) を見てみると、 A1の3文字目から上で求めた文字数分の文字列を取得している 先頭3文字が○○■なら、■△△△△△△△△△が取得され、 ○■△なら△△△△△△△△△が取得される。 で、最後にTrimで■△△△△△△△△△の先頭の■をはずしてお終い (○■△のときにはこのTrimは何もしない
>>329 ごめん、付け忘れたw
△は1〜10文字なんだ。
なるほど、とてもわかりやすい解説ありがとう!
俺でも理解出来たよ!
メニューのツールからワークシート分析で数式の検証ってのもあるが 数式自体の説明は出てこないから数式は学んでないと理解できんのよね
>>332 すごいな
俺は即クラシックUI入れた
たぶん今だに使えない
>>328 =left(mid(a1,find(" ",a1)+1,len(a1)-find(" ",a1)),find(" ",mid(a1,find(" ",a1)+1,len(a1)-find(" ",a1)))-1)
作業セルを使えばすっきりするだろうけど、、、
【1 OSの種類 .】 Windowsvista 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 少しですが 【4 VBAでの回答の可否】 可 C列に値を入力したときC列の値が前に入力したものであれば 前に入力したC列と同じ行のD列の値を返すというマクロを作ろうとしていましたが次のコードだと何も反応しません どこを変えればいいのでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Debug.Print WorksheetFunction.VLookup(Cells(Target.Row, "C"), Range("C:D"), 2, False) Application.EnableEvents = True End Sub
>>336 「何も反応しません」の意味がよくわかんないけど、
「Worksheet_Changeイベントが発生しない」って意味なら
「Application.EnableEvents = False」の状態になってるんじゃない?
>>337 の言う通りだと思う。
補足すると、あのコードじゃエラー出まくりなはずだから
そこでデバッグせず中断すると、EnableEventsをFalseにしたままの状態になる
それ以前に、エラーが出なくても説明とコードの動作が違っているようだけどなw
【1 OSの種類 .】 Windows7
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
データ分析のt検定: 等分散を仮定した2標本による検定について質問があります。
以下のアンケートデータを利用して、全七社中、特定二社(3番と4番)のコンビニ評価に対して
差の検定を行ったのですが、手順によってまったく異なった結果が表示されます。
例えば、調査項目をフィルタして、1.店舗名項目を基準とし、昇順に並べ替え
2.データから特定二社の評価のみを抽出 のパターンと、それを順序逆にしたパターンです。
後者のパターンは行番号が飛び飛びになり、観測数を正しく認識できないので
異なる分析結果になるという原因はわかっているのですが
本来、手順が違えど、異なる結果が表示される仕様はあってはならないと思うのですが、
どうなんでしょうか?また、2つのパターンでも結果を同じくできる設定はないのでしょうか?
アンケートデータ
http://ichigo-up.com/cgi/up2/oiu/xs33159.xls
Q列に、='C:\綾瀬はるか\[ホタルノヒカリ.xlsx]ぶちょお'!$N$104 って式が入ってて、数字が表示されているのね。 この式の最後にある104を取り出して、P列に書くにはどうすればいいの? 104の部分は、1〜3000くらいまであるんだよ〜ん。
VBA使って良いなら instrrevで$を拾えば出来るよ
>>336 テストも何もしてないけどとりあえず見て気になったのは、VLookupの中のCellsで"C"っておかしいんちゃう?
CellsならCells(行番号,列番号)、Cells(Target.Row,3)じゃね?
別におかしくないよ。 第二引数は「行番号」ではなく「行を表す値」だし、「3」の方が動作が僅かに高速だし 変数に入れて算術演算(+1など)で処理中に対象列を移動させたい場合などに便利だが 「"C"」の方が明示性が上と特色が違うので、用途によって使い分ければ良い。 何でもかんでも列文字で指定するのも初心者的だが、「Cellsの列は数値指定じゃなきゃおかしい」と 固執するのも同レベルの初心者だと思う。
345 :
343 :2012/07/04(水) 22:51:58.47
>344 ごめんなさい初めて知りました。べつに固執ってわけじゃないけど、知らんかった。
341ですけど〜 誰か教えて♥ 明日、会社で見るから今日は寝るね
>>349 もっと項目数を減らして欲しい
多すぎて問題点を追いかけるのがしんどい
>>349 あなたが実施した結果もアップしてくれ
提供できるものは全部提供してくれ
>>340 >観測数を正しく認識できないので異なる分析結果になるという原因はわかっている
>本来、手順が違えど、異なる結果が表示される仕様はあってはならない
エクセルがそういうソフトなんだから仕方ない
そういう仕様はあってはならない、と思うならDB等、別ソフト使えば良い。誰もエクセルを使うことを強制していない。
>2つのパターンでも結果を同じくできる設定はないのでしょうか?
知らない。
VBAでマクロを作ってしまうほうが早い気もするが、無理なら仕方ない。
>>352 厳密には抽出とエクセルのフィルターは主旨が違うね。
DBの抽出とは違って、フィルターは条件の合う行だけ”表示”し、他を”見せなくする”機能で、テーブル自体は元のまま。
お祭りの提灯を畳んだときのイメージ。
で、それに対する式を作っても、元のテーブルに対して式の範囲を設定するから、フィルターが関係無くなってしまう。
例えば、
>>352 の2番目の方法で、3の店舗に対するレジ待ちの列の平均の式は、フィルターしてもAVERAGE(L2:L74)となってフィルターで隠したつもりの部分も含んだので3.205479
つづき また、フィルターしたテーブルに対して並び替えしても、見えている部分だけが順番が変わるだけ。 最初に並び替えすれば、式の範囲が目的の部分になるので、フィルター関係無しに正しい集計するけど、 フィルターしてから並び替えしても、式の範囲は元のテーブルに対する見えている部分の一番上から下までの隠れている部分も含んだ数字を対象としてしまう。 これを回避するには、フィルターではなく正しい意味での抽出をして、そのクエリー結果に対して集計するべきだけど そうするには、フィルターした表をコピペして新シートに貼って、店舗3,4だけになったそのテーブルで集計するか Excelのデータベースクエリ機能で引っ張ってくるか、Access等のDB使うしか無いのかな・・・ ちなみに、平均とか標準偏差とか分散ぐらいの簡単なことなら、ピボットテーブル使うのが楽。 ちゃんと抽出して集計表を作ってくれる。
356 :
354 :2012/07/05(木) 03:32:33.04
ここまで書いて、340がデータ分析ツール使っていたことに気づいた。 これでも一緒の話なんだけど、フィルターで隠しても元テーブルは変わらないから、分析ツールの範囲を指定する部分が隠れている部分を含んでしまう。 フィルターは抽出じゃなくて、特定行を見せる(隠す)もので、元テーブルは影響されないと意識すれば分かると思う。
SUMとSUBTOTALみたいなのが全部の関数にあればいいんだけどね
範囲を選択するときに配列数式とかな
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 指定した値になるまで条件を繰り返す関数ってありますか? A1=(-1000) A2=2 上記の条件だった場合 A1≧0になるまでA2の値を足し続けるって式を組みたいのですが… if(A1>=0,?,,)で詰まってます。
>>359 循環参照を回避するように作れないだろうか?
>>359 文字列ならREPTがあるけど、計算は無理
ってか最後の0にあまり足すだけでいいんじゃないの
ExcelでWordの差込み印刷したいのですが、良い方法ありますか? 大量のデータがあるので、何とか差込み印刷を実現したいのですが、スキルが足りなくてできません。 マクロでも良いので、その場合はヒントをください。 お願いします。
説明足らずでした。 Excelのデータを別のExcelで作ったフォーマットにデータを差込みたいと思っています。
364 :
名無しさん@そうだ選挙にいこう :2012/07/05(木) 13:21:15.16
みんなExcelは独学? それとも勉強するためにはやはり参考書なんかを買ったりした? ネットでVBAを1から学べるお奨めのサイトとかある?
>>364 VBAを勉強するのが目的ならMSDNライブラリでリファレンスマニュアルを読めばいい
VBAで何かやりたいことがあるならやりたいことをキーワードにググればいい
>>362 具体例のブックをどっかにアップしてみて
>>360 >>361 A1,A2,A3〜と続くセルで在庫の推移を見たかったんですが難しそうですね。
余りを足すと言うよりは、A1≧0になるまで、
A2発注を繰り返したかったんですよね。
ありがとうございます、ちょっと他の方法考えてみます。
>>367 発注回数なら=-A1/A2でいいんじゃないの
>>364 オフィス田中
レスキュー花子ちゃん
このふたつはよく見る気がする
仕事の業務で使う連絡先一覧をエクセルで作ろうと思っています。 Aの時、Bの時、Cの時、 これら3つの条件を満たすカテゴリはDの連絡先を表示する みたいな機能ってエクセルにありますか? プルダウンで3つぐらい選ぶカテゴリを作って、そこから連絡先を抽出したいんですか
>>370 Excelの機能を使って実現することはできる
>>371 どんなふうにやれば出来ますか?
今まではオートフィルタでやってたんですが、
3つの条件を満たした時だけじゃなく
1つでもその条件に当てはまれば、その連絡先を表示する
みたいにしたいのですが。
>>372 データ構造がわからないので答えようがない
どんな風にデータが並んでるか書くかサンプルのブックをどっかにアップして
>>374 このサンプルは2つの条件で部署を出しているけど、本当は3つの条件ってことかな?
あと、□□病院が商談で来た時にどこつなぐとか、全部の条件考えるとこれだけでも4x4だけど、それ全部考えなくていいの?
>>375 全部考えたいです。どんな風にすれば結果に条件付け出来るか知りたいです。
検索値がAS列にあって、その値に合致したN列のセルの値を得たい。 vlookupだとダメっぽい。 どうする?
>>376 連絡先毎に優先条件(クレーム)と復号条件(**社 and 商談)を別々に設定
まず優先条件への一致を調べ、一致があればそれを表示
優先条件での一致が無ければ復号条件での一致を調べる
>>377 INDEXとMATCH
379 :
名無しさん@そうだ選挙にいこう :2012/07/05(木) 21:49:21.39
>>378 すいません。オートフィルタでどう設定すればいいですか?
>>379 ▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。
381 :
375 :2012/07/05(木) 22:29:39.67
>>376 ベタな方法だけど、下記のような表にして、オートフィルターすることで答えになってる?
A列とB列指定すればC列に案内先部署が出るイメージ。
○○商事から健康診断の問い合わせとか、意味ないの含めて全部のパターン作らなきゃいけないけど。
お客様 問い合せ 部署名
○○商事 商談訪問 総務部
○○商事 アポイン 受付
○○商事 健康診断 受付
○○商事 クレーム お客様相談室
XX会社 商談訪問 営業
XX会社 アポイン 営業
XX会社 健康診断 受付
XX会社 クレーム お客様相談室
□□病院 商談訪問 総務部
□□病院 アポイン 受付
□□病院 健康診断 受付
□□病院 クレーム お客様相談室
その他 商談訪問 営業
その他 アポイン 営業
その他 健康診断 総務部
その他 クレーム お客様相談室
>>374 とりあえず条件に規則性が無い時点で全手動は避けられないと思う。
ある程度条件付けるとして、
客先をグループ分けして、グループに無い場合はその他として扱う。
問い合わせ種類・客グループに対して連絡先を決める。
とするならそれなりに出来るんちゃうかな。
作業セルにVLOOKUPで客グループを表示して、連絡先は客タイプ・問い合わせ種類を結合してINDEX
http://ozcircle.net/_uploader/103950967
383 :
名無しさん@そうだ選挙にいこう :2012/07/06(金) 09:32:01.83
【1 OSの種類 .】 WindowsXP SP3 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 VBAのユーザフォームにマルチページを設定してます。 マルチページのタブ(Page)を切替えると、シートを移動するようにしたいのですが どのようにすればいいでしょうか?宜しくお願いします。 例) MultiPage1 page1 タブをクリックすると ○○シートへ切替(移動) page2 △△シートへ切替(移動) ○○・△△=シート名です
>>368 |
\ __ /
_ (m) _ピコーン
|ミ|
/ `´ \
('A`)
ノヽノヽ
くく
目からウロコが落ちた。
ありがとうございます・・・・・
>>383 Private Sub MultiPage1_Change()
Select Case MultiPage1.Value
Case 0:
Worksheets("○○").Activate
Case 1:
Worksheets("△△").Activate
End Select
End Sub
>>385 切り替わらないです。
Multipage1のPage1のタブをクリックすると、○○のシートに移動(切替え)という形にしたいのですが。
>>386 2003だと動いてるんだけどな・・・
タブをクリックしたときにステップ実行したら MultiPage1.Value の値はどうなってるの?
>>385 >>387 ありがとうございます。お手数をおかけします
フォーム(UserForm)
Page5 Page6 を
>>386 のように切替えたいのですが、
Page5,6ともに名前(Caption?)を(Page5)基礎1・(Page6)基礎2としています。
indexは4,5になっています。
連投スミマセン(m´・ω・`)m 解決いたしました。。Caceの設定を間違えておりました ありがとうございます<(_ _)>
390 :
名無しさん@そうだ選挙にいこう :2012/07/06(金) 15:22:27.58
Excelでテキストファイルから文字を検索して、その行だけを取り込むなんてことできますか?
>>390 テキストファイルをopen、一行ごとに読んで
その行にinstrで文字列検索、文字列があれば処理という流れと思う
もっと楽な方法があったらゴメン
>>390 ちなみにVBAね
エクセルはドラッグアンドドロップすれば一行ごとに分かれるから検索すればいいんじゃないかな
>>390 テキストファイルを開いてオートフィルタで文字が含まれていない行だけ抽出して行削除すればいい
394 :
名無しさん@そうだ選挙にいこう :2012/07/07(土) 00:41:54.29
フォームのコンボボックスを使って、シートの倍率操作する方法ありますか。 コンボボックスの選択に20%とか50%などの値があって、選択するとシートがその倍率になる的な感じです
>>394 フォームならChange、コントロールならClickイベントで
Zoomを変更してやれば良いだけじゃね?
397 :
名無しさん@そうだ選挙にいこう :2012/07/07(土) 01:25:10.92
>>395 記録してコードみたけど、それをどうコンボボックスに使えばいいの?
>>396 詳しく><
詳しくって何? コード全部掛けよってことか?
399 :
名無しさん@そうだ選挙にいこう :2012/07/07(土) 01:45:45.62
>>398 開発→挿入→フォームコントロール→コンボボックスを設置するでしょ
そこからマクロの登録だけで良いの?
コンボボックス1チェンジ() ActiveWindow.Zoom = コンボボックス1.value endsub こんな感じw
>>399 Private Sub UserForm_Initialize()
ComboBox1.AddItem "20%"
ComboBox1.AddItem "50%"
End Sub
Private Sub ComboBox1_Change()
ActiveWindow.Zoom = Replace(ComboBox1.Text, "%", "")
End Sub
ユーザーフォームじゃないだろw
>>401 標準モジュールにそのコード書いてもコンボボックスにマクロ登録できないよ><
>>403 そんなレベルなら基礎から学習してこい。ここが学習スレになっちまうだろ。
ワークシートにボタン、フォームにコンボボックス Private Sub CommandButton1_Click() With UserForm1.ComboBox1 .AddItem 100 .AddItem 150 .AddItem 50 End With UserForm1.Show End Sub Private Sub ComboBox1_Change() ActiveWindow.Zoom = ComboBox1.Value End Sub
また
>>401 のお馬鹿さんか、それとも別の勘違い君か?
@フォームコントロール
Aコントロールツール(ActiveXコントロール)
Bユーザーフォーム
この違いについて解ってるか?
質問者が使ってるのは@、
>>401 はB、
>>406 はAとB
まぁこの場合、用途的には@よりA使った方が適切とは言えるが、Bの出番は無い
なのに
>>401 も
>>406 も、何故かBに固執してるw
>>407 普通に間違えた、スマソ
ちなみに401は406ではない
ボタンとコンボボックスdえこんなかんじか Private Sub commandbutton1_Click() With ComboBox1 .AddItem 100 .AddItem 150 .AddItem 50 End With End Sub Private Sub ComboBox1_Change() ActiveWindow.Zoom = ComboBox1.Value End Sub
410 :
370 :2012/07/07(土) 22:52:23.30
>>382 なるほど。ありがとうございます。
あと、ファイルをエクセルからhtml形式に変換して
オートフィルターかけることはできますか?(出来ればプルダウンで選択したい)
>>410 変換しただけでは、オートフィルタ機能は働かないが
htmlにおいてオートフィルタ相当の機能を実装することは出来る
但し完全にスレ違いなので、ここでは聞かないでね
412 :
名無しさん@そうだ選挙にいこう :2012/07/08(日) 00:50:40.67
セルの連動について質問です。 例えばシート1のA1とシート2のA1に入力規則で同じリストを作ります。 そして、シート1のA1でリストを選択すれば、シート2のA1も同じものが選択されている。 同様にシート2でA1を変更すれば、シート1のA1も変更する。 こういう事はExcelできますか?
414 :
名無しさん@そうだ選挙にいこう :2012/07/08(日) 00:59:43.29
学ぶ力には三つの条件があります。
第一は自分自身に対する不全感。
自分は非力で、無知で、まだまだ多くのものが欠けている。
だからこの欠如を埋めなくてはならない、という飢餓感を持つこと。
第二は、その欠如を埋めてくれる「メンター(先達)」を探し当てられる能力です。
メンターは先生でもお母さんでも、ネットの中の無名の人でもいい。
生涯にわたる師ではなく、ただある場所から別の場所に案内してくれるだけの
「渡し守」のような人でもいいのです。
自分を一歩先に連れて行ってくれる人は全て大切なメンターです。
第三が、素直な気持ち。
メンターを「教える気にさせる」力です。オープンマインドと言ってもいいし、
もっと平たく「愛嬌(あいきょう)」と言ってもいい。
「学ぶ姿勢」のある人は、何よりも素直です。
つまらない先入観を持たないから、生半可なリアリズムで好奇心を閉ざさない。
素直な人に聞かれると、こちらもつい真剣になる。知っている限りのことを、
知らないことまでも、教えてあげたいという気分になる。そういうものです。
以上、この三つの条件をまとめると、
「学びたいことがあります。教えてください。お願いします」
という文になります。これが「マジックワード」です。
これをさらっと口に出せる人はどこまでも成長することができる。
この言葉を惜しむ人は学ぶことができないのです。
学ぶ力には年齢も社会的地位も関係がありません。
>>411 さんも、早く学ぶ力を身に付けてください。
最後、レス番ズレてて台無しだw とコピペにマジレスしてみる
418 :
名無しさん@そうだ選挙にいこう :2012/07/08(日) 14:26:52.30
>>418 四半期決算の小計みたいな漢字?
=IF(ISERROR(VLOOKUP(1203,A:B,2,0)),"",VLOOKUP(1203,A:B,2,0))&IF(ISERROR(VLOOKUP(1206,A:B,2,0)),"",VLOOKUP(1206,A:B,2,0))&IF(ISERROR(VLOOKUP(1209,A:B,2,0)),"",VLOOKUP(1209,A:B,2,0))&IF(ISERROR(VLOOKUP(1212,A:B,2,0)),"",VLOOKUP(1212,A:B,2,0))
作業列使ったほうがいい気がする。シートの中身が分からんのでナントモ言えんけDpo
>>419 おおお!
ありがとうございます!
作業列つくるとはどのような感じになるのでしょうか?
シートの中身は現在値の値は書いていただいたような式から算出されていますがその他はとくにありません
現在値の位置を移動させても問題ないです
初心者ですいません
面倒ならスルーしてください
>>418 > 1203or1206or1209or1212
に該当するものが複数ある場合、そのうちのどれに対応した値を
返すかという情報は、どこから得れば良いの?
>>421 のように手入力で良いの?
それとも複数該当の場合は最大値とか、なんか条件あるの?
>>422 常に3限月分が自動で取得できるます
今月だと1207、1208、1209
来月になると1208、1209、1210
再来月だと1209、1210、1211
こんな感じでなので該当する数字がかぶることはないんです
出来れば手入力より限月が切り替わるごとに自動で出来ればと思ったんです
>>421 =(IF(MOD(RIGHT(A2,2)*1,3)=0,A2,"")&IF(MOD(RIGHT(A3,2)*1,3)=0,A3,"")&IF(MOD(RIGHT(A4,2)*1,3)=0,A4,""))*1
D3はこんな感じ?
もっと何とかできそうだけど
>>421 まとめるとコレでいいか
=VLOOKUP((IF(MOD(RIGHT(A2,2)*1,3)=0,A2,"")&IF(MOD(RIGHT(A3,2)*1,3)=0,A3,"")&IF(MOD(RIGHT(A4,2)*1,3)=0,A4,""))*1,A:B,2,0)
>>423 これでいいんじゃね?
=OFFSET(A2,3-(MOD(VALUE(RIGHT(A2,2))-1,3)+1),1)
あぁ、そうか。一個見てoffsetでいいのかw
【1 OSの種類 .】 Win7 【2 Excelのバージョン 】 Excel2002 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 セルに文字列を入力してエンターキーを押す前の状態で 文字列の一文字目にカーソルを移したいのですが {HOME}キーを押すと、セルが確定されてしまいます マウスと矢印キー以外の方法で、文字列のトップにカーソルを移す方法はありますか? ※同様に、確定されたセルをF2キーで編集→{HOME}キー でもカーソルは移動できずにセルが確定されてしまいます 同じようにマウスと矢印キー以外の方法で カーソル移動できませんか?
2003だと普通に F2、HOME でどちらの場合も 編集状態のままセル内先頭に移動出来るけど 2002(ってOfficeXPだよね)も使ってたけど同じ操作で問題なかったはず あとは F2、Ctrl+← でも一発で先頭に移動出来る
サンクスです なぜかこちらだと セル確定前に{HOME}キー→カーソルが先頭に行かずにセルが確定されてしまいますね・・
432 :
336 :2012/07/08(日) 19:54:52.93
やりたいことは前回と同じですがやり方を変えてみました ですがこちらですとオブジェクトが必要ですとエラーが出ます すみませんどこが間違っているか教えてもらえないでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim i As Long For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row If Target.Value = Cells(i, 3) Then Cells(i, 3).Offset(0, 1).Copy Target.Value.Offset(0, 1) Next i Application.EnableEvents = True End Sub
433 :
名無しさん@そうだ選挙にいこう :2012/07/08(日) 20:14:16.09
A1列B1列にデータが入っていたとして、 D1列にA1をB1で引いた値を表示させます。 そして、後でC1にデータ追加したときに自動的に一つ列をあけてE1に B1をC1で引いた値表示させる場合どういった関数が疲れるのでしょうか。 A1:6 B1:5 C1:なし D1:B1-A1=1 ↓ A1:6 B1:5 C1:4 D1:なし E1:C1-B1=1 C1に値が入ったときにD1のデータをE1に移し、自動的に1列空列にする方法があれば教えてください。 お願いします。
>>432 答だけ教えるのは簡単だけど、こんな初歩的なミスで毎度質問来られちゃたまらないので
最低限のコード確認は覚えてくれ
If Target.Value = Cells(i, 3) Then Cells(i, 3).Offset(0, 1).Copy Target.Value.Offset(0, 1)
↓↓↓↓↓
Dim Cell1 As Range, Cell2 As Range, Value1 As Variant, Cell3 As Range
If Target.Value = Cells(i, 3) Then
Set Cell1 = Cells(i, 3)
Set Cell2 = Cell1.Offset(0, 1)
Value1 = Target.Value
Set Cell3 = Value1.Offset(0, 1)
Cell1.Copy Cell3
End If
処理は連続して書かずに、一つ一つ変数に代入して、エラーの詳細な位置や返った値、
操作の結果などを確認する
これをやるだけで、この手の初歩的なミスはほぼ原因が見つかる
>>433 VBA使えば出来る
しかし君は、
>>1 に必ず掛けと書いてある環境などの情報を伏せているので
おいらも具体的なコードは伏せる
情報後出しも
>>1 に書かれている通り受け付けない
436 :
名無しさん@そうだ選挙にいこう :2012/07/08(日) 20:31:20.47
ちゃんと読まずに質問してしまって、 まだ間に合うのであればよろしくお願いします。 【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel207 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可
437 :
名無しさん@そうだ選挙にいこう :2012/07/08(日) 20:32:27.27
>>433 数式じゃなくて値を入れたいのよね?
かなり適当だけどこんな感じ
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$C$1" Then
If Target.Value <> "" Then
Target.Offset(, 1) = ""
Target.Offset(, 2) = Target.Offset(, -1) - Target
End If
End If
End Sub
439 :
432 :2012/07/08(日) 21:29:27.15
>>434 ありがとうございます
おかげさまでエラーの場所でわかったので考えてみます
440 :
名無しさん@そうだ選挙にいこう :2012/07/09(月) 06:09:08.25
>>439 ありがとうございます。
はやり関数のみじゃできないんですね><
試してみます。
441 :
名無しさん@そうだ選挙にいこう :2012/07/09(月) 12:36:10.75
【1 OSの種類 .】 Win7 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 Excelで仕入と在庫管理をしようと、色々調べながら関数?ってのを入力して作成中です。 仕入シートから在庫シートに商品情報や仕入値を飛ばすところまで出来ました。 在庫シートで売上を入れて、損益や利益率を表示することも出来きました。 次に考えているのは、在庫シート内で売上済み在庫と売上になっていない在庫を区別したいなーと。 ちなみに在庫確認や棚卸等に使う予定です。 自分なりに考えてみたんだけど、在庫シートで売上情報を入力し、例えば「売上日」のセルに日付が入力されると自動的に任意の文字列を表示させ(▲マーク)、 ▲を使ってソートや並べ替えをして売上になっていない在庫を表示管理するとかいうのはExcelで出来ますか? 調べるにもどう検索していいかわからず… もしくは、在庫シートから更に売上シートを作り、コピペで移動させつつ在庫管理をする方法が普通ですかね? 複数人で使うので極力コピペを減らして、人為的なミスが無いようにはしたいです。 また、[仕入]→[在庫]→[売上]→[在庫と売上後の区別]でこういう方法のがいいんじゃね?ってのあれば教えてもらいたいです。 少々のことでもコツコツ勉強しますのでお願いします。
>>442 レストン
1点1点仕入商品が毎回違い、仕入先情報も毎回違うので都度登録しなければならず、中々フリーソフトでは難しそうです。
業務の都合上、その都度の仕入先と仕入商品情報を紐付けて管理しなければならないので、作成中のデータベースは管理IDを1行毎に付けるようにしています。
また何かあったら教えて下さい。
>>443 442は「Excel 在庫管理」でググれって言ってるのであって
「フリーソフト 在庫管理」でググれって言ってるわけじゃないぞ
>>443 Excelの質問じゃなくて、在庫管理の仕方を教えてください、って質問になってないか?
もうちょっと具体的に何をどうしたいのか書いてくれないと曖昧すぎてサッパリわからない
>>444 あ、そういうことかw
ごめんなさい
>>445 一番の目的ははAのセルに何か入力されたら、Bのセルに任意の文字列を表示させるってことでした
その任意の文字列を並び替えることで、在庫品と売却済みのデータを区別して管理しようと思ってました
と思いきや、フィルタってので空白のセルとか、空白以外のセルとかで表示を絞れるんですね
これで売上になってない在庫の把握もできそうです
棚卸もこれでできそうですね
Sub 全部開く() wb1 = "榊原郁恵.xls" wb2 = "石野真子.xlsx" wb3 = "菊池桃子.xls" wb4 = "南野陽子.xlsx" wb5 = "柏原芳恵.xls" For i = 1 To 5 Workbooks.Open Filename:="D:\DATA\" & "wb" & i Next End Sub 5つのファイルを全部開きたいんだけど・・・
コンパイルエラーになってもた・・・ Sub 全部開く() wb(0) = "榊原郁恵.xls" wb(1) = "石野真子.xls" wb(2) = "菊池桃子.xls" wb(3) = "南野陽子.xls" wb(4) = "柏原芳恵.xls" For i = 0 To 4 Workbooks.Open Filename:="D:\DATA\" & wb(i) Next End Sub
なんだか加齢臭のする質問だなw 人選が50代っぽいぞ
∧_∧ ( ´∀`) オマイモナー ( ) | | | (_ )_)
Dim wb(4) を追加するだけでいいんじゃないかい?
453 :
名無しさん@そうだ選挙にいこう :2012/07/10(火) 09:01:28.20
>>433 単純にこんな感じじゃいけないの?
D1: =IF(C1="",A1-B1,"")
E1: =IF(C1<>"",C1-B1,"")
> A1:6 B1:5 C1:なし D1:B1-A1=1 > ↓ > A1:6 B1:5 C1:4 D1:なし E1:C1-B1=1 そもそもこの数式がおかしい
ctrlキー押しながらマウスのスクロールまわすとエクセルシート全体のサイズ変更ができて自分にあったサイズにできるけど、、、 これを200シート分、VBAでサイズ変更したいと思うのですが可能でしょうか? 解る方いたらおしえてください。よろしくお願いします。
可能だけど、その200シートってのが何なのか解らないと具体的には何も言えない ブック内のシート数が200でその全部が対象って事なのか シートを10持つブックが20個で計200シートなのか 500個のシートを持つブック内の、特定の200シートが対象なのか、、、
>>455 こんな感じ
Sub Macro1()
For Each a In Worksheets
a.Select
ActiveWindow.Zoom = 50
Next
End Sub
をいをいw 200シートも切り替えるんだから、処理中ScreenUpdatingは切ろうぜ
あ、そだね 最近全然やってないな PCの西濃がいいからついつい甘えてしまう
すべてのシートだったらシートを全て選択して好きな表示の倍率にすればいいじゃん(´・ω・`)
Sub シート保存() Dim wb1 As String, ws1 As String, ws2 As String Dim fdr As String, f_name As String wb1 = "徳丸純子.xls" ws1 = "石坂智子" ws2 = "山口弘美" fdr = "仙道敦子" f_name = "江戸真樹.xls" Workbooks(wb1).Worksheets(Array(ws1, ws2)).Copy Worksheets(ws1).Select Cells.Copy Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Range("A1").Select Columns("H:M").Delete Shift:=xlToLeft Worksheets(ws2).Select Cells.Copy Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Range("A1").Select Columns("H:M").Delete Shift:=xlToLeft ActiveWorkbook.SaveAs "c:\" & fdr & "\" & f_name ActiveWorkbook.Close End Sub 2回繰り返してる箇所があるので、もうちょっと効率よくしたい・・・
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003か最近の 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 配列数式で、例えば5と書いたセルを参照して配列{1,2,3,4,5}を返すのは普通の関数でできますか?
現在お弁当代の表を作成してます。 A260円 B320円でこの様に計算しました。 countif(B$2:BF$32,”A”)*260+countif(B$2:BF$32,”B”)*320 という形で関数を打ち込みました。 これだと1人分の計算はできたのですが、全員分の計算ができなくて困っています。 合計のセルを下にひっぱっても関数がおかしくなってしまうので、分かる方いましたらよろしくおねがいします。
>>466 どんなデータがあってどんな風に集計したいのかサッパリわからん
この6行で第三者に伝わると思ってるの?
>>466 31行*56列ってことは、横(列)方向に人、縦(行)方向に日付か?
普通逆じゃないの?
まあそれはいいとして、一人分の計算は、「B$2:BF$32」ではなく
「B$2:B$32」でフィルコピーじゃないの?
で、全員分はその数式入れた範囲をSUMで合計するだけでは?
>>456 ,457,458,459,460
ありがとうございました。
おかげで合計でました。 ありがとうございました。
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 ブックには入力シート・一覧表・参照用の3つのシートがあり VBAを使用して「入力シートのデータを一覧表・参照用にコピペして、シートの複製・入力シートの指定セルの値をデリートする」という動作を実行するようにしています。 そこからVBAで「一覧表に30件の情報が入力されていて、かつ特定のセルに入力が行われた場合にエラーメッセージを表示する」 という動作を登録したいのですが、どのようにコード入力を行えばいいのでしょうか いろいろ調べた結果、下記のようなコードでいいのかなと思ったのですが コードとして入力するにもどうすればいいか分かりませんでした。 よろしくお願いします。 If = ""一覧表の30列目に値が入っていない状態"" And ""入力シートB2に入力を行う"" Then MsgBox "新規ブックを作成してください",vbCritical End End If
>>471 入力シートのB2に入力を行う というイベントで当該マクロを動かすことになります。
Private Sub Worksheet_Change(ByVal Target As Range)
if (Target.Address = "$B$2") and ""一覧表の30列目に値が入っていない状態"" then
MsgBox "新規ブックを作成してください",vbCritical
End If
End
を入力シートのマクロに書いてみてください。""一覧表の30列目に値が入っていない状態""部分の
記述は詳細がわからないので割愛します。(動作チェックはしてません。あしからず)
474 :
473 :2012/07/10(火) 23:51:24.36
473 の自己レス End If の次の行は End Sub でした。
>>471 If 一覧表.UsedRange.Rows.Count >= 30 And 入力シート.Range("B2").Value <> Empty Then
かな?
一覧表の1行目にタイトルがあり、データが2行目からとかなら「 >= 30」ではなく「 >= 31」ね
UsedRange.Rows.CountはCells(1, 1).End(xlDown).Rowとかでもいけるはず
つーかさ、入力シートから一覧表にデータ移す場合に、一覧表の末尾データの位置情報が必要になるから
一覧表のデータが何件あるかを取得する方法は分かってるはずじゃないの?
>>473 さっそくご回答いただきありがとうございます。
動作確認は上手く行かなかったのですが考え方が少し分かったのでいろいろ調べてみます。
ありがとうございます。
私のつたない説明ではうまく伝わらなかったのではないかと思うので使用中のコードを載せますので
もし「一覧表の30列目に値が入っていない状態」が分かる方がいらっしゃいましたら教えていただければと思います。
よろしくお願いします。
ActiveSheet.Copy Before:=Sheets(3)
ActiveSheet.Name = Range("C1").Text
With ThisWorkbook.Sheets("一覧表")
.Activate
.Range("A999").End(xlUp).Select
r = Selection.Row + 1
.Range("a" & r) = B1
.Range("b" & r) = B2
.Range("c" & r) = B3
.Range("d" & r) = B5
.Range("e" & r) = D11
.Range("f" & r) = H2
.Range("g" & r) = H3
End With
Sheets(1).Select
Range("クリア").Select
Selection.ClearContents
>>471 ▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
・3 VBAコードを貼る場合は、部分的に伏せたり省略したりせずに全て貼りましょう。何レス使っても構いません。
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。
ついでに指摘すると、
If = ""一覧表の30列目に値が入っていない状態"" And ""入力シートB2に入力を行う"" Then
じゃなくて
If = ""一覧表の30行目に値が入っている状態"" And ""入力シートB2に入力を行う"" Then
なんじゃないのか?
もし本当に列の問題なら、調べるべきはRowsじゃなくてColumnsだよ
478 :
名無しさん@そうだ選挙にいこう :2012/07/11(水) 15:42:50.87
>>476 Sheets("一覧表") のレンジに代入してる、B1とか、D11とかって何の変数?
唐突に出現するけど。
もしかしてアドレスか?
479 :
名無しさん@そうだ選挙にいこう :2012/07/11(水) 15:46:05.84
>>476 .Range("A999").End(xlUp).Select
もやりたい事はわかるが、なんだかなあって感じ
480 :
名無しさん@そうだ選挙にいこう :2012/07/11(水) 17:13:56.74
>>479 Selectしてることについて言ってんの?
列をチェックするはずなのに行をチェックしてることについて言ってんの?
RangeがA999などという中途半端なところのこと言ってんの?
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 つかえません 【4 VBAでの回答の可否】 可 VBAでコマンドボタン設置してシート1からシート2へコピペさせてます ペースト時に、シート2で画面の横スクロールが起きるのですが、スクロールさせずに作業させることは可能ですか? 方法があればおしえてください
>>481 です
すいません
Application.ScreenUpdating = False
で解決しました
483 :
462 :2012/07/11(水) 20:20:22.52
誰か〜
>>483 二回ぐらいならその辺りでいいんじゃないの
そんな程度で効率求めるほうが非効率
100回繰り返してるとかなら手伝うけど
>>476 コードが汚い?なんでもいいんじゃない
Sub a()
Sheets("sheet1").Select
Dim x
x = 0
For Each aaa In Range("30:30")
If aaa.Value <> "" Then
MsgBox (aaa.Address)
x = 1
Exit For
End If
Next
End Sub
486 :
471 :2012/07/11(水) 22:41:15.80
皆様ご回答ありがとうございました。 まだ動作確認までできていないのですが、助言を元にもう少し頑張ってみます。 まだ勉強し始めたばかりなので、おかしなところもたくさんあったかと思います。 皆様のコメントも参考にさせていただきます。 B2等は変数と言っていいのかはわかりませんが名前をつけて省略していました ルールも守れず申し訳ありませんでした。
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 数値の入ったセルをセルの書式設定で文字列として設定すると、普通の数字は文字列となって セルの左上にエラーの緑三角が表示されるはずですが、csvファイルから読み込んだデータで 同じ操作をするとエラー表示の無い文字列になってしまいます。 こうなると同じ「123」という数字でも別データとして扱われるらしくVLOOKUP等での検索に引っかからなくなってしまいます。 csv由来のデータをなんとか汎用性のあるデータに書き換えたいので、よろしくご教授お願いします。
>>487 エラーチェックオプションで「文字列として保存されている数値」のチェックを外すとエラーにならなくなるよ
>>487 うーん、よくわかんない
第四引数を1かTRUEにしてない?
CSVはこんな感じでつくってみたけど、読み込んだら全て数値扱いだった
1,a
2,xs
3,d
"4",f
5,g
6,h
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 基礎程度 【4 VBAでの回答の可否】 可 セルが小さくて、入力規則のリストの矢印も小さく表示されて不便なので 表示のズーム以外で矢印を大きくする方法はありますか?
入力規則のリストではなく フォームのコンボボックスなら 同様のことを実現できて▼も大きくできる
Excel2010で、挿入→図形→テキストボックスで文字を書くとき、 全角はMS Pゴシック、半角はcalibriになってます。 半角もデフォルトでMS Pゴシックにするにはどうすればいいですか?
>>492 開発リボンにある、フォームコントロールのコンボボックスのことですか?
496 :
名無しさん@そうだ選挙にいこう :2012/07/13(金) 21:37:55.94
【1 OSの種類 .】 Windows XP Pro 【2 Excelのバージョン 】 Excel 2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 行 A B C D 1 日付 出発時メーター 到着時メーター 走行距離 2 7/11 10,000km 10,100km 100km 3 7/12 10,100km 10,500km 400km 4 7/13 10,500km 10,700km 200km 5 未入力 未入力 未入力 未入力 という表で、5行目以降 日付、出発時メーター、到着時メーターと入力したところで、走行距離(100km, 400km, 200km)が自動で入力されるようにしたいのですが、 どういった方法が良いでしょうか? 毎回、D5に=C5-B5、D6に=C6-B6、D7に=C7-B7と入力していくのは面倒です。 また、D2に=C2-B2と入力してオートフィル機能を使ってドラッグするのもどうなのかなと思います。 もっと良い方法があれば教えていただきたいです。 よろしくお願いします。
>>496 IF関数使って、入力が無いときは""を
入力が有れば計算結果を返す式を組めばいい
>>496 いい感覚を持ってるな。あなたにはアクセスのほうが合うかもしれない
ただここはエクセルスレなので、エクセル前提として回答すると
・先に31日分まで数式を入力(恐らく一般的な使い方)
・vbaのワークシートチェンジ(正直、やり過ぎと思うが)
になると思う
VBAは以下をsheet1に記述
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Target.Offset(0, 1).Value = Target.Value - Target.Offset(0, -1).Value
End If
If Target.Column = 1 Then
Target.Offset(0, 2).Value = Target.Offset(0, 1).Value - Target.Value
End If
End Sub
間違ってるぞ
>>496 オートフィルより出発時メーターを毎回入力するのもどうなのかなと思います。
>>498 このような場合は列方向でOffset使うのは好ましくない。
可読性が著しく落ちるし、イベント発生列によって式を変えなくちゃならないからね。
Target.Rowを変数に取って、Cells(行変数, 列番号)とするか
With Target.EntireRowで、.Cells(列番号)とする方が、可読性も汎用性も上がる。
>>500 運送会社のトラック走行距離なら、車検や修理、自社整備倉庫との往復などで
前回到着時メーターと、次回出発時メーターが同じだとは限らないのでは?
深いな
いやあ、それほどでも
504 :
496 :2012/07/14(土) 05:25:50.58
レスありがとうございます。 家に帰ってから試してみたいと思います。
505 :
名無しさん@そうだ選挙にいこう :2012/07/14(土) 14:59:08.16
>>496 てか、どう考えてもD列オートフィルが一番早いじゃん
Excel2010で、挿入→図形→テキストボックスで文字を書くとき、 全角はMS Pゴシック、半角はcalibriになってます。 半角もデフォルトでMS Pゴシックにするにはどうすればいいですか?
エクセル2010で質問です、 セルAに1から100までの数値がそれぞれ入力してあって50以上のセルを赤色に塗りつぶしを、20以下のときは緑色にしたいです。だいぶ前にできていたのですがわすれてしまいました。 すみません、だれか簡単に教えてください。お願いします。
>>506 うちは2003だけど、最初から全角も半角もMS Pゴシックになってる
>>507 条件付書式
このスレで一番使えないヤツ
>>15 2003だと動いたんだけどな
>>319 2003ならツーッルバーのユーザー設定でナントカカントカ
>>387 2003だと動いてるんだけどな・・・
>>430 2003だと普通に F2、HOME でどちらの場合も
編集状態のままセル内先頭に移動出来るけど
>>508 うちは2003だけど、最初から全角も半角もMS Pゴシックになってる
この子、いきなりどうしちゃったの?
511 :
マッチ棒 :2012/07/14(土) 18:41:49.85
エクセルVBAでごりごりに組んだ経理のシステムがあるんですけんど これをもとにビジュアルベーシックでスタンドアロンアプリを作りたい。 表計算などの基礎的な部分からプログラミンが必要なの? うまく変換するしかけとかありますけ
>>511 エクセルVBAでごりごりに組んだ経理のシステムを見てみないと判断できない
どっかにアップして
VisualBasic6.0以前と VisualBasic20023以降とでは全く話が別だしな まずはブックのうpからか
514 :
名無しさん@そうだ選挙にいこう :2012/07/14(土) 19:13:51.95
20023年にもVisualBasicが存在してるのか。
ちょっとした誤変換や入力ミスにもすぐ食い付く奴って・・・
516 :
マッチ棒 :2012/07/14(土) 23:06:13.51
たとえばアクセスだとそういうのやれるでしょ? アクセスなくても単体でうごかせるやつ。
たまにVBAで R1C1 ってのをみるんだけど初心者にわかりやすいようにおしえてくれない? お願いします。
>>509 わぁ、特定すごーい!
>>511 vba基準で見ると、エクセルは膨大なライブラリと見れる
が、うまく組んでいるなら単純にセルの配列と見ることもできる
で、これがわかっているなら変換の可能/不可能、容易/難解、はすぐに理解できる
つまりあなたには相当に難しい作業だと思う
>>517 Rはrow、行。Cはcolumn、列の意味。
R1C1はRow 1行目 Column 1列目の意味。
>>516 微妙なたとえだと思うぞ。アクセスは開発ツールみたいなものだ。
DBエンジンはアクセスを入れなくてもwinOSにすでに入っている。
520 :
名無しさん@そうだ選挙にいこう :2012/07/15(日) 00:49:10.22
【1 OSの種類 .】 Windows 7 64bit 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 webクエリを更新した場合、特定のセル値が変る箇所があって そのセル値が変るたびにChangeイベントでマクロを実行するようにしたいんですが、何か良い方法ありますか。 Changeイベントだと直接数値を変えないと判定されず、webクエリで取り込んだデーターだとセル値が変っても判定されません。 例えばwebクエリを更新した場合、A1とA5は違う数値になります。 それをどうにか認識する方法はないでしょうか
>>520 たとえばどこか使わないセルに前回の値を書き込んでおいて
更新時にその値と比較すればいいんじゃないの。
チェンジイベント限定だと知らんが。
>>520 webクエリを更新ってイベントあったっけ?もしあるなら
huga=hoge.value
webクエリを更新()
piyo=hoge.value
if huga<>piyo then
//syori
endif
で無理なら、ハンドラでぐぐるか。
523 :
名無しさん@そうだ選挙にいこう :2012/07/15(日) 01:04:38.41
>>521 チェンジイベント限定じゃなくても、セル値の値が変るとマクロが自動で実行されるなら何でもいいです。
全て自動にしたいので書き込むのは無しの方向で。
>>522 webクエリの更新じゃなくて特定のセル値の変更で実行したいんです。
webクエリを更新すると、A1やA5が違う値になるので、A1が変更した場合はマクロAが実行され、
A5が変更だった場合はマクロBが実行される的な感じです
Worksheet_Changeイベントで処理すればいいと思うんだけど ダメな理由がよくわからない
525 :
524 :2012/07/15(日) 02:57:45.21
526 :
名無しさん@そうだ選挙にいこう :2012/07/15(日) 03:02:22.22
>>526 Webクエリ更新前に特定のセル値(例えばA1やA5)を退避しておいて
Webクエリの更新をして、退避しておいた値とWebクエリ更新後の値を比較して
差異があればなんらかの処理を行う(例えばマクロAやマクロBを実行)
Excel2010で、挿入→図形→テキストボックスで文字を書くとき、 全角はMS Pゴシック、半角はcalibriになってます。 半角もデフォルトでMS Pゴシックにするにはどうすればいいですか?
マナーもルールも守れない奴には無理だ 目障りだから帰ってくれないか!
>>529 誰に言ってるんだ?
>>528 テキストボックスを作る
テキストボックス内で右クリック→フォントで英数字用フォントと日本語用フォント、その他変えたい所を変える。
OKで閉じる。
テキストボックスの枠線の所で右クリック→既定のテキストボックスに設定を押す。
ためしに新規テキストボックスを作って文字を書いてみる。
これでいけるとおもう。
>>530 たしかその設定の記憶はシート内だけで有効
別シートや新規ブックには引き継がれなかったはずだけど、質問者はそれでもいいのかな
今より便利だからいいやん。
535 :
528 :2012/07/15(日) 13:05:38.09
>>530 532氏のご指摘どおり、デフォルトで設定できません。
>>534 C:\Program Files\Microsoft Office\OFFICE11\XLSTART\Book1.xlsxで保存しましたが、
新たにエクセルを立ち上げると半角はcalibriになってしまいます。
>>535 おそらく、望んでいることを可能にするために
テンプレートという機能が存在してるんじゃなかろか。
テキストボックスのフォントを変更して、既定として使用にしておいて
それをテンプレートで保存する。
新規ブック作成時は、オフィスボタンから、そのテンプレートを選べばいい。
これで良いんじゃない?
多分それ以上は無い
538 :
528 :2012/07/15(日) 18:03:00.40
>>536 新規より、既存のブックを開いてテキストやボタンを
追加するときに必要なんですけどね。
一度つくったものをコピペして使い回ししてますが
毎度のことなのでデフォルト設定ができたらと思い質問しました。
結局、できないようなので諦めます。
俺の2003なら全角も半角もMSゴシックですよ?
既存のはまとめてマクロ流せばいいんでねーの。
マクロの記録でもできるレベルなんだからさっさとやればいいのにな。
「新しいテーマフォントの作成」で行けるんじゃないの。
WorksheetOpenにフォントの設定を仕込んでおくとか
545 :
名無しさん@そうだ選挙にいこう :2012/07/15(日) 23:27:45.19
>>545 最悪の詐欺サイトだな
そんなもの使う必要なし
男は黙って削除依頼 もうしたけど
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 可
http://ll.la/&B6E P列:判定数値 1〜9までの数字が入る
Q列:判定値を任意の桁数で表示したい
表示方法:桁数=N9
N9=2の時、N10=1の位 N11=10の位
N9=3の時、N10=1の位 N11=10の位 N12=100の位
算出するため N列 O列を追加した
N10=ROW()-10
O10=POWER(10,N10)
Q10=SUMPRODUCT(O10:OFFSET(O10,Q$9-1,0),P10:OFFSET(P10,Q$9-1,0))/O10
この方法だと
O列:べき乗に上限があるみたいで
308乗以上になると O列やQ列で#NUM!が帰ってきます
できればVBAを使用せず
表計算の条件式だけで算出したいのですが
どうしたらいいのでしょうか?
よろしくおねがいします
>>550 A列をE列のようにした場合
F列のデータ数が500や1000や2000になっても
G8 G9 G10みたいな感じで任意の桁数の数字が求められるのでしょうか?
ボクの方法だとB列が300個ぐらいで#NUM!が発生しちゃうんですが
どうしたらいいんですかね?
>>549 Q10=SUMPRODUCT(O10:OFFSET(O10,Q$9-1,0),P10:OFFSET(P10,Q$9-1,0))/O10
の式は
Q10=SUMPRODUCT(OFFSET($O$10,0,0,Q$9,1),OFFSET(P10,0,0,Q$9,1))
で良くないか?
>>540 = >548
気づかれてないとでも?w
555 :
名無しさん@そうだ選挙にいこう :2012/07/16(月) 15:10:36.78
Excel2003で作成したファイルをExcel2010で修正し保存する時に2003バージョンで保存したらいろいろ互換性が悪くファイルが重くなった。2003を主に使用するのでExcel2010を2003のバージョンで使用したいができるのですか?
ブックの「2003(形式)」とアプリの「2003(バージョン)」を 区別できるように掛けよ
何言ってんのコイツw
558 :
528 :2012/07/16(月) 19:10:37.89
>>540 デフォルト設定とは、初期設定のことです。
530の方法は初期設定のやり方ではありませんし、
2つ目以降なら今やってるコピペの方が効率がいいです。
既存のブックに、(初期で)テキストボックスやボタンを
追加したときでも半角がMS Pゴシックにできればということです。
>>548 同上
>>558 おそらく
>新規より、既存のブックを開いてテキストやボタンを
>追加するときに必要なんですけどね。
というやり取りの時に、
>新規より、既存のブックを開いて「一つ目の」テキストやボタンを
>追加するときに必要なんですけどね。
と書けば、みんなに理解されたかも知れないね。
みんな じゃなくて、お前(
>>540 = >548)が理解してなかったんだろ?
562 :
540 :2012/07/16(月) 20:44:50.18
何か知らんが同じ考えなだけで同じ人扱いされても、否定するのもめんどくさい。
>>559 で理解できました。
自分なら個人用マクロブックにマクロ組みます。そこまで必要なさそうだけどね 。
PowerShellでExcel起動して設定を変えるという手もあるかな
564 :
548 :2012/07/16(月) 22:20:38.38
何か知らんが同じ考えなだけで同じ人扱いされても、否定するのもめんどくさい。
>>559 で理解できました。
565 :
名無しさん@そうだ選挙にいこう :2012/07/16(月) 22:29:55.51
質問者が「違う」と言ってるのに、>>○○で正解だと繰り返してたのが前にもあったなw
>>565 エスパーの少ない時だと往々にしてなりがち
許せ
>>562 俺なら全ての使用中.xlsファイルに適用するよう、foreachかな
ただそういう状況にまずならないけどね
567 :
マッチ棒 :2012/07/16(月) 22:48:10.81
マクロを録画するボタンでできたマクロって、あとから一覧に出てくるでしょ? けどはじめからVBAエディタで書いたプログラムはマクロ一覧にはいない。 どうしたら一覧から消せますけ
>>567 >けどはじめからVBAエディタで書いたプログラムはマクロ一覧にはいない。
うーん、今sheet1に書き込んでsheet2でalt+F8してみたけどでてきた
その状況を詳しく教えて欲しい。もしくはファイルのアップロードキボンヌ
>>566 foreachって何? ググってもわからん
エクセル2010です。質問がありますよろしくお願いします。 VBAのプログラムの途中からだけ実行して動作確認がしたいです。 長いプログラムを作成中です。途中で何回も動作確認します、 プログラム前半にInputBoxで入力する作業が4つもでてきて確認作業がしずらいです。 ぐぐったらブレークポイントというのがでてきました。 さっそくやってみたのですが最初から実行して途中とまってそこから確認したいところを確認するという感じでした。 結局InputBoxがでてきてしましました。 前にコード表示して選択したところのプログラムを実行して確認するやり方を知っていたのですが、すいぶん前のことで忘れてしまいました。 知ってるかたいたら教えてください。よろしくお願いします。
571だけど、、、 今、データセーブして起動してマクロみたらプログラム名だけ残っててなかみが消えてるんだけど、、、 夜中作業して150行くらいつくった。 データセーブして一服 → あっ!実行確認してなかった。 エクセル起動 → マクロ名クリック → ??? → 全消え。。。 なんなのこれ。もうデータ復活はできないの?
>>571 a = InputBox("")
で10とにゅうりょくしてるなら
a = 10
とかにしておけば良い
>>572 知らん。もう一度保存しても消えてるならエクセルがおかしい。
消えてないなら君が消した。
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 日付に関する質問です。 『12/7/17』という日付のセル内から、『12.7.17』に変換して取り出すにはどうしたら良いでしょうか?
>>574 year、month、dayでがんばってもいいけど
=TEXT(A1,"y.m.d")
>>567 private subと、引数の必要なpublic subは一覧に出ない
引数のないpublic Subは一覧にでる
省略したsubだけのはpublic扱い
578 :
マッチ棒 :2012/07/17(火) 12:01:16.12
>>578 コード見せてもらわないと判別不能
とりあえず
private subならpublic subに書き換え
引数が必要なら呼び出し元から呼び出すしか無い
消したいんだから逆だろ 表示したくないものにPrivateを付ければよろしい 因みに一番上に Option Private Module と書くとPublic宣言してあるものも全てまとめて表示されなくなるよ まとめると、表示されるものが○、表示されないものが×として 標準の場合 ○Sub ○Public Sub ×Private Sub Option Private Moduleを書いた場合 ×Sub ×Public Sub ×Private Sub つまり個別に表示させるものと表示させないものを分けたいならPrivate Sub 全部一括して表示しないようにしたいならOption Private Module
>572と近藤してしまったスマソ
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 SelectionChangeイベントについてなんですが、単一セルだと稼働しますが、セルの結合だと稼働しません。 下記載のようにB3の単一だと起動しますが、C3D3E3と三つのセルを結合した部分を、コードでC3を指定しても稼働しません。 セルの結合でイベント発生させたいときはどうすればいいのでしょうか Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address() = "$B$3" Then MsgBox "このセルには入力しないで!!" End If End Sub
>>582 根本的に間違っている部分
イベントは発生しています
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Address
End Sub
これでイベントが発生している事と、アドレスプロパティで取得できる文字列の内容を確認してみてください。
警告を出したいんだろうけど、セルを結合している時点でC3だけの選択は出来ないですよ。
584 :
583 :2012/07/17(火) 21:40:15.32
ちょっと間違った。ようするにそのB3と同じように、ここには入力しないで!警告を出したいなら
>>583 でアドレスの内容を確認して
B3と同じようにしてみたらいけると思うよ。
>>582 If Target.Address() = "$B$3:$D$3" Then
あ、アドレス間違った。まあ、こんな感じ
>>583 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not (Intersect(Target, Range("C3:E3")) Is Nothing) Then
MsgBox "このセルには入力しないで!!"
End If
End Sub
皆さん回答ありがとうございます。
回答通りできました。
ただ、ぐぐっている間に自分なりに改造して
>>582 の『If Target.』部分を『If ActiveCell.』にしたら
結合セルでも、C3のみの指定でも反応しました。
これはこれで正しい選択の一つなんでしょうか?
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 グラフのX軸のデータを 軸の書式設定の配置の文字列の方向を縦書き半角文字を含むに VBAで変えるにはどうしたらいいでしょうか? X軸のタイトル等の文字方向はすぐに引っかかるけど、データのは引っかかりません 記録で調べてみてもわからないのでおしえてください。 グラフ関係は記録でわからないのが多いですがどこかいいサイトはないですか?
つーかステップ実行してAddressプロパティの値を見たり Debug.Printで確認したりすれば原因も解決方法を一目瞭然で 言語を始める場合はまずデバッグの仕方を覚えないと始まらないんだが VBAではいきなりへんてこコード書くことから始める奴が多いよね 交通ルール学ばずに車の運転始めて、信号に行き当たったら 「信号の赤はどんな意味ですか?赤に向かって突進しろってことですか?」」 とか言ってるのと同レベル
>>591 世の中のVBAのプログラムなんて大体それでなんとかなっちゃうからな
別にそれでいいんじゃねーの
593 :
マッチ棒 :2012/07/18(水) 01:07:47.08
VBA とビジュアルベーシックは同じ意味ですか
>>591 クラスの概念も少しでいいから理解してから書き始めると段違いに覚えやすいんだけどねぇ
俺も昔はステップ実行知らずにmsgbox()書きまくってたな
今考えるとアホすぎるが、当時はそんなもんと思ってたな
>>590 データってデータラベルのこと?一個ずつ変えないといけないみたい
Sub Macro3()
Range("D4").Select
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.ChartArea.Select
For Each x In ActiveChart.SeriesCollection(1).Points
x.DataLabel.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ReadingOrder = xlContext
.Position = xlLabelPositionOutsideEnd
.Orientation = xlVertical
End With
Next
End Sub
597 :
マッチ棒 :2012/07/18(水) 04:10:14.92
wikiなんてあったっけ?
wikitってWikipediaのことだろ
さすがにそれはないだろ
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 使用してる間にいつのまにか、シート下の列移動するバーが凄い小さくなってました 1番右までやると「WWD」列までなっていたんですが、これってWWDまでアクティブってことなんでしょうか? 使用している列はVくらいまでなんですが、無駄に重くなりますよね? 列を選んで右クリック削除でも小さくならないんですが、どうやったら下のバーが新規みたいに戻りますか?
h
ttp://uproda.2ch-library.com/554032I6c/lib554032.gif ↑を↓にする
h
ttp://uproda.2ch-library.com/554033EdN/lib554033.gif 自動記録すると長いので短くしたい
Sub Macro1()
Range("D2:P15").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlMedium
End With
'続き With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .Color = -16776961 .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlMedium End With
'続き With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlMedium End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .Color = -16776961 .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With Range("B2").Select End Sub
>>603 Sub Macro1()
hoge xlEdgeTop, xlContinuous, xlMedium, xlAutomatic
hoge xlEdgeBottom, xlContinuous, xlMedium, xlAutomatic
hoge xlEdgeLeft, xlDouble, xlThick, 3
hoge xlEdgeRight, xlDouble, xlThick, 3
hoge xlInsideVertical, xlContinuous, xlThin, xlAutomatic
End Sub
Private Sub hoge(bi, ls, w, ci)
With Range("D2:P15").Borders(bi)
.LineStyle = ls
.ColorIndex = ci
.Weight = w
End With
End Sub
こんな感じでいいのかな?
hogeは本当は
Private Sub hoge(bi As XlBordersIndex, ls As XlLineStyle, w As XlBorderWeight, ci As XlColorIndex)
ってした方がいいんだけど、お好きなように
処理時間に影響ないからいいとするか、マクロなしの書式設定で良しとしてもいいのでは?
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 否 例えばA1からA100に10桁の英数文字が入力されています。 そこから、最初の3桁がAA1のセルの個数を数えるには、どういう関数をしようしたらいいのでしょうか。 B1にその個数を返すにはどうすればいいでしょうか。
>>608 泥臭いやり方だと
C1=LEFT(A1,3)="aa1"
C100までオートフィル
B1=COUNTIF(C:C,TRUE)
>>609 ありがとうございます。
やはり他のセルは使わないスマートな方法は関数じゃ無理ですか。
>>608 =sumproduct((left(A1:A100)=AA1)*1
612 :
611 :2012/07/19(木) 00:11:18.49
>>611 あれ?なんか違うな、こうか?
=sumproduct((left(A1:A100,3)=AA1)*1)
>>610 いくらでも出来るけど、作業列使う方がスマートな方法なんだよ
「表面的」な部分ではなく「芯」の部分がね
まあ初心者は見た目だけスマートで内容的に無駄が多い処理を好む傾向にあるけど
>>608 =COUNTIF(A1:A100,"AA1*")
じゃダメなの?
あ、
>>614 でもできました。
どれが綺麗な方法なんでしょうかね
>>616 法則がわかっているのなら、ワイルドカード(*や?)を使うほうがスマートだよ。
ただ関数だとワイルドカードが使えない場合もあるので一長一短。
619 :
614 :2012/07/19(木) 00:28:38.95
今回は関数一発でいけるから614でいいと思っているんだけど、
複数の関数を組み合わせるぐらいなら、
>>613 の言っているとおり作業列を使うほうが綺麗と思うよ。
- うまく動かない時に確認しやすい点
- 第三者やあとで自分が見てわかりやすい点
- 他のことに改変するとき、やりやすい点
まあ、ケースバイケースだけど、ひとつのセルに関数を何重にも重ねていくのは、あまり勧めない。
なるほど 皆さんありがとうございます。 理解が重要なんですね。理解が。
AA1ってアドレスじゃなくて文字列の事だったのか
>>620 一度だけなら作業列。ひねった数式を書く時間は本当に無駄。初めて使う関数の練習ならいいけど。
業務等ではA列に毎回入力するような状況がある。作業列を何らかの形で消してしまう可能性があり、
そういう意味ではsumproductも良いと思う。
countifだけど、個人的には数式中のワイルドカードは経験上、できるだけ使わないほうがいいと思う。
これぐらい短いならまず問題ないけど、複数ネストがあると括弧やダブルコーテーション過不足で乗算に化けかねない。
>>618 http://www.dotup.org/uploda/www.dotup.org3212896.png こういうこと?
これでいいなら2012/1/1ってとこを右クリック、変更すればマクロの記録でいけるよ
Sub Macro1()
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.Axes(xlCategory).Select
With Selection.TickLabels
.Orientation = xlVertical
End With
End Sub
623 :
マッチ棒 :2012/07/19(木) 11:54:31.81
あるセルの値を別シートの指定セルに転記したいとき。 set tw = thisworkbook set sh1 = tw.worksheets("入力フォーム") set sh2 = tw.worksheets("印刷シート") sh2.range("a1").value = sh1.range("a1").value っていう書式でやれたけど もっと簡略化できたりするのですけ
>>623 set tw = thisworkbookなしでも可
625 :
複乳 :2012/07/19(木) 12:10:14.85
>>623 あたりまえだ、この野郎!
もっとも簡略した場合だと
worksheets("印刷シート").range("A1")=worksheets("入力フォーム").range("A1")
でOK。
オブジェクト変数を使う場合でも
セル変数は、シート変数とブック変数も
シート変数は、ブック変数も
それぞれ含まれてるので
set rg1=thisworkbook.worksheets("入力フォーム").range("A1")
set rg2=thisworkbook.worksheets("印刷シート").range("A1")
とし、
set rg2=rg1
でOK。
>>623 できるけど
>>434 、
>>613 、
>>619 あたりを読んでみろ
>>623 のままの状態が最高の状態だ
因みに、適切とは言えないがコードの短さに拘り、もっとも簡略した場合だと
p.[A1] = i.[A1]
まで短くなる
これをやるにはオブジェクトブラウザで、
├ Sheet1 (入力フォーム)
├ Sheet2 (印刷シート)
├ Sheet3 (Sheet3)
となっている部分を選択して、プロパティウィンドウでシートのオブジェクト名を
├ i (入力フォーム)
├ p (印刷シート)
に変える(それぞれ input と print の頭文字)
[A1] は Range("A1")と同じ意味
そしてデフォルトプロパティのValueと、グローバルオブジェクトのThisWorkbookは省略可能
これで
p.[A1] = i.[A1]
が可能になる
627 :
質問 :2012/07/19(木) 12:23:33.06
>>627 アドイン。どうしても削除したいならアドインから削除するしか無い。
>>626 よく見ろ
atpvbaen.xls ではなく
atpvbaen.xla だろ
その二つはアドイン([E]xce[l」 [A]dd-in)だ
パスワードは新規作成したブックのVBAに毎回パスワードが掛かってるなら
テンプレートがそうなってるのがアドインがブック作成イベントを掴んでパス掛けやってるのか
とりあえず、アドイン無効、テンプレート削除(退避)で再起動してから新規ブック作ってみろ
ちあみにアドイン無効、テンプレート削除方法分からなかったら、そのくらいはググれ
630 :
質問 :2012/07/19(木) 12:42:56.95
複乳久しぶりに出てきたと思ったら また半端な知識で恥かいてて超ウケるw
ネコの複乳いいよね
633 :
マッチ棒 :2012/07/19(木) 15:15:50.03
たびたびお世話になります。 sh1= worksheets("印刷シート") sh1.[A8] = "abc" sh1.[B1] = "abc" sh1.[C9] = "abc" sh1.[E3] = "abc" sh1.[F1] = "abc" ..... こんなふうにシート内のあちこちにabcという同じ値を転写します。 効率のいい記述方をおしえてください。
>>633 Range("B5,C9,E6").FormulaR1C1 = "k"
>>630 マジで消したのか。まぁいいけど…
>>633 sh1.Range("A8,B1,C9,E3,F1").Value = "abc"
636 :
名無しさん@そうだ選挙にいこう :2012/07/19(木) 19:26:52.94
>>625 複乳タソ (;´Д`)ハァハァ
637 :
名無しさん@そうだ選挙にいこう :2012/07/19(木) 22:14:27.09
>>618 使用しているグラフは散布図グラフオブジェクトでしょうか。
折れ線グラフオブジェクトを使えば解決できると思う。
リンクの図を見る限りデータも順序尺度のようなので
折れ線でも大丈夫じゃないだろうか。
複乳の間違ってはいないんだが低レベルな回答を久しぶりに見た。 なんか懐かしい。
639 :
名無しさん@そうだ選挙にいこう :2012/07/20(金) 00:04:37.67
【1 OSの種類】 Windows 7 Home Premium
【2 Excelのバージョン】 EXCEL2007
【3 VBAが使えるか】 いいえ
【4 VBAでの回答の可否】 可
PC初心者板の方で、VBAの方が良さそうだと言われたので、こちらに来てみました。
月ごとに抽出された大量のデータを、
項目ごとにまとめて表にしたりグラフにしたりしたいと思っています。
ピポットテーブルでまとめてグラフにするところまでは出来たのですが
それから先のデータを自動で計算させる方法がわかりません。
分かりにくいですが、値を「合計」ではなく、「合計を使って計算した値」にしたいのです。
ただし計算に使う数値は固定でなく、項目によって違います。
そのために上手く計算式をフィールドに入れることができません。
VLOOKUP関数を埋め込もうとしたら、ピポットテーブルには使用出来ないと言われてしまいました。
希望としてはこういう風にしたいのですが……
http://www.dotup.org/uploda/www.dotup.org3215476.jpg 1.項目には元々固有の数値がある。(含有量など)
2.固有の数値と合計を使った計算式の結果を、値のところに入れたい。
(実際の式は、合計×固有値A/固有値B)
3.項目は定期的に追加されたり削除されたりするので、その変化に耐えられる形が良い。
4.月ごとに簡単にデータを追加できるようにしたい。
一度やってみてイマイチだった方法
データの横にVLOOKUP関数→全て計算した値を並べてからピポットテーブルにしてみました。
シートが重くなる上に、小数点が出てから合計するので値にズレが出そうだったり、
データがぐちゃぐちゃになって私以外の人間が入力するのが難しそうでした。
色々検索して試してみるものの、上手くいかず……
どなたかご回答頂ければ幸いです。
>>639 丸投げでコード書いてくれってことならブックをうp
自分でコード書くつもりなら、書けるところまで書いたコードを貼って
どこが分からないのか具体的に書け
ブックうp出来ないけど、意味不明な説明だけでコード書けとか言うならサヨウナラ
エラそうにwww
>>639 本当は、こういう処理は最後の仕上げ以外はExcelに
向いてないんだよな。
解答じゃなくごめん
ヒント
>>1 > ※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
> VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
>>639 データの横にVLOOKUP関数→ピボット生成
までマクロに登録すればいいと思う
更にソレをボタンにでも登録すればいいんじゃないかな
VBAがしんどいのは最初だけよ
>>639 VLOOKUPが重くてダメ、ピボットで集計できないからダメ、ならVBAでやるしかないんじゃないかな
VBAが使えないなら勉強するしかないかと
皆結論は似たりよったりか で、どうするの? ブックうpして気前の良い人がやってくれるのに期待してみる? 自分で勉強して分からないところ聞きに来る? それとも面倒だからと諦めちゃう?
vlookupってなんで重いの? VBAで同様の処理が軽くやれるならなぜ実装しないの
実装すると、そういう風に重くなる
vlookupは第二引数の範囲が大きければ大きいほど重くなる 範囲をなるだけ最小にするかmacth+indexを使えば大分マシになる
653 :
639 :2012/07/20(金) 02:18:37.98
え?vlookupって重いの? 何行目くらいから重くなるの?
656 :
640 :2012/07/20(金) 13:35:31.59
>>639 ttp://www.dotup.org/uploda/www.dotup.org3217442.jpg こんな感じか?
現在、9分類49品目2228件を上記画像の型にするのに5年前のPCで0.25秒くらい
シートに数式は追加してないので、シート操作は全く重くならない
数式追加以外もシートは一切弄ってないので、そのままデータの追加や削除可能
合計×固有値A/固有値Bやると少数になって見づらいし
> 小数点が出てから合計するので値にズレが出そうだったり
のあたりに拘りがありそうなのでやってないが、計算可能な仕様は既に作成済み
あとは表示をどうするかの部分について詳しく希望を書け
表示月はとりあえず2011年の4〜12月固定で作ったが、全表示も、任意年度表示も可能
固有値A/固有値B って 固有値A ÷ 固有値B ってことなの? それとも条件によってAかBを振り分けて使うってこと?
除算の方と思う
659 :
名無しさん@そうだ選挙にいこう :2012/07/20(金) 15:39:35.19
【1 OSの種類 .】 Windows 2000、XP 【2 Excelのバージョン 】 Excel 2000 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 グラフの上端や下端をトリミングする方法を教えてください。
どこをどうトリミングしたいのか画像で説明して
661 :
659 :2012/07/20(金) 16:05:41.65
エクセル2010 VBA 挿入から標準モジュールでVBAをかいています。 1つめのマクロで 変数 ”a” というのをつかっているのですが、、、(変数”a”はマクロ実行時、インプットボックスから入力後、変わりません。1から100の整数。例えば50として、、、) 2つめのマクロでも 1つめのマクロでつかった変数”a”を中身をそのままに使いたいのですが可能でしょうか? 50という数値がほしいのです。 教えてください。よろしくお願いします。
メインで宣言するか、引数として渡すか、セルを介して受け渡しはどうでしょう。
>>665 VBAだとグローバルの範囲せまいな。強制的にglobalにするオプションがあればいいんだけどね。
↓か、引数かな。慣れたらどっちがいいかは分かるんだけどねぇ。
■グローバル変数の定義
・Excel でグローバル変数を使用する場合は、標準モジュールの General で
public 宣言する必要があります。
シートやフォームのモジュールで宣言してもエラーにはなりませんが、グロ
ーバルとして扱えません。
また、ブックをまたいでのグローバル変数の宣言と言うのもできません。
【宣言方法】
public 変数名 as 変数タイプ
>>666 ,
>>667 いろいろ方法があるのですね。
あとはぐぐって調べてみます。
助かりました、ありがとうございました。
>>622 >>637 無事に変更できましたた。ありがとうございます。
2007なんですけどマクロの記録だと
Sub Macro4()
ActiveSheet.ChartObjects("グラフ 2").Activate
ActiveChart.Axes(xlCategory).Select
Range("F52").Select
End Sub
なんでselectまでしか解らないんです。グラフ関係は殆どこんな感じで
TickLabels.Orientation = xlVertical は解らなかったけど設定変更などあるのかな?
>>667 > シートやフォームのモジュールで宣言してもエラーにはなりませんが、グロ
> ーバルとして扱えません。
「グローバル変数にならない」というならまだ分かるが、
「グローバルとして扱えません」というのは語弊があるな。
単に標準モジュールに書いたPublic変数(公開プロパティ)は親オブジェクト名を省略しても
参照できる(これを俗にグローバル変数と呼ぶ)が、シートの場合はその省略が出来ないだけで
参照自体はグローバルで扱える。親は標準モジュールもシートもグローバルオブジェクトだからね。
例
===Sheet1=====
Public 変数1 As Long
Private Sub test1()
変数1 = 50
End Sub
===Sheet2=====
Private Sub test2()
MsgBox Sheet1.変数1
End Sub
==============
これでSheet1のtest1を実行したあとSheet2のtest2を実行すれば
Sheet2からSheet1の変数1をシートを跨いで取得可能。
当然、test2は標準モジュールに書いてもユーザーフォームに書いても
同じように取得できる。
まあその下りが引用なのは知ってるけど、それを引用してくるってことは
それが正しいと勘違いしてるんだろうから、一応突っ込んでおく。
>>669 マクロの記録の設定は聞いたことないな
2007で大幅に変わったとは聞いていたが、その辺かも
672 :
名無しさん@そうだ選挙にいこう :2012/07/20(金) 22:42:08.91
質問させて頂きます MID関数の設定を列に固定させる方法を知りたいです 現在、A2の数式が【=MID(C2,1,2)】となっており 以下の列にも同じ表示法で、コピーではなく自動的に 表示されるようにしたいのです 初歩的な質問ですみません ご教授願います
>>672 質問は、自分しか理解できない「俺語」ではなく
皆が理解できる「日本語」でお願いします。
>>672 オレ初心者だけど、、、たぶんね、
A2に =MID($C2,1,2) でオートフィルでどう?
その式の C 前後に $ をいれてやると オートフィル時に 行 列 固定できる。
ちなみに、たぶんだけどVBAだと、、、
sub test()
for i = 0 to 99
cells(1+i,3)= "=mid(c2,1,2)"
next
end sub
でおkじゃないかな。ちなみに c100 まではいる。
こーゆーの試したことないからやってみて結果教えてください。
あとここで質問するときは、 エクセル2010 VBA可能 初心者です、 みたいな感じでかくと相手に伝わりやすいよ。
間違えた $ は cの後ろだねw C$
>>674-676 回答はあってるんだけど、できれば改行は少なめにお願いします。
周りに合わせて欲しい。
あとvbaでは、forの変数はセルに合わせるほうがわかりやすい For i = 1 To 100 Cells(i, 3) = "=mid(c2,1,2)"
>>678 ほんとだ、ありがとうございます。
最近途中行からばっかりだったから気づかなかったです。
今674みるとアホですねw
めんどくせースレだな
回答も間違ってたらスルーだったけど、まぁぼちぼちだったし注意させてもらった あの調子で連投されるとさすがにスクロールだるい
683 :
名無しさん@そうだ選挙にいこう :2012/07/21(土) 02:20:48.05
>>674 ご回答ありがとうございます
オートフィルのやり方はわかるのですが
そうでなくフォーマットとして永久的に反映させられる
設定にできないものかと思いまして(説明ヘタですみません)
もう少しがんばってみます!
>>683 Worksheet_Changeイベントで値を設定してやればいい
【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 少々 【4 VBAでの回答の可否】 可 下図のようなブックがあります。 管理表.xlsxのBP列に管理番号があり、それと同じ番号が棚卸6月.xlsのC列にあります。 6月なら、管理表.xlsxのL列の数値を拾い、棚卸6月.xlsのP列に書き加えています。 また、管理表.xlsxには途中で空白セルと、管理番号が抜けてるものがあり、管理番号が 抜けてるものは、棚卸6月.xlsのC列とP列のセルを黄色にします。 管理表.xlsx シート"在庫数" ・・・ G ・・・ L ・・・ Q ・・・ AU ・・・ BJ ・・・ BP 5 5月 6月 7月 1月 4月 6 7 管理番号 8 112 280 ABC369 9 367 995 ABC758 10 11 1019 3277 ABC125 12 970 101 ABC271 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 棚卸6月.xls シート"株式会社○○" A B C ・・・ P 1 区分 コード 管理番号 数量 2 A01 1001 ABC271 101 3 A01 1001 ABC369 280 4 A01 1001 ABC125 3277 5 A01 1001 ABC758 995 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
686 :
685 :2012/07/21(土) 06:30:00.19
下記のマクロでは不十分で、3つ質問があります。 1.管理番号が抜けてるときのセルの色づけ方法(現状:全部黄色くなってしまう) 2.D7セルが6月なら12、7月なら17、1月なら47、4月なら62を変数"列"に入れる方法 3.For分を2回使わずに、Findで探す方法 Sub 棚卸表に数量を転記() 月度 = Range("D7").Value '6月 列 = 12 '6月 Set WB1 = Workbooks("管理表.xlsx").Worksheets("在庫数") Set WB2 = Workbooks("棚卸6月.xls").Worksheets("○○株式会社") 管理件数 = WB1.Range("B1048576").End(xlUp).Row 棚卸件数 = WB2.Range("C65536").End(xlUp).Row For i1 = 2 To 棚卸件数 管理番号 = WB2.Cells(i1, "C").Value For i2 = 8 To 管理件数 If WB1.Cells(i2, 列).Value <> "" And WB1.Cells(i2, "BP").Value = "" Then WB2.Cells(i1, "C").Interior.Color = 65535 WB2.Cells(i1, "P").Interior.Color = 65535 Else If WB1.Cells(i2, "BP").Value = 管理番号 Then WB2.Cells(i1, "P").Value = WB1.Cells(i2, 列).Value End If End If Next i2 Next i1 Set WB1 = Nothing Set WB2 = Nothing End Sub
687 :
639 :2012/07/21(土) 07:07:28.02
>655 ありがとうございます。ピポットテーブルのデータを別のシートに移すやり方ですね。 項目の変更があったときに、ズレが生じるのではないか……と思いましたが 試してみたら、多少の変更でどうにかなりそうですね。 このやり方なら今後自分で作成するときに使用できそうです。 >656 ありがとうございます。 数式を使わなくても、この形に出来るんですか……うむむ、凄い。 品名ですが「品名 英語(略語)」であればなお有り難いです。 表示部分については、後で「分類・品名ごとの合計」と「場所ごとの合計」の経過を グラフ化するつもりでおりますので、全表示のほうがよいかと思います。 その他は、まったく問題ないかと。 >657 除算です。分かりづらくてすみません。
>>686 1.「数量に記入があり管理番号が無い」という条件で色付けるのは管理表に色付けたい時の条件と思う。棚卸表側に色付けるなら、「棚卸表の管理番号が管理表内で見つからない時」でいいのでは。
2.月数ぐらいの件数ならFindでもForでもどっちでもいいけど、横方向に「6月」の列を検索してその列番号を変数に入れたらいい
3.Findで見つからない時に色を付けて、見つかる時に数量を記入とすると
Sub 棚卸表に数量を転記()
月度 = Range("D7").Value '6月
列 = 12 '6月
Dim FindRange As Range
Set WB1 = Workbooks("管理表.xlsx").Worksheets("在庫数")
Set WB2 = Workbooks("棚卸6月.xls").Worksheets("○○株式会社")
管理件数 = WB1.Range("B1048576").End(xlUp).Row
棚卸件数 = WB2.Range("C65536").End(xlUp).Row
For i1 = 2 To 棚卸件数
管理番号 = WB2.Cells(i1, "C").Value
Set FindRange = WB1.Columns("BP").Find(what:=管理番号)
If FindRange Is Nothing Then
WB2.Cells(i1, "C").Interior.Color = 65535
WB2.Cells(i1, "P").Interior.Color = 65535
Else
WB2.Cells(i1, "P").Value = WB1.Cells(FindRange.Row, 列).Value
End If
Next i1
Set WB1 = Nothing
Set WB2 = Nothing
Set FindRange = Nothing
End Sub
>>686 列 = WorksheetFunction.Match(月度, Workbooks("管理表.xlsm").Worksheets("在庫数").Range("5:5"), 0) '6月
MATCH関数で管理表の5行から月度を探しては
学生時代にC言語は数値計算で使いましたが、VBAの知識はありません。 今非常に困っていますので助けていただきたく。 【1 OSの種類 .】 Windows XP 【2 Excelのバージョン 】 Excel 2007 【3 VBAが使えるか .】 否 【4 VBAでの回答の可否】 否 A列とB列に数字が入っています。 A列とB列の相関係数をCorrel関数を使って、区間を50ごとに区切って求めたいです。 =CORREL(A1:A50,B1:B50) =CORREL(A51:A100,B51:B100) ・・・ これを65000までやる方法はないでしょうか? A51とかA100の値を特定のセルの値(C1=1、C2=50)を使って CORREL(A(C1):A(C2))みたいなことが出来ればいいのですが。
691 :
690 :2012/07/21(土) 10:13:17.50
失礼しました。 × CORREL(A(C1):A(C2)) ○ CORREL(A(C1):A(C2),B(C1):B(C2)) 一言で言いますと、アドレスのA100とかいう100の部分を特定のセルの値で 指定できないでしょうか?ということです。 もっと上手い方法が他にある気もしますが・・・
=CORREL(INDIRECT("a"&D1&":a"&E1),INDIRECT("b"&D1&":b"&E1)) こんなかんじになるんだろうけれど、汚いからOFFSETをROWと組み合わせて使おうと思ってもエラーになるんだよね。
694 :
690 :2012/07/21(土) 11:20:26.09
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel 2010 【3 VBAが使えるか .】 否 【4 VBAでの回答の可否】 否 オートシェイプにURLが入力されているセルを参照にしてハイパーリンクをしたいのですができません。 右クリックしてハイパーリンク→このドキュメント内→URLが入力されているセルを指定 しかし図形をクリックしても参照したセルがアクティブになるだけで、リンクに飛んでくれません。 セルを直接クリックすると飛ぶのになぜでしょうか?
>>695 それは無理だと思うよ。vbaであればなんとかなるけど。
直接図形にリンクを貼っちゃだめなの?
>>696 URLの一部をどうにかセルを参照にしたいんです。
例えばA1&B1で一つのURLができるようにしてるので。
やはりVBAじゃないと無理ですか。
>>697 セルであれば
=HYPERLINK(A1&A2)
みたいに出来るよ
>>698 うん、そのセルを参照してオートシェイプをクリックで飛べるようにしたいんだw
あきらめてVBAでやろうとしたけど、ハイパーリンク関数だとVBAでも参照できない?
A1に
>>698 でハイパーリンク設定して、下記のマクロで指定してもデバッグなって飛ばないけどどうして?
Sub Sample1()
Range("A1").Hyperlinks(1).Follow NewWindow:=True
End Sub
Set hoge = NothingとかApplication.ScreenUpdating = Trueって必要なん?
あっそw
>>701 前者は、まあ問題になることはないが、やっておいた方が無難。
後者は、マナーの如く、やっている。
どちらも、不要かと言えば、不要でもいいよ・・・・程度。
あっそw
よーしパパ、もぅ1個聞いちゃうぞw Application.AskToUpdateLinks = Falseにするとリンクが張ってあるファイルを開いてもメッセージが出なくなるんだけど 強制的に更新するにはどーしたらいいん?
あっそw
>>706 ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways は、どかな
エクセル2010ですが、 見出しの列番号をR1C1形式に表示するアイコンってありませんか?
>>709 アイコンって設定のこと?
ツール オプション 全般 R1C1形式〜のこと?
【1 OSの種類 .】 Windowvista 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 初心者 【4 VBAでの回答の可否】 可 A2セルから1行に順番に何か文字が入っていたら 空白セルがあるまで1月、2月と名前がついているシートから順番にA1セルに1を入力するというマクロを組みたい 下のようなコードまでは書いたのですが これですとA2セルだけが入力されていた場合の1月だけを対象にしたい場合が2月まで対象になってしまいます if文を使えば楽なのですが変数をうまく使えば使わずに出来そう、でもうまい方法が浮かばないといった状況です どうすればいいのでしょうか? Sub test() Dim i As Long, n As Long n = 2 Do While Cells(1, n) <> "" For i = 1 To n Worksheets(i & "月").Range("A1") = 1 n = n + i Next i Loop End Sub
>>711 Sub test()
Dim i As Long, n As Long
n = 2
Do While Cells(1, n) <> ""
i = n - 1
Worksheets(i & "月").Range("A1") = 1
n = n + i
Loop
End Sub
じゃダメなのかな・・
714 :
712 :2012/07/21(土) 17:48:28.72
>>713 返答ありがとうございます
すみませんそのコードで試したところ3番目のD1セルに文字が入っていた場合の3月シートA1セルに1が入力されないようです
>>712 Sub test()
Dim i As Long
For i = 1 To Range("A1").End(xlDown).Row - 1
Worksheets(i & "月").Range("A1") = 1
Next
End Sub
で、よくね?
716 :
名無しさん@そうだ選挙にいこう :2012/07/21(土) 18:07:38.20
【1 OSの種類 .】 Windows 7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】勉強厨 【4 VBAでの回答の可否】 可 例えばa1〜e1に条件書式で特定の値の時に設定の背景色がつくようにしています。 a1〜e1にはそれぞれ違う値が入ります。 そこで、e1が背景色赤になった場合は、d1〜a1も赤 d1が緑になった場合はc1〜a1も緑と、前の行まで一緒色になるようにはどうしたらいいでしょうか。 何かいい方法はないでしょうか。
>>716 エクセル2010でその条件程度なら地道に条件を重ねていけばいいと思うけど
「数式を使用して書式設定するセルを決定」で
A1〜E1のセルにE1=条件という数式で赤にする・・というのを入れて
A1〜D1のセルにD1=条件という数式で緑にする・・というのを入れる
>>716 たとえばそれぞれ5より大きい数字の時に色を付けるが、右のセルが色ついていたらそっちを優先という感じなら
「数式を使用して書式設定するセルを決定」で
A1選択して書式設定 「=$A1>5」で薄い青
A1:B1選択して書式設定 「=$B1>5」で濃い青
A1:C1選択して書式設定 「=$C1>5」で薄い赤
A1:D1選択して書式設定 「=$D1>5」で赤
A1:E1選択して書式設定 「=$E1>5」で濃い赤
設定してからA1:E1選択して下にオートフィルでこんな感じ
http://www.dotup.org/uploda/www.dotup.org3222327.gif
719 :
名無しさん@そうだ選挙にいこう :2012/07/21(土) 18:42:55.15
>>717 2010の条件書式は制限ないんですか?
重ねていけばA1の条件付き書式のルール30くらいなるんですけど大丈夫ですかね。
なぜ30個になるんだw
722 :
名無しさん@そうだ選挙にいこう :2012/07/21(土) 19:10:11.17
>>720 まず単純な色分け条件だけでも9色にわけます。
なのでe1は単純に9通りの条件でいいですが、
>>717 の用に重ねていけばA1は45通りになります
最近変な要求が多すぎてどれもVBAで解決させてしまいたくなる
>>724 同感です。
何重ものシート関数なんて、誰がメンテできるのか!?と。
727 :
685 :2012/07/21(土) 20:09:00.27
>>688 おぉぉ、絵に描いたようで綺麗ですね。
ありがとうございます。
Findの使い方についてググって真似してみましたが、見つけたサイトでは
Offsetが使われており、うまくできませんでした。
WB1.Cells(FindRange.Row, 列).Valueという使い方もあるんですね。
勉強になりました。
>>689 こちらも綺麗にまとまってていいですね。
ありがとうございます。
If 月度 = "1月" Then ・・・ を12回書こうかと思ってました(自爆●〜*
729 :
名無しさん@そうだ選挙にいこう :2012/07/21(土) 20:33:34.81
VBAだと背景色で値を返してくれるんですよね?
はい .Interior.color .Interior.colorIndex .Interior.themecolor とかで
731 :
712 :2012/07/21(土) 22:21:01.45
>>715 そちらですと最終行の65536まで処理を繰り返してしまって
用意したシート以上になってしまい途中でエラーになってしまいました
>>731 行と列が逆だとか
Sub test()
Dim i As Long
For i = 1 To Range("A2").End(xlToRight).Column
Worksheets(i & "月").Range("A1") = 1
Next
End Sub
>>732 こっちだったか
Range("A" & Columns.Count).End(xlToLeft).Column
エクセル2010 初心者です。よろしくおねがいします。 実行速度をなるべくはやくしたいのですが、IF と select case を使う場合どちらがよいのでしょうか?
excelというよりはvba、vbaというよりは(v)bにはまってしまいそう。
736 :
712 :2012/07/21(土) 22:51:39.62
>>732 そのコードでも1行目の入力した場所以上まで判断されて途中でエラーになってしまいます
1行目に何か入っているのかと思い見てみましたが
1回目のctrl+→で入力された最後の行、2回目で最終行まで行ったので何も入ってないようです
>>731 Sub test()
Dim i As Long
For i = 1 To 12
If Cells(1, i).Value = "" Then Exit For
Worksheets(i & "月").Range("A1") = 1
Next
End Sub
738 :
712 :2012/07/21(土) 23:01:44.10
>>737 すみませんそれですとA1から対象になってしまい最初の質問と違う答えになってしまいます
>>738 すまんCells(2, i)にしてくれ
ってか、それくらい応用してくんないか
cells(2,i)じゃA2からだから712の言ってることと違うんじゃね
742 :
712 :2012/07/21(土) 23:35:06.62
本当にすみません なにかおかしいと思ったら質問のセル番号が違いました(A2→B1) B1セルから1行に順番に何か文字が入っていたら 空白セルがあるまで1月、2月と名前がついているシートから順番にA1セルに1を入力するというマクロを組みたい 下のようなコードまでは書いたのですが これですとB1セルだけが入力されていた場合の1月だけを対象にしたい場合が2月まで対象になってしまいます if文を使えば楽なのですが変数をうまく使えば使わずに出来そう、でもうまい方法が浮かばないといった状況です どうすればいいのでしょうか? Sub test() Dim i As Long, n As Long n = 2 Do While Cells(1, n) <> "" For i = 1 To n Worksheets(i & "月").Range("A1") = 1 n = n + i Next i Loop End Sub
>>742 Sub test()
Dim i As Long
For i = 1 To 12
If Range("B1").Offset(, i - 1).Value = "" Then Exit For
Worksheets(i & "月").Range("A1") = 1
Next
End Sub
>>742 もしまた間違えました行じゃなくて列だとういうなら、こっちな
Sub test()
Dim i As Long
For i = 1 To 12
If Range("B1").Offset(i - 1).Value = "" Then Exit For
Worksheets(i & "月").Range("A1") = 1
Next
End Sub
745 :
712 :2012/07/21(土) 23:47:23.50
よかったよかった
A1セルに =100*1 と入れ、MsgBox Range("a1").Value を実行すると100が表示されます。 これを =100*1 と表示させるにはどうすればいいですか?
" " この間にいれてみろや
>>747 Range("a1").Formula
まーったく、人を試しているかのようなQが多いね。 まあ、ヒマなのが応えればいいんだし。
>>734 速度気にするなら、そこじゃないよ。それは用途に合わせて使い分ける所かと。
752 :
640 :2012/07/22(日) 09:01:47.73
>>639 ,
>>687 品名ごとの合計だけではなく分類ごとの合計も出してみた
ttp://www.dotup.org/uploda/www.dotup.org3224694.xls.html DLパスは、君がうpした参照シートのじゃがいもの略語、英語、分類を繋げた9文字
「集計実効」ボタンで集計し自動でアウトラインを設定しレベル2で展開するようになってるので
左上の[1][2][3]や行番号の左の[+][-]で展開を変更できる
以下は定数により設定可能な項目
設定はVBE開いてプロジェクトエクスプローラの「標準モジュール > 設定」をダブルクリックして変更
・アウトラインを設定するか
・アウトラインの初期展開レベル
・アウトラインをセルダブルクリックで展開するか
・分類名背景色を参照シートに従って色分けするか
・品名書式
・品目合計背景色、分類合計背景色
・出荷数表示形式、品目合計表示形式、分類合計表示形式
・品目合計太字、分類合計太字
・出荷数列幅
・フォントサイズ
・集計表上部余白行数 (2にすると年が3行目、月が4行目、出荷数が5行目〜)
書式とか分類合計とかいろいろやってたら、処理時間が0.6秒くらいになっちゃったが
項目が追加変更される度に自動再実効されるわけではなくボタンで任意実効だから問題ないかと
配列使って一括入出力したりWorksheetFunction使わず自前で計算すれば半分くらいには
短縮できるが、任意実効なら問題ないレベルだと思うし面倒なのでやめた
あとは変数名とか殆ど日本語にしてあるので、読んで勉強しとくれ
エラそうにwww
嫉妬?
756 :
640 :2012/07/22(日) 12:19:36.65
偉いのだから仕方がない
本物?
えらいこっちゃ
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 F2 空白 F3 ='C:\Excel\[ミカソ.xlsx]りんご'!$B3 F3に数式が入っており、F4以降をオートフィルでコピーします。 オートフィル前に、F2へ りんご と入れたらF3の数式に反映するにはどう書けばいいですか? ='C:\Excel\[ミカソ.xlsx] & F2 & '!$B3 ではだめでした。
>>752 コメントが無いのは故意?
変数日本語にするよりコメント説明あった方がわかりやすいと思うけど。
761 :
640 :2012/07/22(日) 13:51:20.25
>>760 マトモな日本人なら読んで勉強しろということだ
763 :
名無しさん@そうだ選挙にいこう :2012/07/22(日) 16:21:43.90
フィルタオプションの検索条件範囲で 文字列が完全一致じゃなくそれではじまるになるんですが 完全一致にするにはどうしたらいいですか?
765 :
763 :2012/07/22(日) 16:43:43.14
>>764 どうやってするの?
=をつけるとエラーが出てえらいこっちゃだし
766 :
759 :2012/07/22(日) 16:50:20.59
>>762 せっかく教えてもらったのに、書き方がワカラソ
=indirect("C:\Excel\[ミカソ.xlsx]" & F2 & "'!$B3") ではだめでした。
768 :
639 :2012/07/22(日) 17:08:48.82
>752 こ、これは凄い……任意実行で切り替えまで! 本当にありがとうございます。 変更可能な部分まで、きっちりと書き込んで下さっていて、非常に助かります。 ここまで丁寧に書いて頂ければ、私のような素人でも変更可能ではないかと。 VBAが何の略かをようやく先々週あたり学んだところですが、 これを参考にして自分でも勉強していきたいと思います。 改めて、本当にありがとうございました&お世話になりました。
なんか偽物出てきてるので一応トリップ付けておく
>>756 と
>>761 は偽物
>>760 ひとつは、金もらってやっている仕事ではないから
お客様の分かりやすさのためならどんな手間でも掛けるって方向ではなく
手間掛けずに分かりやすさを向上させられる範囲だけ対応するって方向
もうひとつは、質問者がVBAの勉強ではなく、とりあえず結果を出すことを求めてるから
質問者が勉強目的なら、クラス2つ(親コレクションに入れる分とクラス内のコレクションに入れる分)と
ループ1つだけの処理に、がっつりコメント入れた上で、あとは自分で書けって言うが
今回は違うのですぐ使える状態に完成させ、VBA分からなくても変更できる定数部分にだけコメント入れて
あとは本気でVBA勉強する気があるかも解らないので先に挙げた手間掛からず対応できる部分以外は放棄した
770 :
760 :2012/07/22(日) 18:11:32.05
>>769 わざわざすみません。納得しました。
コードは参考にさせてもらってます。
エクセル2010 VBA for next でc列に値の代入をしているのですが入力したい範囲が途中飛んでしまう場合にどうすればよいのかわかりません。よろしくお願いします。 カレンダーに入力していて月が変わると月の間に5行あけて次の月の1日がはじまります。 今のところIFをつかって入力範囲にあるのかどうかを判別しようと思います。 A列には月、B列には日がにゅうりょくされています。これを使って判別しようと思うのですが、どのようにすれば判別できますでしょうか。
773 :
759 :2012/07/22(日) 18:53:22.02
>>771 =indirect("'C:\Excel\[ミカソ.xlsx]りんご'!$B3",1) も、
=indirect("'C:\Excel\[ミカソ.xlsx]りんご'!"&F2,1) も #REF! でだめでした。
うーん、どこがだめなのかな?
>>772 どういう状況なのか、何がしたいのか、どこで躓いているのか、まったく読み取れなかった
>>772 >A列には月、B列には日がにゅうりょくされています。これを使って判別しようと思うのですが
そうすれば
>>773 そのふたつのファイルを同時に開くと行けるかも
>>772 for i =
if cells(i,2).value>=1 and cells(i,2).value<=31 then
こんな感じでいいんじゃないの
開いてないブックへはINDIRECTでは参照できないのは知ってるよね?
>>766 これでいけない? ’を頭に追加
=indirect("'C:\Excel\[ミカソ.xlsx]" & F2 & "'!$B3")
779 :
759 :2012/07/22(日) 19:17:17.94
>>776 ミカソ.xlsxを開いたら、
=indirect("'C:\Excel\[ミカソ.xlsx]りんご'!$B3",1) はB3の値が出てきましたが、
オートフィルでコピーできず、すべて =indirect("'C:\Excel\[ミカソ.xlsx]りんご'!$B3",1) に
なってしまいます。
=indirect("'C:\Excel\[ミカソ.xlsx]りんご'!"&F2,1) は相変わらずだめです。
てゆーか、りんご(シート名)をF2に入れてB3の値を出したいんだけど式が変じゃないの?
>>778 オートフィルしたいんだっけ。ならこうか?
=indirect("'C:\Excel\[ミカソ.xlsx]" & $F$2 & "'!" &ADDRESS(ROW(B3),COLUMN(B3)))
781 :
名無しさん@そうだ選挙にいこう :2012/07/22(日) 21:11:31.38
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 例えばA1からA10にVLOOKUP関数でヒットした文字が出てくるようにしています。 そこでD1からD10には、ヒットした文字を上に詰めて表示したいのですがどうすればいいでしょうか? 例えば、A1とA5とA9がVLOOKUP関数でヒットしたら D1〜D3にそのヒットした3つを上から表示するという感じにしたいです。 関数でできますでしょうか。
>>781 こういうのはエクセルが一番苦手分野なのです。強引に式にすると
=IF((COUNTA($A$1:$A$10)-COUNTBLANK($A$1:$A$10))>=ROW(A1),INDEX(A:A,SMALL(INDEX(($A$1:$A$10<>"")*ROW($A$1:$A$10),),ROW(A1)+COUNTBLANK($A$1:$A$10))),"")
もう少しすっきり出来る式はあるとは思いますが、どちらにしてもわりと難しい式になるかと。
作業列を設ければもう少しすっきりすると思います
783 :
759 :2012/07/22(日) 21:39:58.93
>>778 オートフィルを使わないなら、それでおkでした。
>>780 B3は、ミカソ.xlsxのセルなんですが。
リンク元のファイルを開けてないと #REF! になるので、このままではだめですね。
>>781 d列をキーにsort(並び変え)すれば、
ヒットせず表示のないセル(空白セル)は後ろにいくので、「詰めた表示」になります。
スレ違いならすいません VBAでネットバンクのパスワードやIDをコピーしてメールに添付して送信させるなど このようなことは可能なんですか? エクセルのVBAで出来たフリーソフトを使っているのですが、心配になりまして よろしくお願いします
>>785 はい。
悪意を持ってやれば、特定の宛先に、使った人にわからずに送るのは
可能です。
ソースを見れれば、そんな悪さをしているか、どうかは、まあわかる。
>>786 まじすか…
dllとか言うのがいるんですが危険ですか?
788 :
名無しさん@そうだ選挙にいこう :2012/07/22(日) 22:04:46.47
>>784 それだと今後D列の下のほうの式が消えて空白になるので駄目でした
789 :
名無しさん@そうだ選挙にいこう :2012/07/22(日) 22:11:29.58
>>782 B列などを作業列儲けても大丈夫です。
何か良い方法がありますか?
791 :
781 :2012/07/22(日) 22:34:18.42
>>782 さんの組み合わせという言葉にヒントを得て
COUNTIF関数とINDEX関数とMATCH関数の組み合わせでやりたいことができました。
ありがとうございます。
793 :
名無しさん@そうだ選挙にいこう :2012/07/23(月) 00:59:04.54
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 不可 webクエリの取込み画面でスクリプトエラーが出る場合がありますよね。 そのサイトの場合は更新が極端に遅くなります。 これを回避する方法はありますか? ExcelかIEどちらの設定で回避できないかと思いまして、同じような経験を解決した方いますか?
794 :
名無しさん@そうだ選挙にいこう :2012/07/23(月) 01:10:36.58
>>767 で、できた。
しかしなぜそうするとできるか説明していただけんでしょうかな。
例えば3か月後くらいにこの機能使おうとしたら忘れてそうだから
なぜ=を使うのか、”(ダブルクウォーテーション)の意味とはなにか等、
そのへんの基本から教えていただけて理由がわかったら、ずっと覚えていれそうだし。
>>779 スマン、分からない。2010でもokだった。
ちなみに
=""
の""の中はオートフィルできない
文字列扱いだからね
=""&A1
の、A1の部分はオートフィルできる
とにかく細分化させないとわからない
>>783 ちなみにそれはリンク"先"ね
エクセルはリンク先のファイルを開いてないとリンクできない。これはエクセルの仕様で、どうしようもない。
どうしてもエクセルでやりたければ、リンク先と元ファイルを合体させるか、vbaしかない
VBAではopenステートメント、更新、closeです。
どっちも無理だと言うなら、あきらめないとね。
やっぱり793の問題は稀か
>>793 >webクエリの取込み画面でスクリプトエラーが出る場合が
ない
>そのサイトの場合は更新が極端に遅くなります。
どのサイト?
>これを回避する方法はありますか?
知らん
799 :
名無しさん@そうだ選挙にいこう :2012/07/23(月) 03:55:10.20
>>798 >webクエリの取込み画面でスクリプトエラーが出る場合が
ならないですか?
例えば
http://jp.msn.com/ MSNでもなるんですが、私だけですかね。
webクエリを開いてURL入力して移動すると、スクリプトエラーになります。
環境はExcel2010で、win7です
取り込み時にスクリプトエラーは出るが更新は遅くならないな MSNはそのエラーが出るサイトの例ってだけで、更新遅くなるのとは別と言うなら 更新遅くなるのは件のエラーとは関係ない、少なくとも絶対的な因果じゃないってことだから、 もちろん隠したければ強制的に聞き出す権限は無いので好きにしたらいいが それ以上は「例えば」ではなく、実際の対象サイトを書かないことには始まらないな
801 :
名無しさん@そうだ選挙にいこう :2012/07/23(月) 10:25:11.80
>>801 競走成績部分?やってみたけど全然遅くないよ
データ量がそこそこあるので、取得した物を解析してシートに書き出すのに
うちの数年前のボロPCだと2,3秒くらいかかるが、そこはPCの性能次第で、
鯖やWebページの問題じゃないし、データを取得するのは1秒くらいで終ってる
803 :
名無しさん@そうだ選挙にいこう :2012/07/23(月) 11:09:10.78
>>802 ええー
俺のPCはi7 2600kでメモリも8GBのそこそこハイスペックで回線も光なのに
収得からシートに書き出すまで10秒近くはかかる・・・
他のスクリプトエラーのないサイトは1秒もかからないのに
なぜだ
エクセルでFFTを行うと確かに数値は出してくれるんだけど、 中の計算が何が行われているか良く分かりません
仕様です。知りたければExcelのではなく数学の勉強をしましょう。
806 :
名無しさん@そうだ選挙にいこう :2012/07/23(月) 16:27:05.30
すみません、日付表示で質問なのですが 240723 と1つのセルに入力して 24/07/23 と表示させたいのですが、可能でしょうか? データは、既存のやつではなくタイプしていきます ググりかたが悪く、西暦を和暦変換などしか当たらず困ってます よろしくお願いいたします
書式設定の表示形式のユーザー定義で 00"/"00"/"00 とすれば良いだけ ただタイプするならhと/くらい入れてやった方が、 シリアル値としても使えるようになっていろいろ便利なんだけどな テンキー無しのキーボードで打つなら0の右の-使って 「h24-07-23」とタイプしても自動でシリアル値化してくれるし 上記の表示形式みたいな変な技で誤魔化す癖付いちゃうと、後で苦労するよ
808 :
名無しさん@そうだ選挙にいこう :2012/07/23(月) 16:53:19.74
>>807 ありがとうございます。
"/"で、できました。
後々の管理応用には不向きなんですね…
とりあえず、今のデータ入力が急ぎのため
これでやってみますが
シリアル値等勉強不足ですが
この機会に勉強して検討してみます
教えていただき助かりました
VBAで文字列からシリアル値への変更、あとからでも可能なのかな
後からいくらでも可能 240723と打ったらh24/07/23と解釈して 自動でシリアル値化することも可能 その変換を有効にするセル範囲を任意に指定することも可能 でもVBAはダメって環境もあるからな
「指定したセルから数値xだけ下のセルを表示させる」にはどの式を使えばいい? ifを使って書いてたんだけどかなり式が長くなったからもっと短く簡単にできないかと考えてる 使ってるのはExcel2007
それで式が長くなるとは思えないんだが、どんな式書いてるの? まさか単純なネスト無しのIF式だけを以て長いとか言ってるなんてオチじゃないよね?
>>811 「指定したセルから数値xだけ下のセルを表示させる」のにどうやってIF関数を遣うんだ?
おそらくだけど、やりたいことを日本語で説明するのをミスっていると思う
if(h1=2000,af10,if(h1=2150,af11,if(h1=2300,af12,if(h1=2450,af13,if(h1=2600,af14,if…っていう風に続いてるんだけど、もっとすっきりした形にできないかと思ってる
>>815 規則性があるなら方程式作ればいい
規則性がないならテーブルを作って参照するようにすればいい
>>815 =OFFSET(AF10,(H1-2000)/150,0)
この用途でOFFSET使うのは、式とシートの見た目だけはスッキリするが
可読性やメンテナンス性的によろしくない(
>>613 、
>>619 参照)
AE列、もしくはAE列が使用中なら列を挿入し
ラベルを設けてVLOOKUPが一番良いかと
For i = 3 To 10 If IsNumeric(fuga.Cells(i, 1)) Then hoge.Cells(i, 1) = fuga.Cells(i, 1) End if Next こんな感じで代入するとき、fuga.Cells(i, 1)が文字列の数字でも hoge.Cells(i, 1)に入ってしまいます。 hoge.Cells(i, 1)に入れたら頭に ' を付ける方法と、 hoge.Cells(i, 1)に入れない方法を教えてちょ(・3・)
IsNumericは数値か否かではなく、数値として扱える値か否かだからな 数値か文字列の数字かはVarTypeとかTypeNameとか見れば良い ' は普通に&で繋げれば良いだけ
>IsNumericは数値か否かではなく、数値として扱える値か否か 知らんかった・・・(;3;)
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 はい かなり初心者 【4 VBAでの回答の可否】 可 お尋ねします。同じフォルダの中に規定の名前が入った多くのエクセルファイルを集計するマクロを作ったのですが、 例外として集計用ファイル本体は除外し、ファイル名(拡張子まで入れた)文字数が27以上で29以下のファイルのみ 集計したいです。 問題は、下記@の記述で、"集計.xlsm"の除外は成功したのですが、文字数が27以上で29以下のファイルのみ集計 がうまくいかず関係ない他のファイルまで読もうとしてしまします。どこがまずいのかどう記述すべきか教えてください。 どうか宜しくお願いしします。 Sub 集計() Dim myPath As String Dim fName As String Dim myR As Long Dim fCount As Long myPath = Left(ActiveWorkbook.FullName, _ Len(ActiveWorkbook.FullName) - Len(ActiveWorkbook.Name)) 'パスの取得 fName = Dir(myPath & "*.xlsm") '同じフォルダにあるシート名を取得 fCount = Len(fName) 'ファイル名の文字数を取得 Do Until fName = "" If fName <> "集計.xlsm" Or fCount > 26 And fCount < 30 Then '@ Workbooks.Open Filename:=myPath & fName 'xlsmが拡張子のファイルを開く 以降、集計用ブックに開いたファイルの内容を貼り付ける記述ですので省略します。
>>823 ソースの肝心なところが省略されてるからわかんね
fCount変数の値を常にウォッチしてみたら?
肝心なところは省略していません。
じゃあ肝心なところが実装されてないんだろw
×If fName <> "集計.xlsm" Or fCount > 26 And fCount < 30 Then ○If fName <> "集計.xlsm" And (fCount > 26 And fCount < 30) Then ◎If fCount > 26 And fCount < 30 Then じゃないの? 最初がOrだと、ファイル名が"集計.xlsm"でなければファイル名文字数関係なく全てOKじゃん ついでに"集計.xlsm"は文字数的に「fCount > 26 And fCount < 30」で弾けるから わざわざ書く必要ないかと
ついでに言うと、こういうのはループの中をサブプロシージャにするといいよ Do Until fName = "" Call hoge(myPath, fName) fName = Dir() Sub hoge(myPath As String, fName As String) Dim fCount As Long If fName = "集計.xlsm" Then Exit Sub fCount = Len(fName) If fCount < 27 Or fCount > 29 Then Exit Sub Workbooks.Open Filename:=myPath & fName この方が条件の書き方に自由度が出て可読性良く書けて凡ミスも起きにくい
>>823です。昨夜は寝てしまいましたが、
お前らの回答をがばっとコピペしメールに貼り付けて会社に行って試してみます。
たくさんの声かけとりあえずありがとうございます!!>>824-
>>828
>>793 んー、サブPCのExcel2003だと普通に速く取り込めた
もしかしたらExcel2010が問題なのかもしれん
誰かExcel2010の人で
>>801 をwebクエリで取り込んでみてくれないかな
取り込んで貼り付けるまで8秒程度かかるか試してほしい
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 ほんのかじった程度 【4 VBAでの回答の可否】 可 閉じているブックから参照がどうしても出来ないので教えてください。 「りんご」「みかん」「いちご」それぞれのブックに1月〜12月まで計12シート作って、 A列に日付、B列に金額が入力されてあります。 それをまとめて月別に一覧で見れる「一覧」ブックを作りたいです。 (同じように1〜12月までの12シート) A1= 1日 B1= りんご C1= 関数 B2=みかん C2= 関数 B3= いちご C3= 関数 A4= 2 日 … 年によって果物の種類が変わる=ブックの名前も変わるので B列と同じ名前のブックを探してきて、金額を出すようにしたいです。 indirect を使えば出来るのですが、閉じたブックには使えないようで困っています。 実際は大量のブックがあるので、いちいちブックを開きたくありません。 どなたかお知恵を貸してください。よろしくお願いします。
>>833 手動だろうがVBAだろうが、
いちいちブックを開いて値を取得するしかないよ
835 :
603 :2012/07/24(火) 20:30:07.69
>>606 遅くなってスマンコ
全く問題ないですが、ワケワカラン(AAry
>>835 コードの短縮なんてそんなもん
基礎がないとどうにもならん
>>833 閉じているブック→webストレージへうつしてそこから参照しよう。
>>833 参照に式を使うなら、ご存じの通りINDIRECTは閉じたブックには使えないから無理だが
VBAなら「開かず」は無理でも「表示せず」は可能
まあ表示せずに裏で開いても、ブックだとそれなりに時間食うから
俺なら「りんご」「みかん」「いちご」のブックに、上書き保存する際にデータをxmlとかで書き出すコード仕込んで
一覧ブックからは軽快に読み出せるxmlを読むかな
まあ時間食うと言っても、1ブック当たりではデータ量にもよるがおそらく1,2秒とかそれ以下なんで
一覧ブックで取り込みマクロ実行してしばらく放置しておけば、裏で開いてデータ取り込んで閉じてを繰り返し
50ブックのデータを数十秒くらいで取り込んでくれればOKってならブックのままでもいいだろうがな
裏で開いてもデータの取得は普通と同じで、開くとWorkbookオブジェクトが返るので
Workbook.Workseats("シート名").Range("セルアドレス").Value
Workbook.Workseats("シート名").Cells(行, 列).Value
で取得できる
840 :
823 :2012/07/24(火) 21:37:53.43
皆さんのご意見を伺って下記のように fCount = Len(fName) を Do〜Loopの内側にいれてみたら機能するようになりました 動かず煮詰まっていたのでホントに助かりました。ありがとうございました。 fCount = Len(fName) Do Until fName = "" If fName <> "集計.xlsm" Or fCount > 26 And fCount < 30 Then Workbooks.Open Filename:=myPath & fName ↓ Do Until fName = "" fCount = Len(fName) '変更点@ If fCount > 26 And fCount < 30 Then '変更点A Workbooks.Open Filename:=myPath & fName
ループ内の
fName = Dir()
も省略してるから、その下の
fCount = Len(fName)
も含めて省略しただけでコードとしては書いてある物と思ってたら・・・
>>826 の言う通りかよw
842 :
603 :2012/07/24(火) 21:55:03.24
843 :
833 :2012/07/24(火) 22:04:24.31
みなさんありがとうございます。
やはり難しいんですね…
>>838 さんや
>>839 さんのレスが何なのな全くわかりません…
いちいち個別ブックを開いてデータ取得して、一覧ブックを保存したらそのデータが残る、ならまだいいのですが
indirectだと開いて保存しても、個別のブックを閉じたら一覧ブックにデータが残らないのです
私のやり方が悪いんでしょうか??
>>842 Private Sub 罫線を設定する関数(線の位置引数, 線の種類引数, 太さ引数, 色引数)
With Range("D2:P15").Borders(線の位置引数)
.線の種類 = 線の種類引数
.色 = 色引数
.太さ = 太さ引数
End With
End Sub
って関数作って
With Selection.線の位置(上の線)
.線の種類 = 1本線
.色 = 黒色(自動)
.太さ = 中太
End With
With Selection.線の位置(左の線)
.線の種類 = 二重線
.色 = -16776961の色(赤)
.太さ = 細線
End With
ってのを
罫線を設定する関数 上の線, 1本線,中太, 黒色(自動)
罫線を設定する関数 左の線, 二重線, 細線, 3番の色(赤)
って出来るようにしただけ
それと線の種類を途中で変更したようで、左とか黒の細1本線を設定してから赤の細二重線に
変更したりしてるから、そういう無駄は排除したが、ぶっちゃけその無駄を排除しただけで半分になる
この説明で理解できなければレスのやりとりだけで初歩から教えるのは面倒なので入門書買え
>>843 数式は値をコピーするのではなく参照するのだから
参照元が無くなれば参照先である数式セルの表示も無くなる
鏡の前に居るときは鏡に自分が写っていても、
そこを退いてまで鏡に自分の姿が写り続けてたら怖ぇだろ
コピーではなく参照ってのはそういうもんだ
コピーすれば値は残るが、数式でコピーは出来ないから
そこは手動かVBAでやるしかない
>>839 がxmlの話だけでなく完全に意味不明ってなると
おそらく書いて貰ったコードを貼る場所が解るくらいで
自分では全然書けないレベルだろうから、一覧ブックとデータブック2,3個を
zipでまとめてうpしてくれれば手を貸してもいいが、(もちろん個人情報とかは書き換えて結構)
口頭というかレスでの説明だけでコード書くのは面倒なのでそれが嫌なら俺は降りる
webのソースコードから取り込む方法ってどうやるんだっけ?
>>847 vba html 取り込み
でぐぐったら大量に出てきたぞ
エスパー部隊遅いよ!何やってんの!
なんか右に指定したページのコードがバーって出て、ズバババーって選べるやつ
おもしろくなってきたぜ。
たぶん、XMLソースウィンドウを開きたいんだと思う。
857 :
名無しさん@そうだ選挙にいこう :2012/07/25(水) 15:57:53.23
Excel2010で複数のExcel Bookを開いている状態で 纏めて上書き保存して閉じたいのですが 何かいい方法はありませんか? 今は、毎回ちまちま上書きボタンを押して保存しており効率が悪いです。
>>857 キーボード操作だともう少し楽になると思う
859 :
名無しさん@そうだ選挙にいこう :2012/07/25(水) 16:45:03.42
>>858 一発で全て上書きしたいのですが・・・
マクロを組まないとダメですかね?
いつのまにかブックの容量がが2.0MBになってた これって多い?
>>857 そのまま閉じるボタン押して「Y」キー連打ではだめかな
ちなみにYは上書き保存の決定の意味ね
>>860 普通
862 :
名無しさん@そうだ選挙にいこう :2012/07/25(水) 17:09:15.33
>>861 サンキュー。
連打するのが手間になるので
やっぱりマクロ組みます。 ワイルドだろぉー。
例えばVLOOKUP関数で表示している場合、範囲のデーターベースを他のブックにしている場合は、そのブックも一緒に立ち上げないと表示できないよね?
やってみればいいんじゃないかな
できないから聞いてるんだよ
できないよ
かわいい
てへ///
一緒に開くか、VLOOKUP関数を書いてるブックに 参照しているシートだけ取り込めばいいんだから何も問題ないよね
ファイルを別にするのなら、ADOでも使ってDBを作ったほうがいいような気もする。
871 :
名無しさん@そうだ選挙にいこう :2012/07/25(水) 20:02:28.67
10年前に少し難しく感じたVBA 今じゃーすごく簡単に感じるY
873 :
名無しさん@そうだ選挙にいこう :2012/07/25(水) 21:11:35.97
スイッチのon/offみたいなVBAってある? 例えば同じマクロだけど、 1回目の実行ではシート表示、2回目の実行ではシート非表示 みたいな交互に実行されるようにするコードってどうやればいいの? 今はCaseでセル内の数値が〜で対応してるけど、もっと簡潔なコードあるのかな?と思って
>>873 トグルという
if シート非表示 then
シート表示
elseif シート表示 then
シート非表示
endif
と、シート自体の状態でonoff切り替えると間違いが少なくて楽。
でもセル内の数値でもいいと思うよ。
875 :
名無しさん@そうだ選挙にいこう :2012/07/25(水) 21:18:11.65
シートの状況を取得して、祖値をnotで代入すれば
>>873 シートの表示非表示切り替えなら
Sheet1.Visible = Not Sheet1.Visible
でいいんじゃね?
Sheet1.VisibleはBooleanじゃないからあまり好ましくはないんだけどね
こういう元になるものが無い場合はStatic変数かな
Private Sub Test()
Static flag As Boolean
MsgBox flag
flag = Not flag
End Sub
878 :
名無しさん@そうだ選挙にいこう :2012/07/25(水) 22:17:58.35
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 VBAで行の幅を変更する場合に、複数行を選択するにはどうすればいいのでしょうか? 例えば、1行目と3行目と5行目と8行目の行幅を100に変更したい場合は ActiveSheet.Rows("1").RowHeight = 100 ActiveSheet.Rows("3").RowHeight = 100 ActiveSheet.Rows("5").RowHeight = 100 ActiveSheet.Rows("8").RowHeight = 100 と一個一個書かなければいけないのでしょうか。それとも一行にまとめることはできますか?
>>878 2,4,6-8を対象にするなら
Range("2:2,4:4,6:8").RowHeight = 100
みたいな
メンテナンス性考えるとループの方がいいけどな 初心者はメンテナンス性より、表面的なコードの短さに拘る傾向にあるからなぁ
【1 OSの種類 .】 Windows XP
【2 Excelのバージョン 】 Excel 2003
【3 VBAが使えるか .】 いいえ
【4 VBAでの回答の可否】 否
http://www1.axfc.net/uploader/Img/so/146746 画像では
銘柄は 1321 日経平均連動型FTEを使用
「現物株 買いのみ」というロジック
買い建てルール:前日終値より当日終値が安いときに 終値で1単元を買い建てする。
目標:買い建て値に対して利益10パーセントを乗せて決済
決済ルール:当日終値が目標値を越えた(越えそうな)時に決済。 検証なので終値決定してからの算出でOKです。
E:終値
F:建値 F10=IF(E11>E10,E10,"")
G:目標値 G10=IF((G10="","",G10*(100+$H$2)/100)
含み損益を抱えた建て玉を複数保有している状態になっています。
この時 条件を満たす建て玉だけ決済したいのですが....
このような売買ロジックの条件式を関数で記述する方法が解りません。
「目標 買い建て値に対して利益10パーセントを乗せて決済」を満たした場合に決済したいのです。
例えば
7月1日に終値が9600だったら G列9600以下の建て玉を全部決済したいのです。
補助列の使用はOKです
例えばポジション有無を目標値のとなりH列に設定してポジション値を表示して 決済したらポジション値が消えるようにしてもいいです。
このような場合はVBAを使用すべきなのでしょうか?
関数だけで処理する方法ってありますか?
よろしくおねがいします
>>880 慣れれば自然とそうなるんじゃないか?
vbaで保守性を考えたことは殆ど無いけど
>>881 株売買 エクセル
やvectorあたりでソフト探したほうがいいとは思う
>>882 VBAだとそういうレベルの人の方が多いのかもな
>>881 ですが
G:目標値 G10=IF((G10="","",G10*(100+$G$2)/100)でした
当日終値が
保有建て玉を越えた時の日付を 各建て玉の隣にUPするようにしてから
その日付の終値を呼び出せばいいのかなぁ
やればいいんじゃないの?
つーかそのレベルの頭だと、そういうことに手出さない方がいいと思うけど。 これが自己解決できないって、Excelの知識ではなく、根本的な思考能力に問題有りだから。
わざわざ言ってあげるって優しいな
入力規則のリストって結合してるセルだとマジで使いづらい セルをクリックしたら選択肢が出てくる的なやつないの?
あるよ
>>887 そんな解答 求めてねーんだよ
テンプレにしたがって質問してんだから
余計な文句書くなボケ
>>888 お前は2番煎じ野郎か 後から出てくんな クソが
>>883 自分的には難しい事なんですが
エクセル少し理解している人だと簡単にできそうな事だと思うんで質問してみたんですが
で Excel総合相談所 103で質問に答えてくれるのですか?
VBA勉強したらいいと思うよ
標準モジュールって何個まで挿入できるの?
>>896 無理だと思う
>>889-900 じゃあ Worksheet_SelectionChangeでform呼び出すしかないね
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox ("")
End Sub
アンカー失敗した
>>898 やってみればいいんじゃないかな
多分short intの65536個作れると思う
【1 OSの種類 .】 Windows7 【2 Excelのバージョン 】 Excel2010 【3 VBAが使えるか .】 勉強中 【4 VBAでの回答の可否】 可 1〜10のシートがあって、8以外のシートは非表示なんだけど マクロで2〜7のシートを一気に表示するにはどうしたらいい? Worksheets("2").Visible = True 一応これを一行一行書いたんだけど、これだと一個一個開いてなんか見た目も悪いんだよね どうにか複数のシートを指定して一気に表示にする書き方ないかな?
>>903 foreach使えるようになると超楽
Sub a()
For Each xxx In Worksheets
If xxx.Name <> 1 Then
xxx.Visible = True
End If
Next
End Sub
>>905 2-7か、ごめん
Sub a()
For Each xxx In Worksheets
If (xxx.Name > 1) and (xxx.Name < 8) Then
xxx.Visible = True
End If
Next
End Sub
つーかさ、2〜7ならFor Each...NextよりFor...Nextの方が良いんじゃね? For i = 2 To 7 Worksheets(CStr(i)).Visible = True Next たったこれだけで、 If (xxx.Name > 1) and (xxx.Name < 8) Then End If とか要らない。NameとIndexが一致してるならCStrも要らない。 シート数が可変でも、先頭&末尾除外なら For i = 2 To Worksheets.Count - 1 とすれば良い。 あとは、先頭や末尾以外の任意の場所を除外するなら For Each sh In Worksheets(Array(1, 3, 5, 7)) sh.Visible = True Next なんてやり方もある。 For Each...Next覚えたからって、For Each...Next使えるところは 全部For Each...Next使い、愚純にループ内で条件判断繰り返すのではなく 適材適所で使い分け、反復実行されるループ内ではなく ループに渡す配列を作る段階で条件判断するなど臨機応変に使えるようになると超楽。
>>907 おおー
For Each sh In Worksheets(Array(1, 3, 5, 7))
sh.Visible = True
Next
これ使わせてもらうわ。シート名を変更したときや、順番が不定期になったときにこれ便利だ
909 :
名無しさん@そうだ選挙にいこう :2012/07/26(木) 11:22:34.92
【1 OSの種類 .】 WindowsXP SP3 【2 Excelのバージョン 】 Excel2007 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 VBAのユーザフォーム(Userform)にComboBox1を設置しまして、 初期値をシートaaaのA1を表示して リストは同シート(aaa)のB1-3のリストを表示して選択、選択した値は 同シート(aaa)のA1に書き込む といった作業をしたのですが、ご教授をお願い致します。 下記のようにしてみたのですが、途中でリストが空欄になったりしてしまいます。 (´・ω・`) Private Sub ComboBox1_Change() '初期値------------------------------------------ Sheets("aaa").Active Worksheets("aaa").Range("a1") = ComboBox1.Value End Sub Private Sub UserForm_Initialize() '選択------------------------------------------ With ComboBox1 .Style = fmStyleDropDownList .ListRows = 3 .RowSource = Worksheets("aaa").Range("B1:B3").Address End With End Sub
'初期値------------------------------------------ Sheets("aaa").select 訂正がありました。連投すみません。
それ以外にコード隠してない? 真っさらなユーザーフォームを新たに作ってそのコードだけ貼っても再現する? とりあえず不適切なところはあるが、主題のような問題が起こりそうな所は無いと思うし 2002ではあるがうちでは再現しないけど
未だに2002とか使ってる人はどうしてアップグレードしないの? 2002とか仕事でも使えないでしょ
>>912 必要ないからでしょ
世の中は君が考えてるほど単純じゃないんだよ
>>914 必要ないってことは自営かニートってことかな
夏休みっぽくなってきました
実は夏休み夏休みいうやつが厨房かニート
パソコン持って無くたって普通に勤められるのに パソコン持っていてExcelも入っていて、それが2002だってだけで なんで「自営かニート」とか、勤めるのが不可能的な発想になるのか不思議 パソコンメインで仕事するのって、中の下の前後あたりの層だけでしょ その下はパソコンなんて使わず手作業、肉体労働とかがメインだし その上は携帯端末で情報やりとりするとか、もっと専門性の高いソフトで 開発や制作、研究とかやってて、Excel使う仕事なんか下っ端任せ
ただでさえ熱いのにそんな熱くなるなよ 夏だなぁー
熱く感じるなら、それは自分の熱じゃね?
思慮の浅さを指摘されてカッカしちゃったとかかな
【1 OSの種類 .】 WindowsXP 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 オートシェイプの頂点の編集で、頂点をグリッドにスナップさせるにはどうしたら良いですか?
左様ですか・・・orz
VBA使えば擬似的にスナップさせることは出来るけどね
926 :
名無しさん@そうだ選挙にいこう :2012/07/26(木) 19:16:41.25
スナップとはなにかと聞いてるんですが
いきなりどうした?
とりあえずVBAの知識全くない場合は どの本買ったらいいんよ?
最近このスレはvbaのレスが多くなった。
>>928 とりあえずやりたいことを自動記録して、そこで使われている関数をググるなりヘルプで調べるなりすればおk。
完全な初心者なら、初心者本をラノベ見たく絵買い(つまり直感買い)でも問題になるほどのことはない。
こんばんは
>>881 です。
今朝 あの質問では説明不足だったのだろうか?と思い 出来上がりのイメージをUPしてみようと思いました。
http://www1.axfc.net/uploader/Img/so/146809 C6 終了行数
C7 開始行数
G8 目標利回り
F10=IF(E11>E10,E10,"")
G10=IF(F10="","",INT(F10*(100+$G$8)/100))
H10=IF(AND(G10<>"",L10=""),G10,"")
I10=IF(AND(H10<>"",K11=""),E$10-G10,"")
C6 C7はまだ使用してません
J:条件を満たした日付
K:条件を満たした終値
L:決済
J K Lを求める条件式が解かりません。
現物株の塩漬け&利食いに関する条件式に関して
関数を使用した条件式で解く場合 どのような条件式で解けばいいのかなぁ?
と 今春から考えていますが
残念ながら いまのところ関数では解けていません。
指摘があったように VBA 勉強してみます。
また初歩的な質問をする機会があると思いますが
よろしくおねがいします。
>>887 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2012/07/26(木) 00:17:34.40
つーかそのレベルの頭だと、そういうことに手出さない方がいいと思うけど。
これが自己解決できないって、Excelの知識ではなく、根本的な思考能力に問題有りだから。
これが自己解決できないんです
どうしたらいいのかな?
つか、SSうpするぐらいなら素直にファイルをうpしたほうがよくない? いちいち動作確認に数値を手打ちするのがめんどくさいよ。
>>933 SSアップの方法はわかるんだけど
ファイルUPってどうやったらいいんですか?
>>934 SSアップとファイルUPって違うんですか?
>>935 スクリーンショットをUPする と ブックをUPする という違いだと思うんだけど....
>>936 揚げ足が取りたいだけの厨房でしょ。確かに両方ファイルではあるしね。
少尉って言う階級がな……。もしかして佐々木さんって特攻隊員だったのかもな。 たしか特攻隊員って無条件に少尉まではなれたんだよな。
誤爆しつれいw
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━ ★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。 ★2 要望は具体例や図を使って明確かつ具体的に。 ★3 質問テンプレ(雛形)は必須じゃないけど、出来れば使ってね ▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━ 【1 OSの種類 .】 Windows** 【2 Excelのバージョン 】 Excel** 【3 VBAが使えるか .】 はい・いいえ 【4 VBAでの回答の可否】 可・否 ※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」 VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 【1 OSの種類 .】 WindowsVista 【2 Excelのバージョン 】 Excel2003 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 Sheet1にいろんなデータがびっしりたくさん入力されていて そのうちのどこかのセルに りんご と入力されたセルが1つだけあります この時Sheet2のA1セルを使って Sheet1にある りんご のセルの行番号と列番号を取り出すことはできますか? MATCH関数だと1行か1列かしか選べないみたいで 矩形の範囲から行番号とかは取れなくて・・・ Ctrl+Fで検索すれば一発なのはわかりますが 別シートのセルに関数で行番号と列番号と出したいんです
>>941 そこまで解っていれば、あとは応用だと思うんだけど。
作業列、まあ、この場合は作業行になるわけだけど
=ISNUMBER(MATCH("りんご",Sheet1!A:A,0))
で必要列分作ればいいだけじゃん。
りんごはひとつしかないわけだから、どこかの列に答えが出るわけだろ。
あとはA1に
=CHAR(CODE("A")+MATCH(TRUE,5:5,0)-1)&MATCH("りんご",Sheet1!E:E,0)
とか。ちょっと泥臭いかな。
あ、間違えた。ちょっと待ってね。
作業行2行用意。 5行目、=MATCH("りんご",Sheet1!A:A,0) 6行目、=ISNUMBER(A5) でA1に =CHAR(CODE("A")+MATCH(TRUE,6:6,0)-1)&INDEX(5:5,MATCH(TRUE,6:6,0))
ははぁーなるほど・・・へぇー! 実は子供のころから「アンタは応用の効かない子だね誰の子なんだい!」とよく叱られたものでした すごいなあ割腹しました! ありがとうございました
あ、AA列とかになったらヤバイw まあ、こんな感じだ。
A1 =ADDRESS(INDEX(5:5,MATCH(TRUE,6:6,0)),MATCH(TRUE,6:6,0),4)
>945 割腹しないでくれ。 ふつー死ぬぞ。
>>928 俺は、「FOM出版」ってとこの
「よくわかる Excel 2007 マクロ/VBA入門」
「よくわかる Excel 2007 VBAプログラミング実践編」
「翔泳社」の
「Excel VBA 逆引き辞典パーフェクト 630」
で勉強した。
951 :
マッチ棒 :2012/07/27(金) 10:09:40.20
エクセルVBAで作った経理のシステムを、Excelない環境でランタイムで動かしたい。 VBでフロントエンドのI/Fつくって移植したりできる?
952 :
名無しさん@そうだ選挙にいこう :2012/07/27(金) 10:13:49.74
とりあえずVBAの知識全くない場合は 「よくわからんExcel 2007 マクロ/VBA入門」「よくわからんExcel 2007 VBAプログラミング実践編」「Excel VBA逆引き辞典インパーフェクト630」のどの本買ったらいいんよ?
個人的には「Excel VBAのプログラミングのツボとコツがゼッタイにわかる本」がお勧めかな
>>950 オートフィルタで出荷個数が50以上で絞り込んで
ソートを使って売上率の高い順に並び替えればいい
おねがいいたします。 sheet2のA1に「ひらがな」で「あいうえお」とあり、 sheet1のA2に=シート2!A1で表示してるのですが、 sheet1のA1にA2の数字をカタカナで表記するようにしたいのですが、VBA で可能でしょうかPHONETICでは空欄になってしまうので、 常に「sheet1のA1にA2(引数=ひらがな)のカタカナを表記をする」という方法がありましたら 乱筆ながら宜しくお願いします。<(_ _)>
>>955 「数字をカタカナで表記する」って意味がいまいちわからんが
「excel vba ひらがな カタカナ 変換」でググってみたら?
ひらがなをカタカナ(3行目)でした。。すみません。
【1 OSの種類 .】 Mac OS X 【2 Excelのバージョン 】 Excel 2008 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 B1からJ1まで1~9を記入して、 A2からA10まで1~9を記入して、 B3からJ10までを「7×9」のように見た目かけ算表示させて、 クリックすると隠されていた63が表示させる方法があれば教えて下さい。 「1~9」や「7×9」や63は手で予め入力するとします。 簡易自習システムを作りたいのです。
>>951 Excel入っている環境での話なら、VBアプリからExcelランタイムライブラリを参照して
シートと同機能の物をフォームに配しVBAと同じ操作が可能だが
当然Excelのランタイムライブラリの入っている環境が必要なわけで、Excel入ってない環境でも使えるようにと
Excelのランタイムライブラリを自作ソフトに同梱再配布可能にしたら、それはExcelをどんどんコピーして
配っていいですよって言ってるのと同じでMSの大損になるからそんなのは認めていないし
当然.NET FrameworkやVB6ランタイムみたいにExcelのランタイムが無償で落とせるってことも無いから無理
代替としてVB6ランタイムに含まれているグリッド系コントロールを使えば経理システムくらい作れる
当然ながらExcelシートより遙かに低機能なので、作る手間は大きくなるけどね
イメージとしてはフリーのCSVエディタがあるが、あれの基盤になってるのが大抵グリッド系コントロール
もちろんCSVエディタとして配布されているものはいろいろ手を加えているので、元はもっと低機能だけどね
あとは自分はよく知らないが、フリーのオフィスソフトOOoでもVBA互換機能を持つバージョンがあるようだから
そっちを使う方が小さな手間で大きな成果が得られるかも知れない
>>958 セル右クリック > コメントの挿入
表示は「クリックしたら」ではなく「セルにマウスカーソル移動したら」だけど
セルにカーソル合わせなければ表示されないので、学習には使えるでしょ
>>952 0からはじめるなら逆引き系は避けた方がいい。
入門/初心者 と書いてあるのがいい
上級レベルはどうせ実践で覚えるから本はいらん。資格がほしいなら資格の本を買うといい。
個人的にはページを広げても閉じない、薄めorA4並にでかいやつがオススメ
>>955 vbaひらがなをカタカ
でぐぐればいっぱいでてくるよ
"vbaひらがなをカタカ" に一致する結果は見つかりませんでした @Google.....orz
あれ、それ実はわざとなんだけどな 次の検索結果を表示しています: vbaひらがなをカタカナ って出るからいいかと思って ブラウザによって違うのかな?
設定次第
エクセルでソートするときには「▲」「△」を区別してくれないのでしょうか?
>>965 ん?普通にするぞ
△
▲
△
△
▲
で昇順だと▲が上に来る
区別してくれるよ、セルの値ならね ただし表示形式で付けている記号とか、セルの値じゃないものは無視 値 表示形式 表示 -1 0;-0;0;@ -1 -1 0;▲0;0;@ ▲1 -1 0;△0;0;@ △1 -1 0;[赤]0;0;@ 1 (赤文字) これらは、表示は違うけど値は同じなので 値を対象とするソートでは区別されない
その発想はなかった
>>967 ソートできるようにするには▲1とか△2の▲△を別のセルに分離しないと出来ないってことでしょうか?
970 :
967 :2012/07/27(金) 15:54:56.99
>>969 可能性の一つとしてまさかとは思いながら書いたけど
マジで0;▲0;0;@と0;△0;0;@が混在させてるの?
結論として▲△を別のセルに分離すれば目的を達せるかといえば、これは君も解ってるんだろうけど
間違いなく目的は達せる
しかしそれ以外には一切方法がないかと言われると、それはデータがどうなってるかで変わってくる
▲と△を使い分けるからには、そしてソートで区別したいからには、データにも区別するだけの
理由があるはずで、わざわざ▲△を分離しなくても、▲と△を使い分ける理由部分がデータから判断できるなら
それをキーに含めれば良いだけかも知れないし
あとは力業になるけど、VBAで自分でソートアルゴリズム書けば
VBAではセル.Valueで実値、セル.Textで表示値を取れるから、表示値取って自前のソートにぶち込み
それをシートに反映することも出来る
将棋の棋譜なんですけどたとえばこんなのを縦にソートして▲を先に出来ない. ▲7六歩 ▲5六歩 △3四歩 △3三角 ▲2六歩
将棋の棋譜をソートする意味が分からない
ある意味作業列だけど、手順って列作ればいいんじゃない。
それの▲△を表示形式で付けてるの? データ作ったのは君じゃないかもしれないが、それを表示形式の符号付与でやるって それどう考えてもデータの作り方間違ってるよ それに盤面の地図としての棋譜ではなく 対戦の記録としての棋譜なら、何手目かが入ってるか、最初は手順通りに並んでるでしょ? 1 ▲7六歩 2 △3四歩 3 ▲2六歩 4 △3三角 5 ▲5六歩 何手目かが入っていればそれで、手順通りに並んでるが何手目かは入ってないなら 何手目かの列作れば、パスの無い将棋では先手が奇数、後手が偶数になるので =1-MOD(A1,2)とかで先手0、後手1を出したら、それを第1キーにしてソートしたらいいだけの話 MODのを第1、何手目かを第2キーでソートしたら ▲1手目 ▲3手目 ▲5手目 △2手目 △4手目 △6手目 となる
vbaひらがなをカタカ ↓ 次の検索結果を表示しています: vbaひらがなをカタカナ 元の検索キーワード: vbaひらがなをカタカ 検索約 60,400 件 (0.19 秒)
まだそのミス気にしてたのか? つうか放っておけばもう誰も気に止めてないのに 自分が気にしてフォローしようと言い訳とかしたら逆効果だよ
979 :
977 :2012/07/27(金) 23:52:00.94
>>978 エクセル マクロ 配列でググってみましたがよく分からんです。
初心者なので、できれば具体的に書いてホスィ〜
甘えんな
>>979 「excel vba シートの値を配列に」でググれ
>>977 この使用数ってコロコロと変わるものなの? 感じだとマスター系で基本的には変わらなそうなんだけど。
あと変数を使いまわそうとして無駄なループをさせていないか。
983 :
名無しさん@そうだ選挙にいこう :2012/07/28(土) 00:41:16.04
>>977 配列使うって
たぶんこんなやつだとおもう
Sub 集計()
Dim S As Variant
Dim T As Variant
Dim Z As Variant
Application.ScreenUpdating = False
Set 使用数 = Workbooks("使用数.xls").Worksheets("一覧")
Set 注文数 = Workbooks("注文数.xls").Worksheets("都道府県")
Set 残数 = Workbooks("残数.xls").Worksheets("数量")
S = 使用数.Cells(3, 3).Resize(366, 56)
T = 注文数.Cells(3, 3).Resize(56, 48)
Z = 残数.Cells(3, 3).Resize(366, 49)
For i1 = 1 To 366
For j1 = 1 To 48
pcs = 0
For j2 = 1 To 56
If S(i1, j2) > 0 Then
pcs = pcs + S(i1, j2) * T(j2, j1 - 1)
End If
Next j2
Z(i1, j1) = Z(i1, j1 - 1) - pcs
Next j1
Next i1
残数.Cells(3, 3).Resize(366, 49) = Z
End Sub
まちがえた × pcs = pcs + S(i1, j2) * T(j2, j1 - 1) ○ pcs = pcs + S(i1, j2) * T(j2, j1 ) × Z(i1, j1) = Z(i1, j1 - 1) - pcs ○ Z(i1, j1+1) = Z(i1, j1) - pcs あと、 If S(i1, j2) > 0 Then End If は要らないかも pcs = pcs + S(i1, j2) * T(j2, j1 - 1) だけをひたすら実行するほうがIfの判定後に計算するよりも早いかもしれない。 (使用数がマイナスの値にならない限り、条件分岐を実行してから計算するより 無駄に思えてもゼロの積算も実行したほうが結果早いかもしれない。って意味)
セルに数値が入ってるとき Range("C3:AR" & B_ROW).ClearContents Range("C3:AR" & B_ROW) = "" は同じ?
ヒント IsEmpty
てst
Range("C3:AR" & B_ROW).ClearContents は Range("C3:AR" & B_ROW) = Empty と同じ
>>960 既に作成済みの表なんで、もう一度作り直すのはちょっと面倒だけど、
サンクス。
990 :
名無しさん@そうだ選挙にいこう :2012/07/28(土) 15:19:52.69
9x9のマトリクスごときで「ちょっと面倒」ってどんだけだよw
わずか9×9マスの将棋は、いまだにスーパーコンピューターでもヒィヒィいいながら解いてる段階だけどな
>>960 の場合は1マス1回の処理だからたったの81回だよ
将棋や囲碁の最適手探索といっしょにすんな
994 :
名無しさん@そうだ選挙にいこう :2012/07/28(土) 17:16:21.04
「キモい」なんて最高の褒め言葉だね。
【1 OSの種類 .】 Windows** 【2 Excelのバージョン 】 Excel** 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 エクセルVBAでADOを使用してアクセスのテーブルに接続する方法とか勉強中ですが、これってアクセスがインストールされてない パソコンからでも接続可能なんですか? とあるサイトでの >MDBファイルによる簡易データベースはほとんど費用もかからず簡単にクライアントサーバーシステムを実現します。 >データベーステーブル専用のMDBファイルをファイルサーバーの共有ディレクトリにおき、クライアントPCからアクセスさせます。 これにチャレンジしたいけど、クライアントPC全部にアクセス必要ならどう考えても費用がかかるので実用につなげれる気がしない。
997 :
977 :2012/07/28(土) 19:41:59.44
>>983 おぉ、凄い!ありがとうございます。
自宅のPCだと977のマクロで約20秒、983のマクロでほぼ瞬時でした。
S、T、Zはセルの範囲を表してるのでしょうか?
残数.Cells(3, 3).Resize(366, 49) = Zの意味もワケワカメでしたが
Application.ScreenUpdating = Trueにしたら分かりました。
For j1 = 1 To とか、For j2 = 1 To とか、何で1からなの?って疑問も
解けましたし、これによって他のマクロにも応用ができそうなので、
大変参考になりました。
次回、10桁のトリップを出して頂ければ、1000モリタポをお送りします。
998 :
983 :2012/07/28(土) 20:16:23.00
>>997 お役に立てて何よりです。
ほかの方がお出しになったキーワードでぐぐるのが早いと思いますが、
要するにセルを一個ずつ読み込むよりも、まとめて全部読み込んじゃって、
エクセルのメモリ上で処理するほうがはるかに早いってことです。
で、私もこのスレとかでいろいろ教えてもらってるし、
モリタポとかの2chの仕組みはよくわかんないのでお礼とかはどうでも良いです。
これからもお互いがんばって勉強しましょう。
999 :
977 :2012/07/28(土) 21:01:15.31
>>998 エクセルって、書き込みに時間が掛かるんですね。
そもそもセルの値をメモリに読み込ませるって発想が無かったので、
ググっても983のようなマクロには辿り着けなかったと思います。
マクロを覚えて仕事が早くなりましたが、まだまだ改善の余地が
ありそうなので、これからもよろしくお願いします。
1000なら俺が1000モリタポげっとー!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。