X



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
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
できました!
ありがとうございます、完璧です
0837名無しさん@そうだ選挙にいこう
垢版 |
2018/11/01(木) 23:19:17.74
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 2010
【3 VBAが使えるか    .】 否
【4 VBAでの回答の可否】 否

B列にコードが並んでいて、それが正しいパターンかをC列に○×で表示させたいです。
正しいパターンは半角7桁で最初の3桁が英字(大文字)で残り4桁は数字です。

どうすれば条件通りに○×をつけられますか?
0840名無しさん@そうだ選挙にいこう
垢版 |
2018/11/02(金) 01:18:41.21
>>837
=
IFERROR(
IF(
AND(
AND(CODE(MID(A1,1,1))>64,CODE(MID(A1,1,1))<91),
AND(CODE(MID(A1,2,1))>64,CODE(MID(A1,2,1))<91),
AND(CODE(MID(A1,3,1))>64,CODE(MID(A1,3,1))<91),
AND(CODE(MID(A1,4,1))>47,CODE(MID(A1,4,1))<58),
AND(CODE(MID(A1,5,1))>47,CODE(MID(A1,5,1))<58),
AND(CODE(MID(A1,6,1))>47,CODE(MID(A1,6,1))<58),
AND(CODE(MID(A1,7,1))>47,CODE(MID(A1,7,1))<58)
),"○","×"),
"×")

>>838
検討中
実際に決まってるのはjsの方
0843名無しさん@そうだ選挙にいこう
垢版 |
2018/11/02(金) 04:19:57.05
>>840
IFERRORとCODEを使ってる理由、ANDを二重にしている理由の解説きぼん
俺はこんなんでもいいかと思ったんだが、だめなんだろうか、あんまりEXCELに詳しくないんでよくわからん
=IF(AND(LEN(B1)=7,
"A"<=MID(B1,1,1),MID(B1,1,1)<="Z",
"A"<=MID(B1,2,1),MID(B1,2,1)<="Z",
"A"<=MID(B1,3,1),MID(B1,3,1)<="Z",
"0"<=MID(B1,4,1),MID(B1,4,1)<="9",
"0"<=MID(B1,5,1),MID(B1,5,1)<="9",
"0"<=MID(B1,6,1),MID(B1,6,1)<="9",
"0"<=MID(B1,7,1),MID(B1,7,1)<="9"),"○","×")
0844名無しさん@そうだ選挙にいこう
垢版 |
2018/11/02(金) 04:48:18.83
>>843
文字列そのままで比較は怖くて使わないだけ。vbaで挙動が変わったりするしね
でも今回みたいにA-Z、0-9ぐらいなら使っても問題なかったわ

>>840よりも>>843の方が良いと思う
0849名無しさん@そうだ選挙にいこう
垢版 |
2018/11/02(金) 11:02:42.42
TRIMとかINTとFORMATあたりを組み合わせて0000から9999に入ってるかどうか調べる手も考えられるけど、たぶん1文字ずつ判定の方が式が簡単になるんと違う?
誰かヒマなやつ、逃避したいやつ、考えてみてくれ
0850名無しさん@そうだ選挙にいこう
垢版 |
2018/11/02(金) 11:56:38.81
みんないつもVBAでやってて
あえて数式で文字コード以外になんかあったっけ、って考えた人が結構居そう

・・0000〜9999のデータにMATCHを・
0852名無しさん@そうだ選挙にいこう
垢版 |
2018/11/02(金) 15:56:12.56
=AND(
LEN(TRIM(MID(A2,4,4)))=4,
TEXT(VALUE(MID(A2,4,4)),"#")=MID(A2,4,4),
TEXT(INT(MID(A2,4,4)),"#")=MID(A2,4,4),
TEXT(ABS(MID(A2,4,4)),"#")=MID(A2,4,4)
)

>>840が一番だよパトラッシュ・・抜け道あるかもわからん
0854853
垢版 |
2018/11/02(金) 16:35:04.01
=AND(LENB(MID(A1,4,4))=4,ISNUMBER(MID(A1,4,4)*1))
0855名無しさん@そうだ選挙にいこう
垢版 |
2018/11/02(金) 16:41:19.43
>>851
よく気づくねぇこんな事。内部的にどういう処理してるんだろ

>>852
AAZ0001
でだめだった

>>853-854
それは
AAA-234
でも通るって上に出てるじゃん

正規表現使いたい・・・使いたくない?
まぁあんまりテクニカルな事すると漏れが出てくるね
0859名無しさん@そうだ選挙にいこう
垢版 |
2018/11/02(金) 23:04:18.24
>>858
あーlen()いるのか
もうやだー

=
IFERROR(
IF(
AND(
len(a1)=7,
AND(CODE(MID(A1,1,1))>64,CODE(MID(A1,1,1))<91),
AND(CODE(MID(A1,2,1))>64,CODE(MID(A1,2,1))<91),
AND(CODE(MID(A1,3,1))>64,CODE(MID(A1,3,1))<91),
AND(CODE(MID(A1,4,1))>47,CODE(MID(A1,4,1))<58),
AND(CODE(MID(A1,5,1))>47,CODE(MID(A1,5,1))<58),
AND(CODE(MID(A1,6,1))>47,CODE(MID(A1,6,1))<58),
AND(CODE(MID(A1,7,1))>47,CODE(MID(A1,7,1))<58)
),"○","×"),
"×")
0861名無しさん@そうだ選挙にいこう
垢版 |
2018/11/03(土) 00:27:18.10
>>837
作業セルを2つ作って、一つはアルファベット、もうひとつは数字を入れておく
それを使って1文字ずつfind関数に入れていって、全部足したのがエラーになるか判定する
どうかな?
0863名無しさん@そうだ選挙にいこう
垢版 |
2018/11/03(土) 06:19:10.93
大文字と小文字の問題がなあ、無視してくれる関数があるから
UPPERして同じかどうか判定するか
AAA〜ZZZはセルの列アドレスに変換してどうにかならんかな

あと、元の質問はB列の判定だから、サンプル上げるやつはA1じゃなくてB1と書いた方が

>>859
ANDを入れ子にする必要はないだろ
0865名無しさん@そうだ選挙にいこう
垢版 |
2018/11/03(土) 06:33:40.04
=IF(AND(
LEN(B1)=7,
CODE(MID("AAA0000",{1,2,3,4,5,6,7},1))<=CODE(MID(B1,{1,2,3,4,5,6,7},1)),
CODE(MID(B1,{1,2,3,4,5,6,7},1))<=CODE(MID("ZZZ9999",{1,2,3,4,5,6,7},1))
),"○","×")

=IF(IFERROR(AND(
LEN(B1)=7,
FIND(MID(B1,{1,2,3},1),"ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
FIND(MID(B1,{4,5,6,7},1),"0123456789")
),),"○","×")
0870名無しさん@そうだ選挙にいこう
垢版 |
2018/11/03(土) 12:21:50.19
何がすごいってめちゃくちゃテクニカルなのに可読性が全く損なわれてない事
(もちろん配列が読める前提)
正規表現なしでここまで出来るとは恐れ入った
0872名無しさん@そうだ選挙にいこう
垢版 |
2018/11/04(日) 20:59:26.89
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2017
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

VBAについての相談です。

『現在の選択セルがA〜C列の、何れか1セルである』 時に、
キーボードのZ, X, C のそれぞれのキーを押した際、通常の文字入力を行わずに
『Zキーを押したら現在選択中のセルと同じ行のA列のセルを選択し、"〇"を入力して1つ下のセルを選択』
X、C についても同様に
『Xキーを押したらB列のセルに"×"を入力して1つ下に』
『Cキーを押したらC列のセルに"△"を入力して1つ下に』
としたいのですが、どういうコードを書けばいいのでしょうか?

以上、詳しい方ご教授ください・・・
0873名無しさん@そうだ選挙にいこう
垢版 |
2018/11/04(日) 22:32:50.67
単純な1キーの監視はAPI使わないと無理じゃないかな
[ctrl]+[x]とかでいいならOnKeyメソッドでいけるんじゃない
位置判定はActivecellのaddressやcolumnで
0874872
垢版 |
2018/11/05(月) 00:08:33.99
なるほど、[ctrl]+[x]でも大丈夫です。
0875名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 15:49:11.70
【1 OSの種類         .】 Windows10と7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

教えてください。
一般的に、モジュールの名前やフォームの名前を、全角の日本語にするのはリスクがあるのでしょうか?
現在、module1などのデフォルト名と、フォームはF01などの半角英数字のみの名前にしているのですが。
数が増えてくると半角数字+日本語という名前にしたいな、と思っています。
0877名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 16:17:56.46
ぶっちゃけ自由ですが
1に判りやすさ 2に使いやすさ 3に判りやすさ
 mod各種定義 frm01メニュー画面 frm11処理1メイン画面 mod○○系演算処理

VBAコード内で頻繁に使うのであれば、英字オブジェクトのほうが良いですかね、

PG畑の人は育った畑のネーミングルールになると思いますが
プレフィクスに前3文字で種類ぐらいあるといいかな
先頭数字は無理です
0878名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 16:31:15.71
>>872
シートモジュールに
Sub Sample2()
Application.MacroOptions Macro:="Sample1", ShortcutKey:="j"
End Sub

標準モジュールに
Sub Sample1()
MsgBox "aaa"
End Sub

これでctrl+Jでメッセージボックスが出る

どうでもいいけどこれ、「1」「2」「3」
とか入力してあとで置換した方が早くない??
作ってる途中で無意味な気がしてきたんだけど

>>875
一年ぐらい前。accessのVBAで、functionかフォームの
先頭の文字が日本語だとマクロが動かなくなるという絶望的なアプデがあった
他の人が使うファイルなら、避けれるなら避けたほうが良いと思う
自分が使うものならその場で書き換えればいいだけなので、まぁなんとでもなるからどっちでも良いと思う
0880名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 16:50:02.56
自分で入力するリストとかは、○と×はoとxで入力しちゃうな。 あとはooやmやら決めて
キー入力に余計なことやると、文字入力しても影響受けるからお勧めできない
0883名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 18:43:27.32
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ (上司に相談したら駄目だと言われた)
【4 VBAでの回答の可否】 否

口で説明するのが難しい場合、グーグルのスプレッドシートを貼り付けても大丈夫でしょうか?
0885名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 19:27:30.91
>>884
ありがとうございます

https://docs.google.com/spreadsheets/d/1xhIJYvPHB1Th8T28FMbjN527rmZhTbz_lsW-yVEtUUE/edit?usp=sharing
シートを跨いで、データを入れて、最終的には表にしたかったのですが
参照方法を忘れてしまい、処理が出来ません

条件
・実際には1万件近くのデータがあり、来月には更に1万件、来年の今頃にまた1万件来るので
 データのシートに情報を投げ入れて、少し弄る程度で表が横に増やせるようにしたい
・該当する月に取引がない場合は、0を入れたい(nullでも可)

お願いします
0887名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 19:40:08.54
>>883
よくわからんけど
> 【3 VBAが使えるか    .】 いいえ
> 【4 VBAでの回答の可否】 否(上司に相談したら駄目だと言われた)
じゃねーの?
0890名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 19:47:37.64
>>878
エクセルでも起きたよ。ファイルが破損して完全に死ぬから古いエクセル残してない人は積んだ。
ちなみにモジューム名の末尾全角がアウト
0891名無しさん@そうだ選挙にいこう
垢版 |
2018/11/05(月) 22:26:11.53
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

すみません、式を教えてください。
例えば商品があって
A列    B列
商品    合計
にんじん  0
バナナ   0
りんご    0
味噌汁   0
にんじん   1
団子     0
バナナ    1
にんじん   2
以下同じように続く・・・

というように同じ商品が出たら合計が1つずつ加算される関数を教えてください。
最初は0にしたいんです。次が1で同じのを入力すれば1ずつ増えるようにしたい。
よろしくお願いします。
0896名無しさん@そうだ選挙にいこう
垢版 |
2018/11/06(火) 11:05:03.80
>>890
も・・モジュール名だけだよな、きっと、
personalのプロシージャはめっちゃ日本語だらけだ。 mac背景色赤()とか
モジュール名は気を付けよう。
0899名無しさん@そうだ選挙にいこう
垢版 |
2018/11/06(火) 15:04:21.88
漢字で書ける内容なら文字数(バイト数)が減って行が短くできるのが日本語のメリットだな
カタカナで書くぐらいなら英語使うけど
■ このスレッドは過去ログ倉庫に格納されています

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