X



Excel総合相談所 140
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@そうだ選挙にいこう
垢版 |
2020/07/21(火) 08:00:43.48
【1 OSの種類         .】 Windows**
【2 Excelのバージョン   】 Excel**
【3 VBAが使えるか    .】 はい・いいえ
【4 VBAでの回答の可否】 可・否

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

前スレ
Excel総合相談所
https://find.5ch.net/search?q=excel+%E7%9B%B8%E8%AB%87%E6%89%80

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
0002名無しさん@そうだ選挙にいこう
垢版 |
2020/07/21(火) 08:21:42.45
関数を使って集計する方法を教えていただけないでしょうか。
index matchの組み合わせもしくは、sumifもしくはindex match sumifの複合で表示させたいです。

画像の出荷と書かれたセルに関数を入れて集計したいです。
集計は参照シートの黄色で書かれた「販売+その他出荷」の合計を表示したいです。
sumifでは縦の計算になってしまい、横の足し算が出来ない印象です。
上の数字はmatchを使った際の引用条件になると思い入れました。

説明わかりづらくてすいません。関数を教えていただけないでしょうか。
具体例のエクセルは簡単に書いてますが、実際に書くエクセルはデータが膨大なものです。
なぜかindexもうまく引用できていませんでした。


https://d.kuku.lu/ca513f39a8
0004名無しさん@そうだ選挙にいこう
垢版 |
2020/07/21(火) 12:58:01.52
VBAで質問です。

何十列もある表で不要な列を大量に削除したいと思っています。

Range("A1,N1:U1.....").entirecolumn.deleteといった感じで手作業、つまり目で列を確認してコードを書くしかないのでしょうか??

分かる方お願いします。
0007名無しさん@そうだ選挙にいこう
垢版 |
2020/07/21(火) 15:29:53.87
列削除だけのコード書くくらいなら手動で消していけばいいじゃん に対してのそれで良い なのか
いやそんなことはない に対してのそれで良いなのか
00114
垢版 |
2020/07/21(火) 18:57:20.94
>>10

> 不要な列の条件が分からないのにどうしろと


表に見出し(1行目)があるのでそれを見ながら削除しています。あ、この見出しの列は不要と判断します。不要な見出しをリスト化したら可能とかありますか?
00144
垢版 |
2020/07/21(火) 19:53:11.07
>>12
教えてください!お願いします!!
001615
垢版 |
2020/07/21(火) 22:13:37.71
>>2>>14
様、大変長らくお待たせ致しました
以下がコードになりますのでご査収下さいませ
よろしくお願い致します



Sub Macro1()
不要な列を削除するための見出し = "aaa"
最終列 = Cells(1, Columns.Count).End(xlToLeft).Column
For i = 最終列 To 1 Step -1
If Cells(1, i).Value = 不要な列を削除するための見出し Then
Columns(i).Delete Shift:=xlToLeft
End If
Next
End Sub
00174
垢版 |
2020/07/21(火) 22:20:11.33
>>16
ありがとうございます。
試してみたいと思います。
0018名無しさん@そうだ選挙にいこう
垢版 |
2020/07/21(火) 22:59:32.28
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
1つの列にデータがずらっと並んでいて、そこから重複していないデータだけを別のシートに抽出する方法を教えてください
りんご
りんご
バナナ
みかん
みかん
が並んでいる場合、バナナだけを抽出したいです
0019名無しさん@そうだ選挙にいこう
垢版 |
2020/07/21(火) 23:08:54.67
>>18
作業列を作る
ifとcountifで重複ありを0、重複なしを1
もう1列作業列を作る
ifで1の場合rowを返す
もう1列作業列を作る
rowをrank付けする

別シートの列に
1
2
3
4
とか入力する

indexとmatchでrankを参照
0027名無しさん@そうだ選挙にいこう
垢版 |
2020/07/21(火) 23:27:12.57
>>25
>>4の方?

・全体をコピーして行列を入れ替えて貼り付け
・元見出しだった1行目はA列になるので、A列で不要な見出しでフィルタリング
・フィルタしたものを削除し、フィルタ解除
・もう一回行列入れ替えて貼り付け

これ以上は難しいかな
00284
垢版 |
2020/07/21(火) 23:45:52.90
>>27
すごい。

明日試してみたいと思います。ありがとう。
0031名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 01:07:12.52
>>18
2007以降ならリボンのデータから重複の削除アイコンかある
00334
垢版 |
2020/07/22(水) 05:20:24.02
>>16

> >>2>>14
> 様、大変長らくお待たせ致しました
> 以下がコードになりますのでご査収下さいませ
> よろしくお願い致します
>
> 記
>
> Sub Macro1()
> 不要な列を削除するための見出し = "aaa"
> 最終列 = Cells(1, Columns.Count).End(xlToLeft).Column
> For i = 最終列 To 1 Step -1
> If Cells(1, i).Value = 不要な列を削除するための見出し Then
> Columns(i).Delete Shift:=xlToLeft
> End If
> Next
> End Sub


すみません、1行目の不要な列を削除するための見出しが1個だけではなく何個もある場合はどうしたらいいでしょうか?
0036名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 07:40:29.38
>>35
>select Case cells(1,i).value
>case"aaa","bbb"
>columns(i).delete shift:=xlToleft
>end select

見出しのリストも自動で作りたいのですが、可能で紹介?
0037名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 08:00:41.29
>>36
見出しのリストがどんなもんかわからん
ccc
ddd
のようなリストがほしいだけなら見出し行をコピーして行列置換でペーストすればいいだけだぞ
0038名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 09:11:07.04
>>37
>>36
>見出しのリストがどんなもんかわからん
>ccc
>ddd
>のようなリストがほしいだけなら見出し行をコピーして行列置換でペーストすればいいだけだぞ

上のコードを動かすために見出しのリストが必要なんですかい。
00424
垢版 |
2020/07/22(水) 12:38:02.12
>>35

実行できました。ありがとうございます。
0043名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 13:13:36.65
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

A1〜F1のセルには1〜4いずれかの数字が入ります
G1のセルには自分の指定した数字(10〜20の範囲内)を入れます
G1の値になるようにA1〜F1の組み合わせを全て書き出す方法を教えて下さい
0044名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 13:16:06.94
1ファイル12 Sheetで一年間のデータを管理しています。
1月〜12月がそれぞれ1Sheet〜でSeet1月〜Sheet12月、Sheetは1日〜月末まで日々のデータです。

これとは別に同ファイルに、1Sheetに1月〜12月までの表を12ヶ月分並べたもの(Sheet年間)があるのですが
月ごとにデータを入力したら、こちらのSheetの、該当日にも入力されているようにするにはどうやればいいのでしょうか?
0045名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 13:17:42.68
書き忘れました
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel 2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
0047名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 14:09:13.61
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可

以前下記のExcelからメール作成するフォーマットをここで教えてもらい便利に使ってました
マクロ実行でB4がTO、B5がCC、B6が件名、B7が本文に入力されてメール作成画面が開きます

ところが会社の中国人が使いたいと言うので渡したところ
中国語のWindows10だと件名と本文が文字化けします
中国語等の外国語のWindows PCでも文字化けしないようにできますでしょうか

Sub createMail()
CreateObject("Wscript.Shell").Run _
"mailto:" & URLEncode(Range("B4").Value) & _
"?cc=" & URLEncode(Range("B5").Value) & _
"&subject=" & URLEncode(Range("B6").Value) & _
"&body=%FF%FE" & URLEncode(Range("B7").Value)
End Sub

Function URLEncode(ByVal strOrg As String) As String
With CreateObject("ScriptControl")
.Language = "JScript"
URLEncode = .CodeObject.encodeURI(strOrg)
End With
End Function
0048名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 14:46:59.49
>>46
ありがとうございます
最低でもA1〜F1には1以上の数字を必ず入れます
G1は(A1+B1+C1+D1+E1+F1)の合計になります
例えばG1が11の場合、(A1+B1+C1+D1+E1+F1)のパターンを全て知りたいです
0050名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 17:11:54.93
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】はい
【4 VBAでの回答の可否】 可

色んなデータがあるサイトでピンポイントで一つのデータをスクレイピングしたいんですが、
そのデータがソースで毎回30行目で固定されてるんで、
行指定でデータ吸い取れたら良いんですが、やり方がわかりません。
お願いします。
0053名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 21:39:14.22
>>35
caseの後のaaa、bbb………を別のシートにリスト化のような感じになっていたらcaseのあとに全部書く必要はなくないでしょうか?やり方を教えてほしいで。、
0055名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 22:22:31.15
>>47
中国語の環境がないから何とも言えないけど・・・
UTF-8になっているから逆に文字化けするのがおかしい気がする
メールソフトがutf-8に対応していないと思う。多分
メールソフトを変えてみると解決するかもしれない
メールソフトを帰るのが無理だと、中国語(euc-cn)などにエンコードすればいいかもしれないけど、すげー大変そう

>>53
sheet1のa1:a5がリスト。
findの返り値はsetしないと使えない事に気づくのに3分かかったわ

Sub Macro1()

最終列 = Cells(1, Columns.Count).End(xlToLeft).Column

For i = 最終列 To 1 Step -1
不要な列を削除するための見出し = Cells(1, i).Value

Set result = Sheets("sheet1").Range("a1:a5").Find( _
What:=不要な列を削除するための見出し, LookAt:=xlWhole)

If Not (result Is Nothing) Then
Columns(i).Delete Shift:=xlToLeft
End If
Next

End Sub
0057名無しさん@そうだ選挙にいこう
垢版 |
2020/07/22(水) 23:19:57.85
>>56
テキトーな文字をエンコードして、それで検索したら大体分かるよ

考えてみたけど、中国語への変換は中国人に中国語で検索してもらうと見つかるかもしれない
0058名無しさん@そうだ選挙にいこう
垢版 |
2020/07/23(木) 08:11:32.20
>>47
ユニコードには表現方法がいくつもあって、ワークシートの文字列をVBAで扱う時はUCS-2形式のユニコードが使われるから、これをUTF-8形式に変換しないと基本的には文字化けする
具体的な方法は知らんけど、ADODB.StreamオブジェクトのCharsetプロパティでできるかもしれない
006052
垢版 |
2020/07/23(木) 09:24:34.15
>>55
ありがとう。
0061名無しさん@そうだ選挙にいこう
垢版 |
2020/07/23(木) 09:34:12.59
ワークシート上の文字列をUTF-8に変換する関数
これでも文字化けするなら、さらに16進数に変換しないとだめかも

Function UTF8(text As String) As String
  With New ADODB.Stream
    .Open
    .Type = adTypeText
    .Charset = "UTF-8"
    .WriteText text
    .Position = 0
    .Type = adTypeBinary
    .Position = 3
    UTF8 = .Read
    .Close
  End With
End Function
0064名無しさん@そうだ選挙にいこう
垢版 |
2020/07/23(木) 19:10:30.57
>>47です

>>57
すみません意味分かりません

>>58
>>61-62
その方法だと使うPC全てExcelのVBAでADODB.Streamオブジェクトを
使えるようにしなければなりませんよね?

>>63
そこを下記のようにsubjectの行と同じように変更し
自分の日本語Windows PCで中国語でニーハオとB6とB7に入力して
実行したら件名は文字化けしないけど本文だけ文字化けしました

"&subject=" & URLEncode(Range("B6").Value) & _
"&body=" & URLEncode(Range("B7").Value)

元々の
"&body=%FF%FE" & URLEncode(Range("B7").Value)
だと本文も文字化けしません
0066名無しさん@そうだ選挙にいこう
垢版 |
2020/07/23(木) 23:50:57.65
VBAでSUBTOTAL関数を使って2つの列の合計を別のセルに出したいです。非表示部分も合計されて出てしまいます。可視セルのみの合計を出したいです。よろしくお願いします。
007266
垢版 |
2020/07/24(金) 11:55:05.05
<<67
オートフィルターメソッドのことですか?一応オートフィルターメソッドは使ってます。ありがとうございました。

<<68
初めて見る関数です。調べてみたいと思います。ありがとうございました。

なにぶん初心者なんで分からない事だらけで困ってます。
007366
垢版 |
2020/07/24(金) 11:56:00.52
>>72
不等号の向きを間違えました。すみません。
0077名無しさん@そうだ選挙にいこう
垢版 |
2020/07/24(金) 21:42:00.95
>>76
オワコンって訳じゃないけど
・範囲が見えない、うまく使わないと重くなりやすい。
・範囲が見えない、計算ミスの可能性が出やすい
・計算式が複雑になると見づらくなる

そもそも作業列の方が使い勝手がいいかなーとは思う
0079名無しさん@そうだ選挙にいこう
垢版 |
2020/07/24(金) 22:04:45.25
>>78
そこはケースバイケース
例えば頻度にしても毎日使うならみやすさ犠牲にしてsumproduct()にしても良い
重くても月1なら我慢しても良い
個人的には見出しがある方が使い勝手が良い
重くてもミスが減るならPCを買い替えてもらうという選択肢もあるし、
多少ミスってもいいような資料ならPCは買い換えられないなど
更に言うならクラウドにするという選択肢もアリか

どちらが良いというものではないね
0081名無しさん@そうだ選挙にいこう
垢版 |
2020/07/24(金) 22:15:21.78
>>80
そうそう、多少重さは犠牲にしても見やすさを重視する方が良いと思う
SUMPRODUCTをよほど極めてるならSUMPRODUCT一本でもいいと思うけど、俺には無理だ
0094名無しさん@そうだ選挙にいこう
垢版 |
2020/07/25(土) 02:06:15.94
何で表のサイズに縛られないテーブルの構造化参照を使わないの?
0099名無しさん@そうだ選挙にいこう
垢版 |
2020/07/25(土) 13:11:31.78
ユーザーフォームを呼び出すシート(Sheet1)のコンボボックスに
同ブック上別シート(Sheet2)のA1:A30項目をプルダウン表示させたいのですが
その際、重複項目と空欄を省いた状態で表示させるコードを教えて頂ける方いませんでしょうか

初心者には見当もつかず よろしくお願い致します
0102名無しさん@そうだ選挙にいこう
垢版 |
2020/07/25(土) 14:55:36.89
>>43
>>49
正解は全組合せ4096の内216が該当でいいですか?
vbaだったらforの6回ネストで簡単なのですがmodで全組合せを羅列するのは難しくないですか?
mod関数での全組合せ表現の方法を教えて頂けたらありがたいです。
0104名無しさん@そうだ選挙にいこう
垢版 |
2020/07/25(土) 15:05:17.71
99 詳細ですが
Sheet1に必要項目をユーザーフォームで入力していきたいんですが
その際Sheet2のマスターデータのA列から選択してコンボボックスのリストに表示させたいのです。
Sheet2には重複項目や空欄項目がありリストに列を表示させると同じ項目や空欄が表示されてしまうので
なくしたいのです。 よろしくお願いいたします
0107102
垢版 |
2020/07/25(土) 20:03:06.49
>>43
解決しました。
INTも必要でした。

=INT(MOD(+ROW()/(4^n)-(1/4)^n,4))+1

n = 0 → 5>>43
0111名無しさん@そうだ選挙にいこう
垢版 |
2020/07/25(土) 23:04:01.96
取得と変換使いこなしたいけどなんかいい解説サイトとかないかなオフィス田中は観てるけど違う角度の解説とかも参考にして学びたい
0112名無しさん@そうだ選挙にいこう
垢版 |
2020/07/25(土) 23:34:43.97
>>110
ありがとうございます。頂いた回答からこれらのページに辿りつきました
n、nn
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/format-function-visual-basic-for-applications
B1、B2
https://docs.microsoft.com/ja-jp/dotnet/api/documentformat.openxml.spreadsheet.numberingformats?view=openxml-2.8.1
https://answers.microsoft.com/en-us/msoffice/forum/all/hijri-date-conversion-to-gregorian-date-in-excel/81328470-a89d-4b91-a1d7-312c61c417e1
0115名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 15:32:46.70
質問があります。

A1に数字を入力すると、
複数のセルを使って関数を駆使し、
結果として一つの数字がB1に出力されるような場合、

A1を0〜100の範囲で1ずつ増やしながら、
A1をx軸、B1をy軸としたグラフを作ることはできませんでしょうか。
A1とB1を表にするのは大変なので、表にせずにグラフ化したいのです。
0117名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 16:33:18.30
>>116
ありがとうございます。
しかし、質問の意図が伝わっていないかもしれません。

やりたいことは、例えば、
A1→100
A2→=A1*100
A3→=A1/100
A4→=A2+30
B1→=A2+A3+A4
とあった場合、
A1を0〜100まで一つずつ増やした場合の
A1をx軸、B1をy軸としたグラフを書きたいのです。

A1、A2、A3、A4、B1を0〜100個作って、
X、Y
0、30
1、230.01
2、430.02
3、630.03
...
と表を作ればグラフを作ることはできますが、面倒なので、
表を作らずに、A1に0〜100を代入した場合のグラフを作りたいのです。
0118名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 17:57:44.26
>>117
残念ながらそういう機能は無い

ただ、グラフではなく2次方程式を解きたいだけならゴールシークって機能があるからそれを使えば良い
0119名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 18:19:50.72
>>115
1件1行に計算式をまとめられませんか?
A列は0から100までの数字を設定する列、
B列は1個目の計算式(A2の計算式)を、
C列は2個目の計算式(A3の計算式)を、
D列は3個目の計算式(A4の計算式)を、
E列は4個目の計算式(B1の計算式)を設定したらあとは簡単。
0121名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 20:48:46.74
>>117
面倒ですか?
ならばVBAをつかって順にA1に値を挿入する方法を使えばあなたのやりたいことが実現できますよ
もっと複雑で面倒ですけどねwww
0123名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 21:22:55.75
みなさんありがとうございました。
助かりました。
いったんグラフは諦めます。

>>118
ゴールシーク!
実はグラフとは別に、その方法も探していたのです!
非常に助かりました!!
0124名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 21:31:45.85
>>118 さんのゴールシークを調べていたら、
What-If分析のデータテーブルを使えばグラフ作れました!
みなさんありがとうございました!!
簡単すぎる!Excel最高!
0126名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 23:10:07.64
Control + ;

を入力したところ

通常であれば、 2020/07/26 と入力されるはずが、

7/26/2020 と入力される様になってしまいました。

どうすれば直りますか?
0129名無し募集中。。。
垢版 |
2020/07/26(日) 23:34:35.47
>>128
言語設定が日本になってる?
0130名無しさん@そうだ選挙にいこう
垢版 |
2020/07/26(日) 23:35:46.10
新しく入社した会社の社内文章がほぼエクセル

エクセルで表入りの文書作る時って
学生時代から方眼紙コマ割り風に調整してから
枠指定して作成していたのだけど
今日、会社の先輩に注意されてしまった…

枠ごとに幅調整して作った方が良いのかね?
方眼紙に当て嵌めた方が、あとから行列追加も簡単だし
幅調整考えなくていいからと思ってたんだけど
0134名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 00:01:47.20
>>132
あんまりうまい言い方が判らなかったが
別に計算とか一切ない、エクセルじゃなくてもいいような
社内文章もエクセル形式管理なのよ

別ソフトで吸い上げや読み取りする訳でも無いから良いジャン
とか思ってたから注意されたのが意外だったのよね
0136名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 00:18:29.15
Excelのシートごとにレイヤー機能があったら社内文章がもっと楽に作れるのにな
0140名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 01:22:44.53
>>138
ショートカットがExcelと統一性に欠けるから覚えられない
故にExcelの方が楽
0141名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 07:57:41.03
>>138
改行はshift+enterで段落変更がエンターったことを知ってる人すら1/10人もいないんじゃないか?

>>130
エクセル方眼紙は他のエクセルから数値を貼り付け出来ないから物凄い嫌われてる
些細なレイアウトのために使い勝手犠牲にする自己満足

最終的な用途が枠に手書きで書き込むんじゃなければセルの結合はやらないほうがいい

文字を中央に配置したいなら範囲を指定したあと書式設定で範囲内で中央っての使え
0142名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 08:38:08.89
いや、余計なお世話ですw
印刷するのに便利なのでこうしてるだけですから。他のエクセルからコピペできない?そんな問題あったらそもそも運用してませんから。
0143名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 09:59:45.89
>>137
できないことはないけど一発じゃ無理
けっこう手間がかかって面倒だしスキルも必要
手作業で入力しなおすよりは間違いなくできるけど、ハードル高いよ
0145名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 10:33:37.37
>>138
基本的に文書はワードを使う派だけど、スタイル設定してる段落の書式変更したらスタイルが解除されるのは何とかしてほしい
組版はワードに任せろって言うのは理解できるし俺個人なら許容するけどこの段落は次のページに持って行けと言う上司の存在がある限り面倒で仕方ない
0146名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 11:17:54.07
>>144
どうやるんですか?教えて下さい
1ページに20軒ずつで、88ページ目まであります
店名、住所、電話番号、分類の部分だけを一覧表にしたいんですが
0148名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 11:51:49.94
そんな分量ならコピペしろよ、、、

>>146
>>144
>どうやるんですか?教えて下さい
>1ページに20軒ずつで、88ページ目まであります
>店名、住所、電話番号、分類の部分だけを一覧表にしたいんですが
0149名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 12:04:51.83
>>142
単一セルのデータを結合セルに貼り付けるとエラー出ることも知らんとか…

同意してほしかっただけとか女の相談なら先に言えよ

先輩含めて普通の反応は>>135
0159名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 22:37:23.27
>>130
正直完全な文書なら方眼紙の方が便利だけどね
方眼紙にしないとマスが増えると全部微調整しなおしって事になる
変更が無いものに方眼紙はカッコワルイけど、個人的にはどっちでもいいんじゃね?と思う

>>135
どっちでもいい派
早く作れる方で作れば良い
ただデータが多い場合は方眼紙は止めて欲しい

>>137>>157
サイトをa14にテキスト貼り付け。あとはrowとindirectの組み合わせでぴこぴこやれば行ける
https://dotup.org/uploda/dotup.org2211931.xlsx
0161名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 22:54:42.92
>>160
実はスクレイピングはサイトによって大幅にコードが変わる
実際取得したいのはナビタイムじゃなくて他のサイトだろう

具体的にはソースの位置はもちろん、連続アクセスにひっかかったり広告位置が変わったりロード待ったりで本当にサイト次第
あと最難関は恐らくajaxで、これが絡むとソースから取得出来ないので俺はやらん
正直、手動の方がコード書くより楽

どうしてもスクレイピングしたいなら、以下のページがまとまってるから一度勉強して地力を付けた方が良い
https://tonari-it.com/ie-setting-navigate/
0162名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 22:56:42.58
派遣の仕事でよくVBA開発の求人あるけどそれに就くには相当なスキルいるものですか?趣味程度で簡単なシステム作れる程度じゃ無理?
0163名無しさん@そうだ選挙にいこう
垢版 |
2020/07/27(月) 23:18:36.86
>>162
体験で一回だけ行ったわ
質問に応えると、とりあえずset辺り使えるならまぁまぁ行けると思う。

以下、感じたこと
・零細企業に居候みたいな形で常駐
・クソみたいなクッソ古いコードをシコシコ保守
・大規模開発には全く向いてない言語ということを改めて気付かされる。予想以上にキツイ
・とにかく貧弱すぎるIDEが苦行
・その会社のvbaコード以外の知識は全くつかない。潰しは効かない
・どう考えてもシステムごと変えたほうがいいと思ってても死んでも言ってはいけない
・生産性はマイナス。存在価値はない
・在宅は一切ない
・上記の通りウンコすぎるので人がいない。供給がなさすぎるので給料はそこそこ良い

俺には無理だった
0166名無しさん@そうだ選挙にいこう
垢版 |
2020/07/28(火) 00:31:56.23
>・その会社のvbaコード以外の知識は全くつかない。

ホントそうなるよな。
Win32APIが使えるから、その気になれば大抵のことは出来ちゃうので、
他の言語じゃないと出来ませんって言えないし。
0171名無しさん@そうだ選挙にいこう
垢版 |
2020/07/28(火) 10:00:09.31
>>170
一発でできるんだけど
君がこっちに完全に丸投げレベルのスキルみたいだから
コピペ5回コースで妥協しておきな。

汎用性があることなら対応するんだけど
特定URLだけでしか動かないやつを
ゼロからこちらに投げられても
舐めんなとしか言いようがないというか。
0175牧野 ◆Vbs7gX72NY
垢版 |
2020/07/28(火) 19:57:29.71
>>169
本当。一時本気でvbaで仕事を探したことがあるけど、正社員で客先常駐(実質派遣会社の正社員)か、派遣で客先常駐かしかない
仕事内容は一緒って意味だし、vbaだとキャリアなんて積めない
一番ひどかったのは、ローカルにあるC2DのPCをサーバーにしてAccess2003と2016が同時に快適に動くようにしてくれって要望
正社員と派遣、どっちが上じゃない、両方クソだった。俺は両方で体験入社したけど会社によるとしか言えない
これはカンだけど、タイミングさえ合えばまったり零細でのびのび帳票を自動出力するだけの仕事があると思う

>>170
ごめん、無理だった
酒のんで気分いいしやったるべ〜って試してたら3ページなのに速攻でアク禁食らった
まぁスクレイピングってこういう事なんですわって事が分かってくれればそれでいいと思う。ちなみにこのコードは修正中なので動かない
Sub foo()
For i = 1 To 3
sample ( "https://www.navitime.co.jp/freeword/?keyword=%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E3%83%90%E3%83%AA%E3%83%A5&;p=" & i & "&type=spot&mode=", i )
Next
End Sub
Sub sample(url, ページ)
Set objIE = CreateObject("InternetExplorer.Application")
'IE(InternetExplorer)を表示する
objIE.Visible = True
Set objIE2 = objIE.Application
objIE2.navigate url
Do While objIE2.Busy = True Or objIE2.readyState <> 4
DoEvents
Loop
行で分割したソース = Split(objIE2.document.body.innerHTML, vbCrLf) '改行で縦一列に並べて分割っとかなんとか
For Each k In 行で分割したソース
Cells(, ページ) = k
Next
End Sub
0178牧野 ◆Vbs7gX72NY
垢版 |
2020/07/28(火) 21:32:04.60
>>177
残念ながらもう俺は試す事ができない
俺は誰にでも公平に全力で回答するけど、俺が回答できないなら他に頼るか自分でがんばるしかない
俺は横柄な回答者にも公平に回答するけど、他に回答が付くかは分からない
最初に>>161で言った通り、サイトによってコードは大幅に変わるのでvbaでのスクレイピングは地力をつけるしかないよ
とりあえずナビタイムのスクレイピングはコードをもらっても意味がない、最初から目的のサイトでのスクレイピングを聞いたほうが良い
0179牧野 ◆Vbs7gX72NY
垢版 |
2020/07/28(火) 21:33:21.96
もうちょい言うと、恐らく3ページじゃなくてUAで判定してるんだろうけど
そっちの方がはるかにキツイ
0184名無しさん@そうだ選挙にいこう
垢版 |
2020/07/29(水) 12:13:32.84
>>179
>もうちょい言うと、恐らく3ページじゃなくてUAで判定してるんだろうけど
>そっちの方がはるかにキツイ

んなわけねーべ
ちょっとウエイト入れたら余裕で全部スクレイプできたわ
しかもお前のコードだとちゃんとParseできねーぞ?
0186名無しさん@そうだ選挙にいこう
垢版 |
2020/07/29(水) 13:28:03.84
>>184
ウェイトかければよかっただけとは、スマンかった

パースは後回しにして連続アタックがどうなるか試してみたんだ
その後アクセスするとエラーor画面真っ白
(chromeでも)
0191名無しさん@そうだ選挙にいこう
垢版 |
2020/07/29(水) 14:14:55.58
0.1秒間隔で全88ページ落としてみたけど別にアクセス制限なんかかかってないなあ
所要時間9秒程度だと連続アタックにはならないのか?
0194名無しさん@そうだ選挙にいこう
垢版 |
2020/07/29(水) 14:51:49.70
データの重複がけっこうあるな
表記揺れで別の店と認識するのはしょうがないとして、住所が同じなのに座標が違うのはどういうことだ
0198牧野 ◆Vbs7gX72NY
垢版 |
2020/07/29(水) 20:40:59.53
>>190
あーそういう事か、sum(8)と等価なのかとか色々考えてたわ、ありがとうスッキリ
0200名無しさん@そうだ選挙にいこう
垢版 |
2020/07/29(水) 21:46:01.04
セルアドレスがたまたま関数名と同じになる列はけっこうたくさんあるね
バグが出た時にうっかり見落としそう
IF、OR、PI、ABS、AND、ASC、COS、DAY、EXP、INT、JIS、LEN、LOG
MAX、MID、MIN、MOD、NOT、NOW、ODD、ROW、SIN、SUM、TAN
0207名無しさん@そうだ選挙にいこう
垢版 |
2020/07/30(木) 16:31:00.84
88ページ読み込むのに70秒ぐらいかかる

Option Explicit
Dim httpObj As Object
Public Sub GetNAVITIMElist()
 Dim p%, pp%, i%, r%, a$(), s$, t$, url$
 Set httpObj = CreateObject("MSXML2.ServerXMLHTTP")
 url = "https://www.navitime.co.jp/freeword/?keyword=%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E3%83%90%E3%83%AA%E3%83%A5&;type=spot&from=freeword.spotlist&p="
 pp = Int((Val(Split(GetUrl(url), "(1/")(1)) + 19) / 20) - 1
 For p = 0 To pp
  a = Split(GetUrl(url & p), " class=""")
  For i = 1 To UBound(a)
   s = a(i)
   t = Replace(Replace(Split(Split(s, ">")(1), "<")(0), "&lt;", "<"), "&gt;", ">")
   Select Case Split(s, """")(0)
    Case "candidate_link": r = r + 1: Cells(r, 1) = t
    Case "address_name": Cells(r, 2) = t
    Case "phone_area": Cells(r, 3) = "'" & t
    Case "spot_category_name": Cells(r, 4) = t
   End Select
  Next
 Next
 Set httpObj = Nothing
End Sub
Function GetUrl$(url$)
 httpObj.Open "GET", url
 httpObj.Send
 Do While httpObj.readyState < 4
  DoEvents
 Loop
 GetUrl = httpObj.responseText
End Function
0209名無しさん@そうだ選挙にいこう
垢版 |
2020/07/30(木) 17:33:56.87
検索結果をよく見ると、名前にも住所にも「マックスバリュ」が入ってない項目がいっぱいあるんだけど
いったい何を見せられてるんだ?
0213名無しさん@そうだ選挙にいこう
垢版 |
2020/07/30(木) 20:54:16.05
DOMつかってないし
ボタン押してないし
まいいんだけどね
0217名無しさん@そうだ選挙にいこう
垢版 |
2020/07/30(木) 21:24:54.35
>>215
いいね
0219名無しさん@そうだ選挙にいこう
垢版 |
2020/07/30(木) 22:53:04.77
単純なスクレイピングはWEBクエリより自分で書いた方が早いまである
価格comの詳細検索を一気に落としてExcelのオートフィルタで機種選びとかよくやってる
0220牧野 ◆Vbs7gX72NY
垢版 |
2020/07/30(木) 23:09:45.36
色々試したあげくapi使えば一瞬で終わるなんてことも
0225牧野 ◆Vbs7gX72NY
垢版 |
2020/07/30(木) 23:45:11.65
>>223
pythonでスクレイピングしてもやることは>>207と大差ないよ
Xpathの使いやすさに違いはあると思うけど、pythonは環境構築と出力が手間になるので総合的にはvbaと労力は大差ない
個人的にはVBAの方が楽

個人的にはchrome拡張が非常に便利と思う。
https://blog.tanebox.com/archives/645/
0232名無しさん@そうだ選挙にいこう
垢版 |
2020/08/01(土) 16:04:46.41
鯖側の仕様でGETで1秒待たされるのがどうしようもないね
たった1800件ならパース処理の無駄を省いても時間は大差ない
こんなもんか?もっと短縮できる?

Public Sub GetNAVITIMElist()
  Dim p%, i&, r%, a$(), s$, url$
  Set httpObj = CreateObject("MSXML2.ServerXMLHTTP")
  url = "https://www.navitime.co.jp/freeword/?keyword=%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E3%83%90%E3%83%AA%E3%83%A5&;type=spot&from=freeword.spotlist&p="
  For p = 0 To Int((Val(Split(GetUrl(url), "(1/")(1)) + 19) / 20) - 1
    s = s & GetUrl(url & p)
  Next
  a = Split(s, " class=""")
  For i = 1 To UBound(a)
    s = Split(Split(a(i), ">")(1), "<")(0)
    Select Case Split(a(i), """")(0)
      Case "candidate_link": r = r + 1: Cells(r, 1) = s
      Case "address_name": Cells(r, 2) = s
      Case "phone_area": Cells(r, 3) = "'" & s
      Case "spot_category_name": Cells(r, 4) = Replace(Replace(s, "&lt;", "<"), "&gt;", ">")
    End Select
  Next
  Set httpObj = Nothing
End Sub
0233sage
垢版 |
2020/08/01(土) 16:52:40.46
リストボックスとかコンボボックスで選択したものを
今現在選択しているセルに出力する方法を教えてください。
「リンクするセル」に何て書けば良いでしょうか。
0236名無しさん@そうだ選挙にいこう
垢版 |
2020/08/01(土) 18:37:36.71
>>235は撤回します。

下のように標準モジュールに書いたけどエラーでダメです。
どうしたらいいですか

Sub ボタン3_Click()
Dim shp As Shape
Set shp = Worksheets("sheet").Shapes("List Box 1")
ActiveCell.Value = shp.text ←これはエラー
ActiveCell.Value = shp.value ←これもエラー
End Sub
0238名無しさん@そうだ選挙にいこう
垢版 |
2020/08/01(土) 19:40:32.91
>標準モジュールに
なんでやねん。
sheetでいいじゃん。

Sub ボタン3_Click()
 ActiveCell.Value = Me.ListBox1.Value
End Sub

名前弄れるようにしたいなら

Sub ボタン3_Click()
 ActiveCell.Value = Me.OLEObjects("List Box 1").Object.Value
End Sub
0239牧野 ◆Vbs7gX72NY
垢版 |
2020/08/01(土) 19:41:33.55
>>236
captionかなんかだろって舐めてかかったらすげーめんどくさいなこれ
フォームコントロールとvbaはかなり相性が悪い。

Sub sample()
Set ctl = ActiveSheet.DropDowns("Drop Down 1")
Debug.Print Range(ctl.ListFillRange).Item(ctl.Value, 1)
End Sub

参考
https://excel-ubara.com/excelvba1/EXCELVBA436.html

言うまでも無いと思うけど標準機能使った方が良いと思う
https://dotup.org/uploda/dotup.org2215934.xlsx.html
0242牧野 ◆Vbs7gX72NY
垢版 |
2020/08/01(土) 20:32:16.64
>>240
数年前はActiveXサポート停止するからもう使うなよ〜って感じだったと思うけど、
そのサポートも伸びたみたいでかなりグダグダっぽい

>>241
マクロ入りファイルの配布は全くオススメできない
メール添付不可、先方で動かない、セキュリティソフトで排除など色々難関がある
googleドライブに突っ込んだらマクロ全部消されるレベル
0245牧野 ◆Vbs7gX72NY
垢版 |
2020/08/01(土) 22:58:51.30
>>243
今調べたら出来るプロバイダとできないプロバイダ、OKになったりNGになったりと混沌としているな
とりあえずgmailは解除されたらしい

>>244
とりあえず>>239のコードで動くぞ
俺はvbaファイルの配布でえらい目を見たから配布は一切しなくなったわ
何が面倒って相手がxlsxと認識してない事が一番キツイ
0246名無しさん@そうだ選挙にいこう
垢版 |
2020/08/01(土) 23:19:26.58
添付制限なんてzipで固めて送ればいいんじゃないの?エクスプローラでフォルダ扱いになるんだから別に面倒でもないし
0247牧野 ◆Vbs7gX72NY
垢版 |
2020/08/01(土) 23:22:39.31
>>246
中を簡単に見られる形式は当然弾かれるよ
マイナーな圧縮方式なら割と通るけど逆に先方にそれを説明するのが面倒
0249牧野 ◆Vbs7gX72NY
垢版 |
2020/08/02(日) 00:41:52.47
>>248
それもやったけど引っかかる。zipはパスワード関係なくファイルを見る事ができる
パスワード付きzipをフォルダに入れて更にパスワードzipにすればok
本当にめんどくさい
0253名無しさん@そうだ選挙にいこう
垢版 |
2020/08/03(月) 00:14:11.07
とても初歩的な事だと思うのですが解決しないので教えて頂けないでしょうか
00:00
01:10…のような4桁の時間形式を分かりやすく書くためにEXCELを使用したいのですが、
分単位の00、間の:、秒の00、を分けて別セルに組み合わせるようにすると、0が消えてしまいます。
https://i.imgur.com/vcKwTHq.png
00 : 01 を組み合わせてそのまま00 : 01を出せるようにしたいのですが…
書式設定を触ってみたのですが出来ませんでした。
宜しくお願いします。
0256名無しさん@そうだ選挙にいこう
垢版 |
2020/08/04(火) 10:12:26.73
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

特定の商品E5をA4〜A1000で探し特定期間7月をB4〜B1000で探し
一致するC4〜C1000を集計するのに下記のようなSUMIFS構文を利用してるのですが
これだと期間を変えるのにExcelの式を都度修正せねばならず時間かかり間違いやすいので
どこかのセルに7月なら7と入力すれば7月1日〜7月末までが範囲になるようにしたいです
前提として期間は1日〜月末ですが6月1日〜7月末のように複数月の場合もあります
どうすればよろしいでしょうか

=SUMIFS($C$4:$C$1000,$A$4:$A$1000,$E5,$B$4:$B$1000,">=2020/7/1”,$B$4:$B$1000,"<=2020/7/31)
0259名無しさん@そうだ選挙にいこう
垢版 |
2020/08/04(火) 13:09:14.20
>>256
複数月の増分を入れるセルも用意して
=SUMIFS($C$4:$C$1000,$A$4:$A$1000,$E5,$B$4:$B$1000,">="&DATE(YEAR(NOW()),どこかのセル,1),$B$4:$B$1000,"<="&DATE(YEAR(NOW()),どこかのセル+複数月の増分+1,1)-1)
0260名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 08:24:35.51
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
*OSとExcelは年内にも更新予定。

ある設定をしたセルの書式だけ変える方法は有りますか?
例えば、フォントの色を赤にしたセルだけ青にするとか。

手持ちCDの曲目リストで区別のためフォント書式を色々分けていましたが、
作った当時の若かった頃はともかく、30年近く使い続けて年老いてくると
水色や桃色などの淡い色が読みづらくなってきました。
区別を保ったまま濃い色にしたいと考えています。
0262名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 09:27:11.54
あるけどVBA不可じゃなぁ・・。
多分、

Sub a()
 For i = 開始行 To 終了行
  If フォントが赤のセル Then フォントの色を青
 Next
End Sub

の5行で済むと思うけど、どうしてもVBA嫌か?
0263名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 09:44:51.55
>>257-258
すみません、夏休み前でバタバタしてて余裕無くて試せませんでしたが一段落して先ほど試しました
不等号と日付の組み合わせが思いつきませんでした
これでできました
ありがとうございました

>>259
複数月の増分の意味が分からないので試してませんが
この場合、問答無用で今年だけになりますよね
0267名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 10:43:13.55
書式で検索して一括置換はできるんじゃないの
既存の書式を検索したいならセルから書式取得する機能もあるし
ただ2007でできるかどうかは知らん
0268名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 12:16:39.38
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ(VBAじゃないと無理ならがんばる)
【4 VBAでの回答の可否】 否(VBAじゃないと無理ならがんばる)
データをまとめる時にpdfでは公開されているのにcsvやxlsファイルでは配布されていないので
pdfのデータをコピーしてexcelに張ったところ
横一列になってしまいました
そこで区切りで見やすくはしたのですが、横一列のままです
これを5列(マス)ごとに改行したいのですが、どうすれば良いでしょうか?
A1〜A80あり、A1〜A5、B1〜B5....とズラしたいんです。
0271名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 13:01:02.43
>>269-270
ありがとうございました
0272名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 13:56:23.96
>>261-262
やはり無理ですか。

ところで、シンボリック形式の解説をオンラインで読めるところは無いですかね?
昔々、Multiplanを使っていた頃、ファイルが壊れてエラーが続発すると
一度シンボリックにして回復させていたことを思い出し、小さな表で試してみました。
(当時のMultiplanの説明書にはシンボリックの説明も書かれていた)
シンボリックファイルはテキスト形式なので、セルの色指定の数値を置換すると
変えられました。ただ、色指定の数値は分かるものの、水色系や桃色系など
自分で作った中間色の色成分(RGBなど)の定義部分が分かりません。
これが分かれば、成分値を変えることで変更できそうです。
尤も、太字・斜体字など他にもあるし、数百万行のファイルになりそうだな。
0273名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 14:43:08.91
>>272
新しいExcelで読み込んで、xlsx形式で保存、拡張子をzipに変換するとワークシートの中身がすべてテキストファイルで取り出せる
色の定義はxl\styles.xmlというテキストファイルにそのまま16進数のRGBで書いてあるから一括置換すればいい
RGBから色相、彩度、明度を求めて明るくしたり暗くする方法はネット検索すれば方程式が出てくる
0274名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 16:35:55.16
>>273
ありがとうございます。
こんな形で保存されているのですか。読み解くには時間がかかりそう。
これについても、検索すれば説明文があるのかな。

それにしても、桁の低いところで生じる端数をround関数で整えたはずなのに、
データには違う値が記録されているとは・・・
例えば、roundで数値も1.0としたのに1.000001だとか。
0281名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 20:26:32.12
とりあえず現段階の方向として、シンボリックファイルで置換しようと思います。
色の定義方法は分析せず、新しい色を作って色番号を探り番号を置換することで。
お騒がせしました。
0282名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 20:42:53.04
他人の助言まったく聞かないで無駄な遠回りして自己解決したのか
昭和のクソジジイすげーな
0285名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 23:08:38.35
2桁表示にしたく書式設定を「00」にしたのですが、
それらを組み合わせて=A1&B1&C1のようにすると、01が1になってしまいます。
1は01…のような状態で、そのままで別セルと結合する方法はないでしょうか?
0286名無しさん@そうだ選挙にいこう
垢版 |
2020/08/07(金) 23:34:30.33
>>285
=TEXT(A1,"00")&TEXT(b1,"00")&TEXT(c1,"00")
0290牧野 ◆Vbs7gX72NY
垢版 |
2020/08/08(土) 08:11:13.26
>>260
一律背景色を濃くするマクロ

Sub foo()
濃くしたい濃度 = 10

For Each i In UsedRange
myColor = i.Interior.Color

r = myColor Mod 256
g = Int(myColor / 256) Mod 256
b = Int(myColor / 256 / 256)

If i.Interior.Color < 16777215 Then '白以外

r = WorksheetFunction.Max(r - 濃くしたい濃度, 0)
g = WorksheetFunction.Max(g - 濃くしたい濃度, 0)
b = WorksheetFunction.Max(b - 濃くしたい濃度, 0)

i.Interior.Color = RGB(r, g, b)
End If

Next
End Sub

動かしてから気がついたけど、本当は濃くしたいじゃなくてコントラストを強くしたいんだろうな〜
無理だな〜
0297牧野 ◆Vbs7gX72NY
垢版 |
2020/08/08(土) 11:10:45.60
>>295
なんらかの法則があれば条件付き書式の手作業で可能
法則がなければVBAじゃないとキツイ
0300牧野 ◆Vbs7gX72NY
垢版 |
2020/08/08(土) 13:37:35.47
>>260>>299
飲みながら回答したら全然違う回答してたわw

>例えば、フォントの色を赤にしたセルだけ青にするとか。
これが条件付き書式なら可能だけど、塗りつぶしなら無理だねぇ
0302名無しさん@そうだ選挙にいこう
垢版 |
2020/08/09(日) 14:37:15.29
>>295
Excel4.0マクロは禁止されてないので、しばり的にはセーフだよね
例えば、Sheet1 の文字色薄い青のセルを青にしたい場合

1.Sheet1をシートコピー
2.コピー先シートA1で名前定義 名前は仮に色とでも =GET.CELL(24 , Sheet1!A1)+NOW()*0 これで、=色 でSheet1の同一アドレスの文字色No.が取得出来る
3.A1に、=IF(色=33, NA()) 表範囲全体に数式のみコピー
4.条件を指定してジャンプ->数式 論理値 で、文字色赤のセル以外が選択される -> 消去
6.全範囲を選択して、文字色を青に (エラー値で条件ジャンプで該当セルのみ選択できるけどその作業は不要)
7.コピー→Sheet1のA1を選択->形式を選択して貼り付け 書式、 空白セルを無視する

GET.CELL(24,Sheet1!A1)がセルの情報を取得するExcel4.0マクロで、24が文字色、薄い青は33
セルに直接入力は出来ないけど、現Excel2019でも、名前を介すと使用できる
Sheet1!A1の部分は相対参照で($がついたら消す)
太字、斜字はそれぞれ、24のところを、20、21に置き換える 戻り値は真偽値
0303名無しさん@そうだ選挙にいこう
垢版 |
2020/08/09(日) 14:39:53.99
クソパズルやめろやジジイ
ほんと疲れるわ
0304名無しさん@そうだ選挙にいこう
垢版 |
2020/08/09(日) 14:51:50.55
マルチプランだのcell関数だのは老人会のカラオケ大会ででも話しててくれよ頼むわ早く隠居するか死んでくれ
0307名無しさん@そうだ選挙にいこう
垢版 |
2020/08/09(日) 15:39:22.78
視野が狭いんだろうな
見識的な意味でも視覚的な意味でも

>特定の書式を使用して文字列または数値を検索するには、[書式] をクリックし、[書式の検索] ダイアログボックスで選択します。
https://support.microsoft.com/ja-jp/office/%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AE%E6%96%87%E5%AD%97%E5%88%97%E3%81%A8%E6%95%B0%E5%80%A4%E3%82%92%E6%A4%9C%E7%B4%A2%E3%81%BE%E3%81%9F%E3%81%AF%E7%BD%AE%E6%8F%9B%E3%81%99%E3%82%8B-0e304ca5-ecef-4808-b90f-fdb42f892e90
0310名無しさん@そうだ選挙にいこう
垢版 |
2020/08/11(火) 21:45:52.90
てす
0311名無しさん@そうだ選挙にいこう
垢版 |
2020/08/13(木) 23:07:43.78
盆休みだから見てるけどどのチャンネルもワイドショーやべえな
こんなの毎日毎日見てたら脳が衰えてる年寄りは洗脳されるわ
それにしたって日本人は知性無くなりすぎだと思う
0316名無しさん@そうだ選挙にいこう
垢版 |
2020/08/14(金) 19:48:42.45
Excel2019で、
ScreenUpdating = False にしても、CopyFromRecordset で勝手に描画する
という不具合が発生してるように見えるんですが、どうですか?
(もしくは ActiveChart.Axes を設定すると勝手に描画する、のいずれか)

具体的には別のシートに CopyFromRecordset を使っていて、そのシートを参照するグラフが表示中のシートにある
新しいデータを元に、ActiveChart.Axes を再設定する前(または設定しきる前)に、新しいデータがグラフに表示される
なので一瞬グラフが目盛の範囲外に吹っ飛んでから、正しい位置に補正される
Excel2013では起きなかった
0317名無しさん@そうだ選挙にいこう
垢版 |
2020/08/14(金) 20:07:05.03
ていうかイミディエイトウィンドウで

Application.ScreenUpdating = False
?Application.ScreenUpdating
True

そもそも ScreenUpdating 自体を廃止?
0318牧野 ◆Vbs7gX72NY
垢版 |
2020/08/14(金) 20:09:20.04
>>316
図形やオブジェクトが絡むと再描画されることが多い
理由は多分、単純に適用の範囲外かなんかだろう。誰か詳しい人が答えてくれると思う

何にしろ、図形を再描画しても
ScreenUpdating = False
自体はそのままなので図形を連続で描画でもしない限り、パフォーマンスにはそれほど影響しないはず

Sub foo()
Debug.Print ScreenUpdating
ScreenUpdating = False
Debug.Print ScreenUpdating
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 78, 162.75, 125.25, 121.5).Select
Debug.Print ScreenUpdating
ScreenUpdating = True
Debug.Print ScreenUpdating
End Sub
0319名無しさん@そうだ選挙にいこう
垢版 |
2020/08/14(金) 20:21:04.49
>>318
さんくす
イミディエイトウィンドウでプロパティを設定しても保持されないのか
しかし、

Sub foo()
ScreenUpdating = False
Debug.Print ScreenUpdating
ActiveCell = 1
Debug.Print ScreenUpdating
End Sub

プロパティは保持されるものの、シートに「1」って表示されるw
そういうもんでしたっけ?
0320牧野 ◆Vbs7gX72NY
垢版 |
2020/08/14(金) 20:29:09.49
>>319
本来は更新しないはずなんだけど、経験上・・・

・めちゃくちゃ軽い処理(>>319とか)
・オブジェクトが絡む
・保存

確かこの辺りで再描画された記憶がある

まぁ、元々が重い処理を軽くするためだけのようなプロパティなので
あまり深く考えなくていいんじゃないかな
俺はなんで再描画されるかなんて考えていないぞ

再計算の方は結果が変わるからかなり慎重に使うけど
0322名無しさん@そうだ選挙にいこう
垢版 |
2020/08/14(金) 22:33:57.90
>>320
逆に軽過ぎると無視なんだ
おー難しい
0325名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 11:59:09.22
おまえら根本的なところが間違ってるぞ
まず>>319はプロパティが設定できてない
まったく無関係なVariant型の変数にFalseを代入してるだけ
正しくはこう

Sub foo()
Application.ScreenUpdating = False
Debug.Print Application.ScreenUpdating
ActiveCell = 1
Debug.Print Application.ScreenUpdating
End Sub

そして、プロセスが終了するとこのプロパティは自動的にTrueに戻る仕様だから画面も書き換わる
0326名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 15:51:35.34
【1 OSの種類         .】 Windows8.1
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

マンションの駐車場の抽選を行います。
駐車場は45ヵ所あり,世帯数も45ヵ所あります。
駐車場を希望しない世帯がある反面,2台目を希望する世帯もあり,申込数は45を越えます。
まず,駐車場を希望するすべての世帯に必ず1台目の駐車場は割り当てられます。
全世帯に1ヵ所ずつの駐車場が割り当たったあと,残った駐車場に対して,2台目を希望する世帯で抽選します。

(1) 駐車場には1〜45までの番号が振ってあります。
(2) 世帯は201〜205,・・・1001〜1005の45世帯です。
(3) 全世帯に,希望する駐車場所(駐車番号)を希望順位が高い順に1〜45まで記入して貰います。
(4) 各世帯にRAND関数などで,1〜45まで抽選順位を付けます。
(5) その順位によって,その世帯が希望する順位の高い番号の駐車場を割り当てます。

例年は,全世帯から一人ずつ集まり,くじ引きを行い,その数字が小さかった人から,希望する駐車場の場所を選んでいきました。
(3)のようなこともしていなかったため,その場で「う〜ん,どこがいいかしら?あら,ここがよかったんだけど,もう決まっちゃってるのね」と数分悩む方もいて,無駄に時間がかかっていました。

今年度は三密を避けるために,例年のように抽選会が開けないため,(4)の方法で順位を付けることになりましたが,
(5)においては,(3)の内容が記入された用紙を見ながらアナログで割り当てていくことにしました。
この(5)と(3)を関連付け,自動的に行うことはできないでしょうか?
0327名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 15:53:42.21
追記
(3) 全世帯に,希望する駐車場所(駐車番号)を希望順位が高い順に1〜45まで記入して貰います。

については,
希望順位1位=駐車場番号23
希望順位2位=駐車場番号11
希望順位3位=駐車場番号30
・・・
ということです。
0328名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 16:09:43.45
>>326
もちろん可能だけど2千件のデータを入力する手間を考えたら手作業でやった方が早いんと違う?
入力ミスの確認とかどうやるつもりよ
0329名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 17:09:15.22
>>328
レス,ありがとうございました。
入力の手間,確認の手間を考えると,手作業の方が速いかもしれませんね。
それはそれとして,後学のためEXCEL(VBAを含む)での手法をお聞きしたいです。
0330牧野 ◆Vbs7gX72NY
垢版 |
2020/08/15(土) 17:11:19.96
>>326
・45世帯から用紙を徴収して、RAND順に並び替える
・駐車場の一覧で空きを見ながら順に決定していく
・2台目移行希望の人は2周目で同じように決めていく

一回キリだしエクセルに入力するよりも早いと思う
0332名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 17:45:16.12
そもそも
> (3) 全世帯に,希望する駐車場所(駐車番号)を希望順位が高い順に1〜45まで記入して貰います。
とか面倒くさすぎるだろw
1〜3位
0333名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 17:47:23.31
すまん、途中で書き込んでしまった

そもそも
> (3) 全世帯に,希望する駐車場所(駐車番号)を希望順位が高い順に1〜45まで記入して貰います。
とか申請する方も面倒くさすぎるだろw
1〜3位ぐらいまで書いてもらって割り当てきらなかったらこっちで割り当てますってやった方がいいと思うよ
0336名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 18:08:05.52
紙をシャッフルしてRANDの代わりにすればいい
そうすれば1枚目から手作業で埋めていけばいい
それに45番まで書かない人とか絶対にでてくるから面倒くさくなるぞ
0337名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 18:08:36.37
書込み中・・・

ERROR!
ERROR: レスアンカー多すぎます! (Anchor count:6)
問い合わせID:mevius/5c31c3e45f8eefaa
ホスト:118.206.30.125.bf.2iij.net

名前: 名無しさん@そうだ選挙にいこう
E-mail: sage
内容:
皆さん,レス,ありがとうございました。
>>330
今回は,まさしくその手順で行うことになっています。

>>332-333
駐車場所によって利便性や快適性などが異なるため,1〜45まで決めて貰うことになりました。
私もその点には賛成しました。

>>335
これまでも,抽選会に参加せず「完全委任」する方は,数台×6区画に分けたうちの,6区画にのみ1〜6位の希望順位を付けて貰っていました。
そういう方は,区画内の場所には細かくこだわらないため,それでよいのだと思います。

>>331
紙の方が速いようですね。

>>334
今年度は三密を避けたいという理由ですが,来年度以降も無駄に時間がかかる抽選会は勘弁して欲しいと思っています。
それで,EXCELでできれば,その方法を提案できると考えました。


今回は紙の方が速いとわかりました。
ただ,単純に後学のために手法を知りたいと思ったまでです。
0339名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 18:39:46.56
>>329
まず45*46の二次元配列と、45項目の駐車場配列を用意
二次元配列の片方が46項目あるのは部屋番号を一緒に入れておくため

乱数で順番を決めて第一希望から順に選び、駐車場テーブルに部屋番号を入れてく
あとはその繰り返し

プログラムとしてはきわめて単純
データ入力が最大のネック
0340名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 18:41:42.16
47項目にして希望台数も入れた方がいいかな
希望台数をカウンターの代わりにして選ばれるたびにデクリメント
そうすれば、駐車場を使わない人の処理を別に作らなくて済む
0342名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 19:00:46.31
エクセルを立ち上げたときにユーザーフォームのみが立ち上がって
起動メニューのようにしているのですが、
起動するときユーザーフォームの前に一瞬、ブック内のエクセルのシートがチラついて表示されてしまいます。
これは仕方のない事なのでしょうか?
0343名無しさん@そうだ選挙にいこう
垢版 |
2020/08/15(土) 19:30:47.52
>>339
> 二次元配列の片方が46項目あるのは部屋番号を一緒に入れておくため
老害すぎるw
Type 希望駐車場
部屋番号 As Integer
駐車場(1 To 45) As Integer
End Type
Dim 希望(1 To 45) As 希望駐車場
ってやるべきだろ
※ 型名/変数名はテキトー
0351名無しさん@そうだ選挙にいこう
垢版 |
2020/08/16(日) 02:57:31.89
>>326
A列に部屋番号
B列に希望順位
C列に希望注射場番号
D列に「乱数込みの希望順位」として =B2+RAND()

タイトルと45x45なので2026行できるはず
出来上がったら「乱数込みの希望順位」列でソートする

続いて目測で上から順に決定していく
自動判定の計算式を考える時間より目測のほうが遥かに早い
当選の〇を入力したら以下は斜線が引かれるなどの判定を補助する書式設定とかをつけた方がいいかもね
0353牧野 ◆Vbs7gX72NY
垢版 |
2020/08/16(日) 06:43:44.04
>>351
>続いて目測で上から順に決定していく
>自動判定の計算式を考える時間より目測のほうが遥かに早い
>当選の〇を入力したら以下は斜線が引かれるなどの判定を補助する書式設定とかをつけた方がいいかもね

E列に一位判定用を作ってフィルタとかでいいんじゃないか
E2=B2<>B1
TRUEでフィルタすれば当選者一覧になるはず
0356名無しさん@そうだ選挙にいこう
垢版 |
2020/08/16(日) 20:56:15.53
>>350
フィルタで絞った可視セルで、複数の条件に一致する件数をカウントするのはどうすればいいですか?

COUNTIFSのフィルター集約分だけをカウントしたい。
0360名無しさん@そうだ選挙にいこう
垢版 |
2020/08/17(月) 03:15:04.51
EXCEL2020でCtrlキーを押しながら複数の行を選択しながら行の幅を変えようとするとフリーズします。Ctrlキーを離して通常幅を変更すると問題なくできます。
対応方法はないでしょうか?
0365名無しさん@そうだ選挙にいこう
垢版 |
2020/08/17(月) 15:36:04.93
お世話なります。VBAを勉強中のものでして

=IF(C2>=80,"優",IF(C2>=70,"良",IF(C2>=50,"可","不")))

これを

Function test(c) As String

If c >= 80 Then
test = "優"
End If

If c >= 70 Then
test = "良"
End If

If c >= 50 Then
test = "可"
Else
test = "不"
End If
End Function

とすると、74でも「可」しかでなくなりました。
知恵をお貸し頂ければ幸いです。
0369名無しさん@そうだ選挙にいこう
垢版 |
2020/08/17(月) 18:35:08.46
>>365
Function test(rng As Range) As String
Dim c As Long
c = rng.Value
If c >= 80 Then
test = "優"
ElseIf c < 80 And c >= 70 Then
test = "良"
ElseIf c < 70 And c >= 50 Then
test = "可"
Else
test = "不"
End If
End Function

シート上で"=test"を入力して得点が入力されているセル番地を入力すれば答えが出る
0370名無しさん@そうだ選挙にいこう
垢版 |
2020/08/17(月) 19:41:34.42
>>365
VBA の Select Case でいいかと
Function test(c) As String
Select Case c
Case Is >= 80
test = "優"
Case Is >= 70
test = "良"
Case Is >= 50
test = "可"
Case Else
test = "不"
End Select
End Function
0371牧野 ◆Vbs7gX72NY
垢版 |
2020/08/17(月) 20:57:27.04
>>369
可読性悪いかねぇ

Function test(rng As Range) As String
Dim c As Long
c = rng.Value * 1
If c >= 80 Then
test = "優"
ElseIf c >= 70 Then
test = "良"
ElseIf c >= 50 Then
test = "可"
Else
test = "不"
End If
End Function
0372名無しさん@そうだ選挙にいこう
垢版 |
2020/08/17(月) 21:21:36.98
>>371
変数名の具体性によるんじゃない?
変数名がcならifの方が読みやすいかもだし、
変数名がTensuとかなら長いし具体的だしSelectの方がいいとか
0373名無しさん@そうだ選挙にいこう
垢版 |
2020/08/17(月) 22:19:23.29
>>371
言われてみればANDはいらないな
コード3行目の最期の * 1 は意味があるの?
0374牧野 ◆Vbs7gX72NY
垢版 |
2020/08/17(月) 22:26:29.34
>>372
確かに

>>373
=test(90)が動かなくてちょっと色々いじってたんだ、*1は間違い。

一つ聞こうと思ってたの忘れてた
longじゃなくなんでrangeを引数にしてそこからvalueを取っているんだろう

Function test(c As Long) As String
If c >= 80 Then

じゃダメなんかな
0375名無しさん@そうだ選挙にいこう
垢版 |
2020/08/17(月) 22:31:21.19
>>374
最初に質問者のコードを見たときにエラーが出るんじゃないかと思って変えた
でも、後から変える前の奴を試してもちゃんと動いたから、いらない変更だった
個人的には自分の奴のほうがわかりやすいとは思うけど
0376名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 00:33:43.22
>>365
Function test(c) As String
test = WorksheetFunction.HLookup(c, Array(Array(0, 50, 70, 80), Array("不", "可", "良", "優")), 2, True)
End Function

俺からも
可読性いいでしょw
0377376
垢版 |
2020/08/18(火) 01:30:49.20
Function test2(c) As String
test2 = Choose(1 - (c >= 50) - (c >= 70) - (c >= 80), "不", "可", "良", "優")
End Function

可読性を損なわず、もうちょっと短くできたよw
0381名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 11:52:29.69
>>365
その書き方だと得点の高い方から判定するとおかしくなる
50点以上なら80点でも100点でもみんな可になってしまう
こういう時は低い方から判定すればいい

Function test(c) As String
test = "不"
If c >= 50 Then test = "可"
If c >= 70 Then test = "良"
If c >= 80 Then test = "優"
End Function
0384>>365
垢版 |
2020/08/18(火) 17:16:18.12
皆様ありがとうございます。
様々なレスがついて驚きました。
やはり書き方は千差万別なんですね。

関数ばかり触ってきたのでIFのネストが癖になっており
IF〜End IF , IF〜End IFでSelect Caseのような分岐ができると
ばかり思っていました。

ElseIfを知り、無事に(?)自身のなかでの問題が解決しました。

レスをしていただいた皆様、本当に感謝します。
0385>>365
垢版 |
2020/08/18(火) 17:27:57.08
因みになんですが、>>378 を試して動いたことに驚きなんですが
原理を解説していただけると幸いです。
MIDで何をどう抜き出しているのかさっぱりで…。
0388名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 20:54:59.74
初心者です
初めて書き込みます
毎日にその日の取引先をプリントアウトし、事前にある定められた((取引会社名)(送り先)約100)に該当するものを目視でチェックしマーカーを引いています。
物凄い時間がかかり何とかならないかと思っています
該当する取引先だけ背景が色を変えるとか
最悪、該当する取引先だけ抽出できないでしょうか?
0390名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 21:09:46.50
その日の取引先名称、送り先名称、日付やら品名やら取引番号などのデータ
一覧から
予め決められた取引先名称or送り先名称があるところをわかるようにしたい

今は一覧をプリントアウトして、いちいち人力でその該当する取引をチェックしています
0391名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 21:14:19.84
完成形というか一覧に手書きのチェックだけです
手書きのチェックは面倒ではありませんが、片手に別紙で100もの取引先名称と送り先名称を確認しながら、プリントアウトした一覧にチェックを入れています
0397名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 22:12:19.04
>>396
エクセルの一番左端に1とか2とか書いてありますよね?
それを「行(ぎょう)」と言います
その1とか2とか書いてあるところを左クリックします
クリックした行全ての色が変わりましたね?

エクセルの上の方にペンキマークと▼マークがあると思います
ペンキマークの右側の▼マークを左クリックしてください
沢山の色が出てきました
好きな色を選んで左クリックしてください

これで完成です
0400名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 22:21:01.09
ひとつ人力で行の色を変えろと?(笑)
例えば
予め定められたリストとして
(得意先)     (出庫置場名)
金沢商店       山下倉庫
渡辺エンジニア    木沢倉庫3
以下50        以下50  
の表もあるとします
できれば、この表にある得意先や出庫置場に該当するところだけ、396の表の行を変えたいもしくは抽出できればと思っています
0408名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 22:44:02.56
いくつか質問があるんだけんどまず1つ

   A      B     C
1
2 あああ   AAA   100
3 いいい   BBB   200
4 ううう    EEE    300
5 おおお   AAA   400
6 あああ   CCC   500
7 あああ   AAA   600

みたいな元データがあるとします

=UNIQUE(A:A)
とすると先頭に0が出てきますが

=UNIQUE(INDIRECT("A2:A"&COUNTA(A:A)+1))
としないとダメ?
0410名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 22:47:39.47
膨大にあるのでマーカーでレ点をパッパッと付けていっているだけなので、綺麗さは求めませんが、、、
一覧用紙で欲しいのです(笑)

モニターに抽出されたものであればそれを見て手でチェックするという方法でも、100倍効率があがると思っています
0411名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 22:55:28.98
2つめ

   A     B    C
1
2 あああ   AAA   100
3 いいい   BBB   200
4 ううう   EEE    300
5 おおお   AAA   400
6 あああ   CCC   500
7 あああ   AAA   600


この元データの集計表をテーブル化しないでうまい事作りたい

左端は
=UNIQUE(INDIRECT("A2:A"&COUNTA(A:A)+1))

上は
=TRANSPOSE(UNIQUE(INDIRECT("B2:B"&COUNTA(B:B)+1)))

でマトリックス表を作り
マトリの中身をどうすればいいか悩んでます
SUMIFSで何とかなりそうだけどテーブル化してないとA列が行増えたりB列にFFFみたいに新しい項目が入った時に対応出来ないんですよねぇぇぇ
0412名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 23:03:47.13
>>411
D列とか好きなところに
if(countif($A$1:A1,A1)=1、MAX($D$1:D1)+1、“”)

という式をつくってユニークなナンバーを振り当てて
マトリックスにはIndex( MATCH(
で項目つくる
中身はsumifsで、縦と横からデータとってきて集計する
0415名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 23:12:45.20
>>412
折角だからスピル使いたいなぁぁぁ

>>413
テーブル化すると元データが増えたりすると謎のテーブルが勝手にどんどん増えていくんだもん
増えない方法ある?
0419名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 23:46:29.73
テーブルのある列に入力されている値から、重複しないデータの入力規則を作りたくて困ってます、助けてください

現在は、VBAでDictionaryを使って登録していき、JoinでKeysをカンマ区切りして登録しています

Itemを使わないのがモヤっとするので、他に良い方法がありましたら御教授いただけると幸いです
0420名無しさん@そうだ選挙にいこう
垢版 |
2020/08/18(火) 23:49:16.58
>>418
ほうほう
勝手に名前増えていかない?

あとFILTERの含むの所ってANDとかORって使えない?
配列っぽいから出来ないかな?
って思ったけどANDは*でORは+でいけたわ!

名前が勝手に増えていかなければこれでいこうかなあああああ!!!

ありがとうよ!
0423名無しさん@そうだ選挙にいこう
垢版 |
2020/08/19(水) 02:55:59.94
上下にスクロールするのに、セル単位でのスクロールではなくスムーズにスクロールする機能は今も実装されてないのでしょうか?
ホイールクリックからスムーズにスクロールできますが使いづらくて・・・
0424名無しさん@そうだ選挙にいこう
垢版 |
2020/08/19(水) 03:21:50.70
>>423
ない
VBAでスクロールもどきなら簡単に作れる
0428名無しさん@そうだ選挙にいこう
垢版 |
2020/08/19(水) 11:20:00.77
VBAで動作させる場合(視認性は別として)
IFネストで
条件1-条件2=処理1
条件1-条件3=処理2

とするのと

IF 条件1&条件2=処理1
IF 条件1&条件3=処理2

とするの

どちらが軽量で処理が早いですか?
0430名無しさん@そうだ選挙にいこう
垢版 |
2020/08/19(水) 14:04:49.07
=SUM(C2:D2:D2)
ってどういう意味でしょうか?
0432牧野 ◆Vbs7gX72NY
垢版 |
2020/08/19(水) 20:14:34.57
>>430
=SUM(B3:C4:A1:D2)
試してみたけど、最も左上から最も左下のセルを参照するっぽい挙動

MSDNにも2つの参照と書いてあるので、あまり良くない使い方ではあると思う
https://support.microsoft.com/ja-jp/office/%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%A8-excel-%E3%81%A7%E3%81%AE%E5%84%AA%E5%85%88%E9%A0%86%E4%BD%8D-48be406d-4975-4d31-b2b8-7af9e0e2878a

googleスプレッドシートでも同じ挙動
0433名無しさん@そうだ選挙にいこう
垢版 |
2020/08/19(水) 20:16:44.21
>>423
アニメーションをONにすればスムーズにはなるけど、
2/3セルとか、中途半端な位置で止めたいという事?

ていうか、何か困るのそれ。
ドラクエIの洞窟は、8ドット単位でも見づらかったけど。
0436牧野 ◆Vbs7gX72NY
垢版 |
2020/08/19(水) 20:28:28.47
>>419
UNIQUE関数とか
=UNIQUE(A:A,FALSE,FALSE)

後はピボットに放り込んで一意のリストを作るってのはたまにやるかな
でもvba使えて実現できているならそれでいいんじゃない
0437名無しさん@そうだ選挙にいこう
垢版 |
2020/08/19(水) 22:18:30.72
>>435
VBAを使って自分好みのスクロールになるように作ればいい
0438牧野 ◆Vbs7gX72NY
垢版 |
2020/08/19(水) 22:24:47.50
>>437
列幅を変更する事で擬似的にセルの途中で止まってるように見せかける事で実現出来なくもないのか
0439名無しさん@そうだ選挙にいこう
垢版 |
2020/08/19(水) 22:35:57.99
>>438
ごめん、セルの途中で止まってるようにの意味がわからない
0440名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 12:28:59.79
すいませんエクセル2019ですが

数字を入力しているセルに追加で数式を入力する場合
f.2を押してカーソルキーでセルの頭までカーソルを動かし、”=”を入力するという事をやっているのですが
何故か”=”に限ってセルの頭で入力しもセル末尾に入力されてしまいます

[12345]

ここにカーソルを持って来て”=”を入力すると
[12345=]
    ↑
   何故かここに入力される

この現象が起きるのはテンキーの”=”だけでフルキーだと普通に入力されます

質問としては
1.何故この様な事が起きるのか? ひょっとしたらエクセルではなくATOKのお節介?(ただエクセル2010ではこのようなことは無かった)
2.回避方法はどうすればいいか?
3.あるいは、こんなマヌケな方法ではなく、一発で数字の入ったセルの頭に”=”をいれたり
 ”=”を入れ無くても計算式として認識する方法があるのか?
 (”=”なしでいきなり”+54321”とか数式を入れると文字列に変換される)

よろしくお願いします
0442名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 13:42:29.92
テンキーにイコールあるんかいな
0443名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 16:00:16.25
質問です
ウィンドウ枠の固定で、固定した行より上の行、固定した列より左の列を表示する方法はありますか。
固定して表示する行と列は1行・1列ですが上の行や左の列に入れた内容を見たり修正したいので。
0447名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 16:52:01.22
440
普通のキーボードならテンキーにイコールってないから、外付けのキーボードを使ってる?
あんまり普通じゃないから、そのキーボードのせいじゃないかな
0448名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 17:23:12.40
お世話になります。
A1 + B1 = C1
A2 + B2 = C2
の時、C列の1つでも5を超えるとき"×"が表示されるような
判定は関数で作成できますでしょうか?
無理であればVBAでも構いません。
何かヒントを頂けると幸いです。
0449>>448
垢版 |
2020/08/20(木) 17:28:18.66
{=IF(AND(C:C<=5),"×","〇"}
自己解決しました
0450名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 17:30:59.36
>>448
COUNTIFS関数の検索条件として「5よりおおきい」を指定します。「=COUNTIFS(C:C,」に続いて『">5")』と入力し、【Enter】キーを押します。検索条件は「"(ダブルクォーテーション)」で囲みます。

つまり
=if(COUNTIFS(C:C,">5")>0,“×”,“ok”)
0451名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 17:59:01.98
>>446
ありがとうございました
0453名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 18:55:03.04
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel365
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

工事シートと支払シートでそれぞれ入力しているシートがあり、工事Noからそれらを紐づけて
工事No1 工事名 支払1 支払額
工事No1 工事名 支払2 支払額
工事No2 工事名 支払1 支払額
というように二つの情報をマージするようなシートを新しく出力処理を考えています

For i = 1 To 工事件数
小項番数 = 1

For j = 1 To 支払件数
If 工事データ(i, 1) = 支払データ(j, 1) Then
.Cells(tempRow, 1) = 工事データ(i, 1)
.Cells(tempRow, 2) = 小項番数
小項番数 = 小項番数 + 1
.Cells(tempRow, 3) = 工事データ(i, 2) '物件名
.Cells(tempRow, 4) = 支払データ(j, 16) '業者名
.Cells(tempRow, 5) = 支払データ(j, 17) '支払金額

tempRow = tempRow + 1
End If
Next
Next
どちらとも1000件あるので、処理時に結構時間がかかってしまうのですが完了まで1〜5分かかります
1000件ループ中に、更に1000件回すからだと思うんですが、もっと効率的な処理ありませんか…?
0456牧野 ◆Vbs7gX72NY
垢版 |
2020/08/20(木) 19:55:30.28
>>440
聞いたことないけど、キーボードの不調な気がする。「=」押すとendキーか↓キー辺りと合体してしまっているような

1.ATOKはしらんけどgoogleimeなどに買えてみると問題の切り分けが出来る
2.分解して埃を取るかテンキー買い替え。テンキーが独立したキーボードならドライバ再インストールなど
3.=ではなく+にしてみる。+sum(a1:b2)でも数式として認識してくれるよ。確か@でも行けた気もするけどかなりキモイからオススメしない
0457牧野 ◆Vbs7gX72NY
垢版 |
2020/08/20(木) 19:58:41.69
>>453
もうちょい正確なデータをアップしてくれればかなり短縮できそうだけど、この辺で良い気がする

イベントを止める
Application.EnableEvents = False
再描画を止める
Application.ScreenUpdating = False
再計算を止める
Application.Calculation = xlCalculationManual
この3つだけでokです。

https://15g.jp/post-314/
0458名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 20:29:11.08
>>440
そんなもんじゃないの?
俺もIndexMatch使う時、

=INDEX(C:C,MATCH(A:A,C:C,0))
        ↑ここにカンマ打ちたいのに、

=INDEX(C:CMATCH(A:A,C:C,0)),
                    ↑何度やってもここに打たれちゃうことがある

しょうがないから、メモ帳に書いてからコピペしてるわ。
俺のは2013だけど、2019でも直ってないの?
0461名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 20:49:05.64
エクセルあるあるだな。
コマンドボタンがどこかにすっ飛んでいくとか、
ボタンを押下した状態の画像と、離した状態の画像が別の位置にあるとか、色々あるけど、
一番笑ったのは、何かファイルが重いな〜と思ったら、1万本の直線が綺麗に重なっていたこと。
どっから湧いてきたんだよwww
0462名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 23:23:45.97
俺のエクセルはウインドウ枠の固定をしているシートだけ、マウスクリックを数回するだけで勝手に複数のセル範囲を選択してしまう
おそらく、SHIFTキーを押した状態になっているからだと思う
あと、画面電源オフからオンにするだけでCtrlキーが押しぱっなし状態になってwindowsを再起動をする必要が出てくる
エクセルを3回再インストールしたけど直らんから諦めているわ
0464名無しさん@そうだ選挙にいこう
垢版 |
2020/08/20(木) 23:46:35.87
>>463
パソコン本体かなとはうすうす感じてはいるんだけどな
ちなみに、キーボードとマウスは複数持っていて変えても同じ症状だから、それらは問題ない
0466名無しさん@そうだ選挙にいこう
垢版 |
2020/08/21(金) 08:01:21.78
>>440
俺も似たような現象で困ってる
IME Onのまま「=123 …」って打ってから画面見たら「ほ123 …」ってなってるからIME Offにしてカーソルを「ほ」の後ろに持って行って Delキー と = キーを打つとなぜかカーソルが最後尾に移って「123 …=」ってなる
※ 「ほ」ってなってるのはかなタイパーだから
0468名無しさん@そうだ選挙にいこう
垢版 |
2020/08/21(金) 11:02:19.23
日付データを数値に変換する関数はありますか?
text(a1,"0")でも可能ですが、なんか他にないかなと
0469名無しさん@そうだ選挙にいこう
垢版 |
2020/08/21(金) 11:37:22.39
ワークシート関数なら=N(A1)とかの話?
0471名無しさん@そうだ選挙にいこう
垢版 |
2020/08/21(金) 12:09:13.57
>>442
あ、ごめん。そういやそうですよね><
リアルフォースのテンキーレス91キーと、リアルフォースの=キー付きテンキーを使ってます

https://www.realforce.co.jp/products/23U_WC0100/images/mainphoto.jpg

長年PC-98キーボードを使っていてどうしてもATキーに慣れないので
最近までコンバーター使ってPC-98キーボードを使ってたし

因みにPC-98キーボードはコレ(WINキー無しバージョン)
http://nkmm.org/yagura/kbd/m699/m699.jpg
どう考えてもこれの方が使い易いと思うが。特にテンキー側に=とカンマが無いのは許しがたい
=は一応キーアサインがあるので対応してるテンキーもあるが、カンマはどうやらシングルキーアサインが無いらしく
ATアーキテクチャだとどうやっても出せ無いっぽい
0472名無しさん@そうだ選挙にいこう
垢版 |
2020/08/21(金) 12:12:48.60
>>447
ATでも一応テンキー側の=というキーコードはあるみたいで(ハード的には無いが)
これが原因かも知れません
フルキー側の数字キーとテンキー側の数字キーでキーコードが違うような物

ただエクセル2019でのみ発生するのが謎(97、10、19しか使ったことが無いが)
0473名無しさん@そうだ選挙にいこう
垢版 |
2020/08/21(金) 12:18:14.91
>>456
ありがとうございます

> 聞いたことないけど、キーボードの不調な気がする。「=」押すとendキーか↓キー辺りと合体してしまっているような

エクセル2019のみの現象なので違うと思う。2010、97では発生しない

> 1.ATOKはしらんけどgoogleimeなどに買えてみると問題の切り分けが出来る

それもそうだw と言う事でやってみたけど同じ。つまりFEPは関係無し

> 3.=ではなく+にしてみる。+sum(a1:b2)でも数式として認識してくれるよ。確か@でも行けた気もするけどかなりキモイからオススメしない

おおっ求めていたのはコレだ!=より+の方が押しやすい位置にあるのでこれで全解決。
しかもリターン押すと自動的に=に変換される。素晴らしい
0474名無しさん@そうだ選挙にいこう
垢版 |
2020/08/21(金) 12:29:05.94
とやってみたところで、別件でもう一つ謎の挙動を発見した

エクセル2019でいきなりテンキー側の−(マイナス)キーを押すと入力されずに「範囲選択の拡張」モードになる
所謂f.8を押したときと挙動が同じ
f.2を押した後にテンキー側の−を押すと普通に−で入力される
(f.2→f.8だと派に選択の拡張モードになる)

Lotus1.2.3互換で/キーでALTメニューが出るのは知っていたが、これって普通?
長年気付かなかったけど
0475名無しさん@そうだ選挙にいこう
垢版 |
2020/08/21(金) 14:49:43.62
ショートカット系はテンキー側だと変わるよ
単純な例だと[ctrl]+[1]の書式設定はテンキー側だと出ない
0476牧野 ◆Vbs7gX72NY
垢版 |
2020/08/21(金) 19:51:12.38
>>467
A1 + C1 = D1
A2 + C2 = D2
のようにして後は回答と似たようにすれば良いのでは

>>474
知らなかったけど、そもそもテンキーが無かった
暇なら仮想キーボードとか色々試してみるのもいいかもね
0477名無しさん@そうだ選挙にいこう
垢版 |
2020/08/22(土) 12:24:52.24
質問!

京都 25 →25
東京 65  25
大阪   
福岡 69  69
長野 45  69
栃木 52  69

みたいにランダムに振られた数値で
隣接する数値があった場合に上の数字と同じになる
みたいなのがやりたいんだけど
関数やり方教えて!
0479名無しさん@そうだ選挙にいこう
垢版 |
2020/08/22(土) 12:57:50.40
Aというファイルのシート1をコピーして別名ファイルBに貼り付けて作業用に使ってたんですが
今日からいきなり貼り付けのオプションで値貼り付けとかが出なくなりました
excelのオプション詳細設定のチェックボックスは入ってます
今までは普通にBシート1→Aシート1に貼り付け出来ていたのですが
コピー元と貼り付け先別々のファイルでも今まで貼り付け出来てたのが出来なくなったのはファイルA側で何かされたのが原因ですか?
毎日作業用にコピーしたファイルBをずっと使用してました
ファイルBでのコピーが何だか勝手にテキスト扱いになってる気がします・・・

excelのバージョンは詳しく覚えてないですが2013以降なのは間違い無いです
拙い文章ですいません
0481名無しさん@そうだ選挙にいこう
垢版 |
2020/08/22(土) 20:56:46.36
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

例えば16枚のシールを3列に、できるだけ均等に貼り付けようとする時用に

    A       B      C      D      E
1  元の枚数   列数  1列目   2列目   3列目
2    16       3     6      5       5

という表を作りたくて、ネットで見つけた式をもとにC2を
=IF($B2<COLUMN(A2),"",INT($A2/$B2)+(MOD($A2,$B2)>=COLUMN(A2)))
で右に式コピーして、これはうまくいきましたが、表の位置を↓のようにして式をG3に

    E       F      G      H      I
2  元の枚数   列数  1列目   2列目   3列目
3    16       3     6      5       5

=IF($F3<COLUMN(E3),"",INT($E3/$F3)+(MOD($E3,$F3)>=COLUMN(E3)))
とすると1列目・2列目・3列目が空白になってしまいます。どう改変すればいいでしょうか?
よろしくお願いします。
0483牧野 ◆Vbs7gX72NY
垢版 |
2020/08/22(土) 21:05:16.28
>>479
ファイルのバージョンは?
xls形式ならxlsx形式にすると良い
なんか再起にxls形式でフリーズが頻繁に発生するようになっている気がする
0484牧野 ◆Vbs7gX72NY
垢版 |
2020/08/22(土) 21:14:45.88
>>481
G3=IF($F3<COLUMN(A1),"",INT($E3/$F3)+(MOD($E3,$F3)>=COLUMN(A1)))

COLUMN(A1)はセル番地ではなく「1列目」の意味で使っている
COLUMN(B1)は「2」列目という意味のようだ
0485481
垢版 |
2020/08/22(土) 21:48:04.85
>>484
おかげさまで成功しました。ありがとうございます!

>>482
すみません。もう少しちゃんと勉強します。
0486名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 05:43:03.73
excelとワード2003がもう限界なんだけど、新しいのはバージョン何を買えば良いの?
月額とかは払いたくない
コスパ良いバージョンは何?
0491牧野 ◆Vbs7gX72NY
垢版 |
2020/08/23(日) 07:16:35.72
>>489
やることによって違うので何とも言えないが
・家計簿ぐらいの利用でネットにも繋がっていない環境ならそもそも2003でも十分
・xlsxを使うなら2019。アップグレードが長く続くのでもっともコスパが良い
0492名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 07:33:30.91
>>486
Officeアプリにコスパなんて考え方は普通しないから、質問の意味がわからん
限界とはどういう状態のことか、2003では何ができなくて何をやりたいのか
そもそも今正規に買い切れるのは最新の2019しかない
0495俺は486
垢版 |
2020/08/23(日) 08:33:21.54
>>488
エクセルとワードで1万くらいなら買取で払っても良い。
改造版じゃない2018とか2015とかなんでもいいが。

489は俺じゃない

>>491
簡単な関数は使いたい、phoneticとかifとか。
2003の挙動がもうめちゃくちゃになってきてる。パソコンを再セットアップリカバリしてもなおらないから
もう2003自体がWin10に対応していないとおもう。ワードもおかしいし。

>>492
2019以前のって買えないの?海賊版以外のやつ
0496名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 08:46:44.89
>>495
だからその「挙動がめちゃくちゃ」「ワードもおかしい」の部分を、もうちょっと具体的に書いて欲しいのよ
保証はないけど一応基本的な機能はWin10+2003でも使えるのを多くの人が確認してるから、原因がどこにあるのかをまず共有しないと質問に答えられない

とりま今から買える正規品は2019と365だけ
それ以外は海賊版か中古、運が良ければどこかのショップやオークションで長期在庫品が見つかるかも知れないってレベル
0497名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 08:50:51.54
>>495
もしIEをコントロールしてネットからデータ収集してるなら、マクロが正常に動かないのは新しいIEのせいだよ
Excelを最新にしても同じ
0498牧野 ◆Vbs7gX72NY
垢版 |
2020/08/23(日) 09:03:04.30
>>494
2007からファイル形式が変わってxlsxになった
2003以前のxls形式はセキュリティ的に終わっているので、大半の人はxlsxを使っている
他の人とファイルをやり取りする時にはxlsx形式の方が都合が良い
自分のPC内で家計簿付けるだけなら、2003のxls形式でも何一つ問題はない

>>495
互換モードってのがあるからそれを試してみてはどうかな
https://pc-karuma.net/windows-10-apps-compatibility-mode/

それでも動かないなら2019で良いだろう
0499俺は486
垢版 |
2020/08/23(日) 09:35:59.46
>>496
挙動について
ワードはページが360ページあるんだけど、
箇条書きボタンを押して●や数字を表示させようとすると、10秒から20秒位ワードがフリーズする
その時にタスクマネージャーを見ると使用率が1%位から13%位まであがる
CPUのファンも高速回転する

エクセルのおかしい挙動は
データがたてに5000セル位分横に4列位あって、それが関係しているかどうかわからないが
この横4列のどれかのでデータをデリートとかで削除しようとすると、ワードのときと同じくフリーズして、CPU稼働率アップする


他には、
関数使った時に、うまくいくときと行かないときがある

それが俺の操作ミスなのか、バージョンがだめなのかって検証するのもだるいくらい頻繁に多くトラブルが起きる。

他には
Win10の2年くらい前のアップデートのときは、エクセルに文字を入れてエンターで確定させるとワードのときと同じ挙動が起きていた
去年のWin10バージョンアップをしたらそれではエクセルの文字入力エンターのトラブルは起きなくなった


>>498
互換性のタブがワードもエクセルのプロパティになかった

>>497
IEは使ってない
0503名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 12:50:45.93
PCが低スペックなのが原因だったら2019買っても治らないんじゃないのかな。悪化するかも。
0505名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 12:59:46.75
>>502
そういう単純な理由ならMicrosoft Office 互換機能パックを入れれば開くことは出来る
2018年についに公開中止になったけど、探せば見つかるし2003とかの人はまず入れてるんじゃ無いかな
すぐにセキュリティガー!とか言う人は必ずいるけど
0506名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 13:03:47.52
>>503
後、ファイルがおかしくなってるというパターンもある
その場合どのPCやオフィスで開いても同じ様な現象が出る

昔のエクセルはセルの書式設定の上限が決まっていて、上限を超えるとある日突然開け無くなると言う
致命的な「仕様」があったからな
救済方法も無いとか明らかに酷いけどMSは仕様だと言い張っていたし

長年コピーペーストを駆使して複数ワークシートを作成していたブックとかで起きやすい
0509名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 14:08:46.04
その価格を払う価値が無いと思うのであればOpenOfficeやグーグルスプレッドシートを使うしか無い
ただ将来仕事で使うとかの予定があるのであれば間違い無く必要な投資と考えた方がいい
97や2003あたりは10年使う人も多かったし、2010でも未だに現役な人は多いから決して高くは無いと思うが
0513名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 14:42:11.59
こいつの問題はPCがいかれてること
Excel新しいの買っても解決にならない
それ以前に大したことに使ってないみたいだけどな
0519名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 18:45:11.54
さっきから、高いだの旧バージョンはないかだの、うるさいなあ

高いと思うなら買わなきゃいい。
旧いのほしけりゃ、ジコセキニンでオクででも探せ
0522牧野 ◆Vbs7gX72NY
垢版 |
2020/08/23(日) 19:36:55.18
>>499
Wordはあまり詳しくないけど・・・

>その時にタスクマネージャーを見ると使用率が1%位から13%位まであがる
i7 3770辺りの8コアでマルチスレッド非対応と仮定すると、1コアを限界まで使い切って頭打ちになっているかもしれない
全然違うかもしれない。
ただどういうPCにしろ、360ページは重すぎると思う

>互換性のタブがワードもエクセルのプロパティになかった
ファイルじゃなくてexcel.exeの方
https://i.imgur.com/1DbFWZV.png

>IEは使ってない
IEじゃない、マクロでIeをコントロールとして使っている場合。
0523牧野 ◆Vbs7gX72NY
垢版 |
2020/08/23(日) 19:40:01.53
>>507
それだけ便利で売れてるからね。正直、本気で使う連中なら15000円は安すぎる

>>521
古いバージョンが欲しくて、97を500円で買ったことなら
問題なく動いたよ
0525牧野 ◆Vbs7gX72NY
垢版 |
2020/08/23(日) 20:54:16.52
>>524
ヤフオク
https://auctions.yahoo.co.jp/closedsearch/closedsearch?p=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB97&;va=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB97&b=1&n=50
なんなら100円で落とされてる。2000円ぐらい出せば今でも即決で買えるようだ

今なら1000円で即購入できる
https://auctions.yahoo.co.jp/search/search?p=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB97&;va=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB97&b=1&n=50

プロダクトキーが無いものもあるから気をつけて
0526名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 21:00:40.63
名前をつけたセル範囲の、特定のセルだけ参照する方法はありますか?
=名前(1)
みたいに配列っぽくアクセスできませんでしょうか。
0531名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 21:47:19.34
>>522
互換性モードをWin8とXpサービスパック3に変えてもだめでした

私のパソコンはi7 3770kです 2012年あたりに買いました メモリは16Gです
グラボはついていません SSD500Gです
0533名無しさん@そうだ選挙にいこう
垢版 |
2020/08/23(日) 22:14:41.13
>>530
97の頃はライセンス管理がザルだったからコピーし放題
あとはわかるよね
牧野 ◆Vbs7gX72NY とやらがわざとなのか知らずにやってるのかは知らんけど害悪でしかない
0534牧野 ◆Vbs7gX72NY
垢版 |
2020/08/23(日) 22:34:50.62
>>529
大体当ててる自信はあったけどドンピシャとはだまげたなぁ
俺はi5 2400を使ってたんだけど、どうやってもだめで365を購入した。
結構いい年なので、そっちの方がコスパが安い。労力・セキュリティ面を含めたコスパだ
10代なら2019を購入し、また10年後にこういう質問をしただろうな

君はどこかで、2003を無限に使えると思っていると思うが、恐らくハード的に完全に限界だ
労力を含めたコスパを考えるなら、2019を買うのがどう考えてもベストなんだ

どうしても安く済ませたいなら、その代償に君の時給が下がり続ける事になり、それに見合った糞エクセルが提供されることになるだろう
0538名無しさん@そうだ選挙にいこう
垢版 |
2020/08/24(月) 09:29:05.52
2019ですがピポット棒グラフでを作ったときに、軸のラベルが一個置きに表示されること無いですか?
例えば軸が日付だとして

1/1 ■■■■
   ■■■■
1/3 ■■■■
   ■■■■
1/5 ■■■■

の様になる。棒はちゃんと全部表示される
これは勿論エクセルの自動機能のお陰なんですか、たまに
[軸の書式設定]→[軸のオプション]→[ラベル]→間隔の単位=1
とやっても直らない(というかデフォルトで1のはず)

謎1
縦が短すぎるかフォントが大きすぎるのかと思って縦を思いっきり延ばしたり、フォントを思いっきり小さくしても同じ

謎2
[軸の書式設定]→[サイズとプロパティ]
に4方向の余白やテキストのはみ出しを設定するっぽいのがあって、これかとも思うのですが
この設定は常にグレーアウトしていて設定出来た試しがありません

謎3
軸の行をフィルターしたりして表示する内容を変えると(例えば4月を表示していたのを10月にするとか)直ったりする


この謎の挙動はなんなんですかね?
0542名無しさん@そうだ選挙にいこう
垢版 |
2020/08/25(火) 12:02:31.44
お世話になります。

状況が限定的かもしれませんがお知恵をお貸しください。

VBAを使用し、ユーザー定義関数で処理を行っています。
シートが1,2,3とあり、同じフォーマットがコピーされている状況で
引用される数値がそれぞれシート毎に違い、算出される結果は異なるはずなのですが
最終更新したシートの数値が別シートにも反映されてしまいます。

(例)シート1=結果100 の時にシートを切り替える⇒シート2=結果100

ただし、シート2で適当なセルを更新すると結果が正しい数値に治ります。
処理落ちのような感じなのですが
解決する方法はありますでしょうか?

宜しくお願い致します。
0545>>542
垢版 |
2020/08/25(火) 14:10:05.61
回答ありがとうございます。

全シート確認しましたが、自動計算になっています。
又、関数ですが Application.Volatile True になっています。

シート変更した時に再計算するVBAでも仕込んだ方が
賢そうですかね…。これ以上重くはしたくないのですが…。
0546>>542
垢版 |
2020/08/25(火) 14:44:45.57
Application.Calculate も適用されません。
打つ手なしです…(汗)
0547名無しさん@そうだ選挙にいこう
垢版 |
2020/08/25(火) 19:15:20.64
win10、Microsoft365E、VBA不可

Excelでふたつのテーブルを比較させて不一致のレコードを抽出したい
EXACTでは追加や削除があった場合、それ以降すべて不一致として判定されるので使えません
互いの行がずれても正しく判定する方法があればおしえてください
0550牧野 ◆Vbs7gX72NY
垢版 |
2020/08/25(火) 19:36:46.61
>>542
ActiveSheetとか入ってる気がする

Function test()
test = ActiveSheet.Cells(1, 1)
End Function

これじゃなければコードを見ないと分からない

>>547
全部の列を繋いでcountif()とか
=a1&b1&c1・・・
これがもう一つのテーブルにあれば2で問題なし、1なら問題あり
0552名無しさん@そうだ選挙にいこう
垢版 |
2020/08/25(火) 21:15:36.32
>>547
レコードとかテーブルという用語を使ってる時点でクエリしか無いだろう。
0553名無しさん@そうだ選挙にいこう
垢版 |
2020/08/25(火) 21:40:30.84
>>542
ユーザー定義関数ってなんかへんなキャッシュ入るっぽいんだよね
必要なくてもセルを引数に取って、シートからはそのシート中の適当なセルを渡すとうまくいくかもしれない
0554名無しさん@そうだ選挙にいこう
垢版 |
2020/08/25(火) 22:27:58.54
A1セルとB1セルが空欄の時にB1セルに
"要入力"と表示され、かつB1セルを入力
可能のままにしたいのですが、方法は
ありますか?
プレースホルダーみたいなイメージです。
0557名無しさん@そうだ選挙にいこう
垢版 |
2020/08/26(水) 08:42:15.67
IF や VLOOKUP などの関数でときどき誤動作を起こします。
例えば IF(A1=1,"○","×") で、A1 が 1 なのに × になるとか。
詳しく調べると、A1 の表示は 1 なのに値は 1.000005 のような表示されない誤差。
A1 の式は 0.000005 の誤差が出ないはずですがEXCELの仕様?
とは言えすべての式を IF(ROUND(A1,0)=1,"○","×") のようにするのは面倒です。
計算結果も含め「小数*位以下の差は無視する」を既定設定で出来ますか?
0559名無しさん@そうだ選挙にいこう
垢版 |
2020/08/26(水) 08:59:11.83
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 否

tsvをコピーして貼り付けた際、今までは自動でタブ文字でセルが別れていました
しかし最近は1列にまとまってしまい、区切り文字→タブで区切り、セルを分ける必要が出てきています
貼り付けた時、自動的にタブ文字でセルが分かれるような設定ってあるのでしょうか?

元になるtsvは専用ソフトから出力されていますが、
手動で作ってみても同じでした
0560名無しさん@そうだ選挙にいこう
垢版 |
2020/08/26(水) 09:42:33.98
>>559
区切り位置の機能を一度でも使うと、その時の設定がコピペでも引き継がれる
適当なデータをTABで区切ったあとコピペすれば元の動作に戻る
昔からのおせっかい仕様
0561名無しさん@そうだ選挙にいこう
垢版 |
2020/08/26(水) 10:08:14.08
>>557
少し違うけど
オプション->詳細設定->表示桁数で計算する

でも、誤動作じゃないよ
計算の誤差も、10進数の小数点以下を2^-nの和で正確に表現できない事から起る仕様
0562名無しさん@そうだ選挙にいこう
垢版 |
2020/08/26(水) 14:52:24.42
>>561
ありがとうございます
オプション設定をしましたが、セルの値が 1.000005 なら表示が 1 でも × ですね。
結局、計算結果を参照して判断するなら ROUND 関数で計算誤差を丸めないと。
仕様とはいえ、微少な計算誤差は指定した桁で丸めるオプション設定が欲しい。
0564名無しさん@そうだ選挙にいこう
垢版 |
2020/08/26(水) 17:39:54.26
SET1 = Range("A1")+Range("A2")
SET2 = Range("B1")+Range("B2")

みたいなのをひとつだけ書いておいて
複数のプロシージャで使用したいです。
0570>>564
垢版 |
2020/08/27(木) 09:32:10.38
>>569
Public num = Range("A1")+Range("A2") As Integer
ではエラーになりますよね?
0573名無しさん@そうだ選挙にいこう
垢版 |
2020/08/27(木) 12:16:39.03
Aの欄に日付が入っています
Bの欄に数が並んでいます
Cの欄に分類のための番号が入っています

Aを横軸、Bを縦軸としたグラフをCごとの系列で作りたいのですが、
今まではIFを使って別シートにCの値でカラム分けした表を作ってからグラフにしていました
もっと簡単にできる方法があれば教えてください
0575名無しさん@そうだ選挙にいこう
垢版 |
2020/08/27(木) 14:22:03.64
お世話になります。
Excel VBAで印刷時にシート1〜4を再計算し印刷
というのを組んでいるのですが
各シート印刷時は再計算されるのですが、複数シートを選択すると
シート2以降が再計算されず困っています。

また、PDFとして保存する際はどのようなコードを書けばよいのでしょうか?

回答お待ちしております。
0577>>575
垢版 |
2020/08/27(木) 14:34:35.47
>>576
申し訳ありません。
再計算された状態で印刷するコードが知りたいです。
また、PDFでも保存するのでそのコードも教えていただけると幸いです。
0579>>575
垢版 |
2020/08/27(木) 16:12:19.64
>>578
再計算された状態でPDFにできないので困っています
0580名無しさん@そうだ選挙にいこう
垢版 |
2020/08/27(木) 17:03:08.94
このスレのおかげで
気象庁サイトの過去の気象データ検索から
特定地点の1時間値を1日ごとにPower Queryで読み取って
1年分くらいをまとめるVBAが
なんとか出来まスた。

感謝。
0583牧野 ◆Vbs7gX72NY
垢版 |
2020/08/27(木) 20:55:03.40
>>575
再計算は
calculate
を一行入れるだけじゃダメか

pdfへの出力と合わせると

Sub outputPDF()

'再計算
calculate

Dim fileName As String '保存先フォルダパス&ファイル名
fileName = ThisWorkbook.Path & "\201603請求書_株式会社ホゲホゲ御中.pdf"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName
End Sub

参考
https://tonari-it.com/excel-vba-pdf/
0588名無しさん@そうだ選挙にいこう
垢版 |
2020/08/28(金) 15:19:35.13
連投申し訳ございません。
人名のデータリストがあったとして、それにフリガナを振ろうと思っております。
その時、フリガナも統一したいと思ったため(田中なら全員タナカ 仮にデンナカでも問題なし)、VBAでフリガナを一度消して振り直すコードを書いて実行しました。
しかし、エクセルは前のフリガナを記憶しているようで、同じ田中でもフリガナが違う場合があります。
それだと名前順にソートしたときに、同じ名前なのにバラバラの行に振り分けられてしまい、まずいです。

同じ漢字なら同じフリガナを振り直すには、どうすればよいのでしょうか


なお上のフィルターの質問は、vbaを使わない方法があれば教えていただきたいです。
どうかよろしくお願いいたします。
0591名無しさん@そうだ選挙にいこう
垢版 |
2020/08/28(金) 15:44:58.05
申し訳ございません。フリガナの>>588の質問に関してはうまくいっておりました。
同じ漢字なのに同じフリガナにならないなー と思っていたら、漢字が違っておりました。
大変失礼いたしました。
0592名無しさん@そうだ選挙にいこう
垢版 |
2020/08/28(金) 17:12:49.56
初心者質問で申し訳ありません。
列全体(決められたセル数ではなく、これからもデータが追加されるため列全体)の
 -の数値(小数点第2位まで)だけを 色変更したいのですが
どのような数式になりますか?
0594名無しさん@そうだ選挙にいこう
垢版 |
2020/08/28(金) 19:55:41.07
>>588
VBAを使わないのであれば、フィルタの詳細設定を手動でやるか、
ROWとCOUNTIFでフィルタ風の計算式を作る。
誰か上の方で作ってなかったっけ?
0598名無しさん@そうだ選挙にいこう
垢版 |
2020/08/28(金) 23:44:17.83
>>587
VBAなしということなら
他の行に飛ばしてそこの表示をフィルターかける感じでいいなら

連番(番号の重複がない)の場合はindexとmatchでとばすだけ

重複があるなら
countifで検索して該当箇所にsumで行番つけてindex・match・rowで拾う感じにするかな
0599ヨガウンコ←名前付けたぞ
垢版 |
2020/08/29(土) 10:33:19.50
>>587
クエリーテーブルだな。

Select A.*
From 範囲1 As A, 範囲2 As B
Where A.番号 = B.番号

これで範囲2の番号書き換えて更新すれば、フィルタがかかったみたいになるだろう。
0600ヨガウンコ
垢版 |
2020/08/29(土) 10:35:37.94
ああ、これ回答する方が名前書いても意味ないのか。
次からやめるわ。
0602名無しさん@そうだ選挙にいこう
垢版 |
2020/08/29(土) 10:54:13.64
VBAで質問です。

何十列もある表で不要な列を大量に削除したいと思っています。

Range("A1,N1:U1.....").entirecolumn.deleteといった感じで手作業、つまり目で列を確認してコードを書くしかないのでしょうか??

分かる方お願いします。
0605名無しさん@そうだ選挙にいこう
垢版 |
2020/08/29(土) 17:36:07.22
VBA使えません。
@テーブル化されてる(色がシマシマ)データを解除して普通にデータにする方法教えてください。
コピペで新しいシートに123形式で貼る以外に方法ありますか?

A絞り込みして見えてる部分に対してオートフィルで連番できないのは仕方ないのでしょうか?
0609牧野 ◆Vbs7gX72NY
垢版 |
2020/08/29(土) 18:57:32.92
>>602
1行目に行挿入
不要な列に「1」を入力
イカコードを走らせる
最後に一行目を削除
とか

Sub Macro1()
最終列 = Cells(2, Columns.Count).End(xlToLeft).Column
For i = 最終列 To 1 Step -1
If Cells(1, i) = 1 Then
Columns(i).Delete Shift:=xlToLeft
End If
Next
End Sub
0611名無しさん@そうだ選挙にいこう
垢版 |
2020/08/30(日) 00:58:49.95
>>602
selection.entirecolumn.delete
0612名無しさん@そうだ選挙にいこう
垢版 |
2020/08/30(日) 08:07:17.14
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
アンケートの清書みたいな感じで
質問の答えのA・B・Cのどれかに○をつける作業が
1ファイルあたり30項目くらいで、ファイルが50くらいあります。
ファイルの内容や書式は共通ですがABCどれに○かはそれぞれ違います。
A・B・Cはアルファベットもナカポツも各1セルで5セルに入っています。
この○付け作業は、今まで図形の○付けでやってきましたが、やたら時間がかかります。
リスト選択にして、記号の○付き文字に変えるとすると、文字サイズを揃える必要が出てきます。
何か効率的に○付けをしていける方法は、ないでしょうか?
できればABC各何個か集計も出来ると助かります。ファイルごとや全体でも。
良い方法を教えてください。
0615牧野 ◆Vbs7gX72NY
垢版 |
2020/08/30(日) 11:06:02.71
>>612
前提がめんどくさすぎる。
フォントサイズごとコピーするのが一番早いと思う

Aの回答→?
Bの回答→?
Cの回答→?


そもそものフォーマットを変更できるならした方が良いと思う
https://i.imgur.com/K1bXRNp.png

後はgoogleフォームを使うと、アンケートや集計が楽になるよ
0619牧野 ◆Vbs7gX72NY
垢版 |
2020/08/30(日) 11:50:27.73
>>617
フォーマットの変更不可はキツイな
vbaで○はつけられるけどエクセルは図形がとにかくずれるのであまりやらないほうが良い
それに結局どこに○を付けるかを指定する必要があるので、それを考えると囲み文字にしてしまったほうが早い
0621牧野 ◆Vbs7gX72NY
垢版 |
2020/08/30(日) 12:41:59.66
>>620
そっちの方がいいかな、コピペより早そうだ

あと、条件付き書式でフォントサイズ変えると早いとおもったけど条件付き書式はフォントサイズ変えられないのね
0624名無しさん@そうだ選挙にいこう
垢版 |
2020/08/30(日) 23:53:52.26
このデータをアイウエオ順に並べ替えたいのですが、どうすればいいかわかりますか?

百均のサンダル(東南アジアは必須)
百均のS字フック
百均の吸盤フック
百均のジッパー付き小物入れ
百均のジッパー付き手提げ袋(大)
 ※ 荷物が増えてバッグに入らなくなった場合等の緊急用
百均の財布または小銭入れ
百均の靴下
百均の使い捨てパンツ
百均の靴中敷き
百均の小型物干しまたは洗濯ばさみ
百均の爪切り
百均のハサミ
百均の絆創膏
百均のサージカルテープ
百均のガーゼ
百均のハンガー
百均の南京錠
百均の自転車用ワイヤーロック
百均のウェットティッシュ
百均の手袋(寒い時)または軍手
百均の製氷皿(暑い時)
百均のペットボトルホルダー
百均の方位磁石
百均の指示棒
百均のボールペン
百均の小型置時計
0626名無しさん@そうだ選挙にいこう
垢版 |
2020/08/31(月) 01:42:22.68
2007利用です
数値を加算するSUMについて
SUMに利用したセルを着色なり枠に色をつけるなり出来ませんか
どのセルを利用しているのか分かりやすくしたいです
0627名無しさん@そうだ選挙にいこう
垢版 |
2020/08/31(月) 08:03:58.08
>>624 関連
1、-1、2、-2、3、-3 をソートすると -3、-2、-1、1、2、3 と並び替えられますが、
A1、A2、A3、A-1、A-2、A-3 だと A1、A-1、A2、A-2、A3、A-3 となり、
A01、A001 やAと数値の間に空白や"*"、"_"などを入れると、また変わります。
A-3、A-2、A-1、A1、A2、A3 と、数値の部分を正しく並び替える方法はありますか。

以前のバージョンと異なっているようで、昔作った表がうまく並び替えられない。
(2003以前と2007以降とで変わったような)
0639名無しさん@そうだ選挙にいこう
垢版 |
2020/09/01(火) 18:44:30.06
すいません質問です。

例えばA1に5が入っている時にB1に=A1と入力すると5が返りますよね?

これをマクロなら

range(“B1")=range("A1")を実行すると出来ると思います。

質問したい事は上記のマクロを実行しないで自動的にB1にA1のものを参照する事はできますか?勿論、B1に=A1などの計算式を入れる事もダメとします。
0645牧野 ◆Vbs7gX72NY
垢版 |
2020/09/01(火) 20:44:24.76
コード貼り忘れた

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Cells(1, 1).Value = Cells(1, 2).Value
Application.EnableEvents = True
End Sub
0648639
垢版 |
2020/09/01(火) 22:41:56.85
返事をくれた方々ありがとうございました。
0649名無しさん@そうだ選挙にいこう
垢版 |
2020/09/02(水) 07:48:55.40
お世話になります。
ExcelVBAにて、コードを実行しようとすると
"このプロジェクトのマクロは無効に設定されています…"と表示されます。

ブックを開いたときに、マクロを有効にするかどうかも聞かれていますし
ファイル>オプション>トラストセンター>マクロの設定
を"警告を表示してすべてのマクロを無効にする"か"すべてのマクロを有効にする"
に設定しても症状が治りません。
お判りの方いましたらご助言頂きますようよろしくお願い致します。
0652名無しさん@そうだ選挙にいこう
垢版 |
2020/09/02(水) 20:40:27.03
すいません、エクセル2019ですが
時間が
0.15、0.3、0.45…
の様に入力されているセルを使って時間計算する方法ってありますかね?

0.15=0:15
0.3=0:30
0.45=0:45
です


試しに
=LEFT(A1,1)&":"&RIGHT(A1,2)
とやって時間文字列に変換してみたのですが
0.15とかだと上手くいきますが、0.3の場合「0:.3」となとなって上手くいきません

それならばと
=LEFT(A1,1)&":"&MID(A1,3,2)
とかにすると、やはり0.3の場合「0:3」となります

TEXT関数やTIMEVALUEなどもいろいろやってみましたがどうも無理っぽい

こういった計算をなるべくシンプルな式で実現する方法ってありますかね?
0653名無しさん@そうだ選挙にいこう
垢版 |
2020/09/02(水) 21:10:49.17
>>652
SUBSTITUTE( ,".",":")
0655名無しさん@そうだ選挙にいこう
垢版 |
2020/09/02(水) 21:53:44.16
>>652
Excelは
0.5/24=0:30
に出来る機能があります
なので、(0.5×5/3)/24=0:50となるはず
これの応用でなんとかならないかな?
5/72を全てのセルにかけるようにするとか
0656名無しさん@そうだ選挙にいこう
垢版 |
2020/09/03(木) 01:16:10.84
>>652
15分刻みだけでなく、もっと中途半端な時間もあるのか
45分までなのか、最大何時間何分まであるのか

これらの条件によって数式を作る手間がちょっと変わってくる
0660652
垢版 |
2020/09/03(木) 17:07:28.55
皆様ありがとうございます

>>653
これだと、0.15とか1.43とかだといいのですが
下記のケースだと
0.3→0:3
1.2→1:2
とかになって上手くいかないです
念の為書式で「.00」を設定してみましたがやはりダメでした

>>655
なるほど、これもありましたね
なので単純に
(A1/24)/(6/10)
とやってみたら
0.3→0:30
になったので一瞬喜んだのですが、よくよく考えると時と分の単位が違うので1.5とかの1時間を越える分だと上手く行きません
一桁目と小数点以下を分離した上で計算すれば出来そうですが、ちょっと複雑になりそうでやめました。すいません

>>654
!!!これバッチリです。文字列を弄ってなんとか出来ないか四苦八苦してましたが、純粋に計算でいけますね。素晴らしい
これで行こうと思います。ありがとうございました
0661652
垢版 |
2020/09/03(木) 17:10:54.50
>>657-659

実は残業時間なので分刻みでいくらでも有り得るんですよね
いくらでもと言っても10時間残業とかはさすがに無いですが
0664名無しさん@そうだ選挙にいこう
垢版 |
2020/09/04(金) 11:49:06.26
【1 OSの種類         .】 Windows
【2 Excelのバージョン   】 Excel for office 365 mso
【3 VBAが使えるか    .】 ・いいえ
【4 VBAでの回答の可否】 否

普段関数をつかわない超初心者です。
エクセル内で、URLの一部を別のタブの数字に変換してリストをつくりたいです。
自分で調べたところ
=hyperlink("http〜"&タブ)
にすると最後を置き換えられることがわかりました。
しかし最後に.htmlをつけるのがどうしても上手くいきません。
ご存じの方がいたら教えて下さい。
検索方法のヒントでも構いません。
よろしくお願い致します。
0666名無しさん@そうだ選挙にいこう
垢版 |
2020/09/04(金) 12:25:49.29
>>664
正直、質問の意味がよくわからないんだけど、その式の最後にhtmlを付けるだけなら
=HYPERLINK("http〜"&タブ&".html")

タブって何?最後、最後って書いてるとけど、本当の最後は数字なのかhtmlなのかどっち?
0668名無しさん@そうだ選挙にいこう
垢版 |
2020/09/04(金) 20:39:30.61
だめだ、「http タブ」でググっても意味が分からん。
一体どんな不思議なことをやろうとしているんだ。

それより、Excel for office 365 msoって、
officeとmsoがかぶってはいませんか?
フルで言えば、Excel for office 365 microsoft officeでしょ?
0672名無しさん@そうだ選挙にいこう
垢版 |
2020/09/05(土) 00:05:55.00
vbaをある程度マスターしたら自分で勝手に足りない物は作るから、エクセルの新機能なんてどうでもいい
0675名無しさん@そうだ選挙にいこう
垢版 |
2020/09/05(土) 09:04:31.08
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
1つの列にデータがずらっと並んでいて、そこから重複していないデータだけを別のシートに抽出する方法を教えてください
りんご
りんご
バナナ
みかん
みかん
が並んでいる場合、バナナだけを抽出したいです
0677名無しさん@そうだ選挙にいこう
垢版 |
2020/09/05(土) 11:52:04.70
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

excel2013 vbaについて
pdfを別ファイルで何枚も保存するプログラムを作ったのですが、"名前を付けて保存"ダイアログだと、pdf1枚ごとに保存先を聞かれてしまいます。
保存先だけダイアログで決めて、保存名はコード上で指定して、次々にpdfを出力するにはどうすればよいでしょうか。
0680名無しさん@そうだ選挙にいこう
垢版 |
2020/09/05(土) 18:49:38.55
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

windows
セルA1にrandbetween関数でランダムな数値を入れ、vba上で k = range("A1").value と格納した場合について質問です。
ActiveSheet.Calculateで再計算すると、セルA1の値は変わりますが、kに格納された数字は変わりません。
もう一度k = range("A1").valueを記述すればよいのですが、実際のコードのこの部分は複雑で、何度も出てくるため、非常に煩雑になります。
ActiveSheet.Calculateしたとき、どうにかkの値も同時に格納し直したいのですが、どうすればよいでしょうか
0683名無しさん@そうだ選挙にいこう
垢版 |
2020/09/05(土) 19:19:46.14
>>681
kにはランダムなRGB値が入るようにしてあります。
そのRGB値は、セルA1 B1 C1 それぞれに=randbetween(0,255)を入力し、コード上でrange("A1")+range("B1")*256+range("C1")*256+256を計算して得ています。
これでセルを塗りつぶしていくのですが、隣り合った列(具体的にはもう少し複雑ですが、不要な説明なため省きます。)が似たような色にならないように、kの値を判定にかけてから塗りつぶす というコードにしています。
つまり、RGB値をセルから持ってくるようにしたのは、判定のためとそのほうがコードが簡潔になると思ったからです。
こういうケースではどうでしょうか?
0691名無しさん@そうだ選挙にいこう
垢版 |
2020/09/06(日) 16:51:45.03
INDIRECTってインディレクトとインダイレクトどっちが正しいの?
0695名無しさん@そうだ選挙にいこう
垢版 |
2020/09/07(月) 00:44:02.48
ランダムな仕事ってのもあるらしいぞ

何ヶ月か前にVBAスレでデータを捏造する方法を聞いてるやつがいた
一定の条件で適当な数字を大量に入力して毎日提出するという謎の仕事があって、乱数を使ったマクロでやる方法を教えてやったら、一瞬で終わるようになったので入力担当者は仕事がなくなってクビになったそうだ
0697名無しさん@そうだ選挙にいこう
垢版 |
2020/09/07(月) 07:39:02.08
CHOOSE関数ってインデックスが整数じゃないとだめですか?
たとえばaというインデックスに対してsdf、bというインデックスに対してvcxを返したいときはIFのネスト使うしかないですか?
0699名無しさん@そうだ選挙にいこう
垢版 |
2020/09/07(月) 13:49:04.81
>>698
たとえが悪かったですね
それだとアルファベット1文字ならいいんですが、
やりたいのはインデックスがpinkやpurpleなど単語になっているようなものです
0700名無しさん@そうだ選挙にいこう
垢版 |
2020/09/07(月) 13:52:18.33
表を作ってvlookupがいいんじゃないの
0705名無しさん@そうだ選挙にいこう
垢版 |
2020/09/07(月) 21:51:39.65
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

セルの列に「0」が入力されていたら次の整数(0以外)までいくつ0がはいっているか数えたいのですがうまくできません。

例)
   B   C
   0   2→Bの列に連続して0が2つ
   0   
   5
   0   3→Bの列に連続して0が3つ
   0
   0
   7
0706名無しさん@そうだ選挙にいこう
垢版 |
2020/09/07(月) 22:54:15.72
うーん…?作業列作っていいならB列にCOUNTIFかIFで整数だと1かえすようにして

C1
=COUNTIF(OFFSET(A1,0,0,MATCH(1,B1:$B$20,0),1),0)

C2以降
=IF(AND(A1=0,OR(A2>0,A2=0)),"",COUNTIF(OFFSET(A2,0,0,MATCH(1,B2:$B20,0),1),0))

駄目だなわいのようなたまにしか使わん程度にはいいの思いつかん
0707名無しさん@そうだ選挙にいこう
垢版 |
2020/09/08(火) 00:51:47.51
こんな風に
https://i.imgur.com/JEd7iA7.png
N列に何か入力された時に、その右のO列に書いてある数字を足していってその合計をQ2に表示させたい場合
どんな関数を入力すればいいのか教えてください
0713名無しさん@そうだ選挙にいこう
垢版 |
2020/09/08(火) 11:58:06.71
【1 OSの種類 】 Windows10
【2 Excelのバージョン】 Excel2013 、2016
【3 VBAが使えるか】 いいえ
【4 VBAでの回答の可否 】可

新規でシートを作成する際にセルの幅(列・行)
をデフォルトから任意の幅に設定したいと考えてます。
現在はマクロでやっていますが、この方法だと
シートを作成してからいちいちマクロボタンを押さねばならないので、シートを作成した時点でセル幅を調整済みのものに出来ないでしょうか?
よろしくお願いします!
0717名無しさん@そうだ選挙にいこう
垢版 |
2020/09/08(火) 22:02:27.38
【1 OSの種類         .】 Windows8.1
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

■やりたいこと
参照セルを使わずにプルダウンメニューから「今日の日付」を選べるようにしたい。

■試してみたこと
(1)名前の定義で名前「今日の日付」、参照範囲「=TEXT(TODAY(),"ggge年m月d日")」を設定
(2)データの入力規則で入力値の種類「リスト」、元の値「=今日の日付」を設定

※しかし、(2)でエラーとなり設定できない。「=INDIRECT("今日の日付")」も試したがダメ。

参照セルを使えば簡単だが、何とか参照セルを使わずに行いたい。
よろしくお願いします。
0718名無しさん@そうだ選挙にいこう
垢版 |
2020/09/09(水) 02:45:10.45
>>717
win10 excel2010
(2)で何の問題もなく=今日の日付でエラー出ずにできたよ
0719名無しさん@そうだ選挙にいこう
垢版 |
2020/09/09(水) 20:02:30.30
>>718
ああ、説明が悪くて申し訳ない。
プルダウンで「今日の日付」という文言を表示するのではなく、「○年○月○日」という表示を動的に行いたい。
そのために試したのが、(1)を設定後に(2
)を設定するという手順。

作業セルを作らずに動的な日付をプルダウンメニューで表示する方法はありませんか?
0721名無しさん@そうだ選挙にいこう
垢版 |
2020/09/09(水) 20:30:22.13
>>713
もう解決しちゃったかな
そのバージョンでどうかはわからないんだけど、
2000のときに新規作成のシート数デフォルト3を1にするときの方法で、
C:\Windows\ShellNewにあるファイルを目的のものに置き換えるという方法があった
そこにファイルがあれば置換、ない場合はレジストリをいじるとか何とかだったと思う
お暇なら試してみて
0722名無しさん@そうだ選挙にいこう
垢版 |
2020/09/09(水) 21:37:51.32
マクロを使わずにA列の5行からA2に入力された数値の行までの最大値を求めてA1に表示したいです
たとえばA2に123と入力されていたら、A1=MAX(A5:A123)という具合です
このような場合、A1にどのような数式を記述すればいいでしょうか?
0723名無しさん@そうだ選挙にいこう
垢版 |
2020/09/09(水) 22:08:02.37
>>720
計算セルは美しくないので使いたくない。
プルダウンは選択した日付を固定するため。

※TODAY関数を使っていてもプルダウンで選択した日付は固定される。
0724名無しさん@そうだ選挙にいこう
垢版 |
2020/09/09(水) 23:06:34.07
>>723
Excelの機能として、[Ctrl]+[;]で今日の日付を入力するのはダメなの?
他の人に入力させるから、というのであれば、操作方法をコメントで明示したら?
0725名無しさん@そうだ選挙にいこう
垢版 |
2020/09/09(水) 23:31:28.87
>>723
非表示にしておけばいいじゃん
0726名無しさん@そうだ選挙にいこう
垢版 |
2020/09/09(水) 23:37:26.48
>>723
別シートに計算セル作って普段は非表示にしておけばよいのでは?
どうしてもコントロールに拘るのであれば、datepicker使った方が早くて応用ききそう
0729名無しさん@そうだ選挙にいこう
垢版 |
2020/09/10(木) 08:04:06.84
MATCH関数を使うと指定範囲内のどこに目的の値が存在するかがわかりますが、
値が重複している場合は最初に引っかかったものが返ってきます
これを最後に引っかかったものにすることはできないでしょうか?
ソートやマクロは使わないで、セルに数式を入力するだけですませたいです
0731名無しさん@そうだ選挙にいこう
垢版 |
2020/09/10(木) 09:23:19.34
>>724
キーボード入力は行わずマウス操作のみで完結したいです。

>>755
>>726
やっぱりセルの非表示しかないかな。
0732名無しさん@そうだ選挙にいこう
垢版 |
2020/09/10(木) 10:11:26.57
Excelの万年カレンダーを作りたいのですが思うようにいかず困ってます
色々なサイトをほぼ丸パクリにして月曜日スタートにして2020年11月を指定すると11月2日月曜日がスタートになり11月1日が消えてしまいます。

どのような関数を入れる事で解決出来るのでしょうか
0735名無しさん@そうだ選挙にいこう
垢版 |
2020/09/10(木) 14:56:37.41
>>732
横方向に月〜日の曜日の列、1行が1週間分の表となるカレンダーだとすると、以下のようにしてみてください。
A1セルには西暦年を、B1セルには月を指定するものとします。
C1セルには計算式 =WEEKDAY(DATE(A1,B1,1),3) を入れておきます。
A2〜G2セルは曜日を表示するものとします。
A3〜G3セルは第1日曜を含む週(前月の最終週あり)になります。
G3セルには計算式 =DATE(A1,B1,7)-C1 を入れると、あら不思議!
その月の最初の日曜となる日付が表示されました。
>>734さんが「足すんじゃなくて引く」というのは -C1 のことでしょう。
0736名無しさん@そうだ選挙にいこう
垢版 |
2020/09/10(木) 18:12:56.65
Sub シートの名前を付け直す()
Dim i, k, h
Dim Targets As New Collection, buf As String
Dim ws As Worksheets

For i = 3 To Worksheets.Count
Targets.Add Worksheets(i)
Next

k = 1
&#11088;For Each ws In Targets
If k < 10 Then
Targets.Name = "0" & k
End If
Next

End Sub


以上のコードで&#11088;のとこで型が違うというエラーが出ます。
ws と Targetsの型が違うという意味だと思うのですが、どうすればよいのでしょうか
0739名無しさん@そうだ選挙にいこう
垢版 |
2020/09/10(木) 18:28:45.44
>>738
それだと全てのシートが対象になってしまいますよね?
Targetsコレクションに指定したワークシートをまとめて、そのコレクションに対してFor eachをかける という動作をしたかったのですが...
0741名無しさん@そうだ選挙にいこう
垢版 |
2020/09/11(金) 17:13:48.22
2行1列の結合セルがずらーっと縦に並んでて値が入力されていたとして、それを全選択してコピーして、下に一つずらして貼り付けるとセルの結合が解除されるのですが... 何故でしょう

コピー側と貼り付け先のセルの状態(結合のしかた)が全く同じなのに解除されます
0749名無しさん@そうだ選挙にいこう
垢版 |
2020/09/12(土) 11:01:31.46
ありえない挙動するなら機能として元々付けなければいいのに
0750名無しさん@そうだ選挙にいこう
垢版 |
2020/09/12(土) 11:43:37.49
A列とB列に値が入っていて、A*Bの15個ごとの移動平均を求めたいです。
C=A*BとしてD1にAVERAGE(C1:C15)を入れてD列にコピーすればいいのですが、
不要なC列を使わずにAVERAGE(A1*B1:A15*B15)みたいな感じで書く方法はないでしょうか?
ちなみにAVERAGE(A1*B1:A15*B15)は#VALUE!となります。
0753名無しさん@そうだ選挙にいこう
垢版 |
2020/09/12(土) 13:09:34.56
>>751-752
ありがとうございます
これでいけます
0755名無しさん@そうだ選挙にいこう
垢版 |
2020/09/13(日) 12:23:15.45
他人が作ったエクセルを使わなきゃならないことがあるからねぇ...
セル結合を心から受け入れてこそ一人前なんだよねぇ...
0765名無しさん@そうだ選挙にいこう
垢版 |
2020/09/15(火) 09:48:50.30
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】いいえ
【4 VBAでの回答の可否】否

A1にA2〜A101まで入力した数値のAverageを表示し、A2〜A101に数値を入力するようにしています
数値の入力数が20以下の場合に(入力数が少ない場合に)A1のセルを黄色にするにはどうしたら良いのでしょうか?
0768名無しさん@そうだ選挙にいこう
垢版 |
2020/09/15(火) 12:31:21.57
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016

ちょっと漠然としつつ、でも(多分)あるあるな質問なのですが、
エクセルのファイルを開いて、なんの入力や変更も行わずに閉じても
「保存しますか?」とダイアログでいちいち確認が入ってしまうファイルがありますが、
ダイアログがでる理由って何が考えられますか?

できるのなら対処もしたいです。
0772名無しさん@そうだ選挙にいこう
垢版 |
2020/09/15(火) 19:23:58.50
ExcelってNumbersと異なってドロップダウンリストが▼クリックしないと表示されないんだよな。
Numbersは選択するだけで表示されるので超楽。
0775牧野 ◆Vbs7gX72NY
垢版 |
2020/09/15(火) 20:32:36.24
cells.Validation()で設定されたかどうか判定
Worksheet_SelectionChangeでリストを開くってのを作ろうと思ったけどcells.Validationの判定が分からなかった
0776名無しさん@そうだ選挙にいこう
垢版 |
2020/09/15(火) 21:29:20.77
Excel365ですがExcel2010の時とROW関数の仕様変わりました?

Excel2010
=ROW(A1:A10)
だとA1からA10までの最終行のセル番が出ましたが

Excel365
=ROW(A1:A10)
だとA1からA10までのセル番が全てスピルで出てきます

まぁ考えてみれば当然ですがね
0777名無しさん@そうだ選挙にいこう
垢版 |
2020/09/15(火) 21:35:53.93
>>776ですが追記

=ROW(A:A)

Excel2010だとA列のデータが入っている最終行が出る

Excel365だとA列全体なのでスピルエラーが出る

という事もありました
0778牧野 ◆Vbs7gX72NY
垢版 |
2020/09/15(火) 21:49:43.61
>>776
スピルの実装により、スピルエラーはちょくちょく出るようになってしまった
使いこなせていないのが悪いんだが、タイピングミスでスピルになるのは少しキョドる
0779名無しさん@そうだ選挙にいこう
垢版 |
2020/09/15(火) 22:00:07.08
>>778
古いExcelで作った式が365で開くとスピって式の頭に@が出るからちょっとドキッとするだけでした

なんか心配になりますねこの機能
大丈夫なんだろうけど
0780名無しさん@そうだ選挙にいこう
垢版 |
2020/09/16(水) 00:36:50.45
ざっくりとした質問ですが、ここでの質問に答えられるくらいの知識と応用力はどうやったら身につくのでしょうか?
Excel ○○ ○○
といった感じで都度ネットで検索するか、ここで質問するかで対処していますが・・・
Excel関連の本を読み尽くすのが無難でしょうか?
0785名無しさん@そうだ選挙にいこう
垢版 |
2020/09/16(水) 22:03:17.54
Excelマスターのみなさん教えてください。

A1に月末日が入力されています。

B1にA1の翌月20日を返したいです。

しかし、20日が土日祝日なら前の日付を返したいです。

20日が土曜日なら19日、日曜日なら18日といった具合です、

よろしくお願いします。
0786名無しさん@そうだ選挙にいこう
垢版 |
2020/09/16(水) 22:41:46.37
>>785
Month関数を使って翌月を調べる(12月用の分岐あるいはMod12で翌月を求める)
のと、
Weekday関数を使って曜日判定をする

これでできるからあとは自分で考えて
0790名無しさん@そうだ選挙にいこう
垢版 |
2020/09/17(木) 03:57:24.13
月末日は予めわかっているんだからedateで20日後算出、ifとweekday組み合わせて土なら-1、日なら-2で通常月は対応できる。
18-20日が祝日になる可能性があるのは現状春分、海、敬老の3つなのでそのカレンダーを作っておく。仕組み上、それらの振替休日は該当しない。
あとはカレンダーにmatchさせて引いていけばよいけど、関数だと長ったらしいのでVBAをおすすめする。

ここまで書いててあれだけど、最初から請求締め日のカレンダー作っておいた方が早い気がしてきた
0793名無しさん@そうだ選挙にいこう
垢版 |
2020/09/17(木) 07:29:31.84
祝祭日リスト用意してworkdayで次月の1日の1営業日前かな
0795名無しさん@そうだ選挙にいこう
垢版 |
2020/09/17(木) 20:26:03.50
祝日はリストを用意するとして、
「20日が土日または祝日なら19日、19が土日(略)なら18、18が、、、」というのをどうするか。
最初に思いつくのはif関数だけど、どこまでネストするのか。
vba使わないで他に何か良い方法あれば私も知りたい。
0797名無しさん@そうだ選挙にいこう
垢版 |
2020/09/18(金) 12:16:40.31
20日からさかのぼる話なら20日が月曜祝日で17日金曜日を求めるのが一番めんどくさいケースでしょ
17日金曜日が祝日になることはないからそれ以上面倒なケースはない
20日でなく任意の日となると5月6日を判断するケースが一番めんどくさい
0799名無しさん@そうだ選挙にいこう
垢版 |
2020/09/18(金) 14:04:41.58
一覧表を手作業で作った方が早い
手抜きの計算式で20年分ぐらい一気に作っといて、カレンダーを見ながら手動で数カ所修正するだけ
0802785
垢版 |
2020/09/18(金) 19:15:36.12
レスしてくれた人ありがとうございます。
なんか関数でやるのはかなり煩雑になりそうですね。
VBAはあまり分かりませんが、VBAでやってみたいと思います。
0803名無しさん@そうだ選挙にいこう
垢版 |
2020/09/18(金) 19:16:39.76
>>797
20日は、21日マイナス1日だろ?
このスレ、初心者も回答書いたり、理解出来ない愚痴書くスレだったとは
あと
ネットで検索すりゃ祝日一覧なんて簡単に拾えるのに
0805名無しさん@そうだ選挙にいこう
垢版 |
2020/09/18(金) 20:38:19.44
>>802
793や796の言ってるとおり、WORKDAY使えばすごく単純にできるよ
=WORKDAY(A1+21, -1 , 休日リスト)
で大丈夫

休日リストを自動化させるのが、いろいろと落とし穴があって難しいところがあるけど
祝日候補を作業セルに入れて、毎年手作業で書き換えれば難しくないよ
0806名無しさん@そうだ選挙にいこう
垢版 |
2020/09/18(金) 20:39:11.19
祝日はめんどくさいなぁ
春分や秋分のように正式に決まるのが前年とかだったり、法改正で新しい祝日ができたりもするから、数年先までそのまま使える祝日一覧ってのはなかなか出来ない
結局毎年修正
0807名無しさん@そうだ選挙にいこう
垢版 |
2020/09/18(金) 20:39:50.89
vbaなら条件に一致する場合(土日祝日の場合)はマイナス1として、do loop untilかwhileで書けば、ネストする回数考えなくてよいし割と分かりやすい。
関数でやるとifを入れ子にして4回使えばできそう。どちらにしても祝日一覧を作るのは前提として。

21日は関係ないと思うんだけど、どういうこと?私の理解不足?
0809785
垢版 |
2020/09/18(金) 20:50:43.40
まさかこんなに話題になるとは思いませんでした。。。

VBAは苦手なので関数で対応したいと思います。ありがとうございました。
0811名無しさん@そうだ選挙にいこう
垢版 |
2020/09/18(金) 22:28:11.09
ネットにアクセスできれば、どっかからカレンダーを落としてくるのが簡単
そのサイトが永続かどうかって問題はあるけど

政府がデータベースを公開してくれるといいんだけど
デジタル省とか作るんなら、そういうデータこそ国が固定されたURLとフォーマットで提供してくれないかなあ
0812名無しさん@そうだ選挙にいこう
垢版 |
2020/09/19(土) 07:35:41.74
デジタル省の本当の目的はマイナンバーカードを全国民に持たせることだからな
カード利権に金を流せればそれ以上は興味ないでしょ
カード更新のたびに国民が金払うとかアホか
0814名無しさん@そうだ選挙にいこう
垢版 |
2020/09/19(土) 08:00:38.88
たとえ効率の良い解決策があったとしても、実際使う人が理解できなければ無意味なわけで、
さんざんWEEKDAY連呼した挙句返ってきた答えが「なんか関数でやるのはかなり煩雑になりそうですね。」
そして捨て台詞「このスレ、初心者も回答書いたり、理解出来ない愚痴書くスレだったとは」
相手のレベルに合わせて教えてあげる能力のない人がマウント取りたいだけ
滑稽だな
0816名無しさん@そうだ選挙にいこう
垢版 |
2020/09/19(土) 09:02:03.79
セルに入っている文字列から特定の文字を抜き出す関数あったら教えて。

例えば、
特定の文字→あ
文字列→あしかのあかちゃん
抜き出した結果→ああ・もしくは2

特定の文字→う
文字列→うちゅうのうみでうんどうかい
抜き出した結果→ううううう・もしくは5
0819名無しさん@そうだ選挙にいこう
垢版 |
2020/09/19(土) 10:03:01.01
特定の文字→い
文字列→いちごばたけのいちねんせい
抜き出した結果→いいい・もしくは3
ってこと?
0820名無しさん@そうだ選挙にいこう
垢版 |
2020/09/19(土) 10:11:14.08
特定の文字→A1
文字列→A2
なら
抜き出した結果@→A3=REPT(A1,A4)
抜き出した結果A→A4=LEN(A2)-LEN(SUBSTITUTE(A2,A1,""))
0821名無しさん@そうだ選挙にいこう
垢版 |
2020/09/19(土) 10:42:30.02
substitudeで置き換えた結果と長さ比べればわかるんじゃないの
0822名無しさん@そうだ選挙にいこう
垢版 |
2020/09/19(土) 10:46:31.28
前に書いてあることを読んで読んだことを忘れてまるで自分が思いついたかのように話す人
0827牧野 ◆Vbs7gX72NY
垢版 |
2020/09/19(土) 22:15:07.42
数式を入力したあと、数式バーで入力状態にすると使用セルがハイライトされますが、
このハイライトってドラッグで移動できるのはご存知でしょうか

また、この操作って名前ありますか?
https://i.imgur.com/ywrFtwG.png
0828名無しさん@そうだ選挙にいこう
垢版 |
2020/09/20(日) 01:52:50.64
知ってるが名前までは知らない。
勝手につけちゃえば?
ナイスセルとか。
0829名無しさん@そうだ選挙にいこう
垢版 |
2020/09/20(日) 01:56:35.93
ああ香具師セルでいいや。
香具師なんて今時誰も使ってないから空いてる。
0830名無しさん@そうだ選挙にいこう
垢版 |
2020/09/20(日) 02:20:19.59
ピボットテーブルについて質問です
入出庫とカレンダーのモデルデータを参照させています。列に日付、行に商品コードを設定しており、表示させる値をその日時点の在庫数にしたいです。
メジャーでsum([入庫])-sum([出庫])を設定すると当日のみの在庫となり、入庫のない日はマイナスになります。
タイムラインを使わず日ごとの累計値にするにはどのように記述すればよいでしょうか?
0840名無しさん@そうだ選挙にいこう
垢版 |
2020/09/24(木) 11:09:14.59
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否


商品リストシートに商品コード、商品名を入力しています。

データシートのAセルに商品コードを入力するとBセルに商品名が、Bセルに商品名を入力するとAセルに商品コードが表示されるようにしたいのですが、循環関数になってしまいます。


再計算せずに大人しくしててくれるか、ドロップダウンリストみたいに空いてるセルを簡単に補完したいのですが方法がありますでしょうか?

よろしくお願いします。
0843名無しさん@そうだ選挙にいこう
垢版 |
2020/09/24(木) 14:47:24.36
VBAに関する質問です
専門職ではないので、もし現場で表記するなら…という意見を
お聞かせください。

If A1 = "〇" Then
 If ....
ElseIf Not A1 = "〇" Then

のようにIFの分岐は否定した文も書いてあげる方が親切なのでしょうか?
それともElseのみでいいのでしょうか?
0852名無しさん@そうだ選挙にいこう
垢版 |
2020/09/24(木) 22:41:50.20
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

お願いします。

フォームにあるテキストボックスのIMEModeを半角カタカナにしているのですが、一回そのテキストボックスに何かを入力した後は
ずっと半角カタカナモードが固定されてしまいます。
入力規則が設定されているセルを選択した場合はひらがな等になるのですが、そのセルを離れて、入力規則が設定されていない
別のセルに移動したらまた半角カタカナに戻ってしまいます。

半角カタカナ設定のテキストボックスは、抽出文字列を指定するためのものなので、入力後に「これで抽出」というコマンドボタンを
押すのですが、そのボタンクリックイベントでIMEModeの変更ができないものなのかと調べましたが無理なようです。

テキストボックスでのIMEModeの影響範囲がでかすぎます。
何か対策はないでしょうか?
0857名無しさん@そうだ選挙にいこう
垢版 |
2020/09/25(金) 19:05:03.55
Excelファイルを開いた際に最初に表示する方法をご存知の方はいますか?
office365にアップロードするファイルのため、マクロは使えないのですが可能なのでしょうか。
0859名無しさん@そうだ選挙にいこう
垢版 |
2020/09/25(金) 19:26:49.41
>>858
最初に開かれるシートは何かって話にしか見えないんだけど
最後に保存された時にアクティブだった範囲の属するシートが開かれる
でいい?
0862名無しさん@そうだ選挙にいこう
垢版 |
2020/09/25(金) 19:50:23.98
返答ありがとうございます。
分かりにくい書き込みで申し訳ありません。

おっしゃる通り、ファイルを開く度にシート1が表示される方法です。
office365で不特定多数が編集するため、できれば自動で表示できる方法はないかと模索しております。
0868名無しさん@そうだ選挙にいこう
垢版 |
2020/09/25(金) 20:35:10.96
>>867
まだ出たばかりなんですね。
うちの社内で使えるようになるのはまだ先かもしれません。

ともあれ有益な情報ありがとうございました。
0872名無しさん@そうだ選挙にいこう
垢版 |
2020/09/25(金) 23:28:35.90
>>871
誤解を与えるような表現をしてしまってすみません。

うちの社内の環境だと、Excelファイルをパソコンからシェアポイントにアップロードして、それを各社員に配布されたipadで立ち上げて適宜編集しているというイメージです。
ipadでExcelファイルを立ち上げてもマクロが機能しないのです。

なかなか特殊な環境だと自負しております。
0875名無しさん@そうだ選挙にいこう
垢版 |
2020/09/26(土) 09:31:11.37
>>874
パソコン上でデスクトップアプリで開く分にはマクロも使えますね。

ただ基本的に各社員はipadしか配布されておらず、同期してExcel for ipadで開いてもやはりマクロが機能しないですね。
0879名無しさん@そうだ選挙にいこう
垢版 |
2020/09/26(土) 16:24:55.21
ここの皆さんは、大したことないんですね
口だけ達者ですが、弊社にためになんの解決策も提示いただけないとは。

こちとら遊びじゃないんですが、ビジネスで必要なんですよ。
0892名無しさん@そうだ選挙にいこう
垢版 |
2020/09/27(日) 08:15:23.72
対して困ってない問題なのに質問するなよ?

>>862
>返答ありがとうございます。
>分かりにくい書き込みで申し訳ありません。

>おっしゃる通り、ファイルを開く度にシート1が表示される方法です。
>office365で不特定多数が編集するため、できれば自動で表示できる方法はないかと模索しております。
0894名無しさん@そうだ選挙にいこう
垢版 |
2020/09/28(月) 11:11:11.68
ピボットテーブルで列に日付を設定しています。DAXでフィルターコンテキストを有効とした状態の初日を取得する方法を教えてください
0895名無しさん@そうだ選挙にいこう
垢版 |
2020/09/28(月) 14:59:03.53
>ここの皆さんは、大したことないんですね
>口だけ達者ですが、弊社にためになんの解決策も提示いただけないとは。
>
>こちとら遊びじゃないんですが、ビジネスで必要なんですよ。

コピペになりそう
0898名無しさん@そうだ選挙にいこう
垢版 |
2020/09/28(月) 20:31:34.67
シートの1つにリストを作る
大阪
東京
神戸

別のシートで
マウスでセルを選ぶとリストから選べるように設定する。プルダウン?

( ´・ω・)ここまではできるんだけど、
昔リストの大阪を赤、東京を緑、神戸を青に文字を色付けしてたら、別のシートで選ぶときにも色が変わってたんだけどできなくなっちゃった。
どうしたらいい?
0902名無しさん@そうだ選挙にいこう
垢版 |
2020/09/29(火) 00:12:40.92
win10
2013
vba不可

標準偏差を求めるためSTDEV.P関数を使用したいのですが、元のデータリストは異なる母集団のデータがB列に1列に並んでしまっており、そのままだとかけられません。ただし、各母集団がどれに属するかという符号がA列にふられているので、それを利用してなんとか各母集団の標準偏差を出せないのでしょうか・・・・
イメージとしてはsumifの要領です。
0903902
垢版 |
2020/09/29(火) 00:15:50.10
DSTDEVPという関数がありました
0909名無しさん@そうだ選挙にいこう
垢版 |
2020/09/30(水) 14:33:17.64
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

特定シートのみを削除されないようにしたいのですが、どうすればいいでしょうか?
シートは日毎に作成し、入力していき、一定日時が経てば古いシートから削除していきます。
ただ、末尾のシートは基データを入れており、各シートはそこからデータを参照しているため、
末尾のシートを誤って削除されないようにしたいのです。
ブックの保護ではシート追加時に毎回保護解除しなければならないのでなにか良い方法があればご教授お願い致します。
0913名無しさん@そうだ選挙にいこう
垢版 |
2020/09/30(水) 15:50:35.46
>>909
末尾のシートを非表示にするか、外部参照にする

でも、日ごとにシートを作成して都度削除するような運用は
ブックが壊れやすくなる気がするから勧めない
0914名無しさん@そうだ選挙にいこう
垢版 |
2020/09/30(水) 17:54:03.95
>>911
削除禁止シートは一緒にせず別ブックにしとけ
入力はシート直接じゃなくフォームを使え
できればシートの削除や追加はVBAで自動的化した方が間違いが減らせるから、VBA可にできないか検討した方がいい
0915名無しさん@そうだ選挙にいこう
垢版 |
2020/09/30(水) 18:09:48.70
別ブック勧めるなよトラブルの元じゃん素人かよ
0918名無しさん@そうだ選挙にいこう
垢版 |
2020/09/30(水) 21:33:50.98
よるな、じゃねーよ
セル結合と別ブック参照はやめてくれ
自分のPCで一生場所動かさない自分だけのオナニー用だけにしてくれ
0919名無しさん@そうだ選挙にいこう
垢版 |
2020/09/30(水) 21:35:32.57
バカが自信満々でトラブルの元まき散らすの勘弁してくれ
0923名無しさん@そうだ選挙にいこう
垢版 |
2020/10/01(木) 14:13:15.71
セル内の文字列にある単語をダブルクリックした場合、
Excel2013→コロン(;)もまたいで選択される
Excel2016→コロン(;)の手前で選択が止まる
これは仕様?どこかに設定ある?おま環?
0927840
垢版 |
2020/10/01(木) 18:50:23.98
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

また教えてください。
商品リストシートを作成し商品名や商品コードを入力
入力シートにB列にE列が空欄なら""、E列に商品名があればVlookupで商品コードを参照
D列にC列が空欄なら""、C列に商品コードあればVlookupで商品名を参照するようにしました。

履歴シートの商品名列に入力E列(手入力データ)をコピーしたあと、
入力D列(関数で引用したデータ)を空白を無視して値をコピーするVBAを組んだら
長さ0文字のせいか手入力した商品名が上書きされて消えてしまいます。

リストから引用した商品名の方が固定文字になるので優先したいので、
貼り付け前に長さ0文字を空白にして無視して貼り付ける方法を教えてください。
よろしくお願いします。
0929927
垢版 |
2020/10/01(木) 19:36:28.38
分かりにくくて申し訳ない
文字の入ってるセルに上から関数で「""」にしてるセルを空白を無視してコピーすると元々の文字が消えてしまうんです
0930名無しさん@そうだ選挙にいこう
垢版 |
2020/10/01(木) 19:42:34.12
つまり、文字の入ってるセルに、上書きで、「関数で「""」にしてるセル」をコピーすると元々の文字が消えてしまうってこと?
0931927
垢版 |
2020/10/01(木) 19:43:42.89
そうなんです
0933名無しさん@そうだ選挙にいこう
垢版 |
2020/10/01(木) 19:54:39.58
つまり、文字の入ってるセルに、上書きで、「〜〜」と書いてあるセルをコピーすると元々の文字が消えてしまって、「〜〜」になってしまうってこと?
0934927
垢版 |
2020/10/01(木) 20:55:28.78
あなたはもういいです
0935名無しさん@そうだ選挙にいこう
垢版 |
2020/10/01(木) 21:42:24.00
空白判定はISBLANKかなんかでやってんのかな
その場合何も入っていないかどうかを判定するわけで、数式が入っていたらBLANKとして扱われない
=””でやればいいんじゃないか
0936名無しさん@そうだ選挙にいこう
垢版 |
2020/10/02(金) 12:44:00.29
ExcelVBAにて
If aa = bb And cc <> dd Then
ans = x + y
Elseif aa = bb And cc = dd Then
ans = x
Endif
上記の内容で aa = bb = cc = dd だったのに
x + y が返されました。そこでIF文を入れ替えると正常に
動作したのですが、原因がわかる方教えていただけると幸いです。
0947名無しさん@そうだ選挙にいこう
垢版 |
2020/10/02(金) 20:38:14.54
ペンがマクロで記録できないんですけど、
いや出来なくてもいいんですけどマクロで書けませんかね。
2019EXCEL2019バージョンです。
セルの上にペンでセルを書いたら、さぞかしアホだろうなと思うんですけど。

あと、戻る、進むのほかに、戻らないがあるといいと思いました。
←┐ ┌→ ×←┐
  ┘ └      ┘
0952名無しさん@そうだ選挙にいこう
垢版 |
2020/10/03(土) 01:50:22.95
filter関数はセルの結合をしていると使えない欠陥がある
0955名無しさん@そうだ選挙にいこう
垢版 |
2020/10/04(日) 18:30:54.88
例えば、
社員リストを元に社員カードを作りたい場合、社員カードのセルに社員リストを参照するのが良いと思うのですが、
どういった方法が一番使い勝手が良いのでしょうか?

社員リスト(人物リスト)
https://dotup.org/uploda/dotup.org2272092.png_yjlmrmi49e0Kv5AvrALh/dotup.org2272092.png
自己紹介カード(赤文字が社員リストから参照している部分)
https://dotup.org/uploda/dotup.org2272094.png_42knHvlYW33nzKwjqql8/dotup.org2272094.png

現状、リストへの参照は、="なまえ-"&sheet!A2&"しゅみ-"&sheet!B2
といった風に無難?な参照方法でカードのセルに書いていっていますが、こういうのはxlookupを使った方がやりやすいのでしょうか?

また、自己紹介カードの参照セルの数字部分(sheet!A2のA2や、sheet!B2のB2)を
連番で複製することによって、太郎や陽介など他の社員のカードもコピーして簡単に作れると思うのですが、
複数行単位での関数部分の連番をするのに、適した方法や関数があれば教えて頂けないでしょうか

宜しくお願いいたします。
0956名無しさん@そうだ選挙にいこう
垢版 |
2020/10/04(日) 18:34:12.99
すみません、
>現状、リストへの参照は、="なまえ-"&sheet!A2&"しゅみ-"&sheet!B2
ここのセル指定がズレていますね、
A2ではなくsheet!B3、B2ではなくsheet!D3
でした 失礼しました
0957名無しさん@そうだ選挙にいこう
垢版 |
2020/10/04(日) 18:42:30.09
一度発行してしまえば今後何枚も印刷するようなものじゃなさそう
用紙一枚に入るだけのレイアウトで番号入力したらxlookupで埋める形よいかと
0960名無しさん@そうだ選挙にいこう
垢版 |
2020/10/04(日) 21:13:29.66
セルの内容をクリップボードにコピーするマクロってどうやって作るのですか
0962名無しさん@そうだ選挙にいこう
垢版 |
2020/10/05(月) 03:35:59.61
皆さんExcelの検定とか資格って持ってるのですか?
0964名無しさん@そうだ選挙にいこう
垢版 |
2020/10/05(月) 12:55:46.96
>>960
Sub Sample1() 'セルA1の内容をクリップボードに入れる
  With CreateObject("Forms.TextBox.1")
    .Text = Cells(1, 1)
    .SelStart = 0
    .SelLength = .TextLength
    .Copy
  End With
End Sub
0969名無しさん@そうだ選挙にいこう
垢版 |
2020/10/06(火) 09:44:33.24
中小はわかんないけど、大手は脱マクロ傾向にあるから、Powerplatformに移行するのおすすめ
Appsでアプリ作ってから会社貸与スマホでの棚卸しや商品管理が楽になったよ
0971名無しさん@そうだ選挙にいこう
垢版 |
2020/10/06(火) 12:05:01.86
中小向けのソリューションも売り込みが盛んになってきてるし、コロナで業績の落ちたとこはどんどん飛びつくと思うよ
0976名無しさん@そうだ選挙にいこう
垢版 |
2020/10/06(火) 18:06:28.50
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

a1,b1,c1,d1,e1,f1
にそれぞれ数値が入ってます。
これらの数値がすべて異なる場合に1を重複する場合には0を表示したいのです。
良い方法はありませんか?a1,b1,c1,d1,e1,f1のセルは実際にはもっと増えるため
一つ一つをCountIFなどで判定するのはつらいのです><
0980976
垢版 |
2020/10/06(火) 18:24:42.44
>>978
作業列を使ってcountIFを使う方法はわかるのですが、
作業列を使わないで一つのセルで完結に解決したいのです。。。
0984976
垢版 |
2020/10/06(火) 19:09:19.22
>>982
縦でも構わないです。
a1,a2,a3,a4・・・でも構いません。
作業列を使わずにスマートに列の中に重複する数値があるかを
一つのセルで完結したいです。
0985名無しさん@そうだ選挙にいこう
垢版 |
2020/10/06(火) 19:09:20.12
>>980
countaでセルの数を数えてcountで基準となるセルと同じセルの数を数えて両方が同じ数なら1にすればいいんでしょ
作業列いらないじゃん
0986976
垢版 |
2020/10/06(火) 19:11:04.99
>>983
ありがとう。。。
でも、数値の入ったセルは今後どんどん増える予定なのです。。。
0987976
垢版 |
2020/10/06(火) 19:15:23.15
>>985
countaとcountでどのように解決できますか?
どのような式になるか教えていただけると助かります。
0989976
垢版 |
2020/10/06(火) 19:23:59.58
関数はわかりますが。。。
countで解決できるとは思えないのですが。。。
0991976
垢版 |
2020/10/06(火) 19:27:45.07
count…数値のカウント
counta…空白以外のカウント

これで解決できるのですか?
全く想像できません。。。
わかる方アドバイスお願いします><
0992976
垢版 |
2020/10/06(火) 19:31:55.70
>>990
ありがとうございます。ぜひ使わせていただきます。
動作を確認いたしましたm(_ _)m
0999976
垢版 |
2020/10/06(火) 23:40:32.10
>>995
ありがとう。新しい関数を使えば簡単なんですね
1000名無しさん@そうだ選挙にいこう
垢版 |
2020/10/07(水) 01:02:36.83
1000
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 17時間 1分 54秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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