[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2ch.scのread.cgiへ]
Update time : 07/24 13:47 / Filesize : 158 KB / Number-of Response : 580
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part67



1 名前:デフォルトの名無しさん [2020/06/26(金) 02:01:29.56 ID:uDfmpksE0.net]
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part66
https://mevius.5ch.net/test/read.cgi/tech/1589085825/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

131 名前:デフォルトの名無しさん mailto:sage [2020/07/01(水) 23:36:22.71 ID:yn1qRX7nM.net]
>>35
>>130
マクロの記録がその手のコードを生成するからでしょ

132 名前:デフォルトの名無しさん (ワッチョイ 87da-z1wt) mailto:sage [2020/07/02(木) 01:40:39 ID:Y/spJvDG0.net]
条件付き書式とかは?

133 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 02:34:51.75 ID:G8g1bCvWr.net]
このメニューで、空白セルにチェック入れると空白セルを選択しますね。

では例えば値が100以上など、条件つきのセルを選ぶ事はできますか?

https://i.imgur.com/zyDAZ0X.jpg

134 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 04:05:38.32 ID:vmiMC9VK0.net]
教えてください。
imagemsoの名称からfaceidに変換することは可能でしょうか?
もしくはmsoBarPopupでimagemsoを使用することは可能でしょうか?

135 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 06:28:30.74 ID:PEAIWqln0.net]
>>133
選んだセルをどうしたいかによるけど、オートフィルかけて選択とか

136 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 08:20:19.52 ID:yX39WODNa.net]
他人の作ったコードはなぜ読む気がしないのか

137 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 10:30:47.89 ID:KAImZ3Owa.net]
読む必要はないからな

138 名前:デフォルトの名無しさん (ワッチョイ 1e8e-0gyK) [2020/07/02(木) 12:31:17 ID:cWLbwDw40.net]
馬鹿の特徴

「教えて」「助けて」

で始まる書き込みをする

139 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 13:06:37.09 ID:vmiMC9VK0.net]
>>138
馬鹿でもいいです。
じゃあ、模範的な質問の仕方を教えてください。



140 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 15:30:35.30 ID:NxUusdo6a.net]
そんなものはない

141 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 16:07:39.62 ID:fLeksvw30.net]
>>140
ありがとうごさいました。参考になります。

142 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 16:13:40.59 ID:pSHiLlcA0.net]
馬鹿の特徴

人にマウントしたがるだけで
質問への答えは出さない

143 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 17:04:38.40 ID:2Xt/GnSW0.net]
>>142
馬鹿でもいいです。
じゃあ、模範的な回答の仕方を教えてください。

144 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 17:44:48.44 ID:Q59tEF0c0.net]
そんなものはない

145 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 17:45:12.17 ID:q3lU8bAMa.net]
そんなひとはいない

146 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 21:22:15.18 ID:sbstkRF+M.net]
馬鹿には馬鹿と指摘しないと、あまりに低レベルの自分でやってみようという意志もない馬鹿な質問で溢れかえるからこれくらいでいい

147 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 21:49:51.56 ID:2Xt/GnSW0.net]
>>144
ありがとうございました。参考になります。

>>145
消えろ

148 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 22:51:02.52 ID:7/3Aifl90.net]
ここが上級者ばかり集う高尚なスレだと思っているのかWWWWWWWWWWWW
VBAごときでWWWWWWWWWw

149 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 23:33:21.68 ID:0km7hKfU0.net]
VBAを随分下に見てるねえ。
別にC#で回答してもいいよ?
VBAに脳内変換するから。



150 名前:デフォルトの名無しさん mailto:sage [2020/07/02(木) 23:47:09.16 ID:Y/spJvDG0.net]
上級者も馬鹿も両方いてあたりまえ
お前らそんなにマウントとりたいのかw

151 名前:デフォルトの名無しさん [2020/07/02(木) 23:59:32.57 ID:yXnL3NZ/0.net]
誰か教えて。
式に=とか+を使うと字が読みにくくて困っています。
全角文字や絵文字を使うことはできないのでしょうか?
急いでいますからすぐに教えて、

152 名前: テトリス ◆SYKnw8OJpw [2020/07/03(金) 00:10:57 .net]
テスト

153 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 00:14:47.41 ID:P5PHrlsB0.net]
>>151
一休さんかコロンブスみたいな回答で良いなら出来る。
実際に全角文字や絵文字で書いてみな。

154 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 04:04:14.78 ID:B7qpVotz0.net]
Function 〓(ByRef a, ByVal b) : a = b : End Function
Function ┼(ByVal b, ByVal c) : 〓 ┼, WorksheetFunction.Sum(b, c) :End Function
これを入れておけば、=とか+から解放されるぞ

Sub test()
Dim a
〓 a, 1
Debug.Print ┼(a, 1)
End Sub

155 名前:デフォルトの名無しさん (ワッチョイ 0a2f-+ZV3) mailto:sage [2020/07/03(金) 12:58:30 ID:KESc8IU30.net]
そんなソース絶対読みたくないな

読みやすいフォント探すか自作すればいいだけだろうに

156 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 13:30:11.45 ID:hUamHkOVa.net]
ハズキルーペ使えよw

157 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 21:14:38.38 ID:mplhmvvw0.net]
ワークシートの条件にあう行を削除して上に詰めるみたいなことを、配列内でしたいです。

多次元配列"ary"内の1列目が66か、6列が1000か、28列目が空欄のレコードを削除するコードを教えてください

158 名前:デフォルトの名無しさん [2020/07/03(金) 21:23:34.89 ID:Mxid+JS90.net]
E列が空白になるまでE列とG〜M列に特定の処理をしたくて
Do loopを使って何とかできないかと悩んでたけど座礁しますた

Eの11行目を起点にして
E列の数値が正の数ならEもG〜Mも数値はそのまま
E列の数値が0ならEもG〜Mも数値はそのまま
Eの数値が負の数ならEとG〜Mの数値を-*1
と反転させたい
ってのは素人には荷が重すぎですかね?

159 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 21:31:07.37 ID:DQKehNsV0.net]
157,188
お互いに相手のコード相談しながら考えてあげればいいんじゃね
ちょうどよさげだわレベル



160 名前:デフォルトの名無しさん (ワッチョイ 27ce-BXkI) mailto:sage [2020/07/03(金) 21:44:24 ID:4NyCV/dB0.net]
>>158
いいえ、がんばればできます

161 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 21:55:13.66 ID:4NyCV/dB0.net]
Sub Macro1()
  r = 11 '起点の行
  Do While Cells(r, "E") <> ""
    If Cells(r, "E") < 0 Then
      Cells(r, "E") = -Cells(r, "E")
      For c = Asc("G") To Asc("M")
        Cells(r, Ch r(c)) = -Cells(r, Ch r(c))
      Next c
    End If
    r = r + 1
  Loop
End Sub

162 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 22:17:41.55 ID:aUU6z7Ir0.net]
そもそもマクロ作るのって違うデータでも同じ処理をやりたいような場合じゃないのか
一回限りのデータ抽出ならわざわざマクロなんか作る意味ないんだけどな
無駄に時間を浪費したいのかな

163 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 22:37:42.83 ID:qSqs6yG50.net]
使い捨てマクロってのもありまして

164 名前:デフォルトの名無しさん (ワッチョイ 6bda-ewff) mailto:sage [2020/07/03(金) 22:48:22 ID:3J4wGhdX0.net]
定型フォーマットの複数ファイルの同項目の値を集計したい
なんて時は使い捨てマクロかな

165 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:04:06.95 ID:KESc8IU30.net]
>>157
VBAの配列に要素詰める命令はなかったはずなので、どうしてもというなら
 該当要素より下の要素を一つずつ上にずらす
 最後の要素を消す
とやればできなくはないがお勧めはしかねる

166 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:06:05.89 ID:KESc8IU30.net]
>>158
それVBAじゃなくても計算式とワークの列使えばできると思うけど
なぜ素人がVBAでやろうと思うんだ

167 名前:デフォルトの名無しさん [2020/07/03(金) 23:26:37.07 ID:Mxid+JS90.net]
>>161
構文エラーでしたわ
>>166
VBAでやりたかったのです…

168 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:27:55.78 ID:8QUz9sdRa.net]
確かに一回限りの作業なら
マクロ考えているよりやった方が終わってるかもな

169 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:35:20.76 ID:P5PHrlsB0.net]
>>157
配列内でやるならレコードセットだな。



170 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:42:57.67 ID:9EQo/V7m0.net]
一回きりだろうと同じ処理100回やるようなのもあるんだし

171 名前:デフォルトの名無しさん mailto:sage [2020/07/03(金) 23:46:08.59 ID:P5PHrlsB0.net]
1回限りでも3行くらいで済むのは書くな。

172 名前:デフォルトの名無しさん (ワッチョイ bb1d-+upQ) [2020/07/04(土) 00:48:12 ID:KIBH4SNT0.net]
まだ22歳の学生社長が得た、23億円の「使い道」
あの橋本環奈をCMに使うバイトアプリの雄
https://toyokeizai.net/articles/-/319511
中学時代の車いす生活から、17歳で起業するまで
https://www.advertimes.com/20200130/article306925/
ミャンマー発 AIダイニングアプリ「Yathar」をしかける日本人起業家
https://roboteer-tokyo.com/archives/14840
自分の視野は「世の中の0.001%」と自覚せよ。ビジネスチャンスを掴む4つの習慣
https://headlines.yahoo.co.jp/hl?a=20200511-00010001-srnijugo-life
アプリの視聴率がわかる 高専卒起業家の独創力
https://www.nikkei.com/article/DGXMZO46695580Y9A620C1000000/
1万人の若者を支援!インターンが日本を変えるかも!? glowshipの若き創業者・足立卓也氏インタビュー
https://sogyotecho.jp/glowship-adachi-interview/
大学生起業家が設立1年で20億円調達! 単発バイトアプリに外食企業など出資【タイミー】
https://foodfun.jp/archives/3490

173 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 01:40:09.94 ID:IOVEPry/0.net]
一般論としては頻度の多い作業の方が自動化に向いてるのは確かだけど、
1回だけでも大量のデータを加工したり手作業でやるには時間のかかる作業もあり、
作業時間の方がコード書く時間より長くなる場合も多々もあるのでケースバイケースやね

174 名前:デフォルトの名無しさん (ワッチョイ 5301-JCxG) [2020/07/04(土) 01:58:21 ID:42LT/T3f0.net]
逆に、山田やっとけ、というのはどうよ?

175 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 02:07:27.87 ID:VMWug14q0.net]
やるとは何を?

176 名前:デフォルトの名無しさん [2020/07/04(土) 02:09:15.54 ID:42LT/T3f0.net]
データの加工。

177 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 02:10:42.23 ID:VMWug14q0.net]
加工すればいいんじゃね

178 名前:デフォルトの名無しさん [2020/07/04(土) 02:13:10.44 ID:42LT/T3f0.net]
いや、山田がやってくれないかなって。
だめ?

179 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 02:16:03.66 ID:VMWug14q0.net]
だから山田がデータを加工すればいいんじゃね



180 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 02:38:36.13 ID:VMWug14q0.net]
素人にやらせた場合間違った結果を出すかもしれんが
その場合頼んだ側にも責任があるけどそれでも山田にやらせるか?

181 名前:デフォルトの名無しさん [2020/07/04(土) 03:10:27.15 ID:42LT/T3f0.net]
田中のほうが良いかな?

182 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 03:37:53.50 ID:OxpkXjjxa.net]
斎藤さんだぞ

183 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 04:04:04.69 ID:IjVZd7O90.net]
山田ができるのは座布団運びだけだろ

184 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 07:02:36.51 ID:VZt6Ms3K0.net]
do whileとかほとんど使わないわ
あれ試行錯誤してる最中に脱出条件間違えて固まるとイライラってするんで

>>158こういうのは
途中で空白行挟んでたらどうすんのとか考えるとEnd(xlup)とか使って無難にforで回したい
最も空白行挟んでたらそこまでしか処理しないのかもしれんけど
それなら上から順に一旦回して空白行がどこに出るのか調べてからやるわ
全データ配列に格納してからやれば速度的にも問題ないと思うし

185 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 07:59:26.14 ID:yagtSNgld.net]
観測地点が全国で2000ヶ所、1時間毎の観測結果3年分のデータがあって、8時間毎に観測出来なかった場合も踏まえて平均し、観測出来なかったのが8時間の内4時間以上あったら平均値も出力出来なかったとする。
で、その8時間の平均値は1時間ずつずれて24個分で1日のデ―タとなるんだが、それをさらに平均して1日の値とする

なんてのやったが1回限りでもVBA使わないと無理。
というか普通に考えてVBAでも無理だけどね。

186 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 09:41:06.65 ID:htrp3xgD0.net]
>>157
配列に入れたら順番に書き込んで条件の時だけ書き込みスキップじゃ駄目なの?

187 名前:デフォルトの名無しさん (ワッチョイ 1e8e-0gyK) [2020/07/04(土) 10:01:18 ID:1naoKVTK0.net]
>>185
お前の低い知能の頭ではできないだけだろ

188 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 11:47:27.20 ID:VZt6Ms3K0.net]
簡単だよな
セルにどういう風にデータが並んでるかで多少の工夫がいるかもしれんけど
加減乗除のみのワンパターン

189 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:11:54.32 ID:xB5SKVkx0.net]
水口克也氏のExcelVBA入門講座って本を使ったことある人いますか?
最後のじゃんけんゲームを作る所が、どうしてもうまくいきません



190 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:23:35.41 ID:KlM0EefbM.net]
>>185
作業シート使ってExcelだけでできるんじゃね?
そもそも移動平均の平均とかあまり意味ないことやってる方が気になるけど

191 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 12:37:06.40 ID:/jHrZd8o0.net]
8時間平均から24時間平均への変換は一般的なLPF処理だな
デジタル信号処理で数値データを扱う基本的な考え方だよ

192 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:05:03.59 ID:VZt6Ms3K0.net]
>>157
全要素forで回しながら
条件合うものだけを新しい配列newArrayにいれていけばいいじゃん
その後新しい配列から、データ空にしたシートに記入

新しい配列の要素数、特に1次元要素数(行数)だけど
Redim Preserveで順次増やしていくのはこの場合できないから、
一旦行数を確定するためだけにfor回してカウント
要素数確定したnewArray作ってから
もう一度for回して入れていけばいい

行列逆転させればredim preserve使って一発でもいけるか
特に巨大なデータでなければ間違い避けるために二回まわすなおれなら

行削除によって表自体の体裁を上に詰めていきたいっていうなら
最初にforを回した後、元の行数とnewArrayの行数の差だけ表の行を削除
データはすでに配列にとってあるんだからどこから削除しても構わない

193 名前:デフォルトの名無しさん (ワッチョイ 8a01-21HI) mailto:sage [2020/07/04(土) 13:32:13 ID:IjVZd7O90.net]
>>191
それ一気に24時間平均でよくね?

194 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 13:43:57.26 ID:/jHrZd8o0.net]
いきなりデータ粒度を荒くするのは悪手
ましてや>>185の場合はじめに欠損データのノイズキャンセルも行っているのでまとめて行なうとデータの精度が低下する

195 名前:デフォルトの名無しさん (アウアウエー Sa82-h0J+) mailto:sage [2020/07/04(土) 14:05:30 ID:Em2AcreDa.net]
24コマを1コマにするんだから
平らに均すのに精度もクソも無い気がする

196 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:21:18.07 ID:/jHrZd8o0.net]
データ値の定常状態と過渡状態を理解していれば分かる
粒度が荒いと応答性が悪化するので現象の追従が遅れる
安定時のデータ値だけならともかくデータの変化を取りこぼすリスクが高くなるんだよ

197 名前:デフォルトの名無しさん (アウアウエー Sa82-h0J+) mailto:sage [2020/07/04(土) 14:31:13 ID:Em2AcreDa.net]
>>196
そりはモニタのアッパーとローワーにトリガー仕込んだら良い話ではないのでしゅか?

198 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:44:04.22 ID:/jHrZd8o0.net]
上限、下限決め打ちの場合はトリガ仕込むのでも通用はする
ただ一日当たりの変化量でアクション起こす場合はどうする?
移動差分(微分)を連続的にデータ処理しないと難しい

199 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 14:48:04.16 ID:ZiXQ0AsVa.net]
喧嘩はやめよう



200 名前:157 mailto:sage [2020/07/04(土) 14:58:18.35 ID:oup49XFx0.net]
>>186

仮の配列を作り、編集してaryに入れるようにしたいのですが
これだと、全て空欄になってしまいます
Dim i As Long, j As Long, cnt As Long, cnt2 As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
'仮の配列
ReDim Kariary(i, 30) As Variant
Kariary = Range("A2:AD" & i).Value
'最終的に代入する配列
ReDim ary(i - 1, 30) As Variant

For cnt = 1 To i - 1
If Not Kariary(cnt, 1) = 66 Or _
Kariary(cnt, 6) = 1000 Or _
Kariary(cnt, 28) = "" Then

j = UBound(ary) + 1
If j < i - 1 Then
For cnt2 = 1 To 30
ReDim Preserve ary(j, 30) As Variant
ary(j, cnt2) = Kariary(cnt, cnt2)
Next cnt2
End If
End If
Next cnt
'シートを一旦クリア
Cells.Clear
Range("A2:AD" & i) = ary

201 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:04:44.69 ID:xhESn47nr.net]
はい

202 名前:デフォルトの名無しさん (アウアウエー Sa82-h0J+) [2020/07/04(土) 15:22:36 ID:ZKMg5qK7a.net]
>>198
地デジのようなリアルタイムデコードじゃなくて
過去に既に起こってしまったデータ欠損の過ちをVBA で穴埋めしようとしたたところで土台遅いと言う話でした。
>>199
そうですね

203 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:31:40.93 ID:VZt6Ms3K0.net]
>>200
頭が痛くなってくるんだけど
まずifの条件がおかしい
自分で簡単の作って確かめてみ
こういうの
思ってるような動きするか確かめてみ
プログラムってのはそういうことしないとだめだわ
まっさらなxlsm作ってデータも簡単のシートに作ってやってみ
そうすりゃすぐ分かる

Sub teeee()
 With ActiveSheet
  If Not .Cells(1, 1) = 66 Or .Cells(2, 1) = 2 Then
   MsgBox "ok"
  End If
 End With
End Sub

例えばさ、
ary(j, cnt2) = Kariary(cnt, cnt2)
これにブレークポイントつけてここに到達するケースがあるか調べてみ
それだけで何か分かるわ

まぁだれか正解のコード書いちゃうんだろうけど
デバッグ
ブレークポイント
これ使えないとまともなコード書けないぞ

204 名前:デフォルトの名無しさん (ワッチョイ 8a01-5cl0) mailto:sage [2020/07/04(土) 15:38:09 ID:VZt6Ms3K0.net]
それだけじゃないからな
redim preserve は、くせ者

205 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:42:33.80 ID:RSp2d2NT0.net]
redimしなくても十分な量確保しといてどこまで使ったか変数に入れときゃいいだけだろ
わざわざ負荷かかることする意味がない

206 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 15:56:38.11 ID:D9As6lACa.net]
プロはとりあえず配列に格納するのが好きなんです

207 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:03:39.61 ID:DEQjmcqBd.net]
>>187
>>190
やって見てから言えよw
問題は時間だ。

2000x365x24x3=52560000

100列で50万行だぞ。
実際やったわけだが、普通にやって6時間とかかかる感じだった。
勿論、初心者じゃないから2次元配列使うのも当然やってる。

まあ、6時間もかけたく無かったからマルチプロセスにして1時間ぐらいにしたけどな。

208 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:04:11.08 ID:qCMIttGKd.net]
十分な量を確保

あとで失敗するパターン

209 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:09:00.53 ID:MUUOvXMba.net]
data.csv
年月日,時間,気温,湿度
2020/07/04,11:15,28.5℃,78%
2020/07/04,12:15,ー,78%
2020/07/04,13:15,28.5℃,ー
2020/07/04,14:15,ー,ー
2020/07/04,15:15,28.5℃,78%
・・・
・・

1カ月データとして24時間×31日=744行+先頭行
1年12ヶ月データで8,928行かぁ
データスルーとかデータ穴埋めとかって
どっちの場合も
VBA じゃなくてデータベースのSQLで出来たりするのかな?



210 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:22:41.23 ID:DNEaiqy30.net]
おれならそもそも案件をRDBMSに移す提案をするわ
だめなら元データはどうせCSVやJsonかなにかだろうし、VBAから普通にRDBにいれてプロシージャ叩くとか
外部プログラムで直に処理するね

元データがExcelでExcel縛りなら、どうやって案件から手を引くかを考えるねw
Excel起動するVBAでやることじゃない
まあ金次第でもあるけど

211 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:30:22.62 ID:DEQjmcqBd.net]
>>209
う〜ん、場所毎だから表になるっちゃあなるけど、SQLでやろうとは思わなかったし、どうやってやるのかも思い付かんわ。
仕事でSQLばかり触ってるが。

>>210
おう、確かに元データはCSVだった。
SQLで上手いことやるのが思い付かんが。

212 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:35:45.74 ID:qCMIttGKd.net]
pythonでデータクリーニングさせれば?

213 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:42:21.08 ID:IjVZd7O90.net]
>>196
> 安定時のデータ値だけならともかくデータの変化を取りこぼすリスクが高くなるんだよ
平均とってる時点で取りこぼしとか意味不明なんだけどw

214 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 16:47:20.12 ID:IjVZd7O90.net]
>>207
2000列で高々3万行程度だろ
Excelの計算式はマルチスレッドで動くから自称「初心者じゃない」君のVBAより速いと思うぞ

215 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:02:54.82 ID:DEQjmcqBd.net]
>>214
バーカw
やってから言え。
本当バカだなあ。

そもそもファイル重くて碌に動かねえよ。

216 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:18:55.42 ID:pfDbF4Mra.net]
どうせ適当なデータでっち上げて表示させても気づかないだろ

217 名前:200 mailto:sage [2020/07/04(土) 17:35:53.50 ID:oup49XFx0.net]
>>203
おっしゃる通りでした。
IFに問題があったみたいです。ありがとうございました。

218 名前:デフォルトの名無しさん (ワッチョイ 8e02-JJ0U) mailto:sage [2020/07/04(土) 17:46:55 ID:aRnpDm0b0.net]
5ちゃんのExcelVBA質問スレでMonaさんに対してマウントを取りたいのですが、
Mount Mona
と記述してもマウントが取れません
どうすればいいですか?

219 名前:デフォルトの名無しさん [2020/07/04(土) 17:49:24.23 ID:1naoKVTK0.net]
>>207
お前が馬鹿なだけだろ
全部メモリーに置く理由もない
己の頭の問題を仕様の問題とすり替えるな



220 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 17:54:43.71 ID:oup49XFx0.net]
A列の2行目以降に値あり、B列の2行目以降に同じ行のA列の値が
上から何回目に出現したかを返す関数として「=COUNTIF($A$1:A2,A2」を使っています。
同じことを配列で使用する方法を教えて下さい。
(A列の値は並び替えをしてあります)

Dim EndRow As Long, r As Long

EndRow = Cells(Rows.Count, 1).End(xlUp).Row
ReDim ary(EndRow, 2)
ary = Range("A2:B" & EndRow).Value

For r = 1 To EndRow - 1
ary(r, 2) = Application.WorksheetFunction.CountIf _
(Range(ary(1, 1), ary(r, 1)), ary(r, 1))
Next r

これだとRangeメソッドは失敗しましたになります。

221 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 18:14:15.70 ID:DEQjmcqBd.net]
>>219
出来もしないこと言ってるバカ?
それとも、それ迄のやり取りすら出来ないバカ?

手作業やExcel数式でやってから言え。
ちゃんとそれ迄のやり取りも読んでから言えよw

222 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 19:58:17.09 ID:VZt6Ms3K0.net]
>>185
批判したいとかそういうもんじゃないんだけど
わりと大きなデータ扱うことに興味があったんでどんなもんか実際やってみた

1カ所分しかやってないんだけど
csvから取得して平均値26280個をシート記入するまで1秒もかかってない感じ
一日ごとの平均は出してないけどこの分じゃそれほど差はないと思う

もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?


も少し情報提供すると
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php#
ここから3年分時間別気温データを、1年ごとcsvにして三個ダウンロード

https://www.moug.net/tech/exvba/0060086.html
これと同じ感じでOpen使って取得
年ごとに必要な気温データのみ1次元配列に入れる

3つの配列を1つの配列にまとめる

平均値入れていく配列AveArrayを新しく作る(あえてString宣言)
あとはforで回しながら過去8時間分のデータを調べてデータない場合の個数を調べて
4つ以上ならAveArrayにN/Aを入れる
4つ未満なら8時間合計して、有効データ数で除算し、AveArrayに入れる

AveArrayを列数1の2次元配列にしてからシートに一括記入

なんかおれ間違ってる?

223 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:07:02.00 ID:ZiXQ0AsVa.net]
こうやって実際にやってみる人は素晴らしいと思う

224 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:15:53.04 ID:/OqMGH1W0.net]
>>220
matchならともかくcountifは配列に対応してない
素直にセルを引数にしてやったほうがいいのでは

225 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 20:17:12.12 ID:JHoncA5/a.net]
countifじゃなくてloopでfindにすればよいのでは

226 名前:デフォルトの名無しさん (ワッチョイ 87da-VQSO) mailto:sage [2020/07/04(土) 22:27:57 ID:VMWug14q0.net]
VBAは手段の一つ、目的はデータの加工ってわりきればすぐ終わる作業なのに
無理してVBAだけでやろうとするからいつまでもおわらない

227 名前:デフォルトの名無しさん mailto:sage [2020/07/04(土) 23:58:08.33 ID:DEQjmcqBd.net]
>>222
ちょっと見た感じほぼ、俺と同じ感じだね。

>もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?

オイオイ、そんな素人なわけ無いだろ。

Line inputを使ったか、それより速いバイナリ読み込み+StrConv使ったかについては覚えて居ない。
まあ、速いといっても劇的に速くなる訳じゃないから、そんなことよりマルチプロセスってことでLine inputのままだったかも。

オレがやった時のデータは日付+24列のデータだった。
貼り付けは元データ込みで、元データの右に8時間平均と1日平均書いたと思うが、もしかしたら8時間平均は出力しなかったかも。

多分読み込みよりも列を増やした二次元配列にして書き込みにも利用してたと思う。

228 名前:デフォルトの名無しさん (スップ Sd4a-aBdg) mailto:sage [2020/07/05(日) 00:48:44 ID:poq4gvQsd.net]
複数のファイルの名前を編集したい

具体的には、全てのファイルのファイル名に、2020と入れたい。

229 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 00:51:15.79 ID:C4Jqu0Op0.net]
DOSコマンドでできる



230 名前:デフォルトの名無しさん (ワッチョイ 27ce-BXkI) mailto:sage [2020/07/05(日) 01:49:00 ID:UMxIfgnY0.net]
>>228
ファイル名のどこに入れるの?先頭?真ん中?末尾?

231 名前:デフォルトの名無しさん [2020/07/05(日) 01:59:51.75 ID:S3+IlzuQ0.net]
>>230
その程度vbaなら自由自在でしょ
バカにしないでください






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<158KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef