Excel総合相談所 134 at BSOFT
[2ch|▼Menu]
[1からを表示]
50:名無しさん@そうだ選挙にいこう
19/02/20 16:02:41.01 .net
>>37 >>40
先輩=上司だったり

51:名無しさん@そうだ選挙にいこう
19/02/20 16:13:56.38 .net
今日になって条件付き書式の文字色が反映されてもすぐ戻るバグが発生するようになったんだけど俺だけ?
例えば、全ての文字色を白にしてて
VBAでネットから情報を取り込んで数値が条件にあっていれば、文字色が黒になって見えるようにしてるんだけど
取り込んだ瞬間は黒文字になるんだけど、アクティブにしたら白字に戻るみたいな現象が起こるようになった
誰か同じ人いる?Excelは365つかってる

52:名無しさん@そうだ選挙にいこう
19/02/20 17:35:07.96 .net
おきんぞ
新しいブックでも再現するの?

53:名無しさん@そうだ選挙にいこう
19/02/20 17:43:15.12 .net
ないねぇ

54:名無しさん@そうだ選挙にいこう
19/02/20 18:53:39.47 .net
エクセルに入力されているセルの一部のデータが、入力されているのにも関わらず罫線や文字が画面上表示されないバグが起こっていて困っています。
セルを確認するとデータは間違いなく入力されていて、印刷するとその通り出てきます。
症状は今朝からで、エクセルのバージョンは2016です。

55:名無しさん@そうだ選挙にいこう
19/02/20 18:59:11.10 .net
とりあえず再起動

56:名無しさん@そうだ選挙にいこう
19/02/20 19:00:54.55 .net
新規ブックで再現するのそれ
しなきゃブックがおかしいんじゃないの

57:名無しさん@そうだ選挙にいこう
19/02/20 19:09:14.31 .net
>>55 してみたのですが、変わらずです、、
>>56新規ブックでは再現出来ませんでした。10年以上使っているブックで、今までこんなことはありませんでした。
一部のシート上で当問題が発生します。症状が起こるシートでは、新たに文字を入力しなおしても、ロールアップ、ロールダウンで消えてしまいます。

58:名無しさん@そうだ選挙にいこう
19/02/20 19:23:48.40 .net
>>52
確かめてみたら新しいブックだとならないや
でもバックアップ用のファイルも同じ現象なったから、たぶん何かドライバとかでシステムが変わったのかもしれない
もう少し検証してみる

59:名無しさん@そうだ選挙にいこう
19/02/20 19:25:09.06 .net
描写の更新的な機能がなんかバグってるっぽいんだよね
スクロールしたらなったりするから

60:名無しさん@そうだ選挙にいこう
19/02/20 20:32:10.12 .net
>>57
なんかゴミデータがたまっている
新規ブック作ってシートを一個ずつ移動させれば解決すると思う

61:名無しさん@そうだ選挙にいこう
19/02/20 21:31:24.87 .net
IDすらないんだから安価くらいちゃんとつけない?
誰が誰に言ってるのかわかりにくいわ
安価のつけ方は半角で>>だぞ
>>61
みたいにするんだぞ

62:名無しさん@そうだ選挙にいこう
19/02/20 22:19:28.40 .net
さすが!オレっ!!  誰も褒めてくんないから自分で褒める
俺ならできる俺ならできる俺ならできる俺ならできる
そおゆう暗示を壁にぶつかったら唱える
決して人前で声に出したりはしないけど、悩んだら唱える
それ以前に何人もが挫折した案件 たらい回しで巡ってきた案件
試行錯誤したりスクラップ&ビルド繰り返して・・・ 成し遂げる
そこでつい冒頭の「さすが!オレっ!!」 が出る
やればできるじゃ〜ん、おれ えへへへへ
いやしかし、おれに出来るんなら誰にだってできる
思い上がらないよう自分を戒める     そんな日々の繰り返しさ! ってやんでいっ
  いや、Excelのハナシじゃ無いんですけどね

63:名無しさん@そうだ選挙にいこう
19/02/20 23:34:04.95 .net
>いやしかし、おれに出来るんなら誰にだってできる
だが、俺が最初にやる

64:名無しさん@そうだ選挙にいこう
19/02/21 02:19:46.28 .net
>>51の症状はこんな感じ
正常時の表示。セルの背景がカラフルなところはちゃんと黒字になっている
URLリンク(i.imgur.com)
Excelをアクティブにすると白字になる
URLリンク(i.imgur.com)

・正常表示されてるときにスクロールすると文字が半分だけ白字になったりするから描写的なバグっぽいんだよね
URLリンク(i.imgur.com)

URLリンク(i.imgur.com)

昨日から急になったんだけど、なんだこれ…

65:名無しさん@そうだ選挙にいこう
19/02/21 09:57:38.55 .net
index関数を使って、テーブルの範囲を記述していたのですが、テーブルの数が膨大になってくるとメンテナンス性も悪いので、なにか短縮できる方法とかありますでしょうか。

66:名無しさん@そうだ選挙にいこう
19/02/21 10:15:54.09 .net
テーブルの数っていうのが参照先の行が増えてるのか列が増えてるのか参照するシートが増えてるのかで意味が違ってくる
offsetとcountとか組合せて使えば参照範囲を可変に出来たはず
参照シートを変えたい場合はINDIRECT使って参照シート名を指定出来るようにすればメンテしやすい

67:名無しさん@そうだ選挙にいこう
19/02/21 10:22:30.44 .net
あぁ、参照範囲の記述を短縮する方法だとしたら回答間違ってたわ
範囲の記述を短くしたいなら名前の定義で出来る

68:名無しさん@そうだ選挙にいこう
19/02/21 10:26:27.31 .net
>>67
ありがとうございます。
テーブルに名前をつけて、それを羅列するって感じですね。
何か範囲を別持ちして、その別でもったものを指定するみたいな方式がないかと考えていましたが、そこまで便利なものはさすがになさそうですね。

69:名無しさん@そうだ選挙にいこう
19/02/21 11:28:05.11 .net
>>68
indirect

70:名無しさん@そうだ選挙にいこう
19/02/21 11:30:47.73 .net
>>64
再描画が止まってる気がする
イミディエイトウィンドウに以下を一行ずつ、コピーペーストしてenter
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
イミディエイトウィンドウの開き方
URLリンク(www.239-programing.com)
後hあアクセラレータを無効にしてみる
URLリンク(www.chips-shop.com)

71:名無しさん@そうだ選挙にいこう
19/02/21 11:30:54.71 .net
>>68
何か範囲を別持ちして、その別でもったものを指定するみたいな方式
それなら最初の回答したINDIRECT使えば出来る

72:名無しさん@そうだ選挙にいこう
19/02/21 15:24:05.82 .net
>>64
それはビデオカードのドライバのバグ
Excelは悪くない
最近アップデートしなかった?

73:名無しさん@そうだ選挙にいこう
19/02/21 17:33:18.76 .net
計算式のセルだけ文字色を変えるにはどうやればいいですか?

74:名無しさん@そうだ選挙にいこう
19/02/21 17:57:56.13 .net
>>73
ISFORMULA 関数

75:名無しさん@そうだ選挙にいこう
19/02/22 00:08:48.10 .net
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 13
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
複数のシートを統合シートに転記してますが
数式や罫線をコピーせずに値のみ移したいです
色々試したがうまくいかなっかた
どうしたらいいですか?
おねがいします
下記コードを使っています
Sub 統合へ()
Application.ScreenUpdating = False
Dim 全シート As Worksheet
Worksheets("統合").Rows("2:" & Rows.Count).Clear
For Each 全シート In Worksheets
With 全シート
If .Name <> "統合" Then
.Range(.Cells(2, 1), .Cells(Rows.Count, 1) _
.End(xlUp).Offset(, 6)).Copy _
Worksheets("統合") _
.Cells(Rows.Count, 1).End(xlUp).Offset(1)
End If
End With
Next
End Sub

76:名無しさん@そうだ選挙にいこう
19/02/22 00:19:32.35 .net
>>75
コードは見てないけど、2通り
値貼り付けをマクロの記録すればすぐに分かると思う
また、
range=range
という書き方もあるけど範囲合わせるのがちょっとめんどくさいんだよね
お好きな方で
Sub foo()
'値でコピーペースト。貼り付け先は左上セルの指定だけで良いので楽
Range("D3:D4").Copy
Range("C1").PasteSpecial Paste:=xlPasteValues
'超軽いが範囲を合わせる必要がある
Range("c1:c2").Value = Range("d3:d4").Value
End Sub

77:名無しさん@そうだ選挙にいこう
19/02/22 00:20:47.59 .net
使ったシートはこんな感じ
URLリンク(i.imgur.com)

78:名無しさん@そうだ選挙にいこう
19/02/22 19:51:42.32 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
vbaで作成したエクセルマクロをアドインファイル(xlam)に変換後、このxlamファイルを保護したいと考えています。
ただし、パスワードの保護ではなく、VBのプロジェクトウィンドウに表示されるxlamファイルを展開しようとしても、
「プロジェクトを表示できません。」と表示されるようにしたいです。
どうやっても解除できないガチガチな保護は必要ありませんが、「プロジェクトを表示できません。」と出て
vbを表示できなくする程度には保護したいと考えています。
このような保護は、どのようにすればできるのか教えてください。

79:78
19/02/22 20:39:56.23 .net
イメージとしては、以下のサイトの「←これ?」が指すものです。
URLリンク(okwave.jp)

80:名無しさん@そうだ選挙にいこう
19/02/23 10:58:34.84 .net
Row関数でA列にあるデータの個数+1番目の列番号を出したいです。
とりあえずB1セルに=COUNTIF(A1:A10,">0")+1と入れて、=Row(A&"B1")のような形にしたのですが、数式に問題が見つかりました。と出てしまいます。
どうすればいいでしょうか。

81:名無しさん@そうだ選挙にいこう
19/02/23 11:35:14.62 .net
>>78
それが最適なパスワード保護の使い方だと思う
なんで避けるのか良く分からん
>>80
>データの個数+1番目の列番号
良く分からん。列番号は1にきまっている
データ個数+1ならこれ
=COUNTIF(A:A,"<>")+1
最大の行番号+!ならこれ
=MAX(INDEX((LEN(A:A)>0)*ROW(A:A),0))+1

82:名無しさん@そうだ選挙にいこう
19/02/23 21:25:48.90 .net
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
CD収録の音楽リストをまとめています。曲名・アーティスト名など25列ほどあります。
旧バージョン時代から入力してきた経緯もあり97-2003の .xls で保存してきましたが、
曲数が増えたので .xlsx に「値のみ」で移したところ、データ量が半分になりました。
見た目は新形式に移行したようですが、データ量が半分に減って正常なのでしょうか?
31MB→14MB、計算式は無く全てテキストデータ、書式はフォントを色々変えている。

83:名無しさん@そうだ選挙にいこう
19/02/23 21:27:03.60 .net
>>82
正常です
xlsはデータサイズが大きい

84:75
19/02/23 21:39:17.54 .net
>>76 ありがとうございます。
しかし使ってるコードも本やネットで拾ったもので
どこをどう直したらいいか分かりません。
あれこれ試行錯誤してますがエラーになります。
マクロに手を出したのも数ヶ月の初心者です。
何とかその辺を汲んで教えていただけませんか?
お願いします。

85:名無しさん@そうだ選挙にいこう
19/02/23 22:05:59.16 .net
>>84
わかりませんじゃなくて、もうちょっと位頑張った方が良いぞ
vbaは万能だからな
あとwith嫌いだから勝手に消したぞ
Sub 統合へ()
'高速化
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set 統合シート = Worksheets("統合")
'最終行まで削除
統合シート最終行 = 統合シート.Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("統合").Rows("2:" & 統合シート最終行).Clear
'メインルーチン
For Each コピー元シート In Worksheets
If コピー元シート.Name <> "統合" Then
'コピー
コピー元シート最終行 = コピー元シート.Cells(Rows.Count, 1).End(xlUp).Row
コピー元シート.Range(コピー元シート.Cells(2, 1), コピー元シート.Cells(コピー元シート最終行, 6)).Copy
'貼付
統合シート最終行 = 統合シート.Cells(Rows.Count, 1).End(xlUp).Row
統合シート.Cells(統合シート最終行 + 1, 1).PasteSpecial Paste:=xlPasteValues
End If
Next
'高速化解除
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
'完了
MsgBox ("終わり")
End Sub

86:名無しさん@そうだ選挙にいこう
19/02/24 02:34:21.40 .net
教えてください。
VBAの命令の、Application.screenupdating = false って、
なんらかの処理が一段落ついたところで解除されると考えていいのでしょうか?
どこかで= True と書いておかないと、画面上はずっとうんともすんとも言わないってことは
ないようなんです。
Do とか While文では、ちゃんとループから出る条件を書かないと無限ループになってしまう
ことがありますが、screenupdatingは、そんなことないようなんです。
=trueは書かなくてもいいんじゃないか、と思うくらいです。
どうなんでしょうか?updating=falseが解除される条件ってのがあるんでしょうか?

87:名無しさん@そうだ選挙にいこう
19/02/24 02:48:21.17 .net
>>86
画面描画が100%停止されるわけではなく、
恐らく負荷がかかっていないようなタイミングで画面の更新は行われる
>=trueは書かなくてもいいんじゃないか、と思うくらいです。
別に外すのは勝手だけどどうなっても知らんよ
自己責任でどうぞ
>どうなんでしょうか?updating=falseが解除される条件ってのがあるんでしょうか?
知らない
ウォッチ式にでも入れておいて確認すればいいんじゃないかな
めんどいから俺はしない
URLリンク(docs.microsoft.com)

88:75
19/02/24 06:14:22.60 .net
>>85
目が覚めたら神様から返事がありました
感謝します
もちろんこれから頑張っていきますが
そのヤル気を大きく加速させる
スイングバイのようなレスです
ありがとうございました。

89:名無しさん@そうだ選挙にいこう
19/02/24 08:56:33.49 .net
>>83
ありがとうございます

90:名無しさん@そうだ選挙にいこう
19/02/24 18:10:11.42 .net
ハイパーリンク関数について教えてください。
Sheet1のA1セルが8ならSheet2のA8セルにジャンプ、
Sheet1のA1セルが50ならSheet2のA50セルにジャンプするようなやり方を教えてください。

91:名無しさん@そうだ選挙にいこう
19/02/24 19:01:59.72 .net
A8かA50から永遠に抜け出せなくなるけどいいのかな

92:名無しさん@そうだ選挙にいこう
19/02/24 19:05:21.27 .net
>>91
できれば抜け出せるのでお願いします。

93:名無しさん@そうだ選挙にいこう
19/02/24 19:29:33.70 .net
>>90
=HYPERLINK("#sheet2!A"&A1)

94:名無しさん@そうだ選挙にいこう
19/02/24 20:01:03.70 .net
>>93
ありがとうございます。お陰様でできました。

95:名無しさん@そうだ選挙にいこう
19/02/24 21:41:13.23 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2019
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
エクセルでjsってどうやれば使えるようになるでしょうか
参照設定でしょうか

96:名無しさん@そうだ選挙にいこう
19/02/25 23:20:08.96 .net
VBAって奥深いね

97:名無しさん@そうだ選挙にいこう
19/02/26 14:09:04.90 .net
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
.xls で作っていたファイルを .xlsx にしたところ、何の変更操作もしないでも
ファイルを閉じようとすると保存確認のメッセージが出るようになりました。
どうしたらメッセージを消せますか。マクロなどは使っていません。

98:名無しさん@そうだ選挙にいこう
19/02/26 14:17:13.48 .net
>>97
揮発性関数か、外部リンクかindirect辺り使ってない?
URLリンク(www.civil-design.net)
使ってないならバグがあるような気がするので、
新しいxlsxブックを作って、xlsファイルからシートを一つずつ移動させてみるって方法がある

99:名無しさん@そうだ選挙にいこう
19/02/26 16:37:06.51 .net
例なのでちょっと違うんですが、例えば
3年B組テスト結果
A君        B君
 17年18年19年


理 
というシートがあり、18年の全員の国語の点数を足したい。けど赤点だった人は抜くという場合
=if(A君=赤点,0,国18年)+if(B君=赤点,0,国18年)+・・・
とif計算でやるしかないのでしょうか。
ちなみにA君、B君、C君・・・は実際は横ではなく縦に並んでいます。
=(c4+g4+k4+・・・)ではなく
=(c4+c14+c24・・・)という感じになります。

100:名無しさん@そうだ選挙にいこう
19/02/26 17:29:38.37 .net
>>99
c列と言われても・・・?としか
要は
・ピボットテーブル
・作業列
・配列数式
のどれかだと思う

101:97
19/02/26 17:58:13.90 .net
>>98
シートごとに.xlsxに移行して追い詰めていったら、
マイナス符号で始まる文字列が #NAME エラーになっていました。
解決しました。ありがとうございました。

102:名無しさん@そうだ選挙にいこう
19/02/26 18:18:04.86 .net
>>99
sumifs

103:名無しさん@そうだ選挙にいこう
19/02/26 18:35:56.85 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
EXCELの共有ブック機能について質問です
共有ブックは複数ユーザが同時に編集し、変更保存時に自分の変更したセルが
編集中に他ユーザによって変更されていた場合には、どちらの変更を反映するか
選択できるということは理解できたのですが、
自分の変更したセルを参照しているセルについてはどういう振る舞いになるのでしょう?
たとえば、共有ブックFoo.xlmsの自動計算Sheet1で、A1セルとB1セルに1が入っており、
C1=A1*B1だった時、このブックを太郎と花子が同時に編集したとします
太郎はA1の値を1から2に変更しB1は触っていません。C1は自動計算で2となっています。
花子はB1の値を1から3に変更しA1は触っていません。C1は自動計算で3となっています。
先に太郎が変更を保存した後、花子がブックを保存しようとした時、C1については
変更反映選択のダイアログは出るのでしょうか?
選択できないとしたら、C1は6になって保存されるのでしょうか?
誰の変更を反映するか選択できるとしたら、
 太郎の変更(A1=2、B1=1(変更無し)、C1=2)
 花子の変更(A1=1(変更なし)、B1=3、C1=3)
だけでなく
 太郎&花子の変更(A1=2、B1=3、C1=6)
を選ぶことはできるのでしょうか?

104:名無しさん@そうだ選挙にいこう
19/02/26 18:48:07.95 .net
>>99
=SUMIFS(C2:C200,A1:A200,"国",C2:C200,">=30")
30点未満が赤点で2行目から200行目までデータがある場合

105:名無しさん@そうだ選挙にいこう
19/02/26 18:49:24.56 .net
A1→A2の間違い

106:名無しさん@そうだ選挙にいこう
19/02/26 19:14:13.34 .net
>>99
sumproductでいける気がするけど
後で作ってみるか

107:名無しさん@そうだ選挙にいこう
19/02/26 21:18:25.92 .net
合計処理してるセルを選択すると、合計元のセルに色がつくとかできますか?

108:名無しさん@そうだ選挙にいこう
19/02/26 21:52:57.43 .net
>>107
出来ますよ

109:名無しさん@そうだ選挙にいこう
19/02/26 22:35:50.28 .net
vbaじゃなくて初歩的なグラフの作り方で困っているのですが、質問したらスレチでしょうか?
探しても見つからなくてそういうスレがあるなら誘導していただけると幸いです...

110:名無しさん@そうだ選挙にいこう
19/02/26 22:52:57.52 .net
>>108
VBAですか?

111:名無しさん@そうだ選挙にいこう
19/02/26 23:28:54.77 .net
>>110
はい。VBAです。

112:名無しさん@そうだ選挙にいこう
19/02/27 00:26:02.89 .net
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
一枚目みたいにつくりたいのですが、どうしても二枚目みたいになってしまいます。
どなたかご教示いただけないでしょうか?

113:名無しさん@そうだ選挙にいこう
19/02/27 00:32:18.02 .net
>>111
やりかたおしえて

114:名無しさん@そうだ選挙にいこう
19/02/27 03:17:26.18 .net
>>103
環境がないから回答できないんだけど、
自分でやった方が早い気がする
>>107
 数式→参照元のトレース
>>112
データラベル
URLリンク(i.imgur.com)

115:名無しさん@そうだ選挙にいこう
19/02/27 05:13:21.04 .net
>>112
グラフの種類が違う
100%積み上げグラフと積み上げグラフ

116:名無しさん@そうだ選挙にいこう
19/02/27 05:49:44.07 .net
>>112
合計の%をデータラベルで表示したいということか?
100%積み上げ縦棒グラフでなくて、ただの積み上げ縦棒グラフで作る。
・百分率の系列に「合計」も作っておく。
・グラフ上の合計の系列は「塗りつぶしなし」
・追加したデータラベルは、合計の系列だけラベルの位置で「内側軸寄り」
・縦軸の最大値が自動だと倍のレンジになるので、手動調整

117:名無しさん@そうだ選挙にいこう
19/02/27 06:42:53.90 .net
【1 OSの種類    】 Windows7
【2 Excelのバージョン】 Excel2016
【3 VBAが使えるか  】 否のようなそうでもないような
【4 VBAでの回答の可否】 できれば回避したい
日ごとにシートを作っている集計シートで、全シートの同じセルを参照して合計を出しているセルがあります
シートに行を足したり列を足したりした場合、そのシートにかかわるところだけが自動的にシフトするのですが他のシートを参照している部分は変わらないのです(当然ですが)
これを自動的にずらす、方法はないでしょうか?そもそも全シートを参照するのにずらっと全シートの参照式を並べて足している状態です
vbaならシート名を変数にしてしまって全シート集計容易なのはわかってます
が、使う側が「マクロ?なにそれおいしいの?なんでボタン押す手間いるの?」なので…

118:名無しさん@そうだ選挙にいこう
19/02/27 06:51:41.71 .net
>>117
串刺し集計なら無理っぽいな

119:名無しさん@そうだ選挙にいこう
19/02/27 07:11:25.56 .net
>>118
vbaにした方が早いんかな…
前回列足されてずれてて集計ミスが発生したもので
そう列は足す事はないとは思いますが…
vbaなら見出しを参照してその行を自動的に拾い出すぐらいで組めそうなんですが
関数でそれを実装するとセルにどれだけの関数を押し込めなきゃならんかと思うとちょっと
fornextって関数にないですよね?
vbaにしたらしたでさかのぼって7日間のみのデータを随時集計して色々役立てる事はできるので導入はしたいのですが、
なにぶんにも運用する上司がまるっきり知識ないので

120:名無しさん@そうだ選挙にいこう
19/02/27 07:13:43.59 .net
日付をキーにindexmatchとかvlookupして足すのは?

121:名無しさん@そうだ選挙にいこう
19/02/27 07:15:32.80 .net
あ、勘違いしてました

122:名無しさん@そうだ選挙にいこう
19/02/27 07:24:09.81 .net
各シートの集計欄に名前をつける

123:名無しさん@そうだ選挙にいこう
19/02/27 09:13:23.32 .net
>>117
各シートで参照する合計セルが1つなら、
A1固定にしてしまえば、少しは楽?
合計行か合計列のどちらかなら、
1行目かA列に寄せてしまうとか。
で、
FIND、ADDRESS、MATCH、INDIRECT
を組み合わせて、縦横セル番地を特定するとか。
ただし、日別のシート名指定は
手動になるかも知れない。

124:名無しさん@そうだ選挙にいこう
19/02/27 12:09:00.61 .net
みなさんありがとうございます
>>122がいけそうですね
それか集計シートを別に用意してそこで集計させるか(そうしたら自動でずれるかな?)

125:名無しさん@そうだ選挙にいこう
19/02/27 21:12:25.74 .net
【1 OSの種類         .】 Windows 7
【2 Excelのバージョン   】 Excel 2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
数値の表示形式で数値の桁数より少ない下の桁だけ表示する方法はありますか?
例えば数値が 12345678 のとき 345678 だけ表示。
または日付の表示形式で日や月日が不明の時に00と表示する方法。
例えば2019年?月?日は 190000、2019年2月?日は 190200 と。
ただし数値として並べ替えが可能なもの。

126:名無しさん@そうだ選挙にいこう
19/02/27 21:18:51.10 .net
>>125
Excel のセルの表示形式で [ユーザー定義] に使用できる書式記号について
URLリンク(support.microsoft.com)
>例えば数値が 12345678 のとき 345678 だけ表示。
無い
>不明の時に00と表示する方法。
がどう入力されているかが分からない
>例えば2019年?月?日は 190000、2019年2月?日は 190200 と。
>ただし数値として並べ替えが可能なもの。
両立は無理

127:名無しさん@そうだ選挙にいこう
19/02/27 21:56:56.83 .net
>>125
そんな変態的な機能はあるはずない

128:名無しさん@そうだ選挙にいこう
19/02/27 22:15:07.34 .net
上のはright関数で固定桁なら表示できるんじゃね

129:名無しさん@そうだ選挙にいこう
19/02/27 23:00:25.43 .net
>>125
どのセルに何の数値が入っているのか具体的に言ってくれれば回答しやすいな

130:名無しさん@そうだ選挙にいこう
19/02/28 00:45:09.09 .net
(いやエクセルって結構変態的なソフトだと思う…)

131:名無しさん@そうだ選挙にいこう
19/02/28 01:04:49.03 .net
>>125
> 例えば数値が 12345678 のとき 345678 だけ表示。
RIGHT関数で、例えば下6桁を取り出せるけど、
結果は文字列扱いになってしまうので、
=VALUE(RIGHT(当該セル,6))
では?
> 例えば2019年?月?日は 190000、2019年2月?日は 190200 と。
似たようなことをやったことがある。
元セルの日付は"?"が混じっているから、
日付書式データではないと思うので、文字列として、
LEFT、MID、FIND関数で当該値を抽出するとして、
(VALUE関数も被せる必要があるかも?)
=年*10^4+月*10^2+日
を基本に、
IF(月="?",0,月*10^2)
とか、
IF(ISNUMBER(月)=TRUE,月*10^2,0)
とか、
IFERROR(月*10^2,0)
なんてのを中にはめ込んだら?

132:名無しさん@そうだ選挙にいこう
19/02/28 04:25:39.41 .net
>>128
>>131
>>127が変態的な機能という言い方しているのは
>>125が、「数値の表示形式で」という指定をしているからじゃ・・・
つまり作業列を使わず同じセル内で変えて欲しい模様

133:名無しさん@そうだ選挙にいこう
19/02/28 12:27:17.20 .net
indirect関数がよくわからん。

134:名無しさん@そうだ選挙にいこう
19/02/28 12:49:31.80 .net
>>133
重くなるけど超便利だぞ
普通の数式で出来ないことができるようになる

135:名無しさん@そうだ選挙にいこう
19/02/28 13:25:17.29 .net
indirect関数は作業列と併用すると視認性も良いな

136:名無しさん@そうだ選挙にいこう
19/02/28 14:02:04.97 .net
参照先のシートが差し替えられる事がある場合もINDIRECT使う

137:名無しさん@そうだ選挙にいこう
19/02/28 14:13:39.43 .net
シート消しても参照エラーにならないのは強いよな

138:名無しさん@そうだ選挙にいこう
19/02/28 16:19:39.32 .net
>>125
6桁分のセル幅に納めるのが目的なら、表示形式を文字列、配置を右寄せに。
これなら不明の00も、1999年以前の並べ替えも可能。
ただし、文字列とした後に入力した値は文字扱い、
入力済み値のセルを文字列としたのは数値扱いなので、
並べ替えを可能にするにはfixed関数で数値を文字列化が必要。

139:名無しさん@そうだ選挙にいこう
19/02/28 21:30:08.89 .net
>>134
まじでか。理解して応用効かせたいよ。
てかここにいる人、みんなすげーなー。なんでそんなにポンポンと関数やらVBAがでてくんの?仕事でしてるから?Excel漬けの毎日が数年続いてるから?

140:名無しさん@そうだ選挙にいこう
19/02/28 22:18:41.91 .net
別にExcel漬けじゃないけど、Windows95の頃から使ってるから、もう20年以上になる
だけど知らない関数も多い
統計とか使ったことないし

141:名無しさん@そうだ選挙にいこう
19/02/28 22:56:47.90 .net
15年ぐらい使ってるな。これ覚えれば絶対に楽できると確信した
15年前の俺はよくやった
そして更にvlookupとvbaを覚えた時も衝撃走った

142:名無しさん@そうだ選挙にいこう
19/02/28 23:28:49.99 .net
>>141
俺の中ではlookup系の関数は使えない関数ってことで捨てたんだけど
そんなにいいものなのか?
個人的にはmatch関数ですべてまかなえる気がしてる

143:名無しさん@そうだ選挙にいこう
19/02/28 23:35:15.65 .net
vlookupで衝撃→indexmatchで衝撃→sumproductで衝撃
sumproduct古い関数なのになんでこんなに使えるの?
それとももっと有能がある?
基本的な使い方は
sumproduct((○=縦)*(△=横),配列2)
なんだけど

144:名無しさん@そうだ選挙にいこう
19/02/28 23:46:49.84 .net
CSE最近知りました、衝撃!!
Excelなめてました、ごめんなさい。

145:名無しさん@そうだ選挙にいこう
19/03/01 01:16:03.25 .net
>>142
indexmatchはvlookupの上位互換だけど、
なんちゅーか便利な技だね。必須ではあるけど・・・
vlookupは新しい世界が開けたといっても過言ではない

146:名無しさん@そうだ選挙にいこう
19/03/01 07:22:55.92 .net
indexmatch派のメンツも、入り口はvlookupだっただろうし、最初に衝撃うけたってだけかとw
sumproductは便利だからすぐ使いたくなるけど
重くなりすぎに注意ってとこがな・・・
使い始めた頃は、色んなサイトに例で出てくるrow関数に惑わされた

147:名無しさん@そうだ選挙にいこう
19/03/01 07:39:36.70 .net
作業列を有効に使う事も大事だと思う
恰好悪いとか思ってる人もいるが長い数式ほど迷惑なものは無い
趣味で自分しか使わないなら構わないが

148:名無しさん@そうだ選挙にいこう
19/03/01 17:28:30.02 .net
画像の説明通りですが
2つの数値の差を
+−表示で別のセルへ表示したいのです。
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
画像です。
URLリンク(i.imgur.com)
宜しくお願いします。

149:名無しさん@そうだ選挙にいこう
19/03/01 17:56:43.63 .net
>>148
多分書式設定でやったほうが良い
=b1-a1
URLリンク(i.imgur.com)
ユーザー定義に入力するのは以下
+0.00;-0.00;±0.00;@
数式がいいなら
=IF(A1=B1,"±",IF(A1>B1,"-","+"))&ABS(A1-B1)

150:名無しさん@そうだ選挙にいこう
19/03/01 18:12:34.51 .net
やっぱ書式でしょう

151:名無しさん@そうだ選挙にいこう
19/03/01 18:19:02.04 .net
あとで計算に使わないならお手軽にTEXT関数でもいけるんじゃないの
=TEXT(B1-A1,"+0.00;-0.00;±0")
パーセント表示のとこの実際の値がどうなってるかわかんないけど

152:名無しさん@そうだ選挙にいこう
19/03/01 21:50:13.83 .net
Multiplanが染みついているので、余程でないとただのLOOKUPしか使わない。

153:名無しさん@そうだ選挙にいこう
19/03/02 07:47:56.35 .net
vlookupはエポカルクで覚えた。

154:名無しさん@そうだ選挙にいこう
19/03/02 10:48:47.55 .net
文字列IDの最小値を取りたいのだけど、できなくて。お知恵を貸してください。
やりたいことは、ID列の先頭文字でカテゴリしてその中の最小値を取る!です。
以下の0始まりだと、「001001」を取りたい
ID列
001001 ※取得
001002
100001
100002
200001
200002
最大は、TEXT(MAX(INDEX((LEFT($A$2:$A$7,1)=TEXT(0,"0"))*$A$2:$A$7,0)),"000000")みたいなので取れたんだけど。最小は上のやり方だと0始まり以外の配列要素が0になってしまって、0が取れてしまう。
マクロでやれば簡単なんだけど、計算式でやりたいっす。

155:名無しさん@そうだ選挙にいこう
19/03/02 12:04:04.22 .net
>>154
0&"000000"で無理やり1桁増やすとか

156:名無しさん@そうだ選挙にいこう
19/03/02 12:50:37.04 .net
なんとなくけど、"-"を付与してminで取れば行けそうな気がするんだけど0も-0になってるみたいで無理だった
=MIN(INDEX((LEFT("-"&$A$2:$A$700,2)=TEXT(0,"-0"))*$A$2:$A$700,0))

157:名無しさん@そうだ選挙にいこう
19/03/02 12:51:30.65 .net
違うわ、>>156は多分失敗してる

158:名無しさん@そうだ選挙にいこう
19/03/02 13:33:45.23 .net
>>154
作業列使い単純に数値化してMINじゃいかんの?
意味がよく判らん

159:名無しさん@そうだ選挙にいこう
19/03/02 13:47:58.62 .net
フォームボタンクリックで、あるシートを表示するVBAを書きました。
ただ非表示シートを表示させるだけじゃなくて、
そのときの条件で、シート内の文言やラジオボタンたちの表示/非表示が違うので、
if **** then *****.visible = true みたいなことをずっと書いてあります。
しかし、命令通りに非表示/表示がされないことがあります。非表示のはずのボタンが
出ていたり、その逆があったり。
これは、処理スピードのために、命令全体を、
application.EnableEvents = false  後はtrue
application.ScreenUpdating = false  後はtrue
application.Calculation = xlCalculationManual  後はxlCalculationAutomatic
で挟んだせいだと思います。
ですので、いちばん最後に、「いったん表示をリフレッシュ」みたいな命令を出せばいいんじゃないかと
思うのですが、そういう命令ってありますでしょうか?

160:名無しさん@そうだ選挙にいこう
19/03/02 13:49:54.95 .net
>>154
配列数式。
=MIN(IF(IF((LEFT(A2:A5,1)="0"),A2:A5,FALSE)*1=0,FALSE,A2:A5*1))
URLリンク(imgur.com)
falseと文字列の評価を同時にするとどうしてもfalseが0になるので、ネストにするしかなかった
他に方法はあるかもシレンが、もういいや
色々こね回して一時間掛かったけど楽しかったぞ
>>158
マクロ使えるぐらいだし、作業列使わない方法を効いてるんだろう
これは実務じゃなくて半分遊びだな

161:名無しさん@そうだ選挙にいこう
19/03/02 13:59:06.14 .net
>>159
vbaにリフレッシュ無いっぽい
>そのときの条件
これが再計算や描画が影響するものなら高速化を外したほうが良いと思う
言うてもそんなに変わらんでしょ

162:名無しさん@そうだ選挙にいこう
19/03/02 14:29:28.32 .net
>>161
それが、かなりスピードが違うんです。10倍近く。

163:名無しさん@そうだ選挙にいこう
19/03/02 14:42:43.43 .net
コード見ないとわからないな
ちなみに何秒ぐらい変わるの?頻度は1日何回ぐらい?
10倍はどうでもいいぞ

164:名無しさん@そうだ選挙にいこう
19/03/02 14:45:37.50 .net
>>163
使用頻度は1日100回くらい。
10秒以上かかってるのが1秒になる。
せっかちな社員が使うから、
速くしておかないと「使えない奴」と思われるからまずい。

165:名無しさん@そうだ選挙にいこう
19/03/02 15:00:11.43 .net
シートを日数分追加したいのですが
31日分だったら31枚プラス集計の1枚といったかんじで
超絶面倒なのですが何かいい方法はありますでしょうか?
シートに日付も入れられるとすげー楽です。

166:名無しさん@そうだ選挙にいこう
19/03/02 15:09:28.79 .net
エクセルを使ったことがない初心者です。
ウィンドウズ10にエクセルソフトを入れたいのですが何を購入したらいいですか?
それから勉強もしたいのでお勧めの本とかありますか?

167:名無しさん@そうだ選挙にいこう
19/03/02 15:18:03.63 .net
>>164
うーん微妙だね
10秒ぐらいなら待ってもらえばいいと思うけど
これ以上はコード見ないと分からない。恐らく構成が変なのだろう
アップしてくれれば見るよ
>>165
Sub foo()
日数 = Day(DateSerial(Year(Date), Month(Date) + 1, 0))
For i = 1 To 日数
Set 新シート = Worksheets.Add(, Worksheets(Worksheets.Count))
新シート.Name = i & "日"
Next
End Sub
>>166
機能は制限されるけど、オフィスオンラインなら無料
URLリンク(products.office.com)
googleSpreadsheetも無料
URLリンク(www.google.com)
本はMOS試験の本でも買っておくと良い

168:165
19/03/02 15:25:05.24 .net
>>167
ありがとう!

169:名無しさん@そうだ選挙にいこう
19/03/02 15:34:27.66 .net
ありがとうございます。

170:165
19/03/02 15:38:35.48 .net
ぶぉ、スプレッドシートはVBAいけないんだw
まぁ当たり前か。
jsでかくのかぁ・・・

171:名無しさん@そうだ選挙にいこう
19/03/02 15:40:47.57 .net
本は超図解シリーズだべ

172:名無しさん@そうだ選挙にいこう
19/03/02 17:19:20.89 .net
なんでマイクロソフトはマクロ含むブックは
拡張子わけるようにしたわけ?いらんくね?

173:名無しさん@そうだ選挙にいこう
19/03/02 17:33:28.70 .net
>>172
分ける必要はある
一緒だとウィルスが危険すぎる

174:名無しさん@そうだ選挙にいこう
19/03/02 17:33:40.82 .net
ウィルスみたいなマクロだ

175:名無しさん@そうだ選挙にいこう
19/03/02 19:48:28.72 .net
>>160 
ありがとう!できたよ。
その他みんなもありがとう。
いろんな方法があったのだけど、MAXは簡単に実現できたのに
MINができなくて、計算式一発でやれる方法を模索をしてました。
ワーク列使ったり、マクロ使ったりすれば、実現できてはいたんだけど。
ありがとう!!

176:名無しさん@そうだ選挙にいこう
19/03/02 22:33:19.88 .net
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
下記の画像のような表があるとして、どこかのセルに5と入力するとC列の9と10の平均の値を表示させるということは可能でしょうか?

URLリンク(i.imgur.com)

177:名無しさん@そうだ選挙にいこう
19/03/02 23:14:55.87 .net
>>176
C列全体なら8.5と思うが、
7.5と5はどこから来たんだい

178:名無しさん@そうだ選挙にいこう
19/03/02 23:32:18.20 .net
>>177
数字間違えてました。
9と10ではなく7と8です。
B列で5と入力されている行のC列の値を平均してセルに出力したい、ということです。
分かりづらくて申し訳ないです…

179:名無しさん@そうだ選挙にいこう
19/03/03 00:04:54.26 .net
>>178
=SUMPRODUCT((B:B=F3)*(C:C))/COUNTIF(B:B,F3)

180:名無しさん@そうだ選挙にいこう
19/03/03 00:10:25.42 .net
>>176 素人考えだけどe列に5を入れてどこかに平均出すセル作るとかなら
=AVERAGE(C1:indirect("c"&MATCH(5,E:E)))とか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1851日前に更新/334 KB
担当:undef