X



Excel総合相談所 136

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@そうだ選挙にいこう
垢版 |
2019/07/27(土) 17:47:29.09
【1 OSの種類         .】 Windows**
【2 Excelのバージョン   】 Excel**
【3 VBAが使えるか    .】 はい・いいえ
【4 VBAでの回答の可否】 可・否

▼━関連スレ━━━━━━━━━━━━

前スレ
Excel総合相談所
https://find.5ch.net/search?q=excel

Excel VBA 質問スレ
https://find.5ch.net/search?q=excel+vba

【質問不可】Excel総合相談所スレの雑談・議論スレ
https://find.5ch.net/search?q=excel+%E3%80%80%E7%9B%B8%E8%AB%87%E6%89%80
0437名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 22:21:47.09
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 勉強中
【4 VBAでの回答の可否】 可

数式や関数がたくさん入っていて非表示になっているシート1があるとします。
VBAで、このシートのコピー(各セルの値はすべて値を貼り付け的な処理をして関数や数式は残さない)
を別ファイルとして保存することは可能でしょうか?

可能なのかどうか、また、できればそのコード(長くなるならヒントだけでも)を教えてください。
0439名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 23:37:15.59
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 可
【4 VBAでの回答の可否】 可

特に質問はないので、一応テンプレだけ。
0441名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 00:38:59.27
>>437
ようは、マクロの記録でも出来る
そのマクロコードでオブジェクトやプロパティの意味を知りたければドラッグしてF1押せばマイクロソフトのサイトで解説してくれる
0442名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 08:57:40.67
>434

ありがとうございます!

まだパッと見てもわからないので(笑)
少し夜考えてから質問させてください!

写真まで丁寧にありがとうございます(^◇^)
0443名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 15:59:20.40
>434

何分か見比べてみました。何となくわかります!(笑)
画像つきで丁寧に教えていただきありがとうございます(^^)

VLOOKUP関数なるものは、検索してわかりました。(IFERRORも)
これを使うには、入力シートが、横に項目1・2と続く場合に
拾うというものですよね。縦のものを拾う関数は存在しないんでしょうか。

お弁当屋さんなんですが、結構デザートまで入れると6種目あって、
メニューの品名も長くて。縦に項目1・項目2として、それを反映する関数だと
一番入力する人間もわかりやすいのかなって思ってしまい・・・

でも、これが一番よいのかも!?
0444名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 17:07:27.43
>>443
一応、HLOOKUPというものもある
今年後半からXLOOKUPというのも出るそうだ

VLOOKUPよりindex+matchの方が使い勝手良いから使ってきたけどXLOOKUPの方が楽かもしれない
0445434
垢版 |
2019/08/29(木) 19:48:56.33
>>443
まさか”メニュー”という言葉が出てくるとは!
自分は現在、福祉NPOに関わってて、ボランティアでパソコン関係の支援をしてます。
NPOの調理部門のメニュー表作成で以前作ったもののイメージをアップしたので参考にしてください。
https://i.imgur.com/rtRqHo9.png
左側のシートは”DB”シートです。同じ日付で4行あるのは、朝・昼・夕・おやつ の4種類のためです。
VLOOKUPの対象となるのはC列〜I列です。
出力側シートのC11セルの計算式が見えてますが、おもしろいことに「昼食」の欄(C9:C13)の計算式は
全て同一です。計算式中の ROW()-7 の部分で自動的に引用する列をずらしているからです。
C11セルなので ROW()-7 の結果は 11-7=4 → VLOOKUPの対象となるのはC列〜I列なので
4列目にあたるF列の値が引用されます。
0451名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 20:57:04.85
vlookup 初級者
indexとmatchで 初級者+
vlookupmatch 中級者

実務で間違いが起こらないように数式を組み立てる事が出来る、これが一番大事
技術が幾ら凄くても間違ってたら駄目なんだ
0456名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 22:52:34.65
I列にゼロがあれば、そのセルをクリアにするようにしたいのですが


For Each c In Range("I:I")
If c <= 0 Then
c.Clear
End If
Next c

これだと結構時間がかかります。
早くするコードをおしえてください
0458名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 23:01:22.17
>>456
オートフィルタかけたらいかんの?
range("a:i").autofilter field:=9,criteria1:="<=0"
range("i:i").clear
range("a:i").autofilter
0460名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 23:03:25.06
>>456
Sub Macro1()
列 = 9
最終行 = Cells(Rows.Count, 列).End(xlUp).Row
For i = 1 To 最終行
If Cells(i, 列) = 0 Then
Cells(i, 列).Clear
End If
Next
End Sub

>>457-459
お、お前等
シートの最終行まで見てる事が遅い原因だぞ
0462名無しさん@そうだ選挙にいこう
垢版 |
2019/08/29(木) 23:36:30.59
Excelの機能でできることはExcelの機能で実現しないと遅くなるよな
0465名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 01:14:28.40
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

あいうえおおおかき(abcd)くけこさ(efef)しすせそた(gggg)ちつてと

上のようなパターンの文字列がありまして、いくつか(多くて5つくらい)のカッコで囲まれた文字列を除く計算式が知りたいです

結果こうなりたい
あいうえおおおかきくけこさしすせそたちつてと

置換Ctrl-Hじゃなくて計算式でよろしくおねがいします。
0469名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 12:56:01.44
>>465
ユーザー定義関数使っていいなら出来るが
VBA否だからなあ
0470名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 16:37:36.69
特選!黒板チョークアートがギッシリ満載!無料イラスト商用OK
https://56emon-cafe.com/kokuban-art-osusume-ac
カフェイメージ特選13作!無料イラスト商用OK.クレジット表記不要!
https://56emon-cafe.com/cafe-sozai-osusume-ac
【無料ダウンロード】美しい!マンダラ模様20選! 商用利用も可能
https://www.seleqt.net/design/free-mandala-vectors/
イラストレーター ぶらおさんの無料イラスト
https://www.pinterest.jp/pin/589479038700927178/
https://www.ac-illust.com/main/profile.php?id=NbsX7TdR
フリーオシャレ素材 VintageVillageヴィンヴィレ
http://vinvill.com/
無料&商用OK!子供向け&アートなアルファベット・数字素材
https://kmy.website/kids-art-alphabet/
ロゴ作成ツール11選 無料でおしゃれなデザインを簡単に作れる!【商用OKも】
https://mag.app-liv.jp/archive/119964/
過去最大級!ナチュラル手描きイラスト素材集75万円分が
99%オフの破格セール中(水彩・パステル・線画)
http://photoshopvip.net/117245
文字をかっこよくデザインする!すごいPhotoshopテキストエフェクト厳選66個まとめ【2019年版】
http://photoshopvip.net/107585
0471名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 16:44:13.85
VBA実行ファイルと同じフォルダ内に複数のCSVファイルがあり、そのCSVの各ファイルのA〜Gの2行目以降を
コピーしてVBAを実行するBookの“日報”と言うシートに張付けて、行を累積していくコードを教えてください。

それぞれのCSVファイルの最終行はA行の最後です。
0472名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 17:47:17.95
>>471
何かの試験問題か?
>A行って何?
A~G言うから、これ列指定かと思ったら行と来たもんだ?
そもそも、どういう構造のCSVやねん?
0473名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 19:10:25.27
複数のシート間で対応するセル同士を相互リンクするのって関数じゃ無理ですか?
どちらで更新しても全てに反映されるような
0474471
垢版 |
2019/08/30(金) 19:39:32.82
>>472

すみません。A列でした

それぞれのCSVファイルはA列〜G列に文字が記入してあります。
0477名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 21:03:23.47
>>471
CSVファイルの指定はどうやって行うの?
ダイヤログ?.csv全部?あと順番は?
フォルダへのCSVファイルの移動(またはコピー)は手動?重複チェックは必要?
0479名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 21:06:38.19
>>471
あと、素朴な疑問だけど、日報もCSVじゃダメなの?日報がCSVでよければコードは超簡単になるんだけど
0480名無しさん@そうだ選挙にいこう
垢版 |
2019/08/30(金) 23:11:57.67
>>473
相互参照の必要性が全く無い
それが出来ないと不便なことがあるのか?
0481名無しさん@そうだ選挙にいこう
垢版 |
2019/08/31(土) 00:05:38.52
>>465です
普通の関数だけではできないんですね
ユーザー定義関数ならできそうですか よろしくお願いします
0483471
垢版 |
2019/08/31(土) 00:57:04.22
>>477

・フォルダ内のCSV全てです
・CSVファイルは手動でフォルダに入れます
・重複チェックは必要ありません
・順番は不順です
0484名無しさん@そうだ選挙にいこう
垢版 |
2019/08/31(土) 03:40:16.87
>>483
処理速度は考慮してない
--------------------
Const PATH = "フォルダパス\"
Dim cnt As Long
Dim fname As String
Dim buf As string

cnt = Cells(Rows.Count, 1).End(xlUp).Row
fname = Dir(PATH & "*.csv")
Do While fname <> ""
 Open PATH & fname For Input As #1
 Line Input #1, buf '※
 Do Until EOF(1)
  Line Input #1, buf
  If Split(buf, ",")(1) = "" Then Exit Do
  cnt = cnt + 1
  Range(Cells(cnt, "A"),Cells(cnt, "G")).Value = Split(buf, ",")
 Loop
 Close #1
 fname = Dir()
Loop
End Sub
--------------------
※は1行目が必ずある前提。無いなら別の処理がいる
0485名無しさん@そうだ選挙にいこう
垢版 |
2019/08/31(土) 12:32:40.90
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否


A B
1 3
2 1
3 5
4 2
5 4

列Aと列Bを比べて3と5は2つ順位が上がったとして
列Aより列Bの数字が2つ以上順位が上がった事を見つける数式
また該当数字のセル色を変える方法はありますか?
よろしくお願いします
0487名無しさん@そうだ選挙にいこう
垢版 |
2019/08/31(土) 13:39:11.18
>>485
同じ行同士比較するんであれば、条件付き書式(数式利用)で、作業列使わずにできますよ。
1行目からデータがあるのであれば、A1:A5(実際にはデータがあるところまで)のセル範囲を選択しておいて
ア リボン → ホーム → 条件付き書式 → 新しいルール → 数式を使用して、書式設定するセルを決定
イ 数式を入れる欄に =A1<=B1-2 と入力
ウ [書式]ボタンをクリック
エ 塗りつぶしのタブをクリック → 塗りつぶす色を指定 → [OK]をクリック
オ [OK]をクリック

A列の値 <= B列の値から2を引いた数字 が成り立てば「2以上順位が上がった」としています。
A列の値にゼロがありうる場合は、 =AND(A1>0,A1<=B1-2) でいいかも(試してません)
0489名無しさん@そうだ選挙にいこう
垢版 |
2019/09/01(日) 02:15:05.40
このソフトを快適に動かせるPCのスペックってどこを重視すればいいんでしょうか?
IEとかも動作させたりするせいか
結構重いのです
0490名無しさん@そうだ選挙にいこう
垢版 |
2019/09/01(日) 06:31:47.40
>>489
メモリー

CPUは基本的に食わない。VBA使ってて消費量が多ければコードを見直す方がいい
0493名無しさん@そうだ選挙にいこう
垢版 |
2019/09/02(月) 00:44:16.58
https://moripro.net/vbaie-gethtml/

こちら検索して出てきたもので、これをそのまま使って起動済み画面のHTMLを取得しています
しかし、目的の画面のHTMLを読み込んだ後、処理@〜B(リンクをクリックする、テキストボックスに記入するなど)を入れると、
Aを飛ばして@Bと遷移するときと@~Bとうまく遷移することがあります
この違いはなんでしょうか?回避方法ありませんか?
0496名無しさん@そうだ選挙にいこう
垢版 |
2019/09/02(月) 18:49:41.47
380で質問した者です。

質問に対し、フィルタオプションを使用してみては?
とご回答くださり、その場は対応できたのですが、質問に大事な事を書き忘れました。
売上表は複数シートからの抽出された、昇順並び替えをしている可変データになります。
そのため、フィルタオプションだと、データが変わるとフィルタオプションでは
設定した時の抽出状態なので、やはり式の修正が良いのではと思っています。
再度質問して申し訳ありませんが、式の修正で良い方法があったらご教示くださるとありがたいです。
0500名無しさん@そうだ選挙にいこう
垢版 |
2019/09/02(月) 21:30:10.72
>>497
>>498
496です。498さんの式でできました。ありがとうございました。
0501名無しさん@そうだ選挙にいこう
垢版 |
2019/09/02(月) 22:22:02.33
>>499
ユーザフォーム一つ作ってパスワード入力用のテキストボックスを置く
保護ボタンとか解除ボタンとか付けて、それ押したらそのテキストでブック保護切り替え、シート表示切替やるだけ
シート上かメニューに呼び出し用ボタンか何か作ってそのマクロを呼び出す
但し、個人で使う用なら関係ないが、他人も使うなら運用でExcelのメニューにある「ブックの保護」を使わないようにしてもらう必要がある
XMLでリボンメニューも弄れるが、そこまでするほどのもんでもない気がするので興味あったらやればいいんじゃないかな
0503名無しさん@そうだ選挙にいこう
垢版 |
2019/09/03(火) 13:34:41.33
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2012
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 不可


関数を教えてください。

セルのT2に「2019/8/19」のような日付の値が入っています。

そこで、毎月20日を締め日として

2019/8/19 なら 2019_8 

2019/8/21 なら 2019_9 と返す関数として

=(YEAR(T2)-IF(MONTH(T2)*100+DAY(T2)<=220,1,0))&"_"&(IF(DAY(T2)>20,MOD(MONTH(T2),12)+1,MONTH(T2)))

を使っています。この関数に、「U2のセルが空欄ではなかった場合、1ヵ月繰り上げる」という条件を追加した式を教えてください。
0511名無しさん@そうだ選挙にいこう
垢版 |
2019/09/03(火) 14:56:22.22
もっと短くできそうなんだけど、俺にはこれが限界だった
=TEXT(DATE(YEAR(T2)-(MONTH(T2)+(DAY(T2)>20)-(U2<>"")<3),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1),"yyyy""_""m")
0521名無しさん@そうだ選挙にいこう
垢版 |
2019/09/03(火) 21:05:34.39
一応できたけど、式が汚すぎる
=TEXT(DATE(YEAR(DATE(YEAR(T2),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1))-(MONTH(DATE(YEAR(T2),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1))<=2),
MONTH(DATE(YEAR(T2),MONTH(T2)+(DAY(T2)>20)-(U2<>""),1)),1),"yyyy""_""mm")
0525名無しさん@そうだ選挙にいこう
垢版 |
2019/09/03(火) 21:57:09.35
>>522
どれも間違ってるからだよ
質問の文章には書かれてないけど、例示された数式を見ると年度の変わり目が3月になってて、誰の回答もそれが反映されてない
0530名無しさん@そうだ選挙にいこう
垢版 |
2019/09/03(火) 22:49:16.17
>>503
繰り下げ?を直して年度にしたわ、汚いわ
U2が空白でない場合、2019/8/19なら2019_7、2019/8/21なら2019_8と表示されるぞ

=YEAR(EDATE(T2,IF(DAY(T2)>20,1,0)+IF(U2<>"",-1,0)-2))&"_"&MONTH(EDATE(T2,IF(DAY(T2)>20,1,0)+IF(U2<>"",-1,0)))
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況