Excel総合相談所 103

このエントリーをはてなブックマークに追加
1名無しさん@そうだ選挙にいこう
前スレ
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 バグ・動作上の不都合・仕様に関する質問などはマイクロソフトのサポートを受けましょう。
  ここは技術的な質問のみで。
2名無しさん@そうだ選挙にいこう:2012/06/20(水) 18:33:15.89
>>1
3名無しさん@そうだ選挙にいこう:2012/06/20(水) 21:37:51.23
>>1
お疲れさまです。
4名無しさん@そうだ選挙にいこう:2012/06/21(木) 01:32:41.85
前スレ>>998
> 例えば6月30日の21時に到着したくて
> そこまでたどり着くのに30時間21分かかるとして
> だったら何日の何時に出発すればいいのかという質問なのですが

セルの書式設定の表示形式を変える
到着日時のセル→m"月"d"日 "h"時"m"分"
かかる時分のセル→[h]"時"m"分"
出発日時のセル→m"月"d"日 "h"時"m"分"

意味が分からなければここを全部読んでみて(「関連情報」も含めて全て)
http://support.microsoft.com/kb/883199/ja
5名無しさん@そうだ選挙にいこう:2012/06/21(木) 01:33:30.80
前スレで質問したのですが
1000いっちゃったのでサイド質問させてください

6月30日の21時に到着したいと思い
そこまでたどり着くのに30時間21分かかるとして
だったら何日の何時に出発すればいいのかという計算は
エクセルでどう入力すればいいのでしょうか
6名無しさん@そうだ選挙にいこう:2012/06/21(木) 01:36:27.88
>>4
ぎゃーごめんなさい
そのページ見てきます
ありがとうございました
7名無しさん@そうだ選挙にいこう:2012/06/21(木) 01:42:27.30
>>6
入力する値はこんな感じでね

到着日時のセル→6/30 21:00
かかる時分のセル→30:21
8名無しさん@そうだ選挙にいこう:2012/06/21(木) 06:09:22.24
>>前スレ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"になるだけだけど。

とにかく、質問の意味が良く理解できないよ
9名無しさん@そうだ選挙にいこう:2012/06/21(木) 11:40:03.84
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010

前から気になっていたことなのですがExcelで保存した箇所までしかやり直し(元に戻すじゃなくてやり直し)が出来ないのは仕様なのでしょうか。
(例えばセルA1からA10まで順番に適当に入力して、A5まで元に戻すを実行して、その後ファイルを保存、やり直しを実行しようとしても実行出来ません)
10名無しさん@そうだ選挙にいこう:2012/06/21(木) 11:52:41.24
>>9
はいそうです
11名無しさん@そうだ選挙にいこう:2012/06/21(木) 12:01:35.49
>>10
違ってたらうれしかったのですがやっぱりそういう仕様でしたか。
ありがとうございます。
12前スレ941:2012/06/21(木) 20:02:00.21
>>前スレ942-943
ありがとうございました。
13名無しさん@そうだ選挙にいこう:2012/06/21(木) 20:11:23.83
すいませんお願いします。

【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

ピポットテーブルを今勉強し始めたのですがうまくいきません。
行ラベルに1つドラッグしました(商品名とします)。
もう一つその下にドラッグする(担当者とします)と各商品名の下に担当者が来ると思うのですが、
なぜか表では1つ右の列に表示されます。
下に表示するにはどうすればいいでしょうか?
14名無しさん@そうだ選挙にいこう:2012/06/21(木) 20:20:22.24
【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 & 二行目
15名無しさん@そうだ選挙にいこう:2012/06/21(木) 20:37:12.91
>>13
ワカンネ
>>14
subつけた?2003だと動いたんだけどな
2010で記述方法が変わってるのかもしれない

Sub a()
Dim 一行目 As String
Dim 二行目 As String

一行目 = Range("A1")
二行目 = Range("A2")

ActiveCell.AddComment Text:=一行目 & vbCrLf & 二行目
End Sub
1614:2012/06/21(木) 20:47:05.83
>>15
早速の回答ありがとうございます
省略しましたが実際のコードではsubも付けています
A1の値のみをコメントに入れることなら出来たのですが、&を付けるとエラーになってしまいます
17名無しさん@そうだ選挙にいこう:2012/06/21(木) 21:03:30.37
>>16
これを追加したらどうなる?
ActiveCell.ClearComments
1814:2012/06/21(木) 21:39:28.01
>>17
一度クリアしてからコメントを挿入する感じでしょうか
今手元にパソコンが無いので明日会社で試してみます
ありがとうございます
19名無しさん@そうだ選挙にいこう:2012/06/21(木) 22:06:53.13
>>18
もし、>>17でエラーでなくなるなら、AddCommentのかわりにNoteTextでもいけるよ
ActiveCell.NoteText Text:=一行目 & vbCrLf & 二行目

20名無しさん@そうだ選挙にいこう:2012/06/21(木) 22:39:22.39
【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
21名無しさん@そうだ選挙にいこう:2012/06/21(木) 23:01:28.83
>>13
どんな表を元にどんな風に集計しようとしているのか全く読みとれない
22名無しさん@そうだ選挙にいこう:2012/06/21(木) 23:09:25.64
>>20
withの使い方間違ってないか?
あとselectも?
23名無しさん@そうだ選挙にいこう:2012/06/21(木) 23:43:52.50
>>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はどうなってますか?
2514:2012/06/22(金) 19:13:00.73
>>15のコードを忠実に書いたら上手く処理されました!
&の前後にスペースを入れていなかったことが原因のようです

とても助かりました
回答くれた方ありがとうございます


26名無しさん@そうだ選挙にいこう:2012/06/22(金) 19:19:34.23
>>23
それだって、↓ということだから、エラーになると思うけど

.SeriesCollection(1).Cells(i * 2, 1)

そもそもコードの示し方が中途半端すぎだよ
27名無しさん@そうだ選挙にいこう:2012/06/22(金) 20:02:14.62
こんな感じか
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))
28名無しさん@そうだ選挙にいこう:2012/06/22(金) 21:43:41.24
来月を変数に入れる方法を教えてください。

kongetsu = Format(Date, "mm") * 1 & "月"
raigetsu = Format(Date, "mm") * 1 + 1 & "月"

これだと、12月のとき13月になってしまいます。
29名無しさん@そうだ選挙にいこう:2012/06/22(金) 21:53:42.00
>>28
DateAdd使え
30名無しさん@そうだ選挙にいこう:2012/06/22(金) 21:53:58.34
Vista
Office2007
の環境です。
いつの頃からかわかりませんが、エクセルのセルにアルファベットや数値を入力するとPCから読み上げる音声がながれます。今日ボリュームをいじっていて気づきました。
恐いです。助けてください。
31名無しさん@そうだ選挙にいこう:2012/06/22(金) 21:54:48.48
>>28
raigetsu = Format(DateAdd("m", 1, Date), "m") & "月"
32名無しさん@そうだ選挙にいこう:2012/06/22(金) 22:05:01.87
>>30
ヘッドフォンを買い換えろ
3328:2012/06/22(金) 22:11:50.82
>>31
ありがとうございまし
34名無しさん@そうだ選挙にいこう:2012/06/22(金) 22:42:35.57
>>28
これしきのことでvbaに頼らないとすれば、
作業セル=month(date(year(today()),month(today())+1,day(today())))
3528:2012/06/22(金) 22:55:48.47
3628:2012/06/23(土) 00:31:54.64
>>34
わざわざワークシート関数でのレスありがとうございます
お互いVBAの勉強頑張りましょうね
37名無しさん@そうだ選挙にいこう:2012/06/23(土) 02:21:38.76
>>26>>27
単純に.Cellsにしてたのが悪かった・・・けど今回のでグラフで勘違いしてたところに気付けました。
大変助かりましたありがとうございます。
38名無しさん@そうだ選挙にいこう:2012/06/23(土) 12:38:13.73
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 少々
【4 VBAでの回答の可否】 可

Book1 Sheet1のA1セルに =[Book2.xls]Sheet1!$B$1 と入れて閉じておきます。
Book2を開いて、Sheet1のセルがどこにリンクされてるか確認する方法を教えてください。
39名無しさん@そうだ選挙にいこう:2012/06/23(土) 13:09:06.05
>>38
ブックを開く→"Workbooks.Open"でググれ
セルに数式が入力されているかどうかを調べる→"Range.HasFormula"でググれ
文字列の検索はLike演算子とかInStr関数使え
40名無しさん@そうだ選挙にいこう:2012/06/23(土) 13:15:33.71
>>39
それBook1とBook2逆じゃないの
41名無しさん@そうだ選挙にいこう:2012/06/23(土) 13:24:25.42
>>38
無理なんじゃね?

>>39
質問の意味が分かってねんじゃね?
42名無しさん@そうだ選挙にいこう:2012/06/23(土) 13:30:21.10
43名無しさん@そうだ選挙にいこう:2012/06/23(土) 13:40:01.96
複乳さんがお亡くなりになられたのは本当ですか?
44名無しさん@そうだ選挙にいこう:2012/06/23(土) 14:10:08.01
>>38
まず閉じたBook1を開いてみ
話はそれからだ
45名無しさん@そうだ選挙にいこう:2012/06/23(土) 15:19:34.21
>>43
知らん。随分見てないな
46名無しさん@そうだ選挙にいこう:2012/06/23(土) 16:49:00.37
せんせー◆adhRKFl5jU = 複乳なの?
47名無しさん@そうだ選挙にいこう:2012/06/23(土) 19:17:31.44
VBAをやるにあたって英語って最低限わかってなだめなのか
自分の頭は中1で止まってるんだが
48名無しさん@そうだ選挙にいこう:2012/06/23(土) 19:25:05.27
今の時代Google先生とExcite先生がいるじゃないか
49名無しさん@そうだ選挙にいこう:2012/06/23(土) 19:40:45.09
>>47
VBAなら日本語の情報あふれてる
英語なんて全く不要
50名無しさん@そうだ選挙にいこう:2012/06/23(土) 20:59:16.87
MSDNライブラリの日本語訳が狂ってる時がある
英語が必要になるのってその時ぐらいかと
5138:2012/06/23(土) 21:14:39.37
>>39
>ブックを開く→"Workbooks.Open"でググれ
なぜ? 意味がわかりません。

>セルに数式が入力されているかどうかを調べる→"Range.HasFormula"でググれ
ググりましたが、Book2には数式が入っていません。
どのように使えばいいのでしょうか?

>>41
無理なんですか?

>>42
このあとが分かりません・・・orz
ttp://s1.gazo.cc/up/s1_27642.jpg

>>44
開いてみましたが何か?
52名無しさん@そうだ選挙にいこう:2012/06/23(土) 21:16:50.68
>>51
矢印をダブルクリックすると「ジャンプ」で参照元が出るよ
5338:2012/06/23(土) 21:39:39.17
>>52
出ました。
ありがとうございます。
54名無しさん@そうだ選挙にいこう:2012/06/24(日) 00:36:25.39
>>34とか>>39ってバカなの?
55名無しさん@そうだ選挙にいこう:2012/06/24(日) 01:46:30.40
そうだよ、よかったね
56名無しさん@そうだ選挙にいこう:2012/06/24(日) 11:17:05.90
よかったね よかったよ よかったね よかったよ
カプカプカプカプカプカプカプカプ!!!!!!!!!
57名無しさん@そうだ選挙にいこう:2012/06/24(日) 12:50:30.99
【1 OSの種類         .】 WindowsXP SP3
【2 Excelのバージョン   】 Excel2007

計画と実績を書いた表があります。
http://uproda.2ch-library.com/544177r6P/lib544177.jpg

計画に対し実績が上回ったら、計画のセルに濃い水色で
このように着色をしたいです。
http://uproda.2ch-library.com/544179zwE/lib544179.jpg

下記のようなマクロを書きましたが、うまくいきません。
http://uproda.2ch-library.com/544178rEs/lib544178.jpg
どこを直せばいいでしょうか?

Sub 着色()
 Dim TTL As Long, PLN As Integer, EXC As Integer
 Dim i As Integer, j As Integer
 TTL = Range("B1048576").End(xlUp).Row
 For i = 3 To TTL Step 2
  PLN = 0
  EXC = 0
  For j = 5 To 35
   If Cells(i, j) > 0 Then
    PLN = PLN + Cells(i, j)
    EXC = EXC + Cells(i + 1, j)
    If PLN <= EXC Then
     Cells(i, j).Interior.Color = 16776960
    End If
   End If
  Next j
 Next i
End Sub
58名無しさん@そうだ選挙にいこう:2012/06/24(日) 13:03:26.40
VBAのハウツー本を買ってきたがまずオブジェクトってなんやねん、ということから始まって
4か月。未だにまったく進歩がない、果たして私はそれでも覚えられるのだろうか
59名無しさん@そうだ選挙にいこう:2012/06/24(日) 13:23:03.37
>>57
If Cells(i, j) > 0 or Cells(i+1, j)>0 Then かな?
6057:2012/06/24(日) 13:36:14.01
61名無しさん@そうだ選挙にいこう:2012/06/24(日) 13:39:51.98
>>58
オブジェクトってのは実体
実体という言い方だと捉えにくいが、最低限エクセルで見えてるものは絶対にオブジェクト
bookやワークシート、セル、コマンドボタンに図形は全てオブジェクト。

ただVBAはセルの操作が主になるので、セルの操作を極めたほうがいいと思う
オブジェクトはクラスという概念と密接に関わるのだが、vbaはクラスを意識しなくても操作できちゃうから覚えにくい
オブジェクトはC++やJAVAやれば一発で理解できるよ
62名無しさん@そうだ選挙にいこう:2012/06/24(日) 13:41:01.56
>>60
If Cells(i, j) > 0 and PLN <= EXC Then これもかな
63名無しさん@そうだ選挙にいこう:2012/06/24(日) 13:50:47.09
>>57
実績>計画、だと思うんだけど、
E5はどうなん?計画だけで実績がないところも塗るのかい
6457:2012/06/24(日) 13:55:28.19
>>62
だめでした・・・
http://uproda.2ch-library.com/544198vHr/lib544198.jpg

>>63
塗り方は、57で書いたとおりです。
http://uproda.2ch-library.com/544179zwE/lib544179.jpg
65名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:00:34.16
>>57
条件付き書式で塗っちゃダメなの?
66名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:03:22.99
あぁ、コレもしかして二行で1セットなのか。
説明せんと分からんわwww
まぁいいわ
a  b  c d
10 30 10 10
20 00 10 1000
この場合はどう塗るんだ?
ABはわかるがCDの条件が分からん
67名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:04:48.77
>>64
んんー、どこが駄目なのかよくわからん
塗り方のルールが理解できん、というか見本間違ってないか?
68名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:11:19.78
E3:K3とE4:K4の合計といった感じで比べてるはず
69名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:13:31.49
>>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
7057:2012/06/24(日) 14:16:41.42
71名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:19:58.33
>>69
なるほね。やりたいことがわかったよ
72名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:24:49.86
条件付き書式だと一瞬でできた
B3=IF(B3<>"",SUM(4:4)>SUM(B$3:B3))
73名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:26:00.50
前後は問わねえってことか・・・?
74名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:26:11.58
>>70
>>69で理解したつもりが、それ見せられたら、またわかんなくなったじゃねーか
75名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:28:10.00
こういうやつ困るよなあ
説明したつもりにだけなっていてその実全然説明できてないっていう
説明したつもりになってるから何を聞いても「さっき言っただろ」みたいな態度とるし
76名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:28:40.20
>>70
計画がリセットされるタイミングがわからん
77名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:30:22.53
10か20しか出てこないのか?
もっと細かいレベルまで対応させないとダメなのか?
あーくそわかんねえ
78名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:33:27.16
ここまで周到に準備してるって事は
釣りって事だよ
79名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:33:48.08
>>70の途中から塗ってないのはリセットじゃなくて単に怠慢
>>69>>72で正解
80名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:37:55.60
ようするに、その月の計画で、どの日以降の分から未達かをしりたいだよね
だったら、>>69>>72でOK
8157: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)が塗られます。
8257:2012/06/24(日) 14:43:27.19
>>76
「計画がリセット」の意味が分かりません。

>>77
実際にはもっと複雑なので、10と20だけにしました。

>>79
やりたいのはこれです。
http://uproda.2ch-library.com/544179zwE/lib544179.jpg
69では動きませんでした。
83名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:43:27.36
もしかして>>70は質問者とは別の愉快犯か?
8457 ◆MwLUkYVrGI :2012/06/24(日) 14:50:55.59
>>80
69は動きませんので、正解でもOKでもないです。

条件付き書式は全てのセルに設定するのでしょうか?

>>83
70は私、本人です。
85名無しさん@そうだ選挙にいこう:2012/06/24(日) 14:56:12.78
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
を省いてるんだろ。足したらちゃんと動く
8657 ◆MwLUkYVrGI :2012/06/24(日) 14:56:22.41
>>71 >>74 >>79-80

69のマクロだと、ウンともスンとも言わないですが
エクセルのバージョンは2007ですか?
8757 ◆MwLUkYVrGI :2012/06/24(日) 15:01:50.74
>>85
3行が抜けてたんですね。
失礼しました。

でもダメでした・・・
http://uproda.2ch-library.com/544238SJb/lib544238.jpg

これらの条件を満たしていません。
7行目は計画の累積が50、実績の累積は40なので、
計画の累積40を満たすセル(E7, I7, K7, P7)が塗られます。
11行目は計画の累積が80、実績の累積は40なので、
計画の累積40を満たすセル(E11, I11)が塗られます。
88名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:07:27.75
実際の数字はもっと複雑って・・・だから説明不足だって言ってんだろ
常に計画の累計と実績の累計は一致すんのかよ?
一番大事なデータ部分を端折るんじゃねえクソが
89名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:08:31.35
なんで質問してる人のほうが偉そうにしてるの?
9057 ◆MwLUkYVrGI :2012/06/24(日) 15:13:55.47
>>88
>常に計画の累計と実績の累計は一致すんのかよ?

月末になれば一致します。
9157 ◆MwLUkYVrGI :2012/06/24(日) 15:16:37.24
誤記訂正

誤:月末になれば一致します。
正:月末の前日になれば一致します。(棚卸しで入出庫禁止があるため)
92名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:17:16.72
はいはい
じゃあ月末までは一致しない部分が出てくる訳だろ
その説明はどこにあんだよ
もう最初から塗りつぶしのグラフでも作ったほうがいいんじゃねえのか
こうやって都度説明求めて方向転換させるのは大迷惑なんだが?

いやそういう誤記はどうでもいいから
9357 ◆MwLUkYVrGI :2012/06/24(日) 15:19:25.95
>>88
>一番大事なデータ部分を端折るんじゃねえクソが

一番大事なデータ部分は端折っていません。
これで十分だと認識しています。
http://uproda.2ch-library.com/544177r6P/lib544177.jpg
9457 ◆MwLUkYVrGI :2012/06/24(日) 15:20:55.90
>>92
計画の累積と実績の累積が違う場合の条件は
81に書いてます。
95名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:22:17.97
ははははこりゃすごいや
ここまで偉そうな質問者初めて見たよ
96名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:24:50.91
低脳はすっこんでろよ
97名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:27:55.63
>>93
貴方がそれで十分だと認識していても
相手が不足だと認識していれば意味はありませんよ

私の書込みではありませんが
たとえば>>66に対して答えてあげては如何ですか?
98名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:29:31.11
エスパー検定!エスパー検定の認定者はまだか!!
99名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:35:00.17
僕みたいな低能が思うに月末の前で一致するならそんな表はいらないと思うんです。
100名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:36:00.94
>>98
そこそこ自信があったつもりだったが、これは無理だ
10157 ◆MwLUkYVrGI :2012/06/24(日) 15:36:18.71
>>97
66は計画の累積が60、実績の累積が1030なので、
全ての計画のセルが塗られます。
10257 ◆MwLUkYVrGI :2012/06/24(日) 15:37:16.00
すみません、バイトに行って来ます。
103名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:37:52.81
ワロタwwww
104名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:43:22.36
なぜ戻る時間を書かないw
105名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:47:52.05
>>70でわざわざ手書きまでして囲ったのが意味不明にした根源なんじゃ…
106名無しさん@そうだ選挙にいこう:2012/06/24(日) 15:50:02.23
とりあえず>>69>>72であってるよ
これで正しくないってのなら>>57が手順をミスってるだけ
じゃあ俺もバイト行ってくるわ
107名無しさん@そうだ選挙にいこう:2012/06/24(日) 16:03:22.67
最初の>>57のコードでミスリードされた感じ
釣りだとしたら月後半部分のデータをみせてないのも絶妙
108名無しさん@そうだ選挙にいこう:2012/06/24(日) 17:32:37.38
>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
109名無しさん@そうだ選挙にいこう:2012/06/24(日) 17:33:20.81
otto,(goukei >= kei)kouka
酒買いに行こう
110名無しさん@そうだ選挙にいこう:2012/06/24(日) 17:40:09.70
>>108
クソースすぎてワロタ
111名無しさん@そうだ選挙にいこう:2012/06/24(日) 17:46:36.57
>>110
ようやく質問の意味を理解して
書き始めたはいいが一瞬で飽きてしまい
一秒でもこんな無駄な作業を終わらせたい
そんな思いを込めて私、書きました
112名無しさん@そうだ選挙にいこう:2012/06/24(日) 17:54:02.14
>>108
間違ってるよ。
113名無しさん@そうだ選挙にいこう:2012/06/24(日) 17:54:34.47
>>112
まじで!まぁいっか
114名無しさん@そうだ選挙にいこう:2012/06/24(日) 20:02:07.69
質問の意味を理解するのに2時間とかwww
こんなとき、複乳さんがいれば10分も掛からなかっただろうにwww
115名無しさん@そうだ選挙にいこう:2012/06/24(日) 21:31:46.60
あいつはエスパー能力高かったなw
116名無しさん@そうだ選挙にいこう:2012/06/24(日) 21:42:00.50
1日でexcelがマスターできる??

http://mcas.ichiyazuke.jp/
117名無しさん@そうだ選挙にいこう:2012/06/24(日) 22:01:55.76
Excel習うのに無料らしいよ

http://onpaso.net/mg/excel.html?gclid=CKLWyKP15rACFYY3pAodnFwD0A

こういのって、どうなの?
118名無しさん@そうだ選挙にいこう:2012/06/24(日) 22:04:46.51
>>116-117
できねーよボケ
119名無しさん@そうだ選挙にいこう:2012/06/24(日) 22:32:10.24
広告にいちいち反応するなよ恥ずかしい
120名無しさん@そうだ選挙にいこう:2012/06/24(日) 22:49:59.27
前日比のある日報を書いています

左に前日、右に今日のデータを入力しているのですがこれを
新規ブックを作成して右の部分を切り取って左に張り付け、の動作を行いたいのですがこのマクロを作りたい場合どのようなワードで検索を行えば調べられますか?
121名無しさん@そうだ選挙にいこう:2012/06/24(日) 22:53:00.80
>>120
基本はマクロの保存
>新規ブックを作成して右の部分を切り取って左に張り付け、
ではなく、
右の部分を切り取って左に張り付け、新規ブックに保存
ならマクロの保存が効く
また詰まったら来るといい
12257 ◆MwLUkYVrGI :2012/06/24(日) 23:05:05.76
>>108 >>111
ありがとう。
そのままだと使えなかったので、ActiveSheet.Range(i + 1 & ":" & i + 1)を直しました。

>>109
その意味は?

>>112
どこが?

>>114
そうですね。
123名無しさん@そうだ選挙にいこう:2012/06/24(日) 23:06:43.56
出てくんな死ねカス
124名無しさん@そうだ選挙にいこう:2012/06/24(日) 23:16:01.76
エクセルみたいなソフトってOoo以外にありますか?
125名無しさん@そうだ選挙にいこう:2012/06/24(日) 23:22:05.13
>>124
GoogleドキュメントとかLibreOfficeとかKINGSOFT OfficeとかLotus1・2・3とか
126名無しさん@そうだ選挙にいこう:2012/06/24(日) 23:42:10.52
メッセージを出して、「はい」ならスルーさせ、「いいえ」なら終了させるマクロは?
127名無しさん@そうだ選挙にいこう:2012/06/24(日) 23:45:04.94
>>125
ありがとうございます!
128名無しさん@そうだ選挙にいこう:2012/06/24(日) 23:46:41.24
>>126
ttp://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_msgbox.html
の他、vbyesnoでぐぐれ
わからなければコードとともに、またおいで
129名無しさん@そうだ選挙にいこう:2012/06/24(日) 23:55:01.57
>>128
d
130名無しさん@そうだ選挙にいこう:2012/06/24(日) 23:59:00.02
数値か文字かを分けるのを探してたら
2つのサイトでこんなのがありました。

If VarType(Range("A1").Value) = vbDouble Then
131名無しさん@そうだ選挙にいこう:2012/06/25(月) 00:09:08.81
>>130
試してみたが、文字列でもlongになるね
このスレまるごとコピペしてみたけどlongだった
(ちなみに>>23ぐらいで、あとは切り捨てられた)
ポインタっぽい値の保存の仕方をしてると思う
132名無しさん@そうだ選挙にいこう:2012/06/25(月) 00:48:06.18
>>125
三四郎「おれは?」
133名無しさん@そうだ選挙にいこう:2012/06/25(月) 06:56:08.64
ちょっとわかりづらいかも知れませんが
毎日列を挿入して日付列が増えていく日報があり
最終列に SUM(G2:M2)として直近7日間の合計を入れてます。

日付を挿入しても相対アドレスだからSUM(G2:M2)のままですが
これを挿入掛けた時点でSUM(H2:N2)にしたいのです。

今は
・日付挿入
・合計列を次の隣の列にコピー :SUM(H2:N2)になる
・今の合計列を削除する
でやってますが

もっとシンプルに出来ませんか?
SUM([このセル-8]:[このセル-1])のようなポインタ的使い方とか無いですか?
絶対アドレスとも違うし・・・・相対固定アドレスというか
134名無しさん@そうだ選挙にいこう:2012/06/25(月) 07:01:34.68
>>133
offset()
135名無しさん@そうだ選挙にいこう:2012/06/25(月) 07:09:31.25
ありがとう
調べてみます
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関数とかを見てみたのですが、上手くできませんでした。
お手数をおかけしますが、よろしくお願いいたします。
137名無しさん@そうだ選挙にいこう:2012/06/25(月) 11:41:30.92
>>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")
138名無しさん@そうだ選挙にいこう:2012/06/25(月) 14:27:27.49
ワンタッチで
Aさん=1
Bさん=2・・・・に数値化しちゃうやつなかったっけ?
139名無しさん@そうだ選挙にいこう:2012/06/25(月) 15:25:34.94
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2010

A列にボタンを貼り付ける
A列を非表示にする。
保存する。再度開いて
A列を再表示するとボタンが左端に消えかかっている。
ボタンを貼り付けた位置にちゃんと表示させるにはどうすればいいのですか?
14057 ◆MwLUkYVrGI :2012/06/25(月) 20:50:01.02
>>72
今さらですが・・・
条件付き書式の設定がわかりません。
141名無しさん@そうだ選挙にいこう:2012/06/25(月) 20:53:00.14
[email protected]って入力すると青い文字でアンダーバーが出ちゃうんですけどフツーの黒い文字でアンダーバーが出ないやつにできますか?
142名無しさん@そうだ選挙にいこう:2012/06/25(月) 21:21:46.89
>>141
そのセルを選択して右クリック→ハイパーリンクの削除
143名無しさん@そうだ選挙にいこう:2012/06/25(月) 21:47:02.26
>>141
http://kokodane.com/tec46.htm
ツール オートコレクトのオプション インターネットとアドレスのなんとかかんとか
144名無しさん@そうだ選挙にいこう:2012/06/25(月) 22:31:16.42
>>140
死ねカス二度と出てくんな
あれだけ迷惑かけて謝罪のひとつもなしか
人間として恥を知れ!
145名無しさん@そうだ選挙にいこう:2012/06/25(月) 23:08:18.34
>>139
コントロール右クリックで書式設定、プロパティ
>>138
イマイチ分からん
146名無しさん@そうだ選挙にいこう:2012/06/25(月) 23:51:27.40
【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に表示させたいのですがどう直したらよいでしょうか?
147名無しさん@そうだ選挙にいこう:2012/06/25(月) 23:59:53.93
【1 OSの種類         .】 WindowsXP  
【2 Excelのバージョン   】 Excel2000、2003 
【3 VBAが使えるか    .】 ちょっぴり
【4 VBAでの回答の可否】 可

A1からA30くらいまでに人の名前が入ってます。一部のセルは空白です。
また人名が入ったセルのうち、一部のセルは色がついてます。
人名が入っていて、なおかつ色がついてないセルを抽出して、別シートに貼り付けたいです。
どんな方法があるでしょうか?よろしくお願いいたします。
148名無しさん@そうだ選挙にいこう:2012/06/26(火) 00:05:54.62
>>146
.Value要らない
149名無しさん@そうだ選挙にいこう:2012/06/26(火) 00:11:37.37
>>147
ループ:A1:A30
 条件分岐:セルは空ではない
  条件分岐:セルに色が付いていない
   別シートにコピー

でいいんじゃね?
150名無しさん@そうだ選挙にいこう:2012/06/26(火) 00:36:51.13
>>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
151名無しさん@そうだ選挙にいこう:2012/06/26(火) 00:38:25.89
データに目印をつけるために
1文字目に記号を付ける場合
アスタリスクを使うのはやめたほうがいいですか?
(列を挿入してその列を目印用に使うのはこの場合は無しです)
152名無しさん@そうだ選挙にいこう:2012/06/26(火) 00:54:18.36
検索しにくくなるからな。個人的には使わない
ハイフンおすすめ、と言いたいがエクセルではハイフンで始めるとエラーになるんだった。
/*ではじめればコメントっぽいぞ、と思ったらメニューバーに飛ばされる。
一文字で打てる@がいいんじゃね?やっぱりエラー\(^o^)/

アスタリスクでいいと思います。
それかセルの色を変える。

そういえば@で始めるとどういう扱いになってるんだろう?
153名無しさん@そうだ選挙にいこう:2012/06/26(火) 01:09:04.02
>>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つは数字がはいってないといけませんとエラーになりました。

155名無しさん@そうだ選挙にいこう:2012/06/26(火) 09:41:06.04
>>154
エクセル グラフ 自動更新
でぐぐって一番上
http://www.itsmemo.com/it/excel/000180.html

NO1NO2と二行ある場合、それぞれで名前定義しないとダメっぽい
大量にあるならvbaだろうな
156名無しさん@そうだ選挙にいこう:2012/06/26(火) 09:58:26.30
エクセルの最新版って、オフィス2010なの?
157名無しさん@そうだ選挙にいこう:2012/06/26(火) 10:07:29.87
はい。予定では7月に2012がでるそうで。
158名無しさん@そうだ選挙にいこう:2012/06/26(火) 16:17:16.04
>>156-157

現行最新版は Excel 2011 for Mac
159名無しさん@そうだ選挙にいこう:2012/06/26(火) 16:21:15.70
>>157
ありがとうございます
7月になるまで待つことにしました

>>158
マックにもexcelってあるんですね
160名無しさん@そうだ選挙にいこう:2012/06/26(火) 16:32:36.25
>>158
macの存在忘れてた、スマン
161名無しさん@そうだ選挙にいこう:2012/06/26(火) 19:11:11.49
>>159
エクセルは元々Mac用に開発されたソフトで、その後Windowsに移植されたんだよ。
162名無しさん@そうだ選挙にいこう:2012/06/26(火) 19:13:33.07
Macrosoft なんつって!
163名無しさん@そうだ選挙にいこう:2012/06/26(火) 19:19:26.57
HAHAHA
164名無しさん@そうだ選挙にいこう:2012/06/26(火) 19:20:07.81
ギャー静止ふんじゃった
16557 ◆MwLUkYVrGI :2012/06/26(火) 20:09:07.75
>>72
条件付き書式の設定がわかりません。
166名無しさん@そうだ選挙にいこう:2012/06/26(火) 21:02:47.06
>>165
http://goo.gl/iDgBv
このサイトに、条件付き書式について詳しく書いてあるよ!
コレさえ見れば、今日からお前も条件付き書式マスターだ!
2010ならデータバーでグラデーションとかできて、まじエクセルが楽しくなるYO
167名無しさん@そうだ選挙にいこう:2012/06/26(火) 21:41:12.30
短縮URL怖い
168名無しさん@そうだ選挙にいこう:2012/06/26(火) 21:51:12.69
>>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")
これが正しい書き方だったのかな?
16957 ◆MwLUkYVrGI :2012/06/26(火) 22:07:50.86
>>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巻
171名無しさん@そうだ選挙にいこう:2012/06/26(火) 22:39:59.47
>>169
いい加減黙れよ
おまえのせいで妙なリンクまで貼られてるんだぞ
なんとも思わねえのかよこの池沼白痴野郎が
172名無しさん@そうだ選挙にいこう:2012/06/26(火) 22:45:37.81
>>171
気に入らない書き込みはスルーを推奨スルー
173名無しさん@そうだ選挙にいこう:2012/06/26(火) 22:59:29.48
俺からも質問
時間の計算をしたいのですが、なんてググっていいのかわかりません。
検索ワードだけでも回答お願いします。

時間の形式は
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時間程度です。
よろしくおねがいします。
174153: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でも好きに入れればイイ
175名無しさん@そうだ選挙にいこう:2012/06/26(火) 23:33:23.40
>>174
あなたがネ申ですか。
TIMEとかHOURにこだわってて、INTするなんて発想ぜんぜんありませんでした。
ぶっちゃけ、目的の表示にはなりませんでしたが活路が見えたのでマジ感謝です。
にちゃんねるが初めて人生の役に立ちました。

条件が足りてなくてすいません、"nanika"の部分はB1でした。
176170:2012/06/26(火) 23:36:46.77
>>174
先生ありがとうございます。
スルーされると思ったのに、即レスで感動しました。

ところで、visual basicを勉強すれば、作って頂いたようなコードが書けるのでしょうか?
おすすめの本はありますか?

177名無しさん@そうだ選挙にいこう:2012/06/26(火) 23:40:55.36
甘えるない・・・
ゆとりだからと許せるほどこっちも人間できちゃいないさァ
被った迷惑の分はキッチリ償ってもらうぜ
それが嫌ならもう二度と出てきなさんな
178名無しさん@そうだ選挙にいこう:2012/06/26(火) 23:44:20.46
>>173
=TEXT(A1,"yyyy/m/d ")&TEXT(A2-INT(A1),"[h]:mm:ss")
でいいんじゃないの?

>>174みたいにシリアル値として算出する方向性では無理だよ
シリアル値で「2012/5/1 25:14:15」的な表示が出来るならわざわざ計算する必要も無いからね
なので、シリアル値ではなく文字列として値を返す式を組まないと目的は達せない
179153:2012/06/26(火) 23:53:00.37
>>175
間違ってたかな、まぁいいや
>>176
本は知らん。多分役に立たない。
最初は「マクロの記録」を使って、それを改変するって感じで
自分でコードを書くのが一番いい。
それか今のコードを読むとイイ。ちょっとしんどいけどな。実線が一番身につく。
ある程度できるようになれば「office田中」をググってみるといいと思う
初心者にはわかりにくいページだけど。
>>178
すまんかった
ああ、そうか、25時か。よく見てなかった。
180名無しさん@そうだ選挙にいこう:2012/06/26(火) 23:55:29.69
さて、訂正するかと思ったら>>178が完璧すぎて涙目。
181名無しさん@そうだ選挙にいこう:2012/06/27(水) 00:00:33.21
>>179
ご親切にありがとう。
薄謝をさしあげたいぐらいだ。
もしブログがあって楽天アフィリエイトを貼ってたら、
そこから購入しますよw


182名無しさん@そうだ選挙にいこう:2012/06/27(水) 00:05:22.18
>>181
39-
でももってないや、残念
まぁそこそこ覚えたらここで回答者にでもなっておくれ
183147:2012/06/27(水) 00:13:03.87
>>149
ありがとうございます。ループとか条件分岐をしっかり勉強します。
18457 ◇MwLUkYVrGI:2012/06/27(水) 00:18:36.00
>>171
画像付きで、>>81でも細かく説明したのに
説明不足だとか、そんな表はいらないとか、釣りだとか、
月後半部分のデータをみせてないのも絶妙とか
バカ丸出しの己を哀れだと思うがよろし
185名無しさん@そうだ選挙にいこう:2012/06/27(水) 00:32:57.63
別の意味でゆとりだなw
186名無しさん@そうだ選挙にいこう:2012/06/27(水) 06:38:35.56
経過時間の表示[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")

申し訳ありませんが もう少し詳しく説明して頂けないでしょうか?
不勉強で すみません  よろしくお願いいたします
188名無しさん@そうだ選挙にいこう:2012/06/27(水) 12:13:54.37
>>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列に自動で曜日に対応する氏名が出れば助かります
190名無しさん@そうだ選挙にいこう:2012/06/27(水) 12:54:02.22
>>189
どこかに
日 | Aさん
月 | Bさん
火 | Cさん
水 | Bさん
 :  :
土 | Cさん
という対応表を作り
B3に、=VLOOKUP(TEXT(A3,"aaa"),対応表の絶対参照,2,FALSE)
191名無しさん@そうだ選挙にいこう:2012/06/27(水) 14:34:28.82
>>190
対応表の作り方 検索したのですが よくわかりません
また 対応表の絶対参照とは 作成した対応表のセル番号を入れればいいのでしょうか?
192名無しさん@そうだ選挙にいこう:2012/06/27(水) 14:36:40.32
とりあえずvlookupを使えるまで練習するんだ
193名無しさん@そうだ選挙にいこう:2012/06/27(水) 14:46:56.81
189です
対応表の作り方
=IF(A1=日,"○○","")(A1=月,"○○","")(A1=火,"○○","")
では ダメですよね
194名無しさん@そうだ選挙にいこう:2012/06/27(水) 14:58:24.85
189です
仕事で外に行かないといけない時間になりました
また あす ご教授いただければ幸いです
よろしくお願いいたします
195名無しさん@そうだ選挙にいこう:2012/06/27(水) 15:00:31.71
>>193
別にいいけど、vlookupは無茶苦茶便利なので絶対に覚えておいたほうがいいと思う
ちなみに書くなら↓こんな感じ
=IF(A3=1,"○○","")&(A3=2,"○○","")&(A3=3,"○○","")
19657 ◆MwLUkYVrGI :2012/06/27(水) 20:48:25.93
>>171
なんで俺のせいなの?
おバカさんでも分かるように、元のデータとマクロ実行後の図を用意したし、
質問のやりかたも完璧だったし、必要と感じた質問には答えたのに。

「計画と実績を書いた表があります」と文章に書き、わざわざ図まで用意しておいたのに、
「あぁ、コレもしかして二行で1セットなのか」とか書いてくるDQNもいたな。
「じゃぁーお前は、今までどこを見てたんだよ(プ 」って途中で書きたくなったけど
俺はオトナなので我慢してたけどね。
197名無しさん@そうだ選挙にいこう:2012/06/27(水) 20:57:16.14
最後までグチ一つ言わずに我慢するのが大人
最初から我慢できない奴も、途中で我慢できなくなっちゃう奴も子供
198名無しさん@そうだ選挙にいこう:2012/06/27(水) 22:38:58.00
>>196
気に入らない書き込みはスルーを推奨スルー
199名無しさん@そうだ選挙にいこう:2012/06/27(水) 23:03:10.38
>>196
なろほど、あなたはゆとりではなくオトナだったのですね!失礼いたしました!
オトナの方はそんなつまらないことでは反論しないので勘違いしてしまいました
200名無しさん@そうだ選挙にいこう:2012/06/28(木) 00:46:53.49
>>196
件のリンクが張られた書込みはおまえにアンカーが引いてあるわけだが?
であるのにおまえのせいじゃないと?
ほら調子に乗るからすぐにブーメランされる今の気持ちはどうだ?
この書込みすらもおまえのせいで書かれているんだが?
これが他の人の迷惑になってないと言えるのか?
おまえさえ黙っていればみんな迷惑しないんだよわかったら黙ってろハゲ
201名無しさん@そうだ選挙にいこう:2012/06/28(木) 01:05:07.04
こいつうぜーから>>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)と入れました
204名無しさん@そうだ選挙にいこう:2012/06/28(木) 14:49:41.19
>>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度 時間をかけてゆっくり理解できるまで 読んでみます
206名無しさん@そうだ選挙にいこう:2012/06/28(木) 17:08:09.51
>>205
http://www.dotup.org/uploda/www.dotup.org3139996.xls.html
数式作ったから
これみて勉強してくだちい
207名無しさん@そうだ選挙にいこう:2012/06/28(木) 17:13:52.35
COUNTIFについて質問です。
SUMIFSのように条件を複数指定してカウントさせたいのですが、どうすれば可能でしょうか?
208名無しさん@そうだ選挙にいこう:2012/06/28(木) 17:24:49.29
COUNTIFSじゃね?
209名無しさん@そうだ選挙にいこう:2012/06/28(木) 18:02:07.93
>>208
( ; ゜Д゜)マジですか!
ウチのEXCEL本は古いのか…
載ってませんorz

SUMIFSと同じ条件式ですか?
210名無しさん@そうだ選挙にいこう:2012/06/28(木) 18:27:41.37
2007だか2010からしか使えない
211名無しさん@そうだ選挙にいこう:2012/06/28(木) 18:33:45.21
>>209
ぐぐれば出てくる
>>210
SUMIFSもCOUNTIFSも2007からの関数だから
SUMIFSが使える環境ならCOUNTIFSも使える
212名無しさん@そうだ選挙にいこう:2012/06/28(木) 20:10:30.94
わかりました。
ありがとうございました。
21357 ◆MwLUkYVrGI :2012/06/28(木) 20:33:55.61
>>200
166のリンクをクリックするとどうなるの?
それで被害が出たなら、批難すべきは166のカキコをしたヤツだろ?
166に触れないのは、書いたのがお前さんだからか。

余談ですが俺はまだ27歳なので、お前さんのようにハゲていません。
残念でした。
214名無しさん@そうだ選挙にいこう:2012/06/28(木) 20:36:49.59
これ以上池沼を相手にしないでほしい
頼む
215名無しさん@そうだ選挙にいこう:2012/06/28(木) 22:05:51.03
VBEのコードの表示色ですけどもっと色を増やせないのかな?
背景を濃い緑にしたいのに明るすぎる。お勧めの設定変更はありますか?
216名無しさん@そうだ選挙にいこう:2012/06/28(木) 22:27:57.55
なんかしつこい人ですね。
>>213

今更だけど、実際>>57の質問内容は普通に最初の画像と説明だけで十分理解できたけどね。
>>73>>74>>75>>76>>77>>78で頭の悪い回答者が続いたのは確かだと思う。

でも動作確認までしてないが見た感じ>>79>>80で正解。もし動かないとしてもコードを
読んで考えれば自分のコードで何がダメだったかわかるはず。
それを何も考えずにコピペしただけなのか、「うごきませんので正解でないです」

とりあえず自力で考える気が無さすぎなのと態度悪すぎなのは>>57に非があると思うが、
それぐらいは理解できんか?

たぶんあなたはヤフー知恵袋とかのほうが合ってると思う。
217名無しさん@そうだ選挙にいこう:2012/06/28(木) 22:46:36.82
>>216
知的障害者ってさ、どんな説得力のある文章を書いても意味ないのよ
だから>>214なのよ
頼むわ
218名無しさん@そうだ選挙にいこう:2012/06/29(金) 00:20:48.74
>>213
リンク先だけが問題だと思ってるのか?
被害が出たらその責任は全部おまえだよ

ハゲだって文字通りの禿げっていう意味じゃないことも知らないのかハゲ
これだから池沼白痴野郎は困るんだよ
迷惑だからいい加減黙っててくれないか!
219名無しさん@そうだ選挙にいこう:2012/06/29(金) 00:23:51.78
スルーできない馬鹿
220名無しさん@そうだ選挙にいこう:2012/06/29(金) 00:59:29.78
スルーできない馬鹿がうざいから>>213は黙れよ・・・マジ迷惑だぞ
221名無しさん@そうだ選挙にいこう:2012/06/29(金) 03:39:47.86
馬鹿と馬鹿が争ってらプゲラw
222名無しさん@そうだ選挙にいこう:2012/06/29(金) 04:50:00.73
          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
223名無しさん@そうだ選挙にいこう:2012/06/29(金) 04:51:31.10
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
224名無しさん@そうだ選挙にいこう:2012/06/29(金) 05:37:01.89
test
225名無しさん@そうだ選挙にいこう:2012/06/29(金) 09:05:18.92
>>207
ありがとうございました!!
しっかり頑張って理解したいと思います
お手数おかけしました
226名無しさん@そうだ選挙にいこう:2012/06/29(金) 11:23:30.12
>>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
227名無しさん@そうだ選挙にいこう:2012/06/29(金) 20:59:13.32
すごい初心者質問ですがおねがいします。

表を作っているのですが、、、
例えば、1行目のA、B、Cに名前、住所、TELLという項目を作っておいて
100行目までスクロールしたときに1行目の項目が見れるようにしたい。

1行目だけ、スクロールしても画面セルの一番上に表示させるやりかたがあったとおもうんですけど
なんて名前だったかも忘れてしまいました。
キーワードだけ教えてください。あとはぐぐります。
よろしくお願いします。
228名無しさん@そうだ選挙にいこう:2012/06/29(金) 21:03:07.42
ウィンドウ枠の固定
22957 ◆MwLUkYVrGI :2012/06/29(金) 21:04:18.74
ウィンドウ枠の固定
230名無しさん@そうだ選挙にいこう:2012/06/29(金) 21:36:24.57
>>228 >>229
ありがとうございました。できました。
かなりすっきりしました。
231名無しさん@そうだ選挙にいこう:2012/06/29(金) 21:48:57.91
>>229
これ複乳か?
反応の遅さや回答が出てても答える辺り、かなり似てる
232名無しさん@そうだ選挙にいこう:2012/06/29(金) 22:00:31.40
>>231
どっちでもいいけどゆとりの相手は本当にやめて欲しい
23357 ◆MwLUkYVrGI :2012/06/29(金) 22:38:57.96
>>231
複乳って何?(誰?)

216さんは、最初の画像と説明だけで十分理解できたらしい。彼曰く、
>>73>>74>>75>>76>>77>>78で頭の悪い回答者が続いたのは確かだと思う」だってさ。
惨めすぐると思わんのかひ?
234名無しさん@そうだ選挙にいこう:2012/06/29(金) 22:42:23.50
>>231
障害者が出てくるから相手しなさんな
235名無しさん@そうだ選挙にいこう:2012/06/29(金) 23:14:57.91
>>231さん
お願いですからこの辺で抑えてください
どちらがおかしいかは彼以外みんな判ってます。

236名無しさん@そうだ選挙にいこう:2012/06/29(金) 23:34:51.62
2007でグラフのデータの質問ですが

グラフのデータを作るときに条件に合わないところは空白にしています。
条件に合わない空白のセルに""やNa()を入れているのですが、
グラフのデータ選択の空白セルの表示を空白を選択しても線が繋がってしまいます。
線が切れるようにするのはどうしたらよいでしょうか?

237名無しさん@そうだ選挙にいこう:2012/06/30(土) 00:17:38.82
>>236
円グラフなのかロウソク足なのかわからんが、
仮に折れ線グラフだとすると、グラフの性質上 線が切れることはないのではないかと思う。
棒グラフとかバブルチャートとか使ってみれば?
何を表現するんだか知らないけどw
238名無しさん@そうだ選挙にいこう:2012/06/30(土) 00:26:05.63
>>233
あぁ確かにおまえは惨めだな
死ねばいいのに、いや、死ね
239名無しさん@そうだ選挙にいこう:2012/06/30(土) 01:03:15.87
>>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扱いにならない空白は作れませんか?

240名無しさん@そうだ選挙にいこう:2012/06/30(土) 01:24:06.21
>>239
関数で実現するのは無理だと思います
241名無しさん@そうだ選挙にいこう:2012/06/30(土) 01:40:20.65
>>239
グラフが途切れるのは、セルに何も入ってない時
=na() は端の時限定で可能
"" 空白でも無理
242名無しさん@そうだ選挙にいこう:2012/06/30(土) 01:41:16.12
>239
VBAでがんばるしか無いが、うーん
微妙
243名無しさん@そうだ選挙にいこう:2012/06/30(土) 01:46:22.94
無理そうですか
VBA使って空白だけ何も入れないデータを作り直すぐらいしか想像できないけど手間がかかりそう
""やNa()以外に空白になって0扱いになるのがあればいいのに
244名無しさん@そうだ選挙にいこう:2012/06/30(土) 01:48:01.86
>>243
0扱いにならないだった

>>241
端だけだとだめなんです
245名無しさん@そうだ選挙にいこう:2012/06/30(土) 02:10:44.96
>>239
' でも無理
逆は可能(入力してないところを0扱い)
後は非表示にすればいいんだけど、AB両方消える
VBAしかねーな
246名無しさん@そうだ選挙にいこう:2012/06/30(土) 02:11:44.17
後、VBAでやるなら表まるごとコピーしてそこを参照したグラフを作るといいぞ
元の表いじると面倒だからな
247名無しさん@そうだ選挙にいこう:2012/06/30(土) 02:46:11.86
""にすれば簡単にいけそうでよかった。
アドバイスありがとうございました。
248名無しさん@そうだ選挙にいこう:2012/06/30(土) 09:32:23.39
質問なのですが、あるソフトで、数値の羅列があって、その羅列に
エクセルに表として取り入れたいのですが、そのソフト内でコピーペーストが
できません。

スクリーンショットなどで、映像をとって、その数値部分だけ抜き出して
エクセルにコピーなど出来れば良いのですが、そういうようなソフトとか
機能とかあるものってどなたがご存知でしょうか?
249名無しさん@そうだ選挙にいこう:2012/06/30(土) 10:27:42.07
OCRソフトで文字に変換
250名無しさん@そうだ選挙にいこう:2012/06/30(土) 10:44:11.45
>>249
ありがとうございます。
251名無しさん@そうだ選挙にいこう:2012/06/30(土) 14:15:47.99
リストボックスやリストビュー、グリッド系コントロールなら
WinAPI駆使して取得できる場合もあるけどね

最初作るのに手間は掛かるが、作ってしまえば
マクロ実行から取り込み完了まで一瞬で終るので
1回きりではなく何度も行う予定なら利が大きい
画像を介さないから誤認識の可能性も0だし

とはいえExcelの分野ではなく、汎用プログラムの分野なので
VBAで出来るとはいえ、ここではスレ違いの扱いになるから
自分で勉強してもらわにゃならんけど、今後、毎日数回
それを何年も行うとかなら、勉強時間を浪して尚、利があると思うよ
252名無しさん@そうだ選挙にいこう:2012/06/30(土) 14:20:00.36
>>250
ホントにそれでいいの!?
最近のはだいぶマトモになったとはいえ、OCRなんて完璧じゃないからな。
自分で手打ちしたほうがマシなレベル。
253名無しさん@そうだ選挙にいこう:2012/06/30(土) 14:28:14.07
> OCRなんて完璧じゃない
その通りだが、
> 自分で手打ちしたほうがマシなレベル
は日本語、特に漢字の場合や、手書き文字の場合ね

数字はもちろん英数字でも、機械フォントなら手打ちするよりは
OCRで取り込んで目視確認だけ行うのが一番効率良い

数字の機械フォントで、紙スキャンではなくゴミや傾きもない
スクリーンショットからなら、正解率99%は確実に超える
254248:2012/06/30(土) 14:47:41.44
>>251
一応OCRソフトはもっていたりするんですが、それでもいくつかの
ソフトを起動して、経由してというと少し時間がかかります。

VBAで出来るそのWinAPIというのはどういうところで勉強すれば
良いんでしょうか?
割とよく行う作業になるので、出来るのであれば。
少しググルとWin32APIというのが出てきますが、これは同じことなのでしょうか?
この辺のページを勉強すれば良いですか?
255名無しさん@そうだ選挙にいこう:2012/06/30(土) 15:17:26.55
>>254
対象ソフトが解らないと、この手が使えるかどうかは解らないが
とりあえずウインドウハンドルとかウインドウメッセージ(LB_GETTEXT等)について勉強してみよう

これ以上はスレ違いなのでお引き取りを
256248:2012/06/30(土) 15:43:17.39
>>255
ありがとうございました。OCRを使いながら、そちらも勉強してみます
257名無しさん@そうだ選挙にいこう:2012/06/30(土) 17:27:40.71
Excel2003ですが
セルの値の数値の最後に必ず改行コードが混入していてセルがふくれあがってるデーターがあるのですが
置換処理等でなんとか取り除くことは出来ないのでしょうか?
258名無しさん@そうだ選挙にいこう:2012/06/30(土) 17:37:28.17
>>257
改行コードは置換の入力ボックスに入力出来ない感じです、、これはどうした物か・・
259名無しさん@そうだ選挙にいこう:2012/06/30(土) 17:42:14.33
・VBAで改行削除
・関数式で改行削除したものを別なところに描き出し、値の貼り付けで戻す
・CSVに出力して、正規表現置換してから取り込む
・コピーしてテキストエディタに貼り付けて正規表現置換してからExcelに戻す
いろいろあるわな
260名無しさん@そうだ選挙にいこう:2012/06/30(土) 17:47:25.11
>>258
[Ctrl]+[J]で改行コードが入力できる
261257 :2012/06/30(土) 17:51:09.04
>>259
>>260
>[Ctrl]+[J]で改行コードが入力できる
大成功でした!ありがとうございました!!\(^o^)/仕事オワタw
262名無しさん@そうだ選挙にいこう:2012/06/30(土) 17:52:00.96
>>257
=LEFT(A1,LEN(A1)-1)
で値貼り付け・・・と思ったら終わっちゃってたか、おめでとう
263名無しさん@そうだ選挙にいこう:2012/06/30(土) 18:07:47.10
今まで普通に使えていたVBAのプロシージャが急に不良をおこすようになり
パソコンを再起動したら、普通に使えました。

長く立ち上げておいて、何度もプロシージャ実行したりしたら、こういうことって
起こってくることは、あるものなんでしょうか?
264名無しさん@そうだ選挙にいこう:2012/06/30(土) 18:38:18.43
Office2003、2007、2010を入れてます。
フォルダからファイルをWクリックして開くとき、2007で開いてしまいます。
xlsは2003で、xlsxとかxlsmは2010で開くにはどうすればいいですか?
265名無しさん@そうだ選挙にいこう:2012/06/30(土) 18:42:53.45
>>263
コードによってはね

>>264
関連付け
266名無しさん@そうだ選挙にいこう:2012/06/30(土) 19:17:35.51
>>265
それができないから聞いてるんですが?
xlsを関連付けしようと\Office11\Excel.exeを指定しても2007になってしまいます。
267名無しさん@そうだ選挙にいこう:2012/06/30(土) 20:10:53.35
確か弄るのはcommandだけじゃダメなはず
つーか関連付けはWindowsの機能だからスレ違いでしょ
268名無しさん@そうだ選挙にいこう:2012/06/30(土) 20:17:14.49
>>266
試したんなら、試したって先に書いておけばいいのに…
265さんカワイソす
26957 ◆MwLUkYVrGI :2012/06/30(土) 20:34:20.91
出た!スレ違いと書いて逃げちゃうヤツ
270名無しさん@そうだ選挙にいこう:2012/06/30(土) 20:39:25.89
とヤジを飛ばすだけで答えることは出来ない奴のカッコ悪さについてw
271名無しさん@そうだ選挙にいこう:2012/06/30(土) 20:42:21.56
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
をやってみましたが何もおこらないのですが、、、
何か他に良い方法がありましたら宜しくお願い致します。
272名無しさん@そうだ選挙にいこう:2012/06/30(土) 21:02:11.81
>>271
そのコードだと、「'123」などで文字列扱いになっている数字は数値化出来るけど
表示形式が文字列になっているセルは数字のままになる

なので
xCell.Value = xCell.Value
の前に
xCell.NumberFormatLocal = "G/標準"
を入れてやれ
別に"G/標準"ではなく"0;[赤]-0;0"とかの表示形式でもいいけどな

それでダメなら具体的にどういう値が入ってるのか書いてくれ


>>269
これ以上恥を晒すな
273名無しさん@そうだ選挙にいこう:2012/06/30(土) 21:19:47.77
>>272
部分的にうまくいきました!
"G/標準"の箇所を色々と変えてみて試して見ます。
ありがとうございました。
274名無しさん@そうだ選挙にいこう:2012/06/30(土) 21:42:49.07
>>271
今はどういう理由で文字列になってるの?
275名無しさん@そうだ選挙にいこう:2012/06/30(土) 22:46:07.18
>>274
CSVに書き出しましてテキストエディターで開きますと
直らない箇所はこのような表記になていました

","43.8719
","-66.1342
","17.0875
","99.9111
",,

これはやっかいそうですね。。
276名無しさん@そうだ選挙にいこう:2012/06/30(土) 22:54:18.55
>>275
275
補足ですが改行の箇所に何かコードがありまして、置換などをかけてみましたがこのコードはExcelでは認識されていないようです。
277名無しさん@そうだ選挙にいこう:2012/06/30(土) 23:26:41.28
>>275
いや、そうじゃなくて何をして文字列として認識されてるのかってことです
できkればファイルごと(その数字の部分意外は消して)アップしてくれるとありがたい
278名無しさん@そうだ選挙にいこう:2012/07/01(日) 00:01:44.81
改行コードにCRとLFとCRLFの3種類があって、
excelが標準で処理する改行コードはCRLF だったかと
279名無しさん@そうだ選挙にいこう:2012/07/01(日) 00:45:40.89
LFCRというのもあるから4種類
280名無しさん@そうだ選挙にいこう:2012/07/01(日) 01:08:12.14
確かLfが要素内改行(セル内改行)で
Crから始まるもの(CrとCrLf)が改レコード(下段セルへ移動)じゃなかったか?

LfCrはこのスレ的(Excel上、Excelから出力されるファイル)には無いよ
vbLf&vbCrとかで意図的に作れば話は別だけど
281名無しさん@そうだ選挙にいこう:2012/07/01(日) 05:32:03.91
ファーストサーバの件、仕事柄いろいろ調べていくと「サイボウズASP提供の場合、
標準で付いているデータエクスポートがkillされ、
ファーストサーバのバックアップサービスのみ使える」ということを知ってすんげえ頭抱えている。
ユーザはどうしようもなかったってことじゃないか…
282名無しさん@そうだ選挙にいこう:2012/07/01(日) 11:55:04.78
Excel2010で検索・置換ってどこから出すんでしょうか?
友人に聞かれたんですが、2010持ってないのでわかりません
Ctrl+Fで出ないみたいですがそうなんでしょうか?
283名無しさん@そうだ選挙にいこう:2012/07/01(日) 12:45:20.92
いつも、Ctrl+Fで出しているから、メニュー(リボンって、言うんだっけ)からだと不明。
ごめん。
284名無しさん@そうだ選挙にいこう:2012/07/01(日) 12:47:43.65
さすがにそれぐらいググれよ
http://okwave.jp/qa/q6734248.html
285名無しさん@そうだ選挙にいこう:2012/07/01(日) 12:55:09.28
Ctrl+Hじゃないのか
ミリなのか
286名無しさん@そうだ選挙にいこう:2012/07/01(日) 13:42:52.66
>>282
俺は2010だが、ふつーにCtrl+F or Ctrl+H で出るよ
セルの編集中に押してるとか??
ちなみにリボンからのアクセスは、デフォで開いてるホームってタブの一番右側に検索あるね(今日はじめて知ったけど)
287名無しさん@そうだ選挙にいこう:2012/07/01(日) 14:25:16.43
セル内の置換をしようとしていたのかもね
288名無しさん@そうだ選挙にいこう:2012/07/01(日) 14:55:47.81
すいません、キングソフトのSpreadsheet2012なんですが
使い方は同じだと聞いたのでお願いします。

家計簿を作ろうと思って
2011年5月
2011年6月
って左のセルに打ち込んで行きました

で、家計簿の書き込みがセルが打ち込んだところまで来たので
延長しようと思って

書き込んだセルの右下のフィルハンドを引っ張ってきたのですが
なぜか、
2013年6月
2013年6月って
同じ月しか表示されません。

2013年7月
2013年8月
ってフィルハンドを引っ張って表示されるようになるのは
どうしたら良いのでしょうか?
289名無しさん@そうだ選挙にいこう:2012/07/01(日) 15:07:44.66
マイクロソフトと同じなら、フィルターで抽出したままオートフィルしているとか?
290名無しさん@そうだ選挙にいこう:2012/07/01(日) 16:02:21.13
>>288
2011年5月
2011年6月
を選択してからオートフィル
少し仕様が違うみたいね。エクセルでもバージョンに酔ってはその辺違ったりするけど
291名無しさん@そうだ選挙にいこう:2012/07/01(日) 20:39:07.81
>>290

おお!!
ありがとうございます。
すごい簡単なことが分かりませんでした。
何故だろうって、ずっと悩んでいました。
292名無しさん@そうだ選挙にいこう:2012/07/02(月) 15:05:03.82
並び替えについての質問です、よろしくおねがいします。
セル範囲 A1から Z100 の2600セルに100セル数値データ(12とか452とか)が点在しています。(他は空白です) 

範囲が広く確認が困難な状態です。
AA列に小さい順に並び替えたいのですがどのようにすればいいですか?
VBAも可です。すみませんがどうか教えてください。お願いします。
293名無しさん@そうだ選挙にいこう:2012/07/02(月) 15:17:42.41
>>292
AA列にこの式を入れる
=SMALL($A$1:$Z$100,ROW())
294名無しさん@そうだ選挙にいこう:2012/07/02(月) 15:59:32.78
>>293
スマートすぎて感動した
295名無しさん@そうだ選挙にいこう:2012/07/02(月) 16:53:20.30
>>293
ありがとうございます。
こんなに簡単にできるとは思いもしませんでした。
勉強になりました。
296名無しさん@そうだ選挙にいこう:2012/07/03(火) 00:31:45.87
毎回リストの特定行だけを一瞬で非表示にするにはどういった選択肢があるのでしょうか?
行の位置が毎回変わるのでセル番地指定も出来ず、
セルの色や文字もマチマチなんですが
297名無しさん@そうだ選挙にいこう:2012/07/03(火) 00:42:58.80
久しぶりに感動した
298名無しさん@そうだ選挙にいこう:2012/07/03(火) 00:45:02.95
>>296
http://office.microsoft.com/ja-jp/excel-help/RZ001080135.aspx?CTT=1&origin=EC001022986§ion=11
このオートフィルタって機能を使えば一瞬で非表示にできる
299名無しさん@そうだ選挙にいこう:2012/07/03(火) 00:54:10.46
>>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
全米が泣いた
301名無しさん@そうだ選挙にいこう:2012/07/03(火) 01:02:00.68
ちょっとコード酷すぎね?
302名無しさん@そうだ選挙にいこう:2012/07/03(火) 01:12:34.42
>>301
こんなマクロに時間かけても仕方ないよ
303名無しさん@そうだ選挙にいこう:2012/07/03(火) 01:48:40.00
普通にセル表示チェック列増やせば済むだろハゲ
304名無しさん@そうだ選挙にいこう:2012/07/03(火) 01:49:39.12
>>299のコードを

Sub Macro1()
 hoge = InputBox("")
 Cells.Find(What:=hoge).EntireRow.Hidden = True
End Sub

と書くと、余計に時間かかるのか?
動作は全く同じだぞ

つーかどっちにしろ>>299の動作じゃ質問者は満足してないだろうけど
305名無しさん@そうだ選挙にいこう:2012/07/03(火) 06:20:18.06
>>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
306名無しさん@そうだ選挙にいこう:2012/07/03(火) 09:41:44.88
【1 OSの種類         .】 Windows7 64bit
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ(多少の経験はあります)
【4 VBAでの回答の可否】 否(やり方まで教えてくださるなら可)

シート(設定)に、
A 北海道
B 青森
C 秋田


(以下略)があります。
シート(入力)に、「A」を入力しただけで北海道を表示することは可能でしょうか?(別セルに表示されてもいいです)

また、実際は「あ」と入力しただけで北海道と表示が出ればうれしいのですが、日本語でも大丈夫でしょうか。
北海道…が数百に及ぶので、ドロップダウンリストは使いにくいです。よろしくお願いします。
307名無しさん@そうだ選挙にいこう:2012/07/03(火) 10:07:36.08
>>306
vlookup
308名無しさん@そうだ選挙にいこう:2012/07/03(火) 10:13:00.54
>>307
ありがとう!!
309名無しさん@そうだ選挙にいこう:2012/07/03(火) 12:26:20.62
【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を下から検索する方法はありませんか?
310309:2012/07/03(火) 12:27:34.03
セルの指定範囲は列でお願いします
311名無しさん@そうだ選挙にいこう:2012/07/03(火) 15:02:33.36
>>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でメールアドレス入力時に
自動でハイパーリンクになる設定を解除する方法を教えてください。
313名無しさん@そうだ選挙にいこう:2012/07/03(火) 20:59:17.07
>>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
レスありがとです。
設定でずっとしておく方法はないでしょうか?
318名無しさん@そうだ選挙にいこう:2012/07/03(火) 21:22:34.38
>>315
>>143。多分ファイルごとには個別と思う
319名無しさん@そうだ選挙にいこう:2012/07/03(火) 21:23:42.64
>>314
2003ならツーッルバーのユーザー設定でナントカカントカ
320名無しさん@そうだ選挙にいこう:2012/07/03(火) 21:27:44.40
>>318
情報ありがとです。助かりました。
321名無しさん@そうだ選挙にいこう:2012/07/03(火) 23:15:50.72
>>319
2010って書いてあるだろ?
バカか?
322名無しさん@そうだ選挙にいこう:2012/07/03(火) 23:29:06.71
>>321
いや2010もってないので知らん
よければお前が回答してくれ
323名無しさん@そうだ選挙にいこう:2012/07/03(火) 23:43:28.05
2007でVBAのコメントだけを削除したいのですが
一括削除と置き換えのように選択して消せるとよいのですが便利な方法はどんなのがあるでしょうか?
324名無しさん@そうだ選挙にいこう:2012/07/03(火) 23:48:38.58
みんなエクセルのバージョン何つかってるの?
325名無しさん@そうだ選挙にいこう:2012/07/03(火) 23:56:30.32
97、2000、2002、2003、2007
326名無しさん@そうだ選挙にいこう:2012/07/04(水) 00:37:47.17
>>324
97はバグが多く、2007-2010はリボンがうざい
よって2000-2003が多いと思う
327名無しさん@そうだ選挙にいこう:2012/07/04(水) 00:38:20.45
>>323
VBA
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関数で半角スペースの位置を返してる。
そこからがイマイチわかりません
329名無しさん@そうだ選挙にいこう:2012/07/04(水) 02:27:31.06
揚げ足を取るようで申し訳ないが、その条件だと正しく取得できないケースも起こりうるよ。
具体的には○が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は何もしない
330名無しさん@そうだ選挙にいこう:2012/07/04(水) 03:26:52.30
>>329
ごめん、付け忘れたw
△は1〜10文字なんだ。
なるほど、とてもわかりやすい解説ありがとう!
俺でも理解出来たよ!
331名無しさん@そうだ選挙にいこう:2012/07/04(水) 04:30:21.68
メニューのツールからワークシート分析で数式の検証ってのもあるが
数式自体の説明は出てこないから数式は学んでないと理解できんのよね
332名無しさん@そうだ選挙にいこう:2012/07/04(水) 06:53:23.92
>>326
リボンなんて1日で慣れたわ。
333名無しさん@そうだ選挙にいこう:2012/07/04(水) 08:35:34.58
>>332
すごいな
俺は即クラシックUI入れた
たぶん今だに使えない
334名無しさん@そうだ選挙にいこう:2012/07/04(水) 10:11:30.80
>>311
ありがとうございます
335名無しさん@そうだ選挙にいこう:2012/07/04(水) 10:33:53.45
>>328
=left(mid(a1,find(" ",a1)+1,len(a1)-find(" ",a1)),find(" ",mid(a1,find(" ",a1)+1,len(a1)-find(" ",a1)))-1)
作業セルを使えばすっきりするだろうけど、、、
336名無しさん@そうだ選挙にいこう:2012/07/04(水) 12:41:07.10
【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
337名無しさん@そうだ選挙にいこう:2012/07/04(水) 13:58:54.53
>>336
「何も反応しません」の意味がよくわかんないけど、
「Worksheet_Changeイベントが発生しない」って意味なら
「Application.EnableEvents = False」の状態になってるんじゃない?
338名無しさん@そうだ選挙にいこう:2012/07/04(水) 14:14:33.94
Excel 2010の電話でのライセンス認証方法
http://gamers-park.com/node/131
339名無しさん@そうだ選挙にいこう:2012/07/04(水) 15:45:59.59
>>337の言う通りだと思う。

補足すると、あのコードじゃエラー出まくりなはずだから
そこでデバッグせず中断すると、EnableEventsをFalseにしたままの状態になる

それ以前に、エラーが出なくても説明とコードの動作が違っているようだけどなw
340名無しさん@そうだ選挙にいこう:2012/07/04(水) 20:30:38.50
【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
341名無しさん@そうだ選挙にいこう:2012/07/04(水) 21:07:06.30
Q列に、='C:\綾瀬はるか\[ホタルノヒカリ.xlsx]ぶちょお'!$N$104
って式が入ってて、数字が表示されているのね。

この式の最後にある104を取り出して、P列に書くにはどうすればいいの?
104の部分は、1〜3000くらいまであるんだよ〜ん。
342名無しさん@そうだ選挙にいこう:2012/07/04(水) 21:39:17.98
VBA使って良いなら
instrrevで$を拾えば出来るよ
343名無しさん@そうだ選挙にいこう:2012/07/04(水) 22:00:59.20
>>336
テストも何もしてないけどとりあえず見て気になったのは、VLookupの中のCellsで"C"っておかしいんちゃう?
CellsならCells(行番号,列番号)、Cells(Target.Row,3)じゃね?
344名無しさん@そうだ選挙にいこう:2012/07/04(水) 22:27:39.20
別におかしくないよ。
第二引数は「行番号」ではなく「行を表す値」だし、「3」の方が動作が僅かに高速だし
変数に入れて算術演算(+1など)で処理中に対象列を移動させたい場合などに便利だが
「"C"」の方が明示性が上と特色が違うので、用途によって使い分ければ良い。

何でもかんでも列文字で指定するのも初心者的だが、「Cellsの列は数値指定じゃなきゃおかしい」と
固執するのも同レベルの初心者だと思う。
345343:2012/07/04(水) 22:51:58.47
>344
ごめんなさい初めて知りました。べつに固執ってわけじゃないけど、知らんかった。
346名無しさん@そうだ選挙にいこう:2012/07/04(水) 23:23:53.73
341ですけど〜
誰か教えて♥
明日、会社で見るから今日は寝るね
347名無しさん@そうだ選挙にいこう:2012/07/04(水) 23:24:47.36
>>341
>>342だよ♥
348名無しさん@そうだ選挙にいこう:2012/07/04(水) 23:30:00.74
>>345
素直でイイ奴だな
349名無しさん@そうだ選挙にいこう:2012/07/04(水) 23:38:49.42
すみません、>>340に助言もらえませんか?
350名無しさん@そうだ選挙にいこう:2012/07/04(水) 23:46:33.59
>>349
もっと項目数を減らして欲しい
多すぎて問題点を追いかけるのがしんどい
351名無しさん@そうだ選挙にいこう:2012/07/04(水) 23:56:09.30
>>349
あなたが実施した結果もアップしてくれ
提供できるものは全部提供してくれ
352名無しさん@そうだ選挙にいこう:2012/07/05(木) 00:32:50.74
>>350
項目数減らしても、多分あまり変わらないと思うのですが・・・

>>351
これは、Bの列にある最利用店舗名を昇順に並び替え、3、4番のみを抽出後、差の検定をしたもの
http://ichigo-up.com/cgi/up2/oiu/xs33165.xls

次にこれは3、4番を先に抽出してから、最利用店舗名を昇順に並び替え、差の検定をしたものです
http://ichigo-up.com/cgi/up2/oiu/xs33166.xls

それぞれ元になったアンケデータも、中に付随しているので
見て頂ければ、片方の行番号が飛び飛びなのがわかると思います
353名無しさん@そうだ選挙にいこう:2012/07/05(木) 01:03:06.04
>>340
>観測数を正しく認識できないので異なる分析結果になるという原因はわかっている
>本来、手順が違えど、異なる結果が表示される仕様はあってはならない
エクセルがそういうソフトなんだから仕方ない
そういう仕様はあってはならない、と思うならDB等、別ソフト使えば良い。誰もエクセルを使うことを強制していない。

>2つのパターンでも結果を同じくできる設定はないのでしょうか?
知らない。
VBAでマクロを作ってしまうほうが早い気もするが、無理なら仕方ない。
354名無しさん@そうだ選挙にいこう:2012/07/05(木) 02:42:40.15
>>352
厳密には抽出とエクセルのフィルターは主旨が違うね。
DBの抽出とは違って、フィルターは条件の合う行だけ”表示”し、他を”見せなくする”機能で、テーブル自体は元のまま。
お祭りの提灯を畳んだときのイメージ。
で、それに対する式を作っても、元のテーブルに対して式の範囲を設定するから、フィルターが関係無くなってしまう。

例えば、>>352の2番目の方法で、3の店舗に対するレジ待ちの列の平均の式は、フィルターしてもAVERAGE(L2:L74)となってフィルターで隠したつもりの部分も含んだので3.205479
355名無しさん@そうだ選挙にいこう:2012/07/05(木) 03:13:50.20
つづき
また、フィルターしたテーブルに対して並び替えしても、見えている部分だけが順番が変わるだけ。
最初に並び替えすれば、式の範囲が目的の部分になるので、フィルター関係無しに正しい集計するけど、
フィルターしてから並び替えしても、式の範囲は元のテーブルに対する見えている部分の一番上から下までの隠れている部分も含んだ数字を対象としてしまう。

これを回避するには、フィルターではなく正しい意味での抽出をして、そのクエリー結果に対して集計するべきだけど
そうするには、フィルターした表をコピペして新シートに貼って、店舗3,4だけになったそのテーブルで集計するか
Excelのデータベースクエリ機能で引っ張ってくるか、Access等のDB使うしか無いのかな・・・

ちなみに、平均とか標準偏差とか分散ぐらいの簡単なことなら、ピボットテーブル使うのが楽。
ちゃんと抽出して集計表を作ってくれる。
356354:2012/07/05(木) 03:32:33.04
ここまで書いて、340がデータ分析ツール使っていたことに気づいた。
これでも一緒の話なんだけど、フィルターで隠しても元テーブルは変わらないから、分析ツールの範囲を指定する部分が隠れている部分を含んでしまう。
フィルターは抽出じゃなくて、特定行を見せる(隠す)もので、元テーブルは影響されないと意識すれば分かると思う。
357名無しさん@そうだ選挙にいこう:2012/07/05(木) 08:19:00.91
SUMとSUBTOTALみたいなのが全部の関数にあればいいんだけどね
358名無しさん@そうだ選挙にいこう:2012/07/05(木) 09:19:07.80
範囲を選択するときに配列数式とかな
359名無しさん@そうだ選挙にいこう:2012/07/05(木) 10:47:02.81
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可

指定した値になるまで条件を繰り返す関数ってありますか?


A1=(-1000)
A2=2

上記の条件だった場合

A1≧0になるまでA2の値を足し続けるって式を組みたいのですが…
if(A1>=0,?,,)で詰まってます。
360名無しさん@そうだ選挙にいこう:2012/07/05(木) 10:52:38.74
>>359
循環参照を回避するように作れないだろうか?
361名無しさん@そうだ選挙にいこう:2012/07/05(木) 11:10:38.31
>>359
文字列ならREPTがあるけど、計算は無理
ってか最後の0にあまり足すだけでいいんじゃないの
362名無しさん@そうだ選挙にいこう:2012/07/05(木) 13:04:57.79
ExcelでWordの差込み印刷したいのですが、良い方法ありますか?
大量のデータがあるので、何とか差込み印刷を実現したいのですが、スキルが足りなくてできません。
マクロでも良いので、その場合はヒントをください。
お願いします。
363名無しさん@そうだ選挙にいこう:2012/07/05(木) 13:06:03.63
説明足らずでした。
Excelのデータを別のExcelで作ったフォーマットにデータを差込みたいと思っています。
364名無しさん@そうだ選挙にいこう:2012/07/05(木) 13:21:15.16
みんなExcelは独学?
それとも勉強するためにはやはり参考書なんかを買ったりした?
ネットでVBAを1から学べるお奨めのサイトとかある?
365名無しさん@そうだ選挙にいこう:2012/07/05(木) 13:54:09.81
>>364
VBAを勉強するのが目的ならMSDNライブラリでリファレンスマニュアルを読めばいい
VBAで何かやりたいことがあるならやりたいことをキーワードにググればいい
366名無しさん@そうだ選挙にいこう:2012/07/05(木) 13:55:43.31
>>362
具体例のブックをどっかにアップしてみて
367名無しさん@そうだ選挙にいこう:2012/07/05(木) 17:31:25.71
>>360
>>361
A1,A2,A3〜と続くセルで在庫の推移を見たかったんですが難しそうですね。
余りを足すと言うよりは、A1≧0になるまで、
A2発注を繰り返したかったんですよね。

ありがとうございます、ちょっと他の方法考えてみます。
368名無しさん@そうだ選挙にいこう:2012/07/05(木) 17:33:16.46
>>367
発注回数なら=-A1/A2でいいんじゃないの
369名無しさん@そうだ選挙にいこう:2012/07/05(木) 17:34:20.20
>>364
オフィス田中
レスキュー花子ちゃん
このふたつはよく見る気がする
370名無しさん@そうだ選挙にいこう:2012/07/05(木) 19:36:13.08
仕事の業務で使う連絡先一覧をエクセルで作ろうと思っています。
Aの時、Bの時、Cの時、 これら3つの条件を満たすカテゴリはDの連絡先を表示する みたいな機能ってエクセルにありますか?
プルダウンで3つぐらい選ぶカテゴリを作って、そこから連絡先を抽出したいんですか
371名無しさん@そうだ選挙にいこう:2012/07/05(木) 19:40:34.40
>>370
Excelの機能を使って実現することはできる
372名無しさん@そうだ選挙にいこう:2012/07/05(木) 19:42:20.18
>>371
どんなふうにやれば出来ますか?
今まではオートフィルタでやってたんですが、
3つの条件を満たした時だけじゃなく
1つでもその条件に当てはまれば、その連絡先を表示する
みたいにしたいのですが。
373名無しさん@そうだ選挙にいこう:2012/07/05(木) 19:48:49.01
>>372
データ構造がわからないので答えようがない
どんな風にデータが並んでるか書くかサンプルのブックをどっかにアップして
374名無しさん@そうだ選挙にいこう:2012/07/05(木) 20:07:21.43
>>373
http://www.dotup.org/uploda/www.dotup.org3167171.jpg
こんな図で右が条件です。
今まではピポッドテーブルで抽出してたんですが、
条件が複数ある場合に対応出来ないのでどうすればいいか教えて欲しかったんです。
例えば、問い合わせ種類にクレームが入ってる場合はどのお客様からでもお客様相談室に繋ぐっていう結果を出したいわけです。
他にも○○商事がアポの電話をしてきた時は受付に繋ぐ みたいな条件を作ってそれを表示させたりしたいわけです。
その方法がわかればそれでデータを条件付けさせたいって思っていました。
375名無しさん@そうだ選挙にいこう:2012/07/05(木) 20:43:17.99
>>374
このサンプルは2つの条件で部署を出しているけど、本当は3つの条件ってことかな?
あと、□□病院が商談で来た時にどこつなぐとか、全部の条件考えるとこれだけでも4x4だけど、それ全部考えなくていいの?
376名無しさん@そうだ選挙にいこう:2012/07/05(木) 20:47:47.38
>>375
全部考えたいです。どんな風にすれば結果に条件付け出来るか知りたいです。
377名無しさん@そうだ選挙にいこう:2012/07/05(木) 21:26:52.88
検索値がAS列にあって、その値に合致したN列のセルの値を得たい。
vlookupだとダメっぽい。
どうする?
378名無しさん@そうだ選挙にいこう:2012/07/05(木) 21:31:58.64
>>376
連絡先毎に優先条件(クレーム)と復号条件(**社 and 商談)を別々に設定
まず優先条件への一致を調べ、一致があればそれを表示
優先条件での一致が無ければ復号条件での一致を調べる

>>377
INDEXとMATCH
379名無しさん@そうだ選挙にいこう:2012/07/05(木) 21:49:21.39
>>378
すいません。オートフィルタでどう設定すればいいですか?
380名無しさん@そうだ選挙にいこう:2012/07/05(木) 22:11:05.32
>>379
▼━質問時の注意・決まり事━━━━━━━━━━━━━━━━━━━━
・4 2回目以降の質問では名前欄に初回質問の番号を入れよう。
381375:2012/07/05(木) 22:29:39.67
>>376
ベタな方法だけど、下記のような表にして、オートフィルターすることで答えになってる?
A列とB列指定すればC列に案内先部署が出るイメージ。
○○商事から健康診断の問い合わせとか、意味ないの含めて全部のパターン作らなきゃいけないけど。

お客様 問い合せ 部署名
○○商事 商談訪問 総務部
○○商事 アポイン 受付
○○商事 健康診断 受付
○○商事 クレーム お客様相談室
XX会社 商談訪問 営業
XX会社 アポイン 営業
XX会社 健康診断 受付
XX会社 クレーム お客様相談室
□□病院 商談訪問 総務部
□□病院 アポイン 受付
□□病院 健康診断 受付
□□病院 クレーム お客様相談室
その他 商談訪問 営業
その他 アポイン 営業
その他 健康診断 総務部
その他 クレーム お客様相談室
382名無しさん@そうだ選挙にいこう:2012/07/06(金) 06:36:44.20
>>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 △△シートへ切替(移動)

○○・△△=シート名です
384名無しさん@そうだ選挙にいこう:2012/07/06(金) 09:41:05.90
>>368
       |
   \  __  /
   _ (m) _ピコーン
      |ミ|
    /  `´  \
     ('A`)
     ノヽノヽ
       くく

目からウロコが落ちた。

ありがとうございます・・・・・
385名無しさん@そうだ選挙にいこう:2012/07/06(金) 11:40:50.79
>>383
Private Sub MultiPage1_Change()
Select Case MultiPage1.Value
Case 0:
Worksheets("○○").Activate
Case 1:
Worksheets("△△").Activate
End Select
End Sub
386名無しさん@そうだ選挙にいこう:2012/07/06(金) 11:55:30.91
>>385
切り替わらないです。
Multipage1のPage1のタブをクリックすると、○○のシートに移動(切替え)という形にしたいのですが。
387名無しさん@そうだ選挙にいこう:2012/07/06(金) 12:02:14.17
>>386
2003だと動いてるんだけどな・・・
タブをクリックしたときにステップ実行したら MultiPage1.Value の値はどうなってるの?
388名無しさん@そうだ選挙にいこう:2012/07/06(金) 13:13:56.70
>>385 >>387 ありがとうございます。お手数をおかけします

フォーム(UserForm)
Page5 Page6 を>>386のように切替えたいのですが、
Page5,6ともに名前(Caption?)を(Page5)基礎1・(Page6)基礎2としています。
indexは4,5になっています。
389名無しさん@そうだ選挙にいこう:2012/07/06(金) 13:34:52.54
連投スミマセン(m´・ω・`)m
解決いたしました。。Caceの設定を間違えておりました
ありがとうございます<(_ _)>
390名無しさん@そうだ選挙にいこう:2012/07/06(金) 15:22:27.58
Excelでテキストファイルから文字を検索して、その行だけを取り込むなんてことできますか?
391名無しさん@そうだ選挙にいこう:2012/07/06(金) 15:43:07.47
>>390
テキストファイルをopen、一行ごとに読んで
その行にinstrで文字列検索、文字列があれば処理という流れと思う
もっと楽な方法があったらゴメン
392名無しさん@そうだ選挙にいこう:2012/07/06(金) 15:43:56.23
>>390
ちなみにVBAね
エクセルはドラッグアンドドロップすれば一行ごとに分かれるから検索すればいいんじゃないかな
393名無しさん@そうだ選挙にいこう:2012/07/06(金) 15:59:34.27
>>390
テキストファイルを開いてオートフィルタで文字が含まれていない行だけ抽出して行削除すればいい
394名無しさん@そうだ選挙にいこう:2012/07/07(土) 00:41:54.29
フォームのコンボボックスを使って、シートの倍率操作する方法ありますか。
コンボボックスの選択に20%とか50%などの値があって、選択するとシートがその倍率になる的な感じです
395名無しさん@そうだ選挙にいこう:2012/07/07(土) 00:44:36.13
>>394
マクロの記録でコード吐き出してみ
396名無しさん@そうだ選挙にいこう:2012/07/07(土) 00:53:08.90
>>394
フォームならChange、コントロールならClickイベントで
Zoomを変更してやれば良いだけじゃね?
397名無しさん@そうだ選挙にいこう:2012/07/07(土) 01:25:10.92
>>395
記録してコードみたけど、それをどうコンボボックスに使えばいいの?

>>396
詳しく><
398名無しさん@そうだ選挙にいこう:2012/07/07(土) 01:42:06.43
詳しくって何?

コード全部掛けよってことか?
399名無しさん@そうだ選挙にいこう:2012/07/07(土) 01:45:45.62
>>398
開発→挿入→フォームコントロール→コンボボックスを設置するでしょ
そこからマクロの登録だけで良いの?
400名無しさん@そうだ選挙にいこう:2012/07/07(土) 02:05:58.11
コンボボックス1チェンジ()
ActiveWindow.Zoom = コンボボックス1.value
endsub
こんな感じw
401名無しさん@そうだ選挙にいこう:2012/07/07(土) 02:26:27.86
>>399
Private Sub UserForm_Initialize()
ComboBox1.AddItem "20%"
ComboBox1.AddItem "50%"
End Sub
Private Sub ComboBox1_Change()
ActiveWindow.Zoom = Replace(ComboBox1.Text, "%", "")
End Sub
402名無しさん@そうだ選挙にいこう:2012/07/07(土) 02:29:02.34
ユーザーフォームじゃないだろw
403名無しさん@そうだ選挙にいこう:2012/07/07(土) 13:38:49.03
>>401
標準モジュールにそのコード書いてもコンボボックスにマクロ登録できないよ><
404名無しさん@そうだ選挙にいこう:2012/07/07(土) 13:52:06.57
>>403
そんなレベルなら基礎から学習してこい。ここが学習スレになっちまうだろ。
405名無しさん@そうだ選挙にいこう:2012/07/07(土) 13:57:25.17
それ以前に>>401は不適切だけどなw
406名無しさん@そうだ選挙にいこう:2012/07/07(土) 15:36:13.71
ワークシートにボタン、フォームにコンボボックス
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
407名無しさん@そうだ選挙にいこう:2012/07/07(土) 21:23:30.00
また>>401のお馬鹿さんか、それとも別の勘違い君か?

@フォームコントロール
Aコントロールツール(ActiveXコントロール)
Bユーザーフォーム
この違いについて解ってるか?

質問者が使ってるのは@、>>401はB、>>406はAとB

まぁこの場合、用途的には@よりA使った方が適切とは言えるが、Bの出番は無い
なのに>>401>>406も、何故かBに固執してるw
408名無しさん@そうだ選挙にいこう:2012/07/07(土) 21:34:00.64
>>407
普通に間違えた、スマソ
ちなみに401は406ではない
409名無しさん@そうだ選挙にいこう:2012/07/07(土) 21:38:00.62
ボタンとコンボボックス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
410370:2012/07/07(土) 22:52:23.30
>>382
なるほど。ありがとうございます。
あと、ファイルをエクセルからhtml形式に変換して
オートフィルターかけることはできますか?(出来ればプルダウンで選択したい)
411名無しさん@そうだ選挙にいこう:2012/07/07(土) 23:06:19.01
>>410
変換しただけでは、オートフィルタ機能は働かないが
htmlにおいてオートフィルタ相当の機能を実装することは出来る

但し完全にスレ違いなので、ここでは聞かないでね
412名無しさん@そうだ選挙にいこう:2012/07/08(日) 00:50:40.67
セルの連動について質問です。
例えばシート1のA1とシート2のA1に入力規則で同じリストを作ります。
そして、シート1のA1でリストを選択すれば、シート2のA1も同じものが選択されている。
同様にシート2でA1を変更すれば、シート1のA1も変更する。
こういう事はExcelできますか?
413名無しさん@そうだ選挙にいこう:2012/07/08(日) 00:57:39.93
>>412
できます
414名無しさん@そうだ選挙にいこう:2012/07/08(日) 00:59:43.29
>>413
やはりVBAですか?
415名無しさん@そうだ選挙にいこう:2012/07/08(日) 01:06:39.92
学ぶ力には三つの条件があります。

第一は自分自身に対する不全感。
自分は非力で、無知で、まだまだ多くのものが欠けている。
だからこの欠如を埋めなくてはならない、という飢餓感を持つこと。

第二は、その欠如を埋めてくれる「メンター(先達)」を探し当てられる能力です。
メンターは先生でもお母さんでも、ネットの中の無名の人でもいい。
生涯にわたる師ではなく、ただある場所から別の場所に案内してくれるだけの
「渡し守」のような人でもいいのです。
自分を一歩先に連れて行ってくれる人は全て大切なメンターです。

第三が、素直な気持ち。
メンターを「教える気にさせる」力です。オープンマインドと言ってもいいし、
もっと平たく「愛嬌(あいきょう)」と言ってもいい。

「学ぶ姿勢」のある人は、何よりも素直です。
つまらない先入観を持たないから、生半可なリアリズムで好奇心を閉ざさない。
素直な人に聞かれると、こちらもつい真剣になる。知っている限りのことを、
知らないことまでも、教えてあげたいという気分になる。そういうものです。

以上、この三つの条件をまとめると、

「学びたいことがあります。教えてください。お願いします」

という文になります。これが「マジックワード」です。
これをさらっと口に出せる人はどこまでも成長することができる。
この言葉を惜しむ人は学ぶことができないのです。
学ぶ力には年齢も社会的地位も関係がありません。
>>411さんも、早く学ぶ力を身に付けてください。
416名無しさん@そうだ選挙にいこう:2012/07/08(日) 01:33:59.65
最後、レス番ズレてて台無しだw

とコピペにマジレスしてみる
417名無しさん@そうだ選挙にいこう:2012/07/08(日) 04:30:21.43
>>414
VBAでワークシートチェンジ
418名無しさん@そうだ選挙にいこう:2012/07/08(日) 14:26:52.30
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可

これどうやったらできますか?
http://up3.viploader.net/pic/src/viploader1238930.png


A列に限月(3限月分)
B列に現在値

A列の限月から1203or1206or1209or1212に対応する現在値をセルD3に表示させたいんです


よろしくお願いします
419名無しさん@そうだ選挙にいこう:2012/07/08(日) 14:42:27.29
>>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
420名無しさん@そうだ選挙にいこう:2012/07/08(日) 15:37:08.80
>>419
おおお!
ありがとうございます!


作業列つくるとはどのような感じになるのでしょうか?

シートの中身は現在値の値は書いていただいたような式から算出されていますがその他はとくにありません
現在値の位置を移動させても問題ないです

初心者ですいません
面倒ならスルーしてください
421名無しさん@そうだ選挙にいこう:2012/07/08(日) 15:39:03.27
自力だと手入力セルを作ってこういう形でしか出来ませんでした

http://up3.viploader.net/pic/src/viploader1238933.png
422名無しさん@そうだ選挙にいこう:2012/07/08(日) 15:55:18.61
>>418
> 1203or1206or1209or1212
に該当するものが複数ある場合、そのうちのどれに対応した値を
返すかという情報は、どこから得れば良いの?

>>421のように手入力で良いの?
それとも複数該当の場合は最大値とか、なんか条件あるの?
423名無しさん@そうだ選挙にいこう:2012/07/08(日) 16:03:06.63
>>422
常に3限月分が自動で取得できるます

今月だと1207、1208、1209
来月になると1208、1209、1210
再来月だと1209、1210、1211

こんな感じでなので該当する数字がかぶることはないんです
出来れば手入力より限月が切り替わるごとに自動で出来ればと思ったんです
424名無しさん@そうだ選挙にいこう:2012/07/08(日) 16:13:06.95
>>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はこんな感じ?
もっと何とかできそうだけど
425名無しさん@そうだ選挙にいこう:2012/07/08(日) 16:14:17.88
>>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)
426名無しさん@そうだ選挙にいこう:2012/07/08(日) 16:24:32.84
>>423
これでいいんじゃね?

=OFFSET(A2,3-(MOD(VALUE(RIGHT(A2,2))-1,3)+1),1)
427名無しさん@そうだ選挙にいこう:2012/07/08(日) 16:25:30.06
あぁ、そうか。一個見てoffsetでいいのかw
428名無しさん@そうだ選挙にいこう:2012/07/08(日) 16:44:26.44
>>424
>>425
>>426
おおお!こんなにもありがとうございます
429名無しさん@そうだ選挙にいこう:2012/07/08(日) 17:03:21.49
【1 OSの種類         .】 Win7
【2 Excelのバージョン   】 Excel2002
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可

セルに文字列を入力してエンターキーを押す前の状態で
文字列の一文字目にカーソルを移したいのですが
{HOME}キーを押すと、セルが確定されてしまいます

マウスと矢印キー以外の方法で、文字列のトップにカーソルを移す方法はありますか?

※同様に、確定されたセルをF2キーで編集→{HOME}キー
でもカーソルは移動できずにセルが確定されてしまいます
同じようにマウスと矢印キー以外の方法で
カーソル移動できませんか?
430名無しさん@そうだ選挙にいこう:2012/07/08(日) 17:21:34.11
2003だと普通に F2、HOME でどちらの場合も
編集状態のままセル内先頭に移動出来るけど

2002(ってOfficeXPだよね)も使ってたけど同じ操作で問題なかったはず

あとは F2、Ctrl+← でも一発で先頭に移動出来る
431名無しさん:2012/07/08(日) 17:49:05.98
サンクスです
なぜかこちらだと
セル確定前に{HOME}キー→カーソルが先頭に行かずにセルが確定されてしまいますね・・
432336: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列空列にする方法があれば教えてください。
お願いします。
434名無しさん@そうだ選挙にいこう:2012/07/08(日) 20:16:02.97
>>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

処理は連続して書かずに、一つ一つ変数に代入して、エラーの詳細な位置や返った値、
操作の結果などを確認する
これをやるだけで、この手の初歩的なミスはほぼ原因が見つかる
435名無しさん@そうだ選挙にいこう:2012/07/08(日) 20:21:48.30
>>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
>>436>>433です。
438名無しさん@そうだ選挙にいこう:2012/07/08(日) 21:15:35.14
>>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
439432: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名無しさん@そうだ選挙にいこう:2012/07/09(月) 12:43:39.51
>>441
「Excel 在庫管理」でググれ
443名無しさん@そうだ選挙にいこう:2012/07/09(月) 13:30:07.96
>>442
レストン
1点1点仕入商品が毎回違い、仕入先情報も毎回違うので都度登録しなければならず、中々フリーソフトでは難しそうです。
業務の都合上、その都度の仕入先と仕入商品情報を紐付けて管理しなければならないので、作成中のデータベースは管理IDを1行毎に付けるようにしています。
また何かあったら教えて下さい。
444名無しさん@そうだ選挙にいこう:2012/07/09(月) 14:10:23.85
>>443
442は「Excel 在庫管理」でググれって言ってるのであって
「フリーソフト 在庫管理」でググれって言ってるわけじゃないぞ
445名無しさん@そうだ選挙にいこう:2012/07/09(月) 16:05:11.83
>>443
Excelの質問じゃなくて、在庫管理の仕方を教えてください、って質問になってないか?
もうちょっと具体的に何をどうしたいのか書いてくれないと曖昧すぎてサッパリわからない
446名無しさん@そうだ選挙にいこう:2012/07/09(月) 17:14:36.51
>>444
あ、そういうことかw
ごめんなさい

>>445
一番の目的ははAのセルに何か入力されたら、Bのセルに任意の文字列を表示させるってことでした
その任意の文字列を並び替えることで、在庫品と売却済みのデータを区別して管理しようと思ってました

と思いきや、フィルタってので空白のセルとか、空白以外のセルとかで表示を絞れるんですね
これで売上になってない在庫の把握もできそうです
棚卸もこれでできそうですね
447名無しさん@そうだ選挙にいこう:2012/07/09(月) 21:13:55.71
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つのファイルを全部開きたいんだけど・・・
448名無しさん@そうだ選挙にいこう:2012/07/09(月) 21:17:44.18
>>447
配列変数使え
449名無しさん@そうだ選挙にいこう:2012/07/09(月) 21:42:00.73
コンパイルエラーになってもた・・・

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
450名無しさん@そうだ選挙にいこう:2012/07/09(月) 21:47:35.06
なんだか加齢臭のする質問だなw
人選が50代っぽいぞ
451 ◆MONA...smk :2012/07/09(月) 21:52:36.90

   ∧_∧
  ( ´∀`)  オマイモナー
  (     )
   | | |
  (_ )_)
452名無しさん@そうだ選挙にいこう:2012/07/09(月) 21:55:06.25
Dim wb(4)
を追加するだけでいいんじゃないかい?
453名無しさん@そうだ選挙にいこう:2012/07/10(火) 09:01:28.20
>>433
単純にこんな感じじゃいけないの?
D1: =IF(C1="",A1-B1,"")
E1: =IF(C1<>"",C1-B1,"")
454名無しさん@そうだ選挙にいこう:2012/07/10(火) 09:05:57.18
> A1:6 B1:5 C1:なし D1:B1-A1=1
> ↓
> A1:6 B1:5 C1:4 D1:なし E1:C1-B1=1

そもそもこの数式がおかしい
455名無しさん@そうだ選挙にいこう:2012/07/10(火) 16:24:16.74
ctrlキー押しながらマウスのスクロールまわすとエクセルシート全体のサイズ変更ができて自分にあったサイズにできるけど、、、
これを200シート分、VBAでサイズ変更したいと思うのですが可能でしょうか?
解る方いたらおしえてください。よろしくお願いします。
456名無しさん@そうだ選挙にいこう:2012/07/10(火) 16:41:57.59
可能だけど、その200シートってのが何なのか解らないと具体的には何も言えない

ブック内のシート数が200でその全部が対象って事なのか
シートを10持つブックが20個で計200シートなのか
500個のシートを持つブック内の、特定の200シートが対象なのか、、、
457名無しさん@そうだ選挙にいこう:2012/07/10(火) 16:45:56.30
>>455
こんな感じ
Sub Macro1()
For Each a In Worksheets
a.Select
ActiveWindow.Zoom = 50
Next
End Sub
458名無しさん@そうだ選挙にいこう:2012/07/10(火) 17:07:06.76
をいをいw

200シートも切り替えるんだから、処理中ScreenUpdatingは切ろうぜ
459名無しさん@そうだ選挙にいこう:2012/07/10(火) 18:18:33.79
あ、そだね
最近全然やってないな
PCの西濃がいいからついつい甘えてしまう
460名無しさん@そうだ選挙にいこう:2012/07/10(火) 20:35:13.19
すべてのシートだったらシートを全て選択して好きな表示の倍率にすればいいじゃん(´・ω・`)
461名無しさん@そうだ選挙にいこう:2012/07/10(火) 20:56:56.23
>>452
できた!ありがと。
462名無しさん@そうだ選挙にいこう:2012/07/10(火) 21:02:03.01
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回繰り返してる箇所があるので、もうちょっと効率よくしたい・・・
463名無しさん@そうだ選挙にいこう:2012/07/10(火) 21:21:41.12
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003か最近の
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

配列数式で、例えば5と書いたセルを参照して配列{1,2,3,4,5}を返すのは普通の関数でできますか?
464名無しさん@そうだ選挙にいこう:2012/07/10(火) 22:03:31.20
>>460
そんな方法会ったのね。。。
465名無しさん@そうだ選挙にいこう:2012/07/10(火) 22:11:36.93
>>463
できます
466名無しさん@そうだ選挙にいこう:2012/07/10(火) 22:33:06.38
現在お弁当代の表を作成してます。
A260円 B320円でこの様に計算しました。
countif(B$2:BF$32,”A”)*260+countif(B$2:BF$32,”B”)*320
という形で関数を打ち込みました。
これだと1人分の計算はできたのですが、全員分の計算ができなくて困っています。
合計のセルを下にひっぱっても関数がおかしくなってしまうので、分かる方いましたらよろしくおねがいします。
467名無しさん@そうだ選挙にいこう:2012/07/10(火) 22:42:24.91
>>466
どんなデータがあってどんな風に集計したいのかサッパリわからん
この6行で第三者に伝わると思ってるの?
468名無しさん@そうだ選挙にいこう:2012/07/10(火) 22:48:30.49
>>466
31行*56列ってことは、横(列)方向に人、縦(行)方向に日付か?
普通逆じゃないの?

まあそれはいいとして、一人分の計算は、「B$2:BF$32」ではなく
「B$2:B$32」でフィルコピーじゃないの?
で、全員分はその数式入れた範囲をSUMで合計するだけでは?
469名無しさん@そうだ選挙にいこう:2012/07/10(火) 23:12:01.14
>>456,457,458,459,460
ありがとうございました。
470名無しさん@そうだ選挙にいこう:2012/07/10(火) 23:13:24.34
おかげで合計でました。
ありがとうございました。
471名無しさん@そうだ選挙にいこう:2012/07/10(火) 23:21:02.41
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 勉強中
【4 VBAでの回答の可否】 可

ブックには入力シート・一覧表・参照用の3つのシートがあり
VBAを使用して「入力シートのデータを一覧表・参照用にコピペして、シートの複製・入力シートの指定セルの値をデリートする」という動作を実行するようにしています。
そこからVBAで「一覧表に30件の情報が入力されていて、かつ特定のセルに入力が行われた場合にエラーメッセージを表示する」
という動作を登録したいのですが、どのようにコード入力を行えばいいのでしょうか

いろいろ調べた結果、下記のようなコードでいいのかなと思ったのですが
コードとして入力するにもどうすればいいか分かりませんでした。
よろしくお願いします。

If = ""一覧表の30列目に値が入っていない状態"" And ""入力シートB2に入力を行う"" Then
MsgBox "新規ブックを作成してください",vbCritical
End
End If 
472名無しさん@そうだ選挙にいこう:2012/07/10(火) 23:44:08.78
>>467
>>468には伝わったみたいだな
473名無しさん@そうだ選挙にいこう:2012/07/10(火) 23:49:15.28
>>471
入力シートのB2に入力を行う というイベントで当該マクロを動かすことになります。
Private Sub Worksheet_Change(ByVal Target As Range)
if (Target.Address = "$B$2") and ""一覧表の30列目に値が入っていない状態"" then
 MsgBox "新規ブックを作成してください",vbCritical
End If
End
を入力シートのマクロに書いてみてください。""一覧表の30列目に値が入っていない状態""部分の
記述は詳細がわからないので割愛します。(動作チェックはしてません。あしからず)
474473:2012/07/10(火) 23:51:24.36
473 の自己レス End If の次の行は End Sub でした。
475名無しさん@そうだ選挙にいこう:2012/07/11(水) 00:02:16.08
>>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とかでもいけるはず

つーかさ、入力シートから一覧表にデータ移す場合に、一覧表の末尾データの位置情報が必要になるから
一覧表のデータが何件あるかを取得する方法は分かってるはずじゃないの?
476名無しさん@そうだ選挙にいこう:2012/07/11(水) 00:13:54.89
>>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
477名無しさん@そうだ選挙にいこう:2012/07/11(水) 01:15:55.71
>>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などという中途半端なところのこと言ってんの?
481名無しさん@そうだ選挙にいこう:2012/07/11(水) 20:10:21.29
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 つかえません
【4 VBAでの回答の可否】 可

VBAでコマンドボタン設置してシート1からシート2へコピペさせてます
ペースト時に、シート2で画面の横スクロールが起きるのですが、スクロールさせずに作業させることは可能ですか?
方法があればおしえてください
482名無しさん@そうだ選挙にいこう:2012/07/11(水) 20:13:46.84
>>481です

すいません
Application.ScreenUpdating = False
で解決しました
483462:2012/07/11(水) 20:20:22.52
誰か〜
484名無しさん@そうだ選挙にいこう:2012/07/11(水) 21:44:10.80
>>483
二回ぐらいならその辺りでいいんじゃないの
そんな程度で効率求めるほうが非効率
100回繰り返してるとかなら手伝うけど
485名無しさん@そうだ選挙にいこう:2012/07/11(水) 21:50:42.29
>>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
486471:2012/07/11(水) 22:41:15.80
皆様ご回答ありがとうございました。
まだ動作確認までできていないのですが、助言を元にもう少し頑張ってみます。
まだ勉強し始めたばかりなので、おかしなところもたくさんあったかと思います。
皆様のコメントも参考にさせていただきます。
B2等は変数と言っていいのかはわかりませんが名前をつけて省略していました
ルールも守れず申し訳ありませんでした。
487名無しさん@そうだ選挙にいこう:2012/07/12(木) 00:27:33.63
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
数値の入ったセルをセルの書式設定で文字列として設定すると、普通の数字は文字列となって
セルの左上にエラーの緑三角が表示されるはずですが、csvファイルから読み込んだデータで
同じ操作をするとエラー表示の無い文字列になってしまいます。
こうなると同じ「123」という数字でも別データとして扱われるらしくVLOOKUP等での検索に引っかからなくなってしまいます。
csv由来のデータをなんとか汎用性のあるデータに書き換えたいので、よろしくご教授お願いします。
488名無しさん@そうだ選挙にいこう:2012/07/12(木) 00:42:10.09
>>487
エラーチェックオプションで「文字列として保存されている数値」のチェックを外すとエラーにならなくなるよ
489名無しさん@そうだ選挙にいこう:2012/07/12(木) 00:42:31.89
>>487
うーん、よくわかんない
第四引数を1かTRUEにしてない?

CSVはこんな感じでつくってみたけど、読み込んだら全て数値扱いだった
1,a
2,xs
3,d
"4",f
5,g
6,h
490名無しさん@そうだ選挙にいこう:2012/07/13(金) 00:14:30.14
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 基礎程度
【4 VBAでの回答の可否】 可

セルが小さくて、入力規則のリストの矢印も小さく表示されて不便なので
表示のズーム以外で矢印を大きくする方法はありますか?
491名無しさん@そうだ選挙にいこう:2012/07/13(金) 00:46:12.76
>>490
ない
492名無しさん@そうだ選挙にいこう:2012/07/13(金) 00:49:43.78
入力規則のリストではなく
フォームのコンボボックスなら
同様のことを実現できて▼も大きくできる
493名無しさん@そうだ選挙にいこう:2012/07/13(金) 01:02:55.43
Excel2010で、挿入→図形→テキストボックスで文字を書くとき、
全角はMS Pゴシック、半角はcalibriになってます。
半角もデフォルトでMS Pゴシックにするにはどうすればいいですか?
494名無しさん@そうだ選挙にいこう:2012/07/13(金) 01:06:03.81
>>492
開発リボンにある、フォームコントロールのコンボボックスのことですか?
495名無しさん@そうだ選挙にいこう:2012/07/13(金) 05:29:16.44
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と入力してオートフィル機能を使ってドラッグするのもどうなのかなと思います。

もっと良い方法があれば教えていただきたいです。
よろしくお願いします。
497名無しさん@そうだ選挙にいこう:2012/07/13(金) 21:51:18.92
>>496
IF関数使って、入力が無いときは""を
入力が有れば計算結果を返す式を組めばいい
498名無しさん@そうだ選挙にいこう:2012/07/13(金) 21:55:52.11
>>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
499名無しさん@そうだ選挙にいこう:2012/07/13(金) 22:18:48.89
間違ってるぞ
500名無しさん@そうだ選挙にいこう:2012/07/13(金) 22:35:52.72
>>496
オートフィルより出発時メーターを毎回入力するのもどうなのかなと思います。
501名無しさん@そうだ選挙にいこう:2012/07/13(金) 22:56:15.40
>>498
このような場合は列方向でOffset使うのは好ましくない。
可読性が著しく落ちるし、イベント発生列によって式を変えなくちゃならないからね。
Target.Rowを変数に取って、Cells(行変数, 列番号)とするか
With Target.EntireRowで、.Cells(列番号)とする方が、可読性も汎用性も上がる。

>>500
運送会社のトラック走行距離なら、車検や修理、自社整備倉庫との往復などで
前回到着時メーターと、次回出発時メーターが同じだとは限らないのでは?
502名無しさん@そうだ選挙にいこう:2012/07/13(金) 23:28:23.03
深いな
503名無しさん@そうだ選挙にいこう:2012/07/14(土) 01:29:18.92
いやあ、それほどでも
504496:2012/07/14(土) 05:25:50.58
レスありがとうございます。
家に帰ってから試してみたいと思います。
505名無しさん@そうだ選挙にいこう:2012/07/14(土) 14:59:08.16
>>496
てか、どう考えてもD列オートフィルが一番早いじゃん
506名無しさん@そうだ選挙にいこう:2012/07/14(土) 15:57:30.45
Excel2010で、挿入→図形→テキストボックスで文字を書くとき、
全角はMS Pゴシック、半角はcalibriになってます。
半角もデフォルトでMS Pゴシックにするにはどうすればいいですか?
507名無しさん@そうだ選挙にいこう:2012/07/14(土) 16:52:49.68
エクセル2010で質問です、

セルAに1から100までの数値がそれぞれ入力してあって50以上のセルを赤色に塗りつぶしを、20以下のときは緑色にしたいです。だいぶ前にできていたのですがわすれてしまいました。
すみません、だれか簡単に教えてください。お願いします。
508名無しさん@そうだ選挙にいこう:2012/07/14(土) 16:55:30.26
>>506
うちは2003だけど、最初から全角も半角もMS Pゴシックになってる

>>507
条件付書式
509名無しさん@そうだ選挙にいこう:2012/07/14(土) 17:31:00.04
このスレで一番使えないヤツ

>>15 2003だと動いたんだけどな

>>319 2003ならツーッルバーのユーザー設定でナントカカントカ

>>387 2003だと動いてるんだけどな・・・

>>430 2003だと普通に F2、HOME でどちらの場合も
     編集状態のままセル内先頭に移動出来るけど

>>508 うちは2003だけど、最初から全角も半角もMS Pゴシックになってる
510名無しさん@そうだ選挙にいこう:2012/07/14(土) 18:17:51.53
この子、いきなりどうしちゃったの?
511マッチ棒:2012/07/14(土) 18:41:49.85
エクセルVBAでごりごりに組んだ経理のシステムがあるんですけんど
これをもとにビジュアルベーシックでスタンドアロンアプリを作りたい。
表計算などの基礎的な部分からプログラミンが必要なの?
うまく変換するしかけとかありますけ
512名無しさん@そうだ選挙にいこう:2012/07/14(土) 18:46:31.25
>>511
エクセルVBAでごりごりに組んだ経理のシステムを見てみないと判断できない
どっかにアップして
513名無しさん@そうだ選挙にいこう:2012/07/14(土) 19:12:01.39
VisualBasic6.0以前と
VisualBasic20023以降とでは全く話が別だしな

まずはブックのうpからか
514名無しさん@そうだ選挙にいこう:2012/07/14(土) 19:13:51.95
20023年にもVisualBasicが存在してるのか。
515名無しさん@そうだ選挙にいこう:2012/07/14(土) 20:21:02.04
ちょっとした誤変換や入力ミスにもすぐ食い付く奴って・・・
516マッチ棒:2012/07/14(土) 23:06:13.51
たとえばアクセスだとそういうのやれるでしょ?
アクセスなくても単体でうごかせるやつ。
517名無しさん@そうだ選挙にいこう:2012/07/14(土) 23:30:38.52
たまにVBAで R1C1 ってのをみるんだけど初心者にわかりやすいようにおしえてくれない?
お願いします。
518名無しさん@そうだ選挙にいこう:2012/07/14(土) 23:57:37.73
>>509
わぁ、特定すごーい!
>>511
vba基準で見ると、エクセルは膨大なライブラリと見れる
が、うまく組んでいるなら単純にセルの配列と見ることもできる
で、これがわかっているなら変換の可能/不可能、容易/難解、はすぐに理解できる
つまりあなたには相当に難しい作業だと思う
>>517
Rはrow、行。Cはcolumn、列の意味。
R1C1はRow 1行目 Column 1列目の意味。
519名無しさん@そうだ選挙にいこう:2012/07/15(日) 00:20:59.16
>>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は違う数値になります。
それをどうにか認識する方法はないでしょうか
521名無しさん@そうだ選挙にいこう:2012/07/15(日) 00:54:19.07
>>520
たとえばどこか使わないセルに前回の値を書き込んでおいて
更新時にその値と比較すればいいんじゃないの。
チェンジイベント限定だと知らんが。
522名無しさん@そうだ選挙にいこう:2012/07/15(日) 00:56:55.16
>>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が実行される的な感じです
524名無しさん@そうだ選挙にいこう:2012/07/15(日) 02:53:12.12
Worksheet_Changeイベントで処理すればいいと思うんだけど
ダメな理由がよくわからない
525524:2012/07/15(日) 02:57:45.21
ごめん寝起きでボケてたわ、>>524は忘れて
>>522でよさげ
526名無しさん@そうだ選挙にいこう:2012/07/15(日) 03:02:22.22
>>522はどういう意味ですか?
527名無しさん@そうだ選挙にいこう:2012/07/15(日) 03:05:37.25
>>526
Webクエリ更新前に特定のセル値(例えばA1やA5)を退避しておいて
Webクエリの更新をして、退避しておいた値とWebクエリ更新後の値を比較して
差異があればなんらかの処理を行う(例えばマクロAやマクロBを実行)
528名無しさん@そうだ選挙にいこう:2012/07/15(日) 10:47:45.09
Excel2010で、挿入→図形→テキストボックスで文字を書くとき、
全角はMS Pゴシック、半角はcalibriになってます。
半角もデフォルトでMS Pゴシックにするにはどうすればいいですか?
529名無しさん@そうだ選挙にいこう:2012/07/15(日) 12:05:11.17
マナーもルールも守れない奴には無理だ
目障りだから帰ってくれないか!
530名無しさん@そうだ選挙にいこう:2012/07/15(日) 12:29:41.65
>>529
誰に言ってるんだ?

>>528
テキストボックスを作る
テキストボックス内で右クリック→フォントで英数字用フォントと日本語用フォント、その他変えたい所を変える。
OKで閉じる。
テキストボックスの枠線の所で右クリック→既定のテキストボックスに設定を押す。
ためしに新規テキストボックスを作って文字を書いてみる。

これでいけるとおもう。
531名無しさん@そうだ選挙にいこう:2012/07/15(日) 12:29:41.75
>>528
>>493>>506に似たような質問あるからその辺りで答えが出てると思う
532名無しさん@そうだ選挙にいこう:2012/07/15(日) 12:32:18.20
>>530
たしかその設定の記憶はシート内だけで有効
別シートや新規ブックには引き継がれなかったはずだけど、質問者はそれでもいいのかな
533名無しさん@そうだ選挙にいこう:2012/07/15(日) 12:40:47.85
今より便利だからいいやん。
534名無しさん@そうだ選挙にいこう:2012/07/15(日) 12:48:02.60
http://blog.livedoor.jp/tokuiss06/archives/729392.html
これも併用すればいいんじゃ
「C:\Program Files\Microsoft Office\OFFICE11\XLSTART」
を変更するとデフォルトがかわる
535528:2012/07/15(日) 13:05:38.09
>>530
532氏のご指摘どおり、デフォルトで設定できません。

>>534
C:\Program Files\Microsoft Office\OFFICE11\XLSTART\Book1.xlsxで保存しましたが、
新たにエクセルを立ち上げると半角はcalibriになってしまいます。
536名無しさん@そうだ選挙にいこう:2012/07/15(日) 13:21:56.46
>>535
おそらく、望んでいることを可能にするために
テンプレートという機能が存在してるんじゃなかろか。
テキストボックスのフォントを変更して、既定として使用にしておいて
それをテンプレートで保存する。
新規ブック作成時は、オフィスボタンから、そのテンプレートを選べばいい。

これで良いんじゃない?
537名無しさん@そうだ選挙にいこう:2012/07/15(日) 13:29:20.65
多分それ以上は無い
538528:2012/07/15(日) 18:03:00.40
>>536
新規より、既存のブックを開いてテキストやボタンを
追加するときに必要なんですけどね。
一度つくったものをコピペして使い回ししてますが
毎度のことなのでデフォルト設定ができたらと思い質問しました。
結局、できないようなので諦めます。
53957 ◆MwLUkYVrGI :2012/07/15(日) 18:50:55.53
俺の2003なら全角も半角もMSゴシックですよ?
540名無しさん@そうだ選挙にいこう:2012/07/15(日) 19:08:56.19
>>538
その使い方なら>>530でいけるんだが。
541名無しさん@そうだ選挙にいこう:2012/07/15(日) 19:36:45.51
既存のはまとめてマクロ流せばいいんでねーの。
542名無しさん@そうだ選挙にいこう:2012/07/15(日) 20:24:07.54
マクロの記録でもできるレベルなんだからさっさとやればいいのにな。
543名無しさん@そうだ選挙にいこう:2012/07/15(日) 20:48:58.58
「新しいテーマフォントの作成」で行けるんじゃないの。
544名無しさん@そうだ選挙にいこう:2012/07/15(日) 21:45:47.43
WorksheetOpenにフォントの設定を仕込んでおくとか
545名無しさん@そうだ選挙にいこう:2012/07/15(日) 23:27:45.19
excelを手っ取り早く覚えたいなら。

http://mcas.ichiyazuke.jp/
546名無しさん@そうだ選挙にいこう:2012/07/16(月) 01:13:37.73
>>545
最悪の詐欺サイトだな
そんなもの使う必要なし
547名無しさん@そうだ選挙にいこう:2012/07/16(月) 01:36:35.37
男は黙って削除依頼
もうしたけど
548名無しさん@そうだ選挙にいこう:2012/07/16(月) 02:30:43.65
>>538
それなら >>540 の言うとおりだよ。
何か操作を間違っているんじゃないかな。
549名無しさん@そうだ選挙にいこう:2012/07/16(月) 06:38:09.29
【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名無しさん@そうだ選挙にいこう:2012/07/16(月) 08:04:36.03
>>549
http://www.dotup.org/uploda/www.dotup.org3203080.png
こんな感じで桁数減らすのはあかんの
551名無しさん@そうだ選挙にいこう:2012/07/16(月) 08:29:26.22
>>550
A列をE列のようにした場合
F列のデータ数が500や1000や2000になっても
G8 G9 G10みたいな感じで任意の桁数の数字が求められるのでしょうか?

ボクの方法だとB列が300個ぐらいで#NUM!が発生しちゃうんですが
どうしたらいいんですかね?



552名無しさん@そうだ選挙にいこう:2012/07/16(月) 09:06:36.71
>>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))
で良くないか?
553名無しさん@そうだ選挙にいこう:2012/07/16(月) 09:28:30.69
>>540 = >548

気づかれてないとでも?w
554名無しさん@そうだ選挙にいこう:2012/07/16(月) 10:19:12.20
>>552
そっか....
O列で 10のn乗をあんなに表示させなくてもいいんだ!
求める桁数のみ表示させればいいんですね

http://www1.axfc.net/uploader/Img/so/146139
教えていただいた条件式を使用して
O列の不要な部分を表示させないように修正してみました。

どうもありがとうございました

555名無しさん@そうだ選挙にいこう:2012/07/16(月) 15:10:36.78
Excel2003で作成したファイルをExcel2010で修正し保存する時に2003バージョンで保存したらいろいろ互換性が悪くファイルが重くなった。2003を主に使用するのでExcel2010を2003のバージョンで使用したいができるのですか?
556名無しさん@そうだ選挙にいこう:2012/07/16(月) 17:25:11.63
ブックの「2003(形式)」とアプリの「2003(バージョン)」を
区別できるように掛けよ
557名無しさん@そうだ選挙にいこう:2012/07/16(月) 18:24:12.40
何言ってんのコイツw
558528:2012/07/16(月) 19:10:37.89
>>540
デフォルト設定とは、初期設定のことです。
530の方法は初期設定のやり方ではありませんし、
2つ目以降なら今やってるコピペの方が効率がいいです。
既存のブックに、(初期で)テキストボックスやボタンを
追加したときでも半角がMS Pゴシックにできればということです。

>>548
同上
559名無しさん@そうだ選挙にいこう:2012/07/16(月) 20:00:54.64
>>558
おそらく

>新規より、既存のブックを開いてテキストやボタンを
>追加するときに必要なんですけどね。
というやり取りの時に、

>新規より、既存のブックを開いて「一つ目の」テキストやボタンを
>追加するときに必要なんですけどね。
と書けば、みんなに理解されたかも知れないね。
560名無しさん@そうだ選挙にいこう:2012/07/16(月) 20:07:05.91
みんな じゃなくて、お前(>>540 = >548)が理解してなかったんだろ?
561名無しさん@そうだ選挙にいこう:2012/07/16(月) 20:08:09.42
おれは>>540でもないし>>548でもない
なに言いがかり付けてるんだか
562540:2012/07/16(月) 20:44:50.18
何か知らんが同じ考えなだけで同じ人扱いされても、否定するのもめんどくさい。
>>559で理解できました。

自分なら個人用マクロブックにマクロ組みます。そこまで必要なさそうだけどね 。
563名無しさん@そうだ選挙にいこう:2012/07/16(月) 20:49:59.92
PowerShellでExcel起動して設定を変えるという手もあるかな
564548:2012/07/16(月) 22:20:38.38
何か知らんが同じ考えなだけで同じ人扱いされても、否定するのもめんどくさい。
>>559で理解できました。
565名無しさん@そうだ選挙にいこう:2012/07/16(月) 22:29:55.51
質問者が「違う」と言ってるのに、>>○○で正解だと繰り返してたのが前にもあったなw
566名無しさん@そうだ選挙にいこう:2012/07/16(月) 22:39:18.38
>>565
エスパーの少ない時だと往々にしてなりがち
許せ
>>562
俺なら全ての使用中.xlsファイルに適用するよう、foreachかな
ただそういう状況にまずならないけどね
567マッチ棒:2012/07/16(月) 22:48:10.81
マクロを録画するボタンでできたマクロって、あとから一覧に出てくるでしょ?
けどはじめからVBAエディタで書いたプログラムはマクロ一覧にはいない。
どうしたら一覧から消せますけ
568名無しさん@そうだ選挙にいこう:2012/07/16(月) 22:57:09.96
>>567
>けどはじめからVBAエディタで書いたプログラムはマクロ一覧にはいない。
うーん、今sheet1に書き込んでsheet2でalt+F8してみたけどでてきた
その状況を詳しく教えて欲しい。もしくはファイルのアップロードキボンヌ
569名無しさん@そうだ選挙にいこう:2012/07/16(月) 23:17:50.45
>>566
foreachって何?
ググってもわからん
570名無しさん@そうだ選挙にいこう:2012/07/16(月) 23:22:00.76
>>569
http://home.att.ne.jp/zeta/gen/excel/c04p21.htm
for eachのこと
エクセルVBAだとコレクションすべての要素に大して処理を行うことができる
「foreach vba」でぐぐってテキトーに使ってみると良い」
571名無しさん@そうだ選挙にいこう:2012/07/17(火) 03:08:58.11
エクセル2010です。質問がありますよろしくお願いします。
VBAのプログラムの途中からだけ実行して動作確認がしたいです。

長いプログラムを作成中です。途中で何回も動作確認します、
プログラム前半にInputBoxで入力する作業が4つもでてきて確認作業がしずらいです。
ぐぐったらブレークポイントというのがでてきました。
さっそくやってみたのですが最初から実行して途中とまってそこから確認したいところを確認するという感じでした。
結局InputBoxがでてきてしましました。

前にコード表示して選択したところのプログラムを実行して確認するやり方を知っていたのですが、すいぶん前のことで忘れてしまいました。
知ってるかたいたら教えてください。よろしくお願いします。
572名無しさん@そうだ選挙にいこう:2012/07/17(火) 05:28:58.52
571だけど、、、
今、データセーブして起動してマクロみたらプログラム名だけ残っててなかみが消えてるんだけど、、、
夜中作業して150行くらいつくった。

データセーブして一服 → あっ!実行確認してなかった。 エクセル起動 → マクロ名クリック → ??? → 全消え。。。
なんなのこれ。もうデータ復活はできないの?
573名無しさん@そうだ選挙にいこう:2012/07/17(火) 05:37:26.89
>>571
a = InputBox("")
で10とにゅうりょくしてるなら
a = 10
とかにしておけば良い

>>572
知らん。もう一度保存しても消えてるならエクセルがおかしい。
消えてないなら君が消した。
574名無しさん@そうだ選挙にいこう:2012/07/17(火) 05:46:32.74
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

日付に関する質問です。
『12/7/17』という日付のセル内から、『12.7.17』に変換して取り出すにはどうしたら良いでしょうか?
575名無しさん@そうだ選挙にいこう:2012/07/17(火) 05:59:27.98
>>574
year、month、dayでがんばってもいいけど
=TEXT(A1,"y.m.d")
576名無しさん@そうだ選挙にいこう:2012/07/17(火) 06:13:04.05
>>567
private subと、引数の必要なpublic subは一覧に出ない
引数のないpublic Subは一覧にでる
省略したsubだけのはpublic扱い
577名無しさん@そうだ選挙にいこう:2012/07/17(火) 06:14:31.06
>>575
ありがとうございます
578マッチ棒:2012/07/17(火) 12:01:16.12
>>576
つまりどうすたらいいのでしょうか
579名無しさん@そうだ選挙にいこう:2012/07/17(火) 12:15:25.69
>>578
コード見せてもらわないと判別不能
とりあえず
private subならpublic subに書き換え
引数が必要なら呼び出し元から呼び出すしか無い
580名無しさん@そうだ選挙にいこう:2012/07/17(火) 13:24:55.43
消したいんだから逆だろ
表示したくないものにPrivateを付ければよろしい

因みに一番上に
Option Private Module
と書くとPublic宣言してあるものも全てまとめて表示されなくなるよ

まとめると、表示されるものが○、表示されないものが×として

標準の場合
○Sub
○Public Sub
×Private Sub

Option Private Moduleを書いた場合
×Sub
×Public Sub
×Private Sub

つまり個別に表示させるものと表示させないものを分けたいならPrivate Sub
全部一括して表示しないようにしたいならOption Private Module
581名無しさん@そうだ選挙にいこう:2012/07/17(火) 13:27:42.84
>572と近藤してしまったスマソ
582名無しさん@そうだ選挙にいこう:2012/07/17(火) 21:11:43.88
【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
583名無しさん@そうだ選挙にいこう:2012/07/17(火) 21:35:17.28
>>582
根本的に間違っている部分
イベントは発生しています

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Address
End Sub

これでイベントが発生している事と、アドレスプロパティで取得できる文字列の内容を確認してみてください。


警告を出したいんだろうけど、セルを結合している時点でC3だけの選択は出来ないですよ。
584583:2012/07/17(火) 21:40:15.32
ちょっと間違った。ようするにそのB3と同じように、ここには入力しないで!警告を出したいなら>>583でアドレスの内容を確認して
B3と同じようにしてみたらいけると思うよ。
585名無しさん@そうだ選挙にいこう:2012/07/17(火) 21:42:01.99
>>582
If Target.Address() = "$B$3:$D$3" Then
586名無しさん@そうだ選挙にいこう:2012/07/17(火) 21:42:56.13
あ、アドレス間違った。まあ、こんな感じ
587名無しさん@そうだ選挙にいこう:2012/07/17(火) 21:46:08.34
>>583
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not (Intersect(Target, Range("C3:E3")) Is Nothing) Then
MsgBox "このセルには入力しないで!!"
End If
End Sub
588名無しさん@そうだ選挙にいこう:2012/07/17(火) 22:23:19.96
皆さん回答ありがとうございます。
回答通りできました。
ただ、ぐぐっている間に自分なりに改造して
>>582の『If Target.』部分を『If ActiveCell.』にしたら
結合セルでも、C3のみの指定でも反応しました。
これはこれで正しい選択の一つなんでしょうか?
589名無しさん@そうだ選挙にいこう:2012/07/17(火) 22:39:09.46
>>588
正しいですよ
590名無しさん@そうだ選挙にいこう:2012/07/18(水) 00:15:51.29
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2007
【3 VBAが使えるか    .】 勉強中
【4 VBAでの回答の可否】 可


グラフのX軸のデータを
軸の書式設定の配置の文字列の方向を縦書き半角文字を含むに
VBAで変えるにはどうしたらいいでしょうか?

X軸のタイトル等の文字方向はすぐに引っかかるけど、データのは引っかかりません
記録で調べてみてもわからないのでおしえてください。

グラフ関係は記録でわからないのが多いですがどこかいいサイトはないですか?
591名無しさん@そうだ選挙にいこう:2012/07/18(水) 00:38:24.59
つーかステップ実行してAddressプロパティの値を見たり
Debug.Printで確認したりすれば原因も解決方法を一目瞭然で
言語を始める場合はまずデバッグの仕方を覚えないと始まらないんだが
VBAではいきなりへんてこコード書くことから始める奴が多いよね

交通ルール学ばずに車の運転始めて、信号に行き当たったら
「信号の赤はどんな意味ですか?赤に向かって突進しろってことですか?」」
とか言ってるのと同レベル
592名無しさん@そうだ選挙にいこう:2012/07/18(水) 00:56:24.99
>>591
世の中のVBAのプログラムなんて大体それでなんとかなっちゃうからな
別にそれでいいんじゃねーの
593マッチ棒:2012/07/18(水) 01:07:47.08
VBA とビジュアルベーシックは同じ意味ですか
594名無しさん@そうだ選挙にいこう:2012/07/18(水) 02:10:20.06
>>593
その辺はwiki見て欲しいかなぁ
595名無しさん@そうだ選挙にいこう:2012/07/18(水) 02:14:38.33
>>591
クラスの概念も少しでいいから理解してから書き始めると段違いに覚えやすいんだけどねぇ
俺も昔はステップ実行知らずにmsgbox()書きまくってたな
今考えるとアホすぎるが、当時はそんなもんと思ってたな
596名無しさん@そうだ選挙にいこう:2012/07/18(水) 02:26:58.50
>>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
>>580
うまく隠せましたありがとう
598名無しさん@そうだ選挙にいこう:2012/07/18(水) 16:00:03.85
wikiなんてあったっけ?
599名無しさん@そうだ選挙にいこう:2012/07/18(水) 16:16:41.84
wikitってWikipediaのことだろ
600名無しさん@そうだ選挙にいこう:2012/07/18(水) 19:08:21.97
さすがにそれはないだろ
601名無しさん@そうだ選挙にいこう:2012/07/18(水) 19:12:02.56
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2007
【3 VBAが使えるか    .】 勉強中
【4 VBAでの回答の可否】 可

使用してる間にいつのまにか、シート下の列移動するバーが凄い小さくなってました
1番右までやると「WWD」列までなっていたんですが、これってWWDまでアクティブってことなんでしょうか?
使用している列はVくらいまでなんですが、無駄に重くなりますよね?
列を選んで右クリック削除でも小さくならないんですが、どうやったら下のバーが新規みたいに戻りますか?
602名無しさん@そうだ選挙にいこう:2012/07/18(水) 19:47:09.57
>>601
ブックを保存してExcelを再起動
603名無しさん@そうだ選挙にいこう:2012/07/18(水) 20:36:16.92
ttp://uproda.2ch-library.com/554032I6c/lib554032.gif
↑を↓にする
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
604名無しさん@そうだ選挙にいこう:2012/07/18(水) 20:37:08.05
'続き
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
605名無しさん@そうだ選挙にいこう:2012/07/18(水) 20:38:33.89
'続き
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
606名無しさん@そうだ選挙にいこう:2012/07/18(水) 21:43:40.39
>>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)
ってした方がいいんだけど、お好きなように
607名無しさん@そうだ選挙にいこう:2012/07/18(水) 22:52:21.12
処理時間に影響ないからいいとするか、マクロなしの書式設定で良しとしてもいいのでは?
608名無しさん@そうだ選挙にいこう:2012/07/18(水) 23:44:35.32
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2007
【3 VBAが使えるか    .】 勉強中
【4 VBAでの回答の可否】 否

例えばA1からA100に10桁の英数文字が入力されています。
そこから、最初の3桁がAA1のセルの個数を数えるには、どういう関数をしようしたらいいのでしょうか。
B1にその個数を返すにはどうすればいいでしょうか。
609名無しさん@そうだ選挙にいこう:2012/07/18(水) 23:56:54.11
>>608
泥臭いやり方だと
C1=LEFT(A1,3)="aa1"
C100までオートフィル
B1=COUNTIF(C:C,TRUE)
610名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:01:23.86
>>609
ありがとうございます。
やはり他のセルは使わないスマートな方法は関数じゃ無理ですか。
611名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:09:54.26
>>608
=sumproduct((left(A1:A100)=AA1)*1
612611:2012/07/19(木) 00:11:18.49
>>611
あれ?なんか違うな、こうか?
=sumproduct((left(A1:A100,3)=AA1)*1)
613名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:12:41.69
>>610
いくらでも出来るけど、作業列使う方がスマートな方法なんだよ
「表面的」な部分ではなく「芯」の部分がね

まあ初心者は見た目だけスマートで内容的に無駄が多い処理を好む傾向にあるけど
614名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:19:16.82
>>608
=COUNTIF(A1:A100,"AA1*")
じゃダメなの?
615名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:21:07.31
>>612
AA1を""で囲んだら綺麗にできました!
ありがとうございます。

>>613
>>612は駄目な方法ですか?
616名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:22:25.18
あ、>>614でもできました。
どれが綺麗な方法なんでしょうかね
617名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:25:41.15
>>616
法則がわかっているのなら、ワイルドカード(*や?)を使うほうがスマートだよ。
ただ関数だとワイルドカードが使えない場合もあるので一長一短。
618名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:26:13.99
>>596
ラベルではなくて横軸の文字方向なんです。
ttp://iup.2ch-library.com/i/i0693901-1342623097.jpg
の青線の所です。.
Axes(xlValue)で設定できるところがあるのかな?と思っているのですが
たぶん初歩的なことなのだと思いますがわからず困っています。
619614:2012/07/19(木) 00:28:38.95
今回は関数一発でいけるから614でいいと思っているんだけど、
複数の関数を組み合わせるぐらいなら、>>613の言っているとおり作業列を使うほうが綺麗と思うよ。
- うまく動かない時に確認しやすい点
- 第三者やあとで自分が見てわかりやすい点
- 他のことに改変するとき、やりやすい点
まあ、ケースバイケースだけど、ひとつのセルに関数を何重にも重ねていくのは、あまり勧めない。
620名無しさん@そうだ選挙にいこう:2012/07/19(木) 00:34:51.16
なるほど
皆さんありがとうございます。
理解が重要なんですね。理解が。
621名無しさん@そうだ選挙にいこう:2012/07/19(木) 01:07:46.74
AA1ってアドレスじゃなくて文字列の事だったのか
622名無しさん@そうだ選挙にいこう:2012/07/19(木) 02:46:59.70
>>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

っていう書式でやれたけど
もっと簡略化できたりするのですけ
624名無しさん@そうだ選挙にいこう:2012/07/19(木) 12:04:28.52
>>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。
626名無しさん@そうだ選挙にいこう:2012/07/19(木) 12:16:42.26
>>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
新規空白ブックを作り、コードを表示させようとすると、
atpvbaen.xls てのと funcres とかいうのが既にいて、しかもパスワードがかかっている
http://i.imgur.com/JiX4N.jpg
628名無しさん@そうだ選挙にいこう:2012/07/19(木) 12:32:04.95
>>627
アドイン。どうしても削除したいならアドインから削除するしか無い。
629名無しさん@そうだ選挙にいこう:2012/07/19(木) 12:32:35.15
>>626
よく見ろ
atpvbaen.xls ではなく
atpvbaen.xla だろ
その二つはアドイン([E]xce[l」 [A]dd-in)だ

パスワードは新規作成したブックのVBAに毎回パスワードが掛かってるなら
テンプレートがそうなってるのがアドインがブック作成イベントを掴んでパス掛けやってるのか

とりあえず、アドイン無効、テンプレート削除(退避)で再起動してから新規ブック作ってみろ
ちあみにアドイン無効、テンプレート削除方法分からなかったら、そのくらいはググれ
630質問:2012/07/19(木) 12:42:56.95
>>628>>629
分析ツールてアドインがいたので消したらすっきり解決
大義であった
631名無しさん@そうだ選挙にいこう:2012/07/19(木) 12:46:34.32

複乳久しぶりに出てきたと思ったら
また半端な知識で恥かいてて超ウケるw
632名無しさん@そうだ選挙にいこう:2012/07/19(木) 12:55:50.80
ネコの複乳いいよね
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という同じ値を転写します。
効率のいい記述方をおしえてください。
634名無しさん@そうだ選挙にいこう:2012/07/19(木) 15:22:25.09
>>633
Range("B5,C9,E6").FormulaR1C1 = "k"
>>630
マジで消したのか。まぁいいけど…
635名無しさん@そうだ選挙にいこう:2012/07/19(木) 15:29:50.40
>>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
使用しているグラフは散布図グラフオブジェクトでしょうか。
折れ線グラフオブジェクトを使えば解決できると思う。
リンクの図を見る限りデータも順序尺度のようなので
折れ線でも大丈夫じゃないだろうか。
638名無しさん@そうだ選挙にいこう:2012/07/19(木) 23:09:02.19
複乳の間違ってはいないんだが低レベルな回答を久しぶりに見た。
なんか懐かしい。
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関数→全て計算した値を並べてからピポットテーブルにしてみました。
シートが重くなる上に、小数点が出てから合計するので値にズレが出そうだったり、
データがぐちゃぐちゃになって私以外の人間が入力するのが難しそうでした。

色々検索して試してみるものの、上手くいかず……
どなたかご回答頂ければ幸いです。
640名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:10:26.28
>>639
丸投げでコード書いてくれってことならブックをうp
自分でコード書くつもりなら、書けるところまで書いたコードを貼って
どこが分からないのか具体的に書け

ブックうp出来ないけど、意味不明な説明だけでコード書けとか言うならサヨウナラ
641名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:16:12.42
エラそうにwww
642名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:18:31.20
>>640
まあそう言わんと
643名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:22:42.14
>>639
本当は、こういう処理は最後の仕上げ以外はExcelに
向いてないんだよな。
解答じゃなくごめん
644名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:23:29.94
ヒント

>>1
> ※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
>   VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。
645名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:24:58.27
646名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:26:54.70
>>639
データの横にVLOOKUP関数→ピボット生成
までマクロに登録すればいいと思う
更にソレをボタンにでも登録すればいいんじゃないかな

VBAがしんどいのは最初だけよ
647名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:27:19.25
>>641-642
テンプレに書いてあることだよ
648名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:31:42.51
>>639
VLOOKUPが重くてダメ、ピボットで集計できないからダメ、ならVBAでやるしかないんじゃないかな
VBAが使えないなら勉強するしかないかと
649名無しさん@そうだ選挙にいこう:2012/07/20(金) 00:35:53.44
皆結論は似たりよったりか

で、どうするの?
ブックうpして気前の良い人がやってくれるのに期待してみる?
自分で勉強して分からないところ聞きに来る?
それとも面倒だからと諦めちゃう?
650名無しさん@そうだ選挙にいこう:2012/07/20(金) 01:11:17.66
vlookupってなんで重いの?
VBAで同様の処理が軽くやれるならなぜ実装しないの
651名無しさん@そうだ選挙にいこう:2012/07/20(金) 01:23:10.79
実装すると、そういう風に重くなる
652名無しさん@そうだ選挙にいこう:2012/07/20(金) 01:29:51.21
vlookupは第二引数の範囲が大きければ大きいほど重くなる
範囲をなるだけ最小にするかmacth+indexを使えば大分マシになる
653639:2012/07/20(金) 02:18:37.98
色々とレスありがとうございます。
個人情報的なものも多いので、無難なデータに置き換えるのに手間取りましたが……
エクセルのファイルをアップしてみました。
基本的にはこのような感じです。
http://www.dotup.org/uploda/www.dotup.org3216591.xlsx

初心者なもので何か見当違いのことをしていたら申し訳ない。
654名無しさん@そうだ選挙にいこう:2012/07/20(金) 02:35:34.00
え?vlookupって重いの?
何行目くらいから重くなるの?
655名無しさん@そうだ選挙にいこう:2012/07/20(金) 02:40:40.52
>>654
今の性能だとそうそう感じることはないと思う。

>>653
俺なら加工は諦めて、シートまるごと参照する。
VBAに頼ったほうがいいかもしれない。

1 A1=ピポットテーブル!A1
2 オートフィル
3 B5=ピポットテーブル!B5*VLOOKUP($A5,参照!$A:$E,5,0)/VLOOKUP($A5,参照!$A:$F,6,0)
4 オートフィル
5 B4の書式設定を日付けに
ttp://www.dotup.org/uploda/www.dotup.org3216652.xls.html
656640: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月固定で作ったが、全表示も、任意年度表示も可能
657名無しさん@そうだ選挙にいこう:2012/07/20(金) 14:16:52.09
固有値A/固有値B って 固有値A ÷ 固有値B ってことなの?
それとも条件によってAかBを振り分けて使うってこと?
658名無しさん@そうだ選挙にいこう:2012/07/20(金) 15:16:33.12
除算の方と思う
659名無しさん@そうだ選挙にいこう:2012/07/20(金) 15:39:35.19
【1 OSの種類         .】 Windows 2000、XP
【2 Excelのバージョン   】 Excel 2000
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

グラフの上端や下端をトリミングする方法を教えてください。
660名無しさん@そうだ選挙にいこう:2012/07/20(金) 15:50:12.42
どこをどうトリミングしたいのか画像で説明して
661659:2012/07/20(金) 16:05:41.65
>>660
グラフ全体です。上端だとこんな感じ。
http://www.dotup.org/uploda/www.dotup.org3217867.gif

図のリンク貼り付けとかでなくグラフそのものでできないものかなと。
662名無しさん@そうだ選挙にいこう:2012/07/20(金) 16:14:08.86
>>661
カメラ
663名無しさん@そうだ選挙にいこう:2012/07/20(金) 16:15:18.00
>>662
節子!それ図のリンク貼付けや!
664名無しさん@そうだ選挙にいこう:2012/07/20(金) 16:17:33.24
>>661
白い箱おいて隠せば
665名無しさん@そうだ選挙にいこう:2012/07/20(金) 21:16:25.93
エクセル2010  VBA

挿入から標準モジュールでVBAをかいています。

1つめのマクロで  変数 ”a” というのをつかっているのですが、、、(変数”a”はマクロ実行時、インプットボックスから入力後、変わりません。1から100の整数。例えば50として、、、)
2つめのマクロでも 1つめのマクロでつかった変数”a”を中身をそのままに使いたいのですが可能でしょうか?
50という数値がほしいのです。
教えてください。よろしくお願いします。


666名無しさん@そうだ選挙にいこう:2012/07/20(金) 21:31:59.43
メインで宣言するか、引数として渡すか、セルを介して受け渡しはどうでしょう。
667名無しさん@そうだ選挙にいこう:2012/07/20(金) 21:43:15.29
>>665
VBAだとグローバルの範囲せまいな。強制的にglobalにするオプションがあればいいんだけどね。
↓か、引数かな。慣れたらどっちがいいかは分かるんだけどねぇ。

■グローバル変数の定義
・Excel でグローバル変数を使用する場合は、標準モジュールの General で
public 宣言する必要があります。
シートやフォームのモジュールで宣言してもエラーにはなりませんが、グロ
ーバルとして扱えません。
また、ブックをまたいでのグローバル変数の宣言と言うのもできません。

【宣言方法】
public 変数名 as 変数タイプ
668名無しさん@そうだ選挙にいこう:2012/07/20(金) 21:54:44.70
>>666, >>667
いろいろ方法があるのですね。
あとはぐぐって調べてみます。
助かりました、ありがとうございました。

669名無しさん@そうだ選挙にいこう:2012/07/20(金) 22:19:57.50
>>622>>637
無事に変更できましたた。ありがとうございます。

2007なんですけどマクロの記録だと
Sub Macro4()
ActiveSheet.ChartObjects("グラフ 2").Activate
ActiveChart.Axes(xlCategory).Select
Range("F52").Select
End Sub
なんでselectまでしか解らないんです。グラフ関係は殆どこんな感じで
TickLabels.Orientation = xlVertical は解らなかったけど設定変更などあるのかな?
670名無しさん@そうだ選挙にいこう:2012/07/20(金) 22:30:45.15
>>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は標準モジュールに書いてもユーザーフォームに書いても
同じように取得できる。

まあその下りが引用なのは知ってるけど、それを引用してくるってことは
それが正しいと勘違いしてるんだろうから、一応突っ込んでおく。
671名無しさん@そうだ選挙にいこう:2012/07/20(金) 22:33:11.09
>>669
マクロの記録の設定は聞いたことないな
2007で大幅に変わったとは聞いていたが、その辺かも
672名無しさん@そうだ選挙にいこう:2012/07/20(金) 22:42:08.91
質問させて頂きます

MID関数の設定を列に固定させる方法を知りたいです
現在、A2の数式が【=MID(C2,1,2)】となっており
以下の列にも同じ表示法で、コピーではなく自動的に
表示されるようにしたいのです

初歩的な質問ですみません
ご教授願います
673名無しさん@そうだ選挙にいこう:2012/07/20(金) 23:10:47.06
>>672
質問は、自分しか理解できない「俺語」ではなく
皆が理解できる「日本語」でお願いします。
674名無しさん@そうだ選挙にいこう:2012/07/20(金) 23:19:02.93
>>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 まではいる。
こーゆーの試したことないからやってみて結果教えてください。





675名無しさん@そうだ選挙にいこう:2012/07/20(金) 23:25:56.64
あとここで質問するときは、

エクセル2010
VBA可能
初心者です、


みたいな感じでかくと相手に伝わりやすいよ。
676名無しさん@そうだ選挙にいこう:2012/07/20(金) 23:27:38.23
間違えた $ は  cの後ろだねw


C$

677名無しさん@そうだ選挙にいこう:2012/07/20(金) 23:30:08.77
>>674-676
回答はあってるんだけど、できれば改行は少なめにお願いします。
周りに合わせて欲しい。
678名無しさん@そうだ選挙にいこう:2012/07/20(金) 23:32:55.83
あとvbaでは、forの変数はセルに合わせるほうがわかりやすい
For i = 1 To 100
Cells(i, 3) = "=mid(c2,1,2)"
679名無しさん@そうだ選挙にいこう:2012/07/20(金) 23:41:11.79
>>678
ほんとだ、ありがとうございます。





最近途中行からばっかりだったから気づかなかったです。








今674みるとアホですねw
680名無しさん@そうだ選挙にいこう:2012/07/20(金) 23:43:51.96
>>677
すみませんでした、以後気を付けます。
681名無しさん@そうだ選挙にいこう:2012/07/21(土) 00:01:56.94
めんどくせースレだな
682名無しさん@そうだ選挙にいこう:2012/07/21(土) 00:11:17.87
回答も間違ってたらスルーだったけど、まぁぼちぼちだったし注意させてもらった
あの調子で連投されるとさすがにスクロールだるい
683名無しさん@そうだ選挙にいこう:2012/07/21(土) 02:20:48.05
>>674
ご回答ありがとうございます
オートフィルのやり方はわかるのですが
そうでなくフォーマットとして永久的に反映させられる
設定にできないものかと思いまして(説明ヘタですみません)
もう少しがんばってみます!
684名無しさん@そうだ選挙にいこう:2012/07/21(土) 03:11:01.04
>>683
Worksheet_Changeイベントで値を設定してやればいい
685名無しさん@そうだ選挙にいこう:2012/07/21(土) 06:00:00.28
【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
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
686685: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
687639:2012/07/21(土) 07:07:28.02
>655
ありがとうございます。ピポットテーブルのデータを別のシートに移すやり方ですね。
項目の変更があったときに、ズレが生じるのではないか……と思いましたが
試してみたら、多少の変更でどうにかなりそうですね。
このやり方なら今後自分で作成するときに使用できそうです。

>656
ありがとうございます。
数式を使わなくても、この形に出来るんですか……うむむ、凄い。
品名ですが「品名 英語(略語)」であればなお有り難いです。
表示部分については、後で「分類・品名ごとの合計」と「場所ごとの合計」の経過を
グラフ化するつもりでおりますので、全表示のほうがよいかと思います。
その他は、まったく問題ないかと。

>657
除算です。分かりづらくてすみません。
688名無しさん@そうだ選挙にいこう:2012/07/21(土) 08:47:38.49
>>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
689名無しさん@そうだ選挙にいこう:2012/07/21(土) 09:56:42.97
>>686
列 = WorksheetFunction.Match(月度, Workbooks("管理表.xlsm").Worksheets("在庫数").Range("5:5"), 0) '6月
MATCH関数で管理表の5行から月度を探しては
690名無しさん@そうだ選挙にいこう:2012/07/21(土) 10:08:58.11
学生時代に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))みたいなことが出来ればいいのですが。
691690:2012/07/21(土) 10:13:17.50
失礼しました。

× CORREL(A(C1):A(C2))
○ CORREL(A(C1):A(C2),B(C1):B(C2))

一言で言いますと、アドレスのA100とかいう100の部分を特定のセルの値で
指定できないでしょうか?ということです。

もっと上手い方法が他にある気もしますが・・・
692名無しさん@そうだ選挙にいこう:2012/07/21(土) 10:31:33.96
>>690
INDIRECT
693名無しさん@そうだ選挙にいこう:2012/07/21(土) 10:46:03.51
=CORREL(INDIRECT("a"&D1&":a"&E1),INDIRECT("b"&D1&":b"&E1))

こんなかんじになるんだろうけれど、汚いからOFFSETをROWと組み合わせて使おうと思ってもエラーになるんだよね。
694690:2012/07/21(土) 11:20:26.09
>>692-693
ありがとうございました。
これで実験データの分析が進みそうです。
695名無しさん@そうだ選挙にいこう:2012/07/21(土) 11:20:53.52
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2010
【3 VBAが使えるか    .】 否
【4 VBAでの回答の可否】 否

オートシェイプにURLが入力されているセルを参照にしてハイパーリンクをしたいのですができません。
右クリックしてハイパーリンク→このドキュメント内→URLが入力されているセルを指定
しかし図形をクリックしても参照したセルがアクティブになるだけで、リンクに飛んでくれません。
セルを直接クリックすると飛ぶのになぜでしょうか?
696名無しさん@そうだ選挙にいこう:2012/07/21(土) 11:27:06.30
>>695
それは無理だと思うよ。vbaであればなんとかなるけど。
直接図形にリンクを貼っちゃだめなの?
697名無しさん@そうだ選挙にいこう:2012/07/21(土) 11:31:00.85
>>696
URLの一部をどうにかセルを参照にしたいんです。
例えばA1&B1で一つのURLができるようにしてるので。
やはりVBAじゃないと無理ですか。
698名無しさん@そうだ選挙にいこう:2012/07/21(土) 11:35:53.16
>>697
セルであれば
=HYPERLINK(A1&A2)
みたいに出来るよ
699名無しさん@そうだ選挙にいこう:2012/07/21(土) 11:48:17.80
>>698
うん、そのセルを参照してオートシェイプをクリックで飛べるようにしたいんだw
700名無しさん@そうだ選挙にいこう:2012/07/21(土) 12:20:07.92
あきらめてVBAでやろうとしたけど、ハイパーリンク関数だとVBAでも参照できない?
A1に>>698でハイパーリンク設定して、下記のマクロで指定してもデバッグなって飛ばないけどどうして?

Sub Sample1()
Range("A1").Hyperlinks(1).Follow NewWindow:=True
End Sub
701名無しさん@そうだ選挙にいこう:2012/07/21(土) 12:25:30.33
Set hoge = NothingとかApplication.ScreenUpdating = Trueって必要なん?
702名無しさん@そうだ選挙にいこう:2012/07/21(土) 12:36:48.40
>>701
君次第
703名無しさん@そうだ選挙にいこう:2012/07/21(土) 12:43:50.95
あっそw
704名無しさん@そうだ選挙にいこう:2012/07/21(土) 12:46:12.46
>>701
 前者は、まあ問題になることはないが、やっておいた方が無難。
 後者は、マナーの如く、やっている。

 どちらも、不要かと言えば、不要でもいいよ・・・・程度。
705名無しさん@そうだ選挙にいこう:2012/07/21(土) 12:47:28.54
あっそw
706名無しさん@そうだ選挙にいこう:2012/07/21(土) 12:50:39.16
よーしパパ、もぅ1個聞いちゃうぞw
Application.AskToUpdateLinks = Falseにするとリンクが張ってあるファイルを開いてもメッセージが出なくなるんだけど
強制的に更新するにはどーしたらいいん?
707名無しさん@そうだ選挙にいこう:2012/07/21(土) 15:13:24.20
あっそw
708名無しさん@そうだ選挙にいこう:2012/07/21(土) 15:33:11.38
>>706
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways は、どかな
709名無しさん@そうだ選挙にいこう:2012/07/21(土) 15:48:00.92
エクセル2010ですが、
見出しの列番号をR1C1形式に表示するアイコンってありませんか?
710名無しさん@そうだ選挙にいこう:2012/07/21(土) 16:00:02.62
>>709
ない
711名無しさん@そうだ選挙にいこう:2012/07/21(土) 16:18:51.36
>>709
アイコンって設定のこと?
ツール オプション 全般 R1C1形式〜のこと?
712名無しさん@そうだ選挙にいこう:2012/07/21(土) 17:12:56.94
【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
713名無しさん@そうだ選挙にいこう:2012/07/21(土) 17:28:59.36
>>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

じゃダメなのかな・・
714712:2012/07/21(土) 17:48:28.72
>>713
返答ありがとうございます
すみませんそのコードで試したところ3番目のD1セルに文字が入っていた場合の3月シートA1セルに1が入力されないようです
715名無しさん@そうだ選挙にいこう:2012/07/21(土) 17:52:29.15
>>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も緑と、前の行まで一緒色になるようにはどうしたらいいでしょうか。
何かいい方法はないでしょうか。
717名無しさん@そうだ選挙にいこう:2012/07/21(土) 18:17:03.99
>>716
エクセル2010でその条件程度なら地道に条件を重ねていけばいいと思うけど

「数式を使用して書式設定するセルを決定」で
A1〜E1のセルにE1=条件という数式で赤にする・・というのを入れて
A1〜D1のセルにD1=条件という数式で緑にする・・というのを入れる
718名無しさん@そうだ選挙にいこう:2012/07/21(土) 18:41:44.23
>>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くらいなるんですけど大丈夫ですかね。
720名無しさん@そうだ選挙にいこう:2012/07/21(土) 18:45:02.31
なぜ30個になるんだw
721名無しさん@そうだ選挙にいこう:2012/07/21(土) 19:00:57.64
>>719
VBA使って幸せに成りやがれ。
722名無しさん@そうだ選挙にいこう:2012/07/21(土) 19:10:11.17
>>720
まず単純な色分け条件だけでも9色にわけます。
なのでe1は単純に9通りの条件でいいですが、>>717の用に重ねていけばA1は45通りになります
723名無しさん@そうだ選挙にいこう:2012/07/21(土) 19:15:55.23
724名無しさん@そうだ選挙にいこう:2012/07/21(土) 19:25:33.11
最近変な要求が多すぎてどれもVBAで解決させてしまいたくなる
725名無しさん@そうだ選挙にいこう:2012/07/21(土) 19:31:32.67
>>724
 同感です。

 何重ものシート関数なんて、誰がメンテできるのか!?と。
726名無しさん@そうだ選挙にいこう:2012/07/21(土) 20:07:55.44
>>710
さんくすあろっと!
727685:2012/07/21(土) 20:09:00.27
>>688
おぉぉ、絵に描いたようで綺麗ですね。
ありがとうございます。
Findの使い方についてググって真似してみましたが、見つけたサイトでは
Offsetが使われており、うまくできませんでした。
WB1.Cells(FindRange.Row, 列).Valueという使い方もあるんですね。
勉強になりました。

>>689
こちらも綺麗にまとまってていいですね。
ありがとうございます。
If 月度 = "1月" Then ・・・ を12回書こうかと思ってました(自爆●〜*
728名無しさん@そうだ選挙にいこう:2012/07/21(土) 20:27:41.73
>>722
なるほど。VBAのが楽ですね。
729名無しさん@そうだ選挙にいこう:2012/07/21(土) 20:33:34.81
VBAだと背景色で値を返してくれるんですよね?
730名無しさん@そうだ選挙にいこう:2012/07/21(土) 20:52:52.44
はい
.Interior.color
.Interior.colorIndex
.Interior.themecolor
とかで
731712:2012/07/21(土) 22:21:01.45
>>715
そちらですと最終行の65536まで処理を繰り返してしまって
用意したシート以上になってしまい途中でエラーになってしまいました
732名無しさん@そうだ選挙にいこう:2012/07/21(土) 22:34:13.69
>>731
行と列が逆だとか

Sub test()
Dim i As Long

For i = 1 To Range("A2").End(xlToRight).Column
Worksheets(i & "月").Range("A1") = 1
Next
End Sub
733名無しさん@そうだ選挙にいこう:2012/07/21(土) 22:47:56.97
>>732
こっちだったか
Range("A" & Columns.Count).End(xlToLeft).Column
734名無しさん@そうだ選挙にいこう:2012/07/21(土) 22:48:48.08
エクセル2010 初心者です。よろしくおねがいします。
実行速度をなるべくはやくしたいのですが、IF と select case
を使う場合どちらがよいのでしょうか?

735名無しさん@そうだ選挙にいこう:2012/07/21(土) 22:50:19.80
excelというよりはvba、vbaというよりは(v)bにはまってしまいそう。
736712:2012/07/21(土) 22:51:39.62
>>732
そのコードでも1行目の入力した場所以上まで判断されて途中でエラーになってしまいます
1行目に何か入っているのかと思い見てみましたが
1回目のctrl+→で入力された最後の行、2回目で最終行まで行ったので何も入ってないようです
737名無しさん@そうだ選挙にいこう:2012/07/21(土) 22:54:34.03
>>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
738712:2012/07/21(土) 23:01:44.10
>>737
すみませんそれですとA1から対象になってしまい最初の質問と違う答えになってしまいます
739名無しさん@そうだ選挙にいこう:2012/07/21(土) 23:04:36.41
>>738
すまんCells(2, i)にしてくれ
ってか、それくらい応用してくんないか
740名無しさん@そうだ選挙にいこう:2012/07/21(土) 23:13:48.51
cells(2,i)じゃA2からだから712の言ってることと違うんじゃね
741名無しさん@そうだ選挙にいこう:2012/07/21(土) 23:15:47.75
>>740
>>712
>A2セルから1行に順番に何か文字が入っていたら
742712: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
743名無しさん@そうだ選挙にいこう:2012/07/21(土) 23:38:47.42
>>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
744名無しさん@そうだ選挙にいこう:2012/07/21(土) 23:44:26.30
>>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
745712:2012/07/21(土) 23:47:23.50
>>743
お手数かけましたありがとうございます
746名無しさん@そうだ選挙にいこう:2012/07/22(日) 00:22:13.63
よかったよかった
747名無しさん@そうだ選挙にいこう:2012/07/22(日) 01:38:33.06
A1セルに =100*1 と入れ、MsgBox Range("a1").Value を実行すると100が表示されます。
これを =100*1 と表示させるにはどうすればいいですか?
748名無しさん@そうだ選挙にいこう:2012/07/22(日) 02:28:16.13
" " この間にいれてみろや
749名無しさん@そうだ選挙にいこう:2012/07/22(日) 02:42:36.72
>>747
Range("a1").Formula
750名無しさん@そうだ選挙にいこう:2012/07/22(日) 05:22:45.42
まーったく、人を試しているかのようなQが多いね。

まあ、ヒマなのが応えればいいんだし。
751名無しさん@そうだ選挙にいこう:2012/07/22(日) 06:20:25.64
>>734
速度気にするなら、そこじゃないよ。それは用途に合わせて使い分ける所かと。
752640: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使わず自前で計算すれば半分くらいには
短縮できるが、任意実効なら問題ないレベルだと思うし面倒なのでやめた

あとは変数名とか殆ど日本語にしてあるので、読んで勉強しとくれ
75357 ◆MwLUkYVrGI :2012/07/22(日) 09:52:54.64
>>748
wwwww
754名無しさん@そうだ選挙にいこう:2012/07/22(日) 12:01:10.38
エラそうにwww
755名無しさん@そうだ選挙にいこう:2012/07/22(日) 12:11:11.89
嫉妬?
756640:2012/07/22(日) 12:19:36.65
偉いのだから仕方がない
757名無しさん@そうだ選挙にいこう:2012/07/22(日) 12:23:58.44
本物?
758名無しさん@そうだ選挙にいこう:2012/07/22(日) 12:39:40.58
えらいこっちゃ
759名無しさん@そうだ選挙にいこう:2012/07/22(日) 13:38:20.98
【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 ではだめでした。
760名無しさん@そうだ選挙にいこう:2012/07/22(日) 13:46:27.35
>>752
コメントが無いのは故意?
変数日本語にするよりコメント説明あった方がわかりやすいと思うけど。
761640:2012/07/22(日) 13:51:20.25
>>760
マトモな日本人なら読んで勉強しろということだ
762名無しさん@そうだ選挙にいこう:2012/07/22(日) 15:07:14.14
763名無しさん@そうだ選挙にいこう:2012/07/22(日) 16:21:43.90
フィルタオプションの検索条件範囲で
文字列が完全一致じゃなくそれではじまるになるんですが
完全一致にするにはどうしたらいいですか?
764名無しさん@そうだ選挙にいこう:2012/07/22(日) 16:27:10.81
>>763
数式にする
765763:2012/07/22(日) 16:43:43.14
>>764
どうやってするの?
=をつけるとエラーが出てえらいこっちゃだし
766759:2012/07/22(日) 16:50:20.59
>>762
せっかく教えてもらったのに、書き方がワカラソ
=indirect("C:\Excel\[ミカソ.xlsx]" & F2 & "'!$B3") ではだめでした。
767名無しさん@そうだ選挙にいこう:2012/07/22(日) 16:55:11.84
>>765
="=検索文字"
768639:2012/07/22(日) 17:08:48.82
>752
こ、これは凄い……任意実行で切り替えまで!
本当にありがとうございます。
変更可能な部分まで、きっちりと書き込んで下さっていて、非常に助かります。
ここまで丁寧に書いて頂ければ、私のような素人でも変更可能ではないかと。

VBAが何の略かをようやく先々週あたり学んだところですが、
これを参考にして自分でも勉強していきたいと思います。
改めて、本当にありがとうございました&お世話になりました。
769640 ◆/7YBRt2Phufp :2012/07/22(日) 18:07:11.05
なんか偽物出てきてるので一応トリップ付けておく
>>756>>761は偽物

>>760
ひとつは、金もらってやっている仕事ではないから
お客様の分かりやすさのためならどんな手間でも掛けるって方向ではなく
手間掛けずに分かりやすさを向上させられる範囲だけ対応するって方向

もうひとつは、質問者がVBAの勉強ではなく、とりあえず結果を出すことを求めてるから
質問者が勉強目的なら、クラス2つ(親コレクションに入れる分とクラス内のコレクションに入れる分)と
ループ1つだけの処理に、がっつりコメント入れた上で、あとは自分で書けって言うが
今回は違うのですぐ使える状態に完成させ、VBA分からなくても変更できる定数部分にだけコメント入れて
あとは本気でVBA勉強する気があるかも解らないので先に挙げた手間掛からず対応できる部分以外は放棄した
770760:2012/07/22(日) 18:11:32.05
>>769
わざわざすみません。納得しました。
コードは参考にさせてもらってます。
771名無しさん@そうだ選挙にいこう:2012/07/22(日) 18:25:25.13
>>734
速度を気にするなら実行速度を計測する方法を覚えた方がいい
どうせすぐに飽きるけど
ttp://dqn.sakusakutto.jp/2008/06/vba-1.html
>>766
='C:\Excel\[ミカソ.xlsx]りんご'!$B3

=indirect("'C:\Excel\[ミカソ.xlsx]りんご'!$B3",1)
とそのままindirctに入れることができる
つまり
=indirect("'C:\Excel\[ミカソ.xlsx]りんご'!"&F2,1)
772名無しさん@そうだ選挙にいこう:2012/07/22(日) 18:38:17.74
エクセル2010 VBA
for next でc列に値の代入をしているのですが入力したい範囲が途中飛んでしまう場合にどうすればよいのかわかりません。よろしくお願いします。
カレンダーに入力していて月が変わると月の間に5行あけて次の月の1日がはじまります。
今のところIFをつかって入力範囲にあるのかどうかを判別しようと思います。
A列には月、B列には日がにゅうりょくされています。これを使って判別しようと思うのですが、どのようにすれば判別できますでしょうか。

773759:2012/07/22(日) 18:53:22.02
>>771
=indirect("'C:\Excel\[ミカソ.xlsx]りんご'!$B3",1) も、
=indirect("'C:\Excel\[ミカソ.xlsx]りんご'!"&F2,1) も #REF! でだめでした。
うーん、どこがだめなのかな?
774名無しさん@そうだ選挙にいこう:2012/07/22(日) 18:56:30.72
>>772
どういう状況なのか、何がしたいのか、どこで躓いているのか、まったく読み取れなかった
775名無しさん@そうだ選挙にいこう:2012/07/22(日) 18:58:05.02
>>772
>A列には月、B列には日がにゅうりょくされています。これを使って判別しようと思うのですが

そうすれば
776名無しさん@そうだ選挙にいこう:2012/07/22(日) 19:06:52.26
>>773
そのふたつのファイルを同時に開くと行けるかも
>>772
for i =
if cells(i,2).value>=1 and cells(i,2).value<=31 then
こんな感じでいいんじゃないの
777名無しさん@そうだ選挙にいこう:2012/07/22(日) 19:09:26.85
開いてないブックへはINDIRECTでは参照できないのは知ってるよね?
778名無しさん@そうだ選挙にいこう:2012/07/22(日) 19:11:41.39
>>766
これでいけない? ’を頭に追加

=indirect("'C:\Excel\[ミカソ.xlsx]" & F2 & "'!$B3")
779759: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の値を出したいんだけど式が変じゃないの?
780名無しさん@そうだ選挙にいこう:2012/07/22(日) 19:24:09.39
>>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つを上から表示するという感じにしたいです。
関数でできますでしょうか。
782名無しさん@そうだ選挙にいこう:2012/07/22(日) 21:26:28.20
>>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))),"")

もう少しすっきり出来る式はあるとは思いますが、どちらにしてもわりと難しい式になるかと。
作業列を設ければもう少しすっきりすると思います
783759:2012/07/22(日) 21:39:58.93
>>778
オートフィルを使わないなら、それでおkでした。

>>780
B3は、ミカソ.xlsxのセルなんですが。

リンク元のファイルを開けてないと #REF! になるので、このままではだめですね。
784名無しさん@そうだ選挙にいこう:2012/07/22(日) 21:46:40.75
>>781
d列をキーにsort(並び変え)すれば、
ヒットせず表示のないセル(空白セル)は後ろにいくので、「詰めた表示」になります。
785名無しさん@そうだ選挙にいこう:2012/07/22(日) 21:50:03.72
スレ違いならすいません

VBAでネットバンクのパスワードやIDをコピーしてメールに添付して送信させるなど
このようなことは可能なんですか?

エクセルのVBAで出来たフリーソフトを使っているのですが、心配になりまして
よろしくお願いします
786名無しさん@そうだ選挙にいこう:2012/07/22(日) 22:01:18.55
>>785
はい。

 悪意を持ってやれば、特定の宛先に、使った人にわからずに送るのは
可能です。
 ソースを見れれば、そんな悪さをしているか、どうかは、まあわかる。

787名無しさん@そうだ選挙にいこう:2012/07/22(日) 22:02:40.72
>>786
まじすか…

dllとか言うのがいるんですが危険ですか?
788名無しさん@そうだ選挙にいこう:2012/07/22(日) 22:04:46.47
>>784
それだと今後D列の下のほうの式が消えて空白になるので駄目でした
789名無しさん@そうだ選挙にいこう:2012/07/22(日) 22:11:29.58
>>782
B列などを作業列儲けても大丈夫です。
何か良い方法がありますか?
790名無しさん@そうだ選挙にいこう:2012/07/22(日) 22:20:58.93
>>786
 IEやOEに記憶したパスワードは簡単に取り出せる
 http://itpro.nikkeibp.co.jp/article/Windows/20051101/223878/?ST=win&P=2

 そのフリーウェアのありかをアップすれば、具体的に見てくれる人がいるかも・・。

 そのVBAを使っているExcelにパスワードをインしたのなら、送信したり、特定の
サイトに(表示せずに)書込みするのは、もっと、わけのないことです。
791781:2012/07/22(日) 22:34:18.42
>>782さんの組み合わせという言葉にヒントを得て
COUNTIF関数とINDEX関数とMATCH関数の組み合わせでやりたいことができました。
ありがとうございます。
792名無しさん@そうだ選挙にいこう:2012/07/22(日) 22:36:32.54
>>790
なんてこった\(^o^)/
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か月後くらいにこの機能使おうとしたら忘れてそうだから
なぜ=を使うのか、”(ダブルクウォーテーション)の意味とはなにか等、
そのへんの基本から教えていただけて理由がわかったら、ずっと覚えていれそうだし。
795名無しさん@そうだ選挙にいこう:2012/07/23(月) 01:49:03.57
>>779
スマン、分からない。2010でもokだった。
ちなみに
=""
の""の中はオートフィルできない
文字列扱いだからね
=""&A1
の、A1の部分はオートフィルできる
とにかく細分化させないとわからない
796名無しさん@そうだ選挙にいこう:2012/07/23(月) 01:53:08.58
>>783
ちなみにそれはリンク"先"ね
エクセルはリンク先のファイルを開いてないとリンクできない。これはエクセルの仕様で、どうしようもない。
どうしてもエクセルでやりたければ、リンク先と元ファイルを合体させるか、vbaしかない
VBAではopenステートメント、更新、closeです。

どっちも無理だと言うなら、あきらめないとね。
797名無しさん@そうだ選挙にいこう:2012/07/23(月) 02:52:17.46
やっぱり793の問題は稀か
798名無しさん@そうだ選挙にいこう:2012/07/23(月) 02:55:07.00
>>793
>webクエリの取込み画面でスクリプトエラーが出る場合が
ない
>そのサイトの場合は更新が極端に遅くなります。
どのサイト?
>これを回避する方法はありますか?
知らん
799名無しさん@そうだ選挙にいこう:2012/07/23(月) 03:55:10.20
>>798
>webクエリの取込み画面でスクリプトエラーが出る場合が

ならないですか?
例えば
http://jp.msn.com/
MSNでもなるんですが、私だけですかね。
webクエリを開いてURL入力して移動すると、スクリプトエラーになります。
環境はExcel2010で、win7です
800名無しさん@そうだ選挙にいこう:2012/07/23(月) 09:59:31.89
取り込み時にスクリプトエラーは出るが更新は遅くならないな
MSNはそのエラーが出るサイトの例ってだけで、更新遅くなるのとは別と言うなら
更新遅くなるのは件のエラーとは関係ない、少なくとも絶対的な因果じゃないってことだから、
もちろん隠したければ強制的に聞き出す権限は無いので好きにしたらいいが
それ以上は「例えば」ではなく、実際の対象サイトを書かないことには始まらないな
801名無しさん@そうだ選挙にいこう:2012/07/23(月) 10:25:11.80
>>800
別に全然おkです
サイトはネット競馬全般です。参考に一種類の馬ページを
http://db.netkeiba.com/horse/2007102760/
なぜ重いのかわかりますかね
802名無しさん@そうだ選挙にいこう:2012/07/23(月) 10:58:55.58
>>801
競走成績部分?やってみたけど全然遅くないよ
データ量がそこそこあるので、取得した物を解析してシートに書き出すのに
うちの数年前のボロPCだと2,3秒くらいかかるが、そこはPCの性能次第で、
鯖やWebページの問題じゃないし、データを取得するのは1秒くらいで終ってる
803名無しさん@そうだ選挙にいこう:2012/07/23(月) 11:09:10.78
>>802
ええー
俺のPCはi7 2600kでメモリも8GBのそこそこハイスペックで回線も光なのに
収得からシートに書き出すまで10秒近くはかかる・・・
他のスクリプトエラーのないサイトは1秒もかからないのに
なぜだ
804名無しさん@そうだ選挙にいこう:2012/07/23(月) 11:37:31.58
エクセルでFFTを行うと確かに数値は出してくれるんだけど、
中の計算が何が行われているか良く分かりません
805名無しさん@そうだ選挙にいこう:2012/07/23(月) 11:59:56.34
仕様です。知りたければExcelのではなく数学の勉強をしましょう。
806名無しさん@そうだ選挙にいこう:2012/07/23(月) 16:27:05.30
すみません、日付表示で質問なのですが
240723
と1つのセルに入力して
24/07/23
と表示させたいのですが、可能でしょうか?
データは、既存のやつではなくタイプしていきます
ググりかたが悪く、西暦を和暦変換などしか当たらず困ってます
よろしくお願いいたします
807名無しさん@そうだ選挙にいこう:2012/07/23(月) 16:43:46.85
書式設定の表示形式のユーザー定義で
00"/"00"/"00
とすれば良いだけ

ただタイプするならhと/くらい入れてやった方が、
シリアル値としても使えるようになっていろいろ便利なんだけどな
テンキー無しのキーボードで打つなら0の右の-使って
「h24-07-23」とタイプしても自動でシリアル値化してくれるし

上記の表示形式みたいな変な技で誤魔化す癖付いちゃうと、後で苦労するよ
808名無しさん@そうだ選挙にいこう:2012/07/23(月) 16:53:19.74
>>807 ありがとうございます。
"/"で、できました。

後々の管理応用には不向きなんですね…
とりあえず、今のデータ入力が急ぎのため
これでやってみますが
シリアル値等勉強不足ですが
この機会に勉強して検討してみます

教えていただき助かりました

809名無しさん@そうだ選挙にいこう:2012/07/23(月) 17:09:52.04
VBAで文字列からシリアル値への変更、あとからでも可能なのかな
810名無しさん@そうだ選挙にいこう:2012/07/23(月) 17:16:15.63
後からいくらでも可能
240723と打ったらh24/07/23と解釈して
自動でシリアル値化することも可能
その変換を有効にするセル範囲を任意に指定することも可能

でもVBAはダメって環境もあるからな
811名無しさん@そうだ選挙にいこう:2012/07/23(月) 18:12:30.29
「指定したセルから数値xだけ下のセルを表示させる」にはどの式を使えばいい?
ifを使って書いてたんだけどかなり式が長くなったからもっと短く簡単にできないかと考えてる

使ってるのはExcel2007
812名無しさん@そうだ選挙にいこう:2012/07/23(月) 18:31:05.23
それで式が長くなるとは思えないんだが、どんな式書いてるの?
まさか単純なネスト無しのIF式だけを以て長いとか言ってるなんてオチじゃないよね?
813名無しさん@そうだ選挙にいこう:2012/07/23(月) 18:41:17.36
>>811
「指定したセルから数値xだけ下のセルを表示させる」のにどうやってIF関数を遣うんだ?
おそらくだけど、やりたいことを日本語で説明するのをミスっていると思う
814名無しさん@そうだ選挙にいこう:2012/07/23(月) 18:44:30.87
>>811
offsetじゃないの?
815名無しさん@そうだ選挙にいこう:2012/07/23(月) 19:04:34.90
if(h1=2000,af10,if(h1=2150,af11,if(h1=2300,af12,if(h1=2450,af13,if(h1=2600,af14,if…っていう風に続いてるんだけど、もっとすっきりした形にできないかと思ってる
816名無しさん@そうだ選挙にいこう:2012/07/23(月) 19:08:25.82
>>815
規則性があるなら方程式作ればいい
規則性がないならテーブルを作って参照するようにすればいい
817名無しさん@そうだ選挙にいこう:2012/07/23(月) 19:09:56.90
>>815
=OFFSET(AF10,(H1-2000)/150,0)
818名無しさん@そうだ選挙にいこう:2012/07/23(月) 19:17:47.78
この用途でOFFSET使うのは、式とシートの見た目だけはスッキリするが
可読性やメンテナンス性的によろしくない(>>613>>619参照)

AE列、もしくはAE列が使用中なら列を挿入し
ラベルを設けてVLOOKUPが一番良いかと
819名無しさん@そうだ選挙にいこう:2012/07/23(月) 19:27:41.57
>>817
ありがとう
おかげですっきりした
820ぶるじょわ:2012/07/23(月) 19:57:57.71
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・)
821名無しさん@そうだ選挙にいこう:2012/07/23(月) 20:53:54.40
IsNumericは数値か否かではなく、数値として扱える値か否かだからな
数値か文字列の数字かはVarTypeとかTypeNameとか見れば良い
' は普通に&で繋げれば良いだけ
822ぶるじょわ:2012/07/23(月) 21:33:39.27
>IsNumericは数値か否かではなく、数値として扱える値か否か

知らんかった・・・(;3;)
823名無しさん@そうだ選挙にいこう:2012/07/24(火) 00:02:03.14
【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が拡張子のファイルを開く

  以降、集計用ブックに開いたファイルの内容を貼り付ける記述ですので省略します。
824名無しさん@そうだ選挙にいこう:2012/07/24(火) 00:22:15.60
>>823
ソースの肝心なところが省略されてるからわかんね
fCount変数の値を常にウォッチしてみたら?
825名無しさん@そうだ選挙にいこう:2012/07/24(火) 00:28:55.44
肝心なところは省略していません。
826名無しさん@そうだ選挙にいこう:2012/07/24(火) 00:32:25.83
じゃあ肝心なところが実装されてないんだろw
827名無しさん@そうだ選挙にいこう:2012/07/24(火) 00:41:11.33

×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」で弾けるから
わざわざ書く必要ないかと
828名無しさん@そうだ選挙にいこう:2012/07/24(火) 01:11:55.94
ついでに言うと、こういうのはループの中をサブプロシージャにするといいよ
  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

この方が条件の書き方に自由度が出て可読性良く書けて凡ミスも起きにくい
829名無しさん@そうだ選挙にいこう:2012/07/24(火) 04:54:30.67
>>793の問題わかる人はおらぬかー
830名無しさん@そうだ選挙にいこう:2012/07/24(火) 07:17:59.31
>>823です。昨夜は寝てしまいましたが、
お前らの回答をがばっとコピペしメールに貼り付けて会社に行って試してみます。
たくさんの声かけとりあえずありがとうございます!!>>824->>828
831名無しさん@そうだ選挙にいこう:2012/07/24(火) 18:51:48.87
>>793
んー、サブPCのExcel2003だと普通に速く取り込めた
もしかしたらExcel2010が問題なのかもしれん
誰かExcel2010の人で>>801をwebクエリで取り込んでみてくれないかな
取り込んで貼り付けるまで8秒程度かかるか試してほしい
832名無しさん@そうだ選挙にいこう:2012/07/24(火) 19:30:13.63
>>831
同じような質問してる人がいるね(解決してないけど)
http://okwave.jp/qa/q7607558.html

あきらめて自前でVBA使って取り込んだら?
833名無しさん@そうだ選挙にいこう:2012/07/24(火) 20:23:55.48
【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 を使えば出来るのですが、閉じたブックには使えないようで困っています。
実際は大量のブックがあるので、いちいちブックを開きたくありません。

どなたかお知恵を貸してください。よろしくお願いします。
834名無しさん@そうだ選挙にいこう:2012/07/24(火) 20:27:51.42
>>833
手動だろうがVBAだろうが、
いちいちブックを開いて値を取得するしかないよ
835603:2012/07/24(火) 20:30:07.69
>>606
遅くなってスマンコ

全く問題ないですが、ワケワカラン(AAry
836名無しさん@そうだ選挙にいこう:2012/07/24(火) 20:35:36.33
>>835
コードの短縮なんてそんなもん
基礎がないとどうにもならん
837名無しさん@そうだ選挙にいこう:2012/07/24(火) 20:36:40.32
>>833
本気で作りたいならaccessがいい
838名無しさん@そうだ選挙にいこう:2012/07/24(火) 20:37:36.29
>>833
閉じているブック→webストレージへうつしてそこから参照しよう。
839640 ◆/7YBRt2Phufp :2012/07/24(火) 21:00:21.50
>>833
参照に式を使うなら、ご存じの通りINDIRECTは閉じたブックには使えないから無理だが
VBAなら「開かず」は無理でも「表示せず」は可能

まあ表示せずに裏で開いても、ブックだとそれなりに時間食うから
俺なら「りんご」「みかん」「いちご」のブックに、上書き保存する際にデータをxmlとかで書き出すコード仕込んで
一覧ブックからは軽快に読み出せるxmlを読むかな

まあ時間食うと言っても、1ブック当たりではデータ量にもよるがおそらく1,2秒とかそれ以下なんで
一覧ブックで取り込みマクロ実行してしばらく放置しておけば、裏で開いてデータ取り込んで閉じてを繰り返し
50ブックのデータを数十秒くらいで取り込んでくれればOKってならブックのままでもいいだろうがな

裏で開いてもデータの取得は普通と同じで、開くとWorkbookオブジェクトが返るので
Workbook.Workseats("シート名").Range("セルアドレス").Value
Workbook.Workseats("シート名").Cells(行, 列).Value
で取得できる
840823: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
841名無しさん@そうだ選挙にいこう:2012/07/24(火) 21:43:49.21
ループ内の
fName = Dir()
も省略してるから、その下の
fCount = Len(fName)
も含めて省略しただけでコードとしては書いてある物と思ってたら・・・

>>826の言う通りかよw
842603:2012/07/24(火) 21:55:03.24
>>836
基礎がないので606の解説きぼん
843833:2012/07/24(火) 22:04:24.31
みなさんありがとうございます。
やはり難しいんですね…
>>838さんや>>839さんのレスが何なのな全くわかりません…

いちいち個別ブックを開いてデータ取得して、一覧ブックを保存したらそのデータが残る、ならまだいいのですが
indirectだと開いて保存しても、個別のブックを閉じたら一覧ブックにデータが残らないのです
私のやり方が悪いんでしょうか??
844640 ◆/7YBRt2Phufp :2012/07/24(火) 22:10:42.36
>>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本線を設定してから赤の細二重線に
変更したりしてるから、そういう無駄は排除したが、ぶっちゃけその無駄を排除しただけで半分になる
この説明で理解できなければレスのやりとりだけで初歩から教えるのは面倒なので入門書買え
845名無しさん@そうだ選挙にいこう:2012/07/24(火) 22:15:10.11
>>833
PowerShell使えその方が楽
846640 ◆/7YBRt2Phufp :2012/07/24(火) 22:26:33.88
>>843
数式は値をコピーするのではなく参照するのだから
参照元が無くなれば参照先である数式セルの表示も無くなる

鏡の前に居るときは鏡に自分が写っていても、
そこを退いてまで鏡に自分の姿が写り続けてたら怖ぇだろ
コピーではなく参照ってのはそういうもんだ

コピーすれば値は残るが、数式でコピーは出来ないから
そこは手動かVBAでやるしかない

>>839がxmlの話だけでなく完全に意味不明ってなると
おそらく書いて貰ったコードを貼る場所が解るくらいで
自分では全然書けないレベルだろうから、一覧ブックとデータブック2,3個を
zipでまとめてうpしてくれれば手を貸してもいいが、(もちろん個人情報とかは書き換えて結構)
口頭というかレスでの説明だけでコード書くのは面倒なのでそれが嫌なら俺は降りる
847名無しさん@そうだ選挙にいこう:2012/07/24(火) 22:32:20.34
webのソースコードから取り込む方法ってどうやるんだっけ?
848名無しさん@そうだ選挙にいこう:2012/07/24(火) 22:46:06.85
>>847
VBA?
849名無しさん@そうだ選挙にいこう:2012/07/24(火) 23:07:56.53
>>847
vba html 取り込み
でぐぐったら大量に出てきたぞ
850名無しさん@そうだ選挙にいこう:2012/07/25(水) 00:18:05.63
>>848
いや、なんか右ウィンドウにでるやつ
851名無しさん@そうだ選挙にいこう:2012/07/25(水) 00:24:56.54
エスパー部隊遅いよ!何やってんの!
852名無しさん@そうだ選挙にいこう:2012/07/25(水) 00:47:33.40
>>847
冴子先生に聞いてもわからない?
853名無しさん@そうだ選挙にいこう:2012/07/25(水) 01:19:16.59
なんか右に指定したページのコードがバーって出て、ズバババーって選べるやつ
854名無しさん@そうだ選挙にいこう:2012/07/25(水) 01:28:19.57
>>853
[Alt]+[F11]で出てくるよ
855名無しさん@そうだ選挙にいこう:2012/07/25(水) 15:22:57.16
おもしろくなってきたぜ。
856名無しさん@そうだ選挙にいこう:2012/07/25(水) 15:31:41.80
たぶん、XMLソースウィンドウを開きたいんだと思う。
857名無しさん@そうだ選挙にいこう:2012/07/25(水) 15:57:53.23
Excel2010で複数のExcel Bookを開いている状態で
纏めて上書き保存して閉じたいのですが
何かいい方法はありませんか?

今は、毎回ちまちま上書きボタンを押して保存しており効率が悪いです。
858名無しさん@そうだ選挙にいこう:2012/07/25(水) 16:11:53.13
>>857
キーボード操作だともう少し楽になると思う
859名無しさん@そうだ選挙にいこう:2012/07/25(水) 16:45:03.42
>>858
一発で全て上書きしたいのですが・・・
マクロを組まないとダメですかね?
860名無しさん@そうだ選挙にいこう:2012/07/25(水) 16:46:48.95
いつのまにかブックの容量がが2.0MBになってた
これって多い?
861名無しさん@そうだ選挙にいこう:2012/07/25(水) 16:59:09.24
>>857
そのまま閉じるボタン押して「Y」キー連打ではだめかな
ちなみにYは上書き保存の決定の意味ね
>>860
普通
862名無しさん@そうだ選挙にいこう:2012/07/25(水) 17:09:15.33
>>861
サンキュー。
連打するのが手間になるので
やっぱりマクロ組みます。 ワイルドだろぉー。
863名無しさん@そうだ選挙にいこう:2012/07/25(水) 17:34:42.84
例えばVLOOKUP関数で表示している場合、範囲のデーターベースを他のブックにしている場合は、そのブックも一緒に立ち上げないと表示できないよね?
864名無しさん@そうだ選挙にいこう:2012/07/25(水) 17:47:44.62
やってみればいいんじゃないかな
865名無しさん@そうだ選挙にいこう:2012/07/25(水) 19:11:49.71
できないから聞いてるんだよ
866名無しさん@そうだ選挙にいこう:2012/07/25(水) 19:20:13.83
できないよ
867名無しさん@そうだ選挙にいこう:2012/07/25(水) 19:21:41.35
かわいい
868名無しさん@そうだ選挙にいこう:2012/07/25(水) 19:40:47.28
てへ///
869名無しさん@そうだ選挙にいこう:2012/07/25(水) 19:45:11.56
一緒に開くか、VLOOKUP関数を書いてるブックに
参照しているシートだけ取り込めばいいんだから何も問題ないよね
870名無しさん@そうだ選挙にいこう:2012/07/25(水) 19:57:12.71
ファイルを別にするのなら、ADOでも使ってDBを作ったほうがいいような気もする。
871名無しさん@そうだ選挙にいこう:2012/07/25(水) 20:02:28.67
10年前に少し難しく感じたVBA

今じゃーすごく簡単に感じるY
872名無しさん@そうだ選挙にいこう:2012/07/25(水) 20:14:13.85
【質問不可】Excel総合相談所スレの雑談・議論スレ2
http://toro.2ch.net/test/read.cgi/bsoft/1151651536/
こういうスレもあるよ
873名無しさん@そうだ選挙にいこう:2012/07/25(水) 21:11:35.97
スイッチのon/offみたいなVBAってある?

例えば同じマクロだけど、
1回目の実行ではシート表示、2回目の実行ではシート非表示
みたいな交互に実行されるようにするコードってどうやればいいの?
今はCaseでセル内の数値が〜で対応してるけど、もっと簡潔なコードあるのかな?と思って
874名無しさん@そうだ選挙にいこう:2012/07/25(水) 21:15:39.18
>>873
トグルという
if シート非表示 then
シート表示
elseif シート表示 then
シート非表示
endif
と、シート自体の状態でonoff切り替えると間違いが少なくて楽。
でもセル内の数値でもいいと思うよ。
875名無しさん@そうだ選挙にいこう:2012/07/25(水) 21:18:11.65
>>874
なるほど
原理は一緒だね
ありがと
876名無しさん@そうだ選挙にいこう:2012/07/25(水) 21:26:33.34
シートの状況を取得して、祖値をnotで代入すれば
877640 ◆/7YBRt2Phufp :2012/07/25(水) 21:36:13.20
>>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

と一個一個書かなければいけないのでしょうか。それとも一行にまとめることはできますか?
879名無しさん@そうだ選挙にいこう:2012/07/25(水) 22:44:25.26
>>878
2,4,6-8を対象にするなら
Range("2:2,4:4,6:8").RowHeight = 100
みたいな
880名無しさん@そうだ選挙にいこう:2012/07/25(水) 22:47:35.20
メンテナンス性考えるとループの方がいいけどな

初心者はメンテナンス性より、表面的なコードの短さに拘る傾向にあるからなぁ
881名無しさん@そうだ選挙にいこう:2012/07/25(水) 22:50:08.12
【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を使用すべきなのでしょうか?
関数だけで処理する方法ってありますか?

よろしくおねがいします
882名無しさん@そうだ選挙にいこう:2012/07/25(水) 22:54:16.95
>>880
慣れれば自然とそうなるんじゃないか?
vbaで保守性を考えたことは殆ど無いけど
883名無しさん@そうだ選挙にいこう:2012/07/25(水) 23:00:08.49
>>881
株売買 エクセル
やvectorあたりでソフト探したほうがいいとは思う
884名無しさん@そうだ選挙にいこう:2012/07/25(水) 23:01:30.21
>>882
VBAだとそういうレベルの人の方が多いのかもな
885名無しさん@そうだ選挙にいこう:2012/07/25(水) 23:49:26.96
>>881ですが
G:目標値 G10=IF((G10="","",G10*(100+$G$2)/100)でした
当日終値が
保有建て玉を越えた時の日付を 各建て玉の隣にUPするようにしてから
その日付の終値を呼び出せばいいのかなぁ
886名無しさん@そうだ選挙にいこう:2012/07/26(木) 00:15:12.13
やればいいんじゃないの?
887名無しさん@そうだ選挙にいこう:2012/07/26(木) 00:17:34.40
つーかそのレベルの頭だと、そういうことに手出さない方がいいと思うけど。
これが自己解決できないって、Excelの知識ではなく、根本的な思考能力に問題有りだから。
888名無しさん@そうだ選挙にいこう:2012/07/26(木) 00:33:13.54
わざわざ言ってあげるって優しいな
889名無しさん@そうだ選挙にいこう:2012/07/26(木) 00:40:55.35
入力規則のリストって結合してるセルだとマジで使いづらい
セルをクリックしたら選択肢が出てくる的なやつないの?
890名無しさん@そうだ選挙にいこう:2012/07/26(木) 01:15:03.26
あるよ
891名無しさん@そうだ選挙にいこう:2012/07/26(木) 02:29:46.15
>>890
教えて神様
892名無しさん@そうだ選挙にいこう:2012/07/26(木) 03:07:24.46
>>887
そんな解答 求めてねーんだよ
テンプレにしたがって質問してんだから
余計な文句書くなボケ
893名無しさん@そうだ選挙にいこう:2012/07/26(木) 03:08:25.12
>>886
おまえも うざったいから消えろ
894名無しさん@そうだ選挙にいこう:2012/07/26(木) 03:09:55.41
>>888
お前は2番煎じ野郎か 後から出てくんな クソが
895名無しさん@そうだ選挙にいこう:2012/07/26(木) 03:11:16.71
>>883
自分的には難しい事なんですが 
エクセル少し理解している人だと簡単にできそうな事だと思うんで質問してみたんですが
896名無しさん@そうだ選挙にいこう:2012/07/26(木) 03:13:47.41
で Excel総合相談所 103で質問に答えてくれるのですか?
897名無しさん@そうだ選挙にいこう:2012/07/26(木) 03:29:50.01
VBA勉強したらいいと思うよ
898名無しさん@そうだ選挙にいこう:2012/07/26(木) 03:33:34.99
標準モジュールって何個まで挿入できるの?
899名無しさん@そうだ選挙にいこう:2012/07/26(木) 07:46:03.14
>>889
alt+↓
じゃだめかな
900名無しさん@そうだ選挙にいこう:2012/07/26(木) 07:51:19.44
>>899
それ駄目
901名無しさん@そうだ選挙にいこう:2012/07/26(木) 07:59:16.49
>>896
無理だと思う
>>889-900
じゃあ Worksheet_SelectionChangeでform呼び出すしかないね
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox ("")
End Sub
902名無しさん@そうだ選挙にいこう:2012/07/26(木) 08:00:55.44
アンカー失敗した
>>898
やってみればいいんじゃないかな
多分short intの65536個作れると思う
903名無しさん@そうだ選挙にいこう:2012/07/26(木) 08:02:46.28
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 勉強中
【4 VBAでの回答の可否】 可

1〜10のシートがあって、8以外のシートは非表示なんだけど
マクロで2〜7のシートを一気に表示するにはどうしたらいい?

Worksheets("2").Visible = True

一応これを一行一行書いたんだけど、これだと一個一個開いてなんか見た目も悪いんだよね
どうにか複数のシートを指定して一気に表示にする書き方ないかな?
904名無しさん@そうだ選挙にいこう:2012/07/26(木) 08:32:04.08
>>903
foreach使えるようになると超楽
Sub a()
For Each xxx In Worksheets
If xxx.Name <> 1 Then
xxx.Visible = True
End If
Next
End Sub
905名無しさん@そうだ選挙にいこう:2012/07/26(木) 08:45:44.45
>>904
見た感じ繰り返し条件っぽいけど
>>903の条件の場合どうやって使うの?
906名無しさん@そうだ選挙にいこう:2012/07/26(木) 08:48:47.00
>>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
907名無しさん@そうだ選挙にいこう:2012/07/26(木) 09:12:30.96
つーかさ、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使い、愚純にループ内で条件判断繰り返すのではなく
適材適所で使い分け、反復実行されるループ内ではなく
ループに渡す配列を作る段階で条件判断するなど臨機応変に使えるようになると超楽。
908名無しさん@そうだ選挙にいこう:2012/07/26(木) 09:46:28.48
>>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
910名無しさん@そうだ選挙にいこう:2012/07/26(木) 11:25:54.92
'初期値------------------------------------------
Sheets("aaa").select
訂正がありました。連投すみません。
911名無しさん@そうだ選挙にいこう:2012/07/26(木) 12:10:45.06
それ以外にコード隠してない?
真っさらなユーザーフォームを新たに作ってそのコードだけ貼っても再現する?

とりあえず不適切なところはあるが、主題のような問題が起こりそうな所は無いと思うし
2002ではあるがうちでは再現しないけど
912名無しさん@そうだ選挙にいこう:2012/07/26(木) 15:45:37.53
未だに2002とか使ってる人はどうしてアップグレードしないの?
2002とか仕事でも使えないでしょ
913名無しさん@そうだ選挙にいこう:2012/07/26(木) 15:53:12.39
>>909
「途中」って何?
914名無しさん@そうだ選挙にいこう:2012/07/26(木) 16:08:54.74
>>912
必要ないからでしょ
世の中は君が考えてるほど単純じゃないんだよ
915名無しさん@そうだ選挙にいこう:2012/07/26(木) 16:26:24.13
>>914
必要ないってことは自営かニートってことかな
916名無しさん@そうだ選挙にいこう:2012/07/26(木) 16:30:04.33
夏休みっぽくなってきました
917名無しさん@そうだ選挙にいこう:2012/07/26(木) 16:46:13.06
実は夏休み夏休みいうやつが厨房かニート
918名無しさん@そうだ選挙にいこう:2012/07/26(木) 17:38:47.26
パソコン持って無くたって普通に勤められるのに
パソコン持っていてExcelも入っていて、それが2002だってだけで
なんで「自営かニート」とか、勤めるのが不可能的な発想になるのか不思議

パソコンメインで仕事するのって、中の下の前後あたりの層だけでしょ
その下はパソコンなんて使わず手作業、肉体労働とかがメインだし
その上は携帯端末で情報やりとりするとか、もっと専門性の高いソフトで
開発や制作、研究とかやってて、Excel使う仕事なんか下っ端任せ
919名無しさん@そうだ選挙にいこう:2012/07/26(木) 17:48:35.08
ただでさえ熱いのにそんな熱くなるなよ
夏だなぁー
920名無しさん@そうだ選挙にいこう:2012/07/26(木) 17:55:11.64
熱く感じるなら、それは自分の熱じゃね?
921名無しさん@そうだ選挙にいこう:2012/07/26(木) 18:23:04.78
思慮の浅さを指摘されてカッカしちゃったとかかな
922名無しさん@そうだ選挙にいこう:2012/07/26(木) 18:29:09.73

【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

オートシェイプの頂点の編集で、頂点をグリッドにスナップさせるにはどうしたら良いですか?
923名無しさん@そうだ選挙にいこう:2012/07/26(木) 18:31:49.23
>>922
そんな機能は無いよ
924名無しさん@そうだ選挙にいこう:2012/07/26(木) 18:35:00.03
左様ですか・・・orz
925名無しさん@そうだ選挙にいこう:2012/07/26(木) 19:05:17.63
VBA使えば擬似的にスナップさせることは出来るけどね
926名無しさん@そうだ選挙にいこう:2012/07/26(木) 19:16:41.25
スナップとはなにかと聞いてるんですが
927名無しさん@そうだ選挙にいこう:2012/07/26(木) 19:25:02.19
いきなりどうした?
928名無しさん@そうだ選挙にいこう:2012/07/26(木) 21:12:04.22
とりあえずVBAの知識全くない場合は
どの本買ったらいいんよ?
929名無しさん@そうだ選挙にいこう:2012/07/26(木) 21:19:00.17
最近このスレはvbaのレスが多くなった。
930名無しさん@そうだ選挙にいこう:2012/07/26(木) 21:21:00.36
>>928
とりあえずやりたいことを自動記録して、そこで使われている関数をググるなりヘルプで調べるなりすればおk。
完全な初心者なら、初心者本をラノベ見たく絵買い(つまり直感買い)でも問題になるほどのことはない。

931名無しさん@そうだ選挙にいこう:2012/07/26(木) 21:46:09.79
こんばんは >>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 勉強してみます。

また初歩的な質問をする機会があると思いますが 
よろしくおねがいします。
932名無しさん@そうだ選挙にいこう:2012/07/26(木) 21:53:37.22
>>887 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2012/07/26(木) 00:17:34.40
つーかそのレベルの頭だと、そういうことに手出さない方がいいと思うけど。
これが自己解決できないって、Excelの知識ではなく、根本的な思考能力に問題有りだから。

これが自己解決できないんです 
どうしたらいいのかな?
933名無しさん@そうだ選挙にいこう:2012/07/26(木) 22:15:33.30
つか、SSうpするぐらいなら素直にファイルをうpしたほうがよくない?
いちいち動作確認に数値を手打ちするのがめんどくさいよ。
934名無しさん@そうだ選挙にいこう:2012/07/26(木) 22:31:00.33
>>933
SSアップの方法はわかるんだけど
ファイルUPってどうやったらいいんですか?
935名無しさん@そうだ選挙にいこう:2012/07/26(木) 22:33:33.55
>>934
SSアップとファイルUPって違うんですか?
936名無しさん@そうだ選挙にいこう:2012/07/26(木) 22:37:41.81
>>935
スクリーンショットをUPする と ブックをUPする という違いだと思うんだけど....
937名無しさん@そうだ選挙にいこう:2012/07/26(木) 22:42:03.79
>>936
揚げ足が取りたいだけの厨房でしょ。確かに両方ファイルではあるしね。
938名無しさん@そうだ選挙にいこう:2012/07/26(木) 22:59:15.63
>>934
知らんよ。大抵は

ttp://www1.axfc.net/uploader/

あたりまでurlを削ればTOPにたどり着くんじゃないの。
939名無しさん@そうだ選挙にいこう:2012/07/27(金) 00:36:49.41
少尉って言う階級がな……。もしかして佐々木さんって特攻隊員だったのかもな。
たしか特攻隊員って無条件に少尉まではなれたんだよな。
940名無しさん@そうだ選挙にいこう:2012/07/27(金) 00:38:22.88
誤爆しつれいw
941名無しさん@そうだ選挙にいこう:2012/07/27(金) 01:19:47.21
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★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で検索すれば一発なのはわかりますが
別シートのセルに関数で行番号と列番号と出したいんです
942名無しさん@そうだ選挙にいこう:2012/07/27(金) 02:32:13.37
>>941
そこまで解っていれば、あとは応用だと思うんだけど。
作業列、まあ、この場合は作業行になるわけだけど

=ISNUMBER(MATCH("りんご",Sheet1!A:A,0))

で必要列分作ればいいだけじゃん。
りんごはひとつしかないわけだから、どこかの列に答えが出るわけだろ。

あとはA1に

=CHAR(CODE("A")+MATCH(TRUE,5:5,0)-1)&MATCH("りんご",Sheet1!E:E,0)

とか。ちょっと泥臭いかな。
943名無しさん@そうだ選挙にいこう:2012/07/27(金) 02:37:32.31
あ、間違えた。ちょっと待ってね。
944名無しさん@そうだ選挙にいこう:2012/07/27(金) 02:44:14.15
作業行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))
945名無しさん@そうだ選挙にいこう:2012/07/27(金) 02:53:35.44
ははぁーなるほど・・・へぇー!
実は子供のころから「アンタは応用の効かない子だね誰の子なんだい!」とよく叱られたものでした
すごいなあ割腹しました!
ありがとうございました
946名無しさん@そうだ選挙にいこう:2012/07/27(金) 02:58:00.00
あ、AA列とかになったらヤバイw
まあ、こんな感じだ。
947名無しさん@そうだ選挙にいこう:2012/07/27(金) 03:18:32.45
A1

=ADDRESS(INDEX(5:5,MATCH(TRUE,6:6,0)),MATCH(TRUE,6:6,0),4)
948名無しさん@そうだ選挙にいこう:2012/07/27(金) 05:56:04.50
>945
割腹しないでくれ。
ふつー死ぬぞ。
949名無しさん@そうだ選挙にいこう:2012/07/27(金) 06:38:05.75
>>928
俺は、「FOM出版」ってとこの
「よくわかる Excel 2007 マクロ/VBA入門」
「よくわかる Excel 2007 VBAプログラミング実践編」

「翔泳社」の
「Excel VBA 逆引き辞典パーフェクト 630」
で勉強した。
950名無しさん@そうだ選挙にいこう:2012/07/27(金) 10:09:11.10
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

http://uproda.2ch-library.com/557550ypu/lib557550.png
画像のような表があって、並び替えをしたいんですが、
例えば出荷個数が50以上の条件を満たしているモノを売上率の高い順に並び替える
というようにするにはどうしたらいいのでしょうか。
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」のどの本買ったらいいんよ?
953名無しさん@そうだ選挙にいこう:2012/07/27(金) 10:16:46.03
個人的には「Excel VBAのプログラミングのツボとコツがゼッタイにわかる本」がお勧めかな
954名無しさん@そうだ選挙にいこう:2012/07/27(金) 10:23:16.56
>>950
オートフィルタで出荷個数が50以上で絞り込んで
ソートを使って売上率の高い順に並び替えればいい
955名無しさん@そうだ選挙にいこう:2012/07/27(金) 10:43:27.77
おねがいいたします。

sheet2のA1に「ひらがな」で「あいうえお」とあり、
sheet1のA2に=シート2!A1で表示してるのですが、
sheet1のA1にA2の数字をカタカナで表記するようにしたいのですが、VBA
で可能でしょうかPHONETICでは空欄になってしまうので、
常に「sheet1のA1にA2(引数=ひらがな)のカタカナを表記をする」という方法がありましたら
乱筆ながら宜しくお願いします。<(_ _)>
956名無しさん@そうだ選挙にいこう:2012/07/27(金) 10:48:30.54
>>955
「数字をカタカナで表記する」って意味がいまいちわからんが
「excel vba ひらがな カタカナ 変換」でググってみたら?
957名無しさん@そうだ選挙にいこう:2012/07/27(金) 11:09:48.08
ひらがなをカタカナ(3行目)でした。。すみません。
958名無しさん@そうだ選挙にいこう:2012/07/27(金) 11:20:09.60
【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は手で予め入力するとします。
簡易自習システムを作りたいのです。
959名無しさん@そうだ選挙にいこう:2012/07/27(金) 11:27:28.76
>>951
Excel入っている環境での話なら、VBアプリからExcelランタイムライブラリを参照して
シートと同機能の物をフォームに配しVBAと同じ操作が可能だが
当然Excelのランタイムライブラリの入っている環境が必要なわけで、Excel入ってない環境でも使えるようにと
Excelのランタイムライブラリを自作ソフトに同梱再配布可能にしたら、それはExcelをどんどんコピーして
配っていいですよって言ってるのと同じでMSの大損になるからそんなのは認めていないし
当然.NET FrameworkやVB6ランタイムみたいにExcelのランタイムが無償で落とせるってことも無いから無理

代替としてVB6ランタイムに含まれているグリッド系コントロールを使えば経理システムくらい作れる
当然ながらExcelシートより遙かに低機能なので、作る手間は大きくなるけどね
イメージとしてはフリーのCSVエディタがあるが、あれの基盤になってるのが大抵グリッド系コントロール
もちろんCSVエディタとして配布されているものはいろいろ手を加えているので、元はもっと低機能だけどね

あとは自分はよく知らないが、フリーのオフィスソフトOOoでもVBA互換機能を持つバージョンがあるようだから
そっちを使う方が小さな手間で大きな成果が得られるかも知れない
960名無しさん@そうだ選挙にいこう:2012/07/27(金) 12:15:44.77
>>958
セル右クリック > コメントの挿入

表示は「クリックしたら」ではなく「セルにマウスカーソル移動したら」だけど
セルにカーソル合わせなければ表示されないので、学習には使えるでしょ
961名無しさん@そうだ選挙にいこう:2012/07/27(金) 12:21:20.55
>>952
0からはじめるなら逆引き系は避けた方がいい。
入門/初心者 と書いてあるのがいい
上級レベルはどうせ実践で覚えるから本はいらん。資格がほしいなら資格の本を買うといい。
個人的にはページを広げても閉じない、薄めorA4並にでかいやつがオススメ
>>955
vbaひらがなをカタカ
でぐぐればいっぱいでてくるよ
962名無しさん@そうだ選挙にいこう:2012/07/27(金) 12:27:20.92

"vbaひらがなをカタカ" に一致する結果は見つかりませんでした @Google.....orz
963名無しさん@そうだ選挙にいこう:2012/07/27(金) 12:33:46.18
あれ、それ実はわざとなんだけどな
次の検索結果を表示しています: vbaひらがなをカタカナ
って出るからいいかと思って
ブラウザによって違うのかな?
964名無しさん@そうだ選挙にいこう:2012/07/27(金) 12:48:01.53
設定次第
965名無しさん@そうだ選挙にいこう:2012/07/27(金) 13:52:17.12
エクセルでソートするときには「▲」「△」を区別してくれないのでしょうか?
966名無しさん@そうだ選挙にいこう:2012/07/27(金) 14:06:29.29
>>965
ん?普通にするぞ





で昇順だと▲が上に来る
967名無しさん@そうだ選挙にいこう:2012/07/27(金) 14:10:18.32
区別してくれるよ、セルの値ならね
ただし表示形式で付けている記号とか、セルの値じゃないものは無視

値  表示形式  表示
-1  0;-0;0;@   -1
-1  0;▲0;0;@  ▲1
-1  0;△0;0;@  △1
-1  0;[赤]0;0;@  1 (赤文字)

これらは、表示は違うけど値は同じなので
値を対象とするソートでは区別されない
968名無しさん@そうだ選挙にいこう:2012/07/27(金) 14:43:36.55
その発想はなかった
969名無しさん@そうだ選挙にいこう:2012/07/27(金) 14:50:54.75
>>967
ソートできるようにするには▲1とか△2の▲△を別のセルに分離しないと出来ないってことでしょうか?
970967:2012/07/27(金) 15:54:56.99
>>969
可能性の一つとしてまさかとは思いながら書いたけど
マジで0;▲0;0;@と0;△0;0;@が混在させてるの?

結論として▲△を別のセルに分離すれば目的を達せるかといえば、これは君も解ってるんだろうけど
間違いなく目的は達せる

しかしそれ以外には一切方法がないかと言われると、それはデータがどうなってるかで変わってくる
▲と△を使い分けるからには、そしてソートで区別したいからには、データにも区別するだけの
理由があるはずで、わざわざ▲△を分離しなくても、▲と△を使い分ける理由部分がデータから判断できるなら
それをキーに含めれば良いだけかも知れないし

あとは力業になるけど、VBAで自分でソートアルゴリズム書けば
VBAではセル.Valueで実値、セル.Textで表示値を取れるから、表示値取って自前のソートにぶち込み
それをシートに反映することも出来る
971名無しさん@そうだ選挙にいこう:2012/07/27(金) 16:21:03.08
将棋の棋譜なんですけどたとえばこんなのを縦にソートして▲を先に出来ない.

▲7六歩
▲5六歩
△3四歩
△3三角
▲2六歩
972名無しさん@そうだ選挙にいこう:2012/07/27(金) 17:07:08.61
将棋の棋譜をソートする意味が分からない
973名無しさん@そうだ選挙にいこう:2012/07/27(金) 17:23:20.27
ある意味作業列だけど、手順って列作ればいいんじゃない。
974名無しさん@そうだ選挙にいこう:2012/07/27(金) 17:26:59.36
それの▲△を表示形式で付けてるの?
データ作ったのは君じゃないかもしれないが、それを表示形式の符号付与でやるって
それどう考えてもデータの作り方間違ってるよ

それに盤面の地図としての棋譜ではなく
対戦の記録としての棋譜なら、何手目かが入ってるか、最初は手順通りに並んでるでしょ?
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手目
となる
975名無しさん@そうだ選挙にいこう:2012/07/27(金) 19:29:07.65
vbaひらがなをカタカ
      ↓
次の検索結果を表示しています: vbaひらがなをカタカナ
元の検索キーワード: vbaひらがなをカタカ

検索約 60,400 件 (0.19 秒)
976名無しさん@そうだ選挙にいこう:2012/07/27(金) 19:43:18.56
まだそのミス気にしてたのか?

つうか放っておけばもう誰も気に止めてないのに
自分が気にしてフォローしようと言い訳とかしたら逆効果だよ
977名無しさん@そうだ選挙にいこう:2012/07/27(金) 23:23:23.48
使用数.xls、注文数.xls、残数.xlsのファイルがあって、次のようなマクロで
集計していますが、会社の古いノートPCだと2分くらい掛かってしまいます。
時間短縮できるようなプログラムに可変できますか?

Sub 集計()
  Application.ScreenUpdating = False
  Set 使用数 = Workbooks("使用数.xls").Worksheets("一覧")
  Set 注文数 = Workbooks("注文数.xls").Worksheets("都道府県")
  Set 残数 = Workbooks("残数.xls").Worksheets("数量")

  For i1 = 3 To 368
    For j1 = 4 To 51
      pcs = 0
      For j2 = 3 To 58
        If 使用数.Cells(i1, j2) > 0 Then
          pcs = pcs + 使用数.Cells(i1, j2) * 注文数.Cells(j2, j1 - 1)
        End If
      Next j2
      残数.Cells(i1, j1) = 残数.Cells(i1, j1 - 1) - pcs
    Next j1
  Next i1
End Sub

参考イメージ
http://uproda.2ch-library.com/557778GCT/lib557778.jpg
http://uproda.2ch-library.com/557779HhS/lib557779.jpg
http://uproda.2ch-library.com/557780CLt/lib557780.jpg
978名無しさん@そうだ選挙にいこう:2012/07/27(金) 23:34:39.66
>>977
配列使う
979977:2012/07/27(金) 23:52:00.94
>>978
エクセル マクロ 配列でググってみましたがよく分からんです。
初心者なので、できれば具体的に書いてホスィ〜
980名無しさん@そうだ選挙にいこう:2012/07/28(土) 00:17:13.10
甘えんな
981名無しさん@そうだ選挙にいこう:2012/07/28(土) 00:32:31.10
>>979
「excel vba シートの値を配列に」でググれ
982名無しさん@そうだ選挙にいこう:2012/07/28(土) 00:38:31.73
>>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
984名無しさん@そうだ選挙にいこう:2012/07/28(土) 00:50:44.36
まちがえた

× 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の判定後に計算するよりも早いかもしれない。
(使用数がマイナスの値にならない限り、条件分岐を実行してから計算するより
無駄に思えてもゼロの積算も実行したほうが結果早いかもしれない。って意味)
985名無しさん@そうだ選挙にいこう:2012/07/28(土) 11:50:00.22
セルに数値が入ってるとき
Range("C3:AR" & B_ROW).ClearContents
Range("C3:AR" & B_ROW) = ""
は同じ?
986名無しさん@そうだ選挙にいこう:2012/07/28(土) 11:59:02.56
ヒント IsEmpty
987名無しさん@そうだ選挙にいこう:2012/07/28(土) 12:00:00.12
てst
988名無しさん@そうだ選挙にいこう:2012/07/28(土) 12:45:47.59
Range("C3:AR" & B_ROW).ClearContents

Range("C3:AR" & B_ROW) = Empty
と同じ
989名無しさん@そうだ選挙にいこう:2012/07/28(土) 14:34:29.96
>>960
既に作成済みの表なんで、もう一度作り直すのはちょっと面倒だけど、
サンクス。

990名無しさん@そうだ選挙にいこう:2012/07/28(土) 15:19:52.69
9x9のマトリクスごときで「ちょっと面倒」ってどんだけだよw
991名無しさん@そうだ選挙にいこう:2012/07/28(土) 16:02:00.03
わずか9×9マスの将棋は、いまだにスーパーコンピューターでもヒィヒィいいながら解いてる段階だけどな
992名無しさん@そうだ選挙にいこう:2012/07/28(土) 16:12:19.76
>>960
の場合は1マス1回の処理だからたったの81回だよ
将棋や囲碁の最適手探索といっしょにすんな
993名無しさん@そうだ選挙にいこう:2012/07/28(土) 17:08:16.74
>>990
キモいんだよきみは。
994名無しさん@そうだ選挙にいこう:2012/07/28(土) 17:16:21.04
>>993
うわぁ…
99557 ◆MwLUkYVrGI :2012/07/28(土) 18:50:00.88
「キモい」なんて最高の褒め言葉だね。
996名無しさん@そうだ選挙にいこう:2012/07/28(土) 19:27:39.80
【1 OSの種類         .】 Windows**
【2 Excelのバージョン   】 Excel**
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
エクセルVBAでADOを使用してアクセスのテーブルに接続する方法とか勉強中ですが、これってアクセスがインストールされてない
パソコンからでも接続可能なんですか?

とあるサイトでの
>MDBファイルによる簡易データベースはほとんど費用もかからず簡単にクライアントサーバーシステムを実現します。
>データベーステーブル専用のMDBファイルをファイルサーバーの共有ディレクトリにおき、クライアントPCからアクセスさせます。

これにチャレンジしたいけど、クライアントPC全部にアクセス必要ならどう考えても費用がかかるので実用につなげれる気がしない。
997977: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モリタポをお送りします。
998983:2012/07/28(土) 20:16:23.00
>>997
お役に立てて何よりです。
ほかの方がお出しになったキーワードでぐぐるのが早いと思いますが、
要するにセルを一個ずつ読み込むよりも、まとめて全部読み込んじゃって、
エクセルのメモリ上で処理するほうがはるかに早いってことです。
で、私もこのスレとかでいろいろ教えてもらってるし、
モリタポとかの2chの仕組みはよくわかんないのでお礼とかはどうでも良いです。
これからもお互いがんばって勉強しましょう。
999977:2012/07/28(土) 21:01:15.31
>>998
エクセルって、書き込みに時間が掛かるんですね。
そもそもセルの値をメモリに読み込ませるって発想が無かったので、
ググっても983のようなマクロには辿り着けなかったと思います。
マクロを覚えて仕事が早くなりましたが、まだまだ改善の余地が
ありそうなので、これからもよろしくお願いします。
100057 ◆MwLUkYVrGI :2012/07/28(土) 21:18:35.43
1000なら俺が1000モリタポげっとー!!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。