Excel総合相談所 132

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@そうだ選挙にいこう
垢版 |
2018/07/01(日) 12:22:32.86
▼━質問テンプレ (出来れば使ってね) ━━━
【1 OSの種類         .】 Windows**
【2 Excelのバージョン   】 Excel**
【3 VBAが使えるか    .】 はい・いいえ
【4 VBAでの回答の可否】 可・否

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

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

Excel VBA 質問スレ Part51(1000到達済み)
https://find.5ch.net/search?q=excel+vba

【質問不可】Excel総合相談所スレの雑談・議論スレ4
https://find.5ch.net/search?q=excel+%E3%80%80%E7%9B%B8%E8%AB%87%E6%89%80
0736名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 12:22:19.04
>>735
出力されたデータはどこかに保存されるわけではなく、そのまま開いた状態。
既に開いているエクセルのファイル(ファイル名不明)を別のエクセルで開いたブックからvbaで取得する方法があればと。
0738名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 14:03:22.65
カレンダーって言うと職場の男は昔ヤクザやってたらしいが
悪い元先輩に「お前、俺等が出演してるカレンダー買えよ!」と言われ
一つ四万円でも無理やり買わされたって言ってたな
買ったのを見せてもらったがヤクザ達が刺青出してふんどしになり
海岸でポーズ決めてる写真ばっかりでクソワラタw
0740名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 15:52:20.57
>>736
VBAでWorkbooksコレクションオブジェクトというのを使えば、今開いているブックの一覧を簡単に調べることができます
あとは、セルの内容とかシート名などを頼りに、目的のブックを機械的に見つける方法があるかどうかですね
0741名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 16:45:49.87
まあ、シート1の名前とかA1の値とか。なんか識別はできるだろう

もう1つの方法。自分だけしか使わない自分用なら
Personalにマクロ作って、開いた状態で実行して結果を別のBookにするとかでもいい
実行する時は「ペルソナー!」って叫ぶ
0742名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 18:41:31.88
【1 OSの種類         .】 Windows7Pro
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 はい(マクロをボタンに登録して使うくらい)
【4 VBAでの回答の可否】 可

vlookup参照をVBAで最終行まで繰り返し処理したいです

具体的には、
A4からA列の一番最後の行を調べて
C4=VLOOKUP(A4,H4:J100,3,FALSE)
をC列でA列の最後の行まで繰り返したい
H4:J100の範囲はH4からH列の一番最後の行のJ列までにしたい

前提としてA列とH列は途中に空欄ありません
H列に無くてA列にある値があります。その場合N/Aではなく空欄にしたいです
0744名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 19:07:31.18
>>742
Sub Macro3()
Dim rowA As Long
rowA = Range("A4").End(xlDown).Row
Dim rowH As Long
rowH = Range("H4").End(xlDown).Row

Range("C4").Formula = "=IFERROR(VLOOKUP(A4, H$4:J$" & rowH & ", 3, FALSE), ""\(^o^)/"")"
Range("C4").Copy Range("C5:C" & rowA)
End Sub
0746名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 20:03:06.38
>>744-745
>>742です
早速ありがごうございます
希望通りでした
古い客先一覧から客先の増えた新しい客先一覧に更新するのに
列で古い一覧で決まってる担当の列を新しい一覧に転記したかったです
なので毎回行が増えたり減ることもあります

ところで古い客先一覧で担当の列が空欄だった時、
新しい一覧に転記されて空欄になるのと0になるのがありますが
なぜか分かりますでしょうか?
古い一覧に白色で見えない0が入力されているのかと思いましたが
本当に空欄でした
0747名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 20:11:51.37
お世話になっております
ご質問の問題について調査を行いましたところ
H列にありj列に無いケースについては要件定義に明記されていなかった事から、
想定外のケースであることがわかりましたが
変更およびテストの実施はリリースに間に合わない恐れがある為
しばらくは運用にて対処いただけませんでしょうか?
ご理解ご協力の程宜しくお願い申し上げます
0748名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 20:40:27.16
>>747
お世話になっております
手入力でC列にVLOOKUP関数を入力コピペしても同じ結果になりました
J列に空欄があるとC列はそのまま空欄になると思うのですが
C列のVLOOKUPの結果が空欄になる時と0になる時があるのは何が原因でしょうか
データに問題があると思うので改善したいと思います
0749名無しさん@そうだ選挙にいこう
垢版 |
2018/10/23(火) 21:18:45.38
>>734
自分が良く使う方法はインプットボックスでセルを指定してそのrangeオブジェクトからparentでワークシートとワークブックを変数にセット
0750名無しさん@そうだ選挙にいこう
垢版 |
2018/10/24(水) 01:40:55.22
>>747
お世話になっております
>>746ですが自決しましたので下記ご報告申し上げます

Range("C4").Formula = "=IFERROR(VLOOKUP(A4, H$4:J$" & rowH & ", 3, FALSE), ""\(^o^)/"")"
以上部分を
Range("C4").Formula = "=IFERROR(VLOOKUP(A4, H$4:J$" & rowH & ", 3, FALSE)&””””, ""\(^o^)/"")"
に修正してJ列の空欄はC列に空欄で返すようにできました

ただVLOOKUPで参照先が空欄だった時スペースも入力されていないにも関わらず
0になる時と空欄になる時があるのが謎です
後学の為ご存じでしたらご教示いただけませんでしょうか

お忙しいところお手数ですがよろしくお願い申し上げます
0753名無しさん@そうだ選挙にいこう
垢版 |
2018/10/24(水) 09:57:52.95
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

初心者です。
工事毎作成する複数のシート(※1)の数値をデータベース用の他ブックのシートに工事毎に転記しています。
現在は工事が発生する事に保存してある(※1)原紙を該当工事用に更新し、保存後データベースにハイパーリンクを設定していますが、
いちいちハイパーリンクの設定をするのが大変なので、一連の流れを自動化は出来ませんか?
0756名無しさん@そうだ選挙にいこう
垢版 |
2018/10/24(水) 19:15:07.48
できるよ 要は単票フォームのデータをテーブルに保存/テーブルから読み出しできるようにしたいんだろ
Access使えない環境だとそういうのはときどきつくったりする VBA必須だけどな
0758名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 00:18:43.72
できるかできないかでいえばできる ただしVBA使用が条件 別におかしくはない
このスレではひとりのことをみんなっていうのかな
0759名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 00:25:30.96
このvbaが使えるかって設問、そろそろ見直したほうがいいかもね

・本人がvba使えるかどうか
こんなことどうでもよくて、覚えろって話

・職場環境的に絶対に使えない
じゃあ仕方ないね

となる
0760名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 02:13:42.49
出来るかでいえば、VBAでペンタゴンハッキングできる人も居るかもしれないが

とりあえず、VBA無しの範囲=数式とリボンの中のものとして
固定のデータソースから値を取ってきて計算まで

処理 となるとマクロコピペぐらい要るかなあ。
0762名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 08:04:13.21
3.より4.でしょ
ちゃんとテンプレに従って
> 【4 VBAでの回答の可否】 否
って書いてあるのにVBA必須の回答するとか頭おかしい
0764名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 08:08:42.46
そもそもVBA使った回答なんかしてないだろう どこにVBA記述してるんだ
できるって書くことすらだめなのか なんなのこのスレ
0772名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 10:24:29.05
VBA可で質問しているのに自己解決出来ないなら使わない方が良いんじゃね?と思う
職場なりで多数の人が使う場合は特に
0774名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 11:59:21.05
オフィス2019って一般人はいつ買えるんですか?
今後数週間のうちにリリースと、1ヶ月前に見た気がするんですが。
あと、excelしか使わないんですが、オフィス2019発売の際、バラ売りしてくれますか?
それともバラ売りは少し発売日が遅れる、もしくはバラ売り自体やらないんでしょうか?
0775名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 12:23:56.77
会社で自分以外が使うブックには基本VBAは入れないな。
あいつらファイル参照や自動作表どころか単純な関数すら別のブックにシートコピーとかやって効かなくして壊れたと騒ぐ。
0778名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 13:07:13.85
Office2019は海外Amazonとかだともう売ってるんだよな
日本語版はまだらしい。いつになるかは分からなくてすまん
ただ、2019の新機能はOffice365にしてればアップデートでもう反映されてる
0781名無しさん@そうだ選挙にいこう
垢版 |
2018/10/25(木) 21:27:07.14
2019使ってるけど、正直そこまで・・・感
OCRもグダグダだし、SORT関数もそもそもVBAでさんざんやってきたこと
まぁ2019がデフォの世代はすごく生産性が高いだろうね
0783名無しさん@そうだ選挙にいこう
垢版 |
2018/10/27(土) 18:22:00.94
【1 OSの種類         .】 すみません、分かりません…
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

分かる方いたら教えてください。

A1セル:10
B1セル:15
C1セル:5

であったときに、
@A1からC1の間で、一番大きい数のセルを選んでください。
AA1が1番大きかった場合はAを、B1が1番大きかった場合はBを、C1が1番大きかった場合はCを返してください。

この2つの関数を組み合わせたいのですが、教えて頂けませんか?
よろしくお願いします。
0784名無しさん@そうだ選挙にいこう
垢版 |
2018/10/27(土) 19:09:56.85
excelの差分ツール教えて
いままでAiperDiffexを便利に使ってたんだけど、
Win 10にしたら調子悪くなってしまった
スクロールすると波打つ感じ
0786名無しさん@そうだ選挙にいこう
垢版 |
2018/10/27(土) 21:46:16.79
rwat
0788名無しさん@そうだ選挙にいこう
垢版 |
2018/10/28(日) 07:35:47.74
>>785、787
785の方の3つめの式で解決しました!
ありがとうございました!助かりました!!
787の方も回答下さりありがとうござきました!
0789名無しさん@そうだ選挙にいこう
垢版 |
2018/10/28(日) 07:36:42.80
>>785、787
785の方の3つめの式で解決しました!
ありがとうございました!助かりました!!
787の方も回答下さりありがとうござきました!
0790名無しさん@そうだ選挙にいこう
垢版 |
2018/10/28(日) 14:33:15.29
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010
【4 VBAでの回答の可否】 可

シートにテーブルTable1がありまして列3と列5だけをCSVで出力したいのですが
よろしくおねがいします。
行数は日々変動いたします。
0792790
垢版 |
2018/10/28(日) 21:44:41.92
>>791
具体的にデータを作りました

テーブル1(Table1)
番号, 都市, 名前, クラス, 判定
1002, 東京, 山本, A組, o
1003, 千葉, 戸田, B組, o
1005, 東京, 鈴木, A組, x
 ・
 ・

これを下のようにCSVで出力です

名前, 判定 改行
山本, o 改行
戸田, o 改行
鈴木, x 改行

アドレスではなくテーブル名と列名を使った構造化参照での回答がありがたいです
0795790
垢版 |
2018/10/28(日) 22:17:08.21
>>794
これと同じ操作がテーブル違い列違いで30テーブルくらいあるんですよ
0796790
垢版 |
2018/10/28(日) 22:19:24.91
そして最低週1回以上のCSVデータの更新が必要でして
0797名無しさん@そうだ選挙にいこう
垢版 |
2018/10/28(日) 22:21:45.86
テーブルをどうやって指定するかとか、csvファイルの名前や保存場所をどうするかとか、色々ある。
inputboxで指定するのか、シートにテーブルは1つと決まっていてそれを自動で取得するのかとか。
自分で作らないと思うようにできなさそう。
0799名無しさん@そうだ選挙にいこう
垢版 |
2018/10/28(日) 22:40:08.59
【1 OSの種類         .】 Windows** 7
【2 Excelのバージョン   】 Excel** 365(体験版みたいなやつ)
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

今まで24型モニタDPI=100%で印刷していたのを
27型モニタDPI=117%で印刷しようとしたところ、印刷範囲がずれてました。

原因はDPIみたいで、最初に作ったのがDPI=100ならば、それが基準になるので
新しい環境に変えてもDPI=100%しなければならないとの事で
これを踏まえての質問があります。

DPI=100%以外の数値でも、印刷範囲をずれなくする方法を
液晶モニタを変える 解像度を変える 以外であれば教えてください

1年に十数ファイルも印刷するので、特定のファイルにのみ効果を及ぼす方法は駄目です。一度設定すると今あるファイルは勿論、今後作成するファイルにも
影響する方法が望ましいです。

Windows10にする Excel2019にする 特定のシェアウェア フリーウェアを導入する等、あらゆる方法をOKとします。
0800名無しさん@そうだ選挙にいこう
垢版 |
2018/10/28(日) 22:48:30.75
>>790
Sub TEMP()
Dim TBL As ListObject
Dim RowClient As ListRow

Set TBL = Worksheets("Sheet1").ListObjects("Table1")

Open "D:\TEMP.CSV" For Output As #1

Print #1, TBL.HeaderRowRange(3) & "," & TBL.HeaderRowRange(5)
For Each RowClient In TBL.ListRows
Print #1, RowClient.Range(3) & "," & RowClient.Range(5)
Next

Close #1
End Sub
0802790
垢版 |
2018/10/28(日) 23:49:18.82
>>793
>>800
ありがとうございます 
いただいた情報を参考にしなが自分なりに作成してみます
0803名無しさん@そうだ選挙にいこう
垢版 |
2018/10/29(月) 10:44:11.51
>>790>>795 について
全シートの3・5列をCSVで出す。より
全シートを1つにまとめたシートかCSVを作る マクロを作っておいたほうが将来的に楽よ

シート名,行番号,A列,B列・・ の1つにまとまったものがあれば
今回の要望も手作業のコピペ+出力で足りる可能性がある
0804名無しさん@そうだ選挙にいこう
垢版 |
2018/10/29(月) 10:53:59.87
>>799
ディスプレイの設定が印刷に関わる?
Excelのバージョン、OS、プリンタとプリンタドライバは同じなのかな。

印刷範囲の設定がちがちにして、余白に余裕があれば、PC変えても大概ズレないが
環境により印刷可能サイズが狭くなるので、ギリギリの%指定で作ってるとたまにはみ出す

A. もし印刷だけの資料なら、PDFにしてしまったほうが確実
0805名無しさん@そうだ選挙にいこう
垢版 |
2018/10/29(月) 11:51:46.27
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ(マクロの記録程度なら可)
【4 VBAでの回答の可否】 可能であれば使わない方法で、使わなければ解決しないようであれば使った回答をお願いします。

直撮りで申し訳ないのですが、画像のような表で、17行目の@〜Eに、空白を除き、各行ごとに比較して、各列(H31〜H26)に最小値が入っている個数をカウントしたいです。
例えば、
@は10行目の1908と16行目の1913の2個が最小値なので「2」
Aは14行目の1805が最小値なので「1」
Bは最小値が無いので「0」
と表示させたいです。
COUNTIFやMINを使ってやってみたのですが、うまく行きません。ご教授よろしくお願いします。

https://i.imgur.com/jd1K1JD.jpg
0806名無しさん@そうだ選挙にいこう
垢版 |
2018/10/29(月) 11:58:29.79
>>805
追記
たとえば@に入る関数を示していただければ、A〜Eについては引数を変える程度はできますので、1つ例として挙げていただくだけで結構です。
よろしくお願いします。
0808名無しさん@そうだ選挙にいこう
垢版 |
2018/10/29(月) 13:18:49.24
別シートで、最小値かどうかを1,0で保持する
そこの縦で1のカウントをとる

Sheet2のA2に =IF(A2=MIN($A2:$H2),1,0) で票の範囲全部にコピー
@〜には=COUNTIF(A$1:A16,1)

いっぱいシートがあったり、行数がちょくちょく変わるのであれば。。。困ったな
0811名無しさん@そうだ選挙にいこう
垢版 |
2018/10/30(火) 00:07:43.93
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

2019から搭載されたideasって機能が見当たらないのですが、
表示させるにはなにか操作が必要なのでしょうか?

https://i.imgur.com/exstLyf.png
shareの下辺りに出ると思うのですが
0814名無しさん@そうだ選挙にいこう
垢版 |
2018/10/30(火) 02:04:22.42
AIとか搭載されたのか、知らなかった。

そのうち「先月と同じ報告書」って入力したら同様の書類全部作ってくれるようになるな
0815799
垢版 |
2018/10/30(火) 02:18:29.75
>>801
えー マイクロソフトは何年も前から仕様です で済ませてるし
全然改善しようしないですよね。VBAはよく判らない><

>>804
液晶モニタのみ買い換えたんですよ 他は同じです
毎日の売り上げを基調してるんで、pdfオンリーではないです><
0819名無しさん@そうだ選挙にいこう
垢版 |
2018/10/30(火) 12:56:23.48
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 はい(コピペして一部編集して使うくらいのレベル)
【4 VBAでの回答の可否】 可

表の構成が同じSheet1とSheet1(1)があります
最終行はSheet1とSheet1(1)で違います
A列をA5から順番に1つ1つ下に見てA列が一致するB列以降をSheet1(1)からSheet1に
B列以降の列を値で貼り付けしたいです
B列からどこまでコピペするかは変えるかもしれないので簡単に変えられるようにしておきたいです
要はvlookupのようなことがしたいですが
vlookupだと式を1列ずつコピーして値で貼り付けになり時間かかるので
値でいきなり貼り付けたいです
0820名無しさん@そうだ選挙にいこう
垢版 |
2018/10/30(火) 17:24:06.12
>>819
Sub 探すで()
Dim Y1 As Long
Dim Y2 As Long
Dim X As Long
Dim r As Range
Const START_ROW As Long = 5
Const COPY_MAX_COL As Long = 20

On Error GoTo eH
Application.ScreenUpdating = False
For Y1 = START_ROW To Sheet1.Cells(START_ROW, 1).End(xlDown).Row '、空白でストップ
Set r = Sheet2.Columns(1).Find(Sheet1.Cells(Y1, 1).Value, , , xlWhole) 'A列で探す
If Not (r Is Nothing) Then
Y2 = r.Row
Sheet2.Range(Sheet2.Cells(Y2, 2), Sheet2.Cells(Y2, COPY_MAX_COL)).Copy
Sheet1.Cells(Y1, 2).PasteSpecial xlPasteValues
End If
Next Y1
eH:
Application.ScreenUpdating = True
End Sub
0822名無しさん@そうだ選挙にいこう
垢版 |
2018/10/30(火) 18:47:42.15
>>820-821
できました!
アレンジして使いたいと思いますが質問あります

Const START_ROW As Long = 5は5行目から須田とかと思うのですが、
Const COPY_MAX_COL As Long = 20は横幅は20列がコピーするMAXという意味でしょうか?

塗りつぶした色付きでコピーすることできるでしょうか?
0823名無しさん@そうだ選挙にいこう
垢版 |
2018/10/31(水) 03:01:16.47
シートAに
シートBのB列からシートAのAB9と同じ文字の行を探し
シートBのその行のCQ列の文字をシートAに入力したいのですか

その計算式を
=IF(ISERROR(VLOOKUP($AB$9,シートB!$B:$CQ,85,FALSE)),"",IF(VLOOKUP($AB$
9,シートB!$B:$CQ,85,FALSE)="","",VLOOKUP($AB$9,シートB!$B:$CQ,85,FALSE)))
としたのですが

なぜか
CQではなくCH列の文字を入力します

シートAに
シートBのB列からシートAのAB9と同じ文字の行を探し
シートBのその行のCQ列の文字をシートAに入力したいのですか
その計算式を教えてください 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
0827名無しさん@そうだ選挙にいこう
垢版 |
2018/10/31(水) 06:33:34.51
=L26*U26が
L26とU26の値が無いの場合は

♯VALUE!
になってしまいます

これを♯VALUE!ではなく空白にするには
=L26*U26をどうすれば良いですか?
0830名無しさん@そうだ選挙にいこう
垢版 |
2018/10/31(水) 11:36:21.00
>>822
値でコピーしたいというので値コピーだけにしちゃった。
VLOOKUPにならないようにってことね

全コピーでOKなら 中央を差し替え。
If Not (r Is Nothing) Then
Y2 = r.Row
Sheet2.Range(Sheet2.Cells(Y2, 2), Sheet2.Cells(Y2, COPY_MAX_COL)).Copy Sheet1.Cells(Y1, 2)
End If
0831822
垢版 |
2018/10/31(水) 17:51:04.04
>>830
できました!
ありがとうございます、完璧です
■ このスレッドは過去ログ倉庫に格納されています

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