X



Excel総合相談所 135

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

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

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

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

【質問不可】Excel総合相談所スレの雑談・議論スレ
https://find.5ch.net/search?q=excel+%E3%80%80%E7%9B%B8%E8%AB%87%E6%89%80
0394名無しさん@そうだ選挙にいこう
垢版 |
2019/06/09(日) 19:39:15.69
ビジネスで優秀な人材育成する上司は何を教えているのか?
https://www.youtube.com/watch?v=apxtSqxjw08&;t=13s
マクドナルド伝説の店長が教える、最強店長になるために必要なこと
https://www.youtube.com/watch?v=0wMbR7JIeeQ&;t=3154s
「最強の働き方」長時間労働やノウハウよりも大切なこと
https://www.youtube.com/watch?v=JnMHbI1-e3E&;t=3606s
美容師の楽しさ再発見!やる気スイッチが入る働き方セミナー
https://www.youtube.com/watch?v=DGzXQT799oY
視覚障がいを乗り越えた活法家
https://www.youtube.com/watch?v=6IuY_K3uFdo&;t=805s
0396名無しさん@そうだ選挙にいこう
垢版 |
2019/06/09(日) 22:26:59.82
>>385で質問したものです。
A1セル「平成30年12月」に対して
=TEXT(DATEVALUE(A1&"1日"),"yyyy/mm/dd"
で2018/12/01が返ったのですが、
「平成30年」に対して
=TEXT(DATEVALUE(A1&"12月"&"1日"),"yyyy/mm/dd"
だとエラーになりました。
問題点はどこにあるかわかりますでしょうか。
0401名無しさん@そうだ選挙にいこう
垢版 |
2019/06/11(火) 12:55:24.24
countif関数教えてください。

重複を探すためにcountif関数を使ってます。

=countif($I$2:$I$10,I2)

という式を入れて重複をのデータを探しています。重複があれば2以上の数値が返るような感じです。

しかし明らかに重複していないのに2が返る箇所があります。

因みにI2.I3...のセルの値は3つのセルの結合で成り立ってます。23桁の文字列です。

何か原因はありますか?わかる方教えていただけるとありがたいです。
0405401
垢版 |
2019/06/11(火) 20:05:51.62
みなさん、ありがとうございます。

2が返される文字列と言うのは51840063118350711110700と51840063118350711026700の2つです。

それぞれ3つのセルを結合しています。明らかに異なる文字列なのに2が返されます。。。
0406名無しさん@そうだ選挙にいこう
垢版 |
2019/06/11(火) 20:26:37.18
>>401
これ結構難しいな
指数表記になると同一とみられるらしい
https://i.imgur.com/bY4mK7c.png

・文字列にしてSUMPRODUCT
ならうまくいく
画像E3、E4の数式

・頭にアンダーバーなど入れて完全に文字列にする
これならcountifで取れる

とにかく数値のままだと難しいようだ
0407名無しさん@そうだ選挙にいこう
垢版 |
2019/06/11(火) 20:40:33.69
重複チェックするくらいだから相当数あるとすれば文字列にしてしまった方が良いかもね
sumproductの場合は大量の行にコピペするとえらいことになる
0409名無しさん@そうだ選挙にいこう
垢版 |
2019/06/11(火) 20:53:14.23
と思ったけどダメだ、最初に指数になってしまうとその時点でダメなのか
文字列にした上で、アンダーバーなり付けないとダメか
うーん
0410名無しさん@そうだ選挙にいこう
垢版 |
2019/06/11(火) 22:08:34.30
>>401
Excelの仕様上23桁の数値の表示は無理だね
3つのセルの結合ならconcatenateだと文字列になるから結合の列だけコンカテナテにすればいいんじゃない?
ちなみに有効桁数は15桁
クレカの番号を入力できないようにする為とか聞いたことあるけどわからん調べてない
0411401
垢版 |
2019/06/11(火) 22:25:15.98
請求書の入力で重複がないかを探すために金額、コード1、コード2で検索値を作っておりました。
前述の方のアンダーバーを入れてやり直したら上手くいきました。
Excelは奥深いです。みなさんありがとうございました。
0415名無しさん@そうだ選挙にいこう
垢版 |
2019/06/11(火) 23:56:55.00
@最後のシート(右端)をアクティブにする
A

さる 1
いぬ 2
とり 3
さる 4

このようになっている時にさるに該当する数字の合計値を表示する

@とAは独立した事例です
vbaでお願いします
0420名無しさん@そうだ選挙にいこう
垢版 |
2019/06/13(木) 17:21:13.61
数字で数値は>>418.>>419でできそうです
ちなみにsumifで日本語文字列参照するときのセル書式って「文字列」じゃないとだめですか?とするとそれも直さないとなんですが

さる 1
いぬ 2
とり 3
さる 4

この全ての頭にアポストロフィーが付いている状態で、さるの合計を求めたいです
0421名無しさん@そうだ選挙にいこう
垢版 |
2019/06/13(木) 18:01:01.23
書式設定は何でもいいしアポストロフィーはあっても無くても良い
でもせっかくだからvbaで置換して消しておいたほうが良いとは思う
0422名無しさん@そうだ選挙にいこう
垢版 |
2019/06/13(木) 18:31:27.35
今までも違和感があったのだが今日知ってしまった
EXCEL2016で第二縦軸の軸ラベルを追加しようとグラフ要素を追加→軸ラベルと進んでいくと、第二「横」軸を追加するボタンと第二「縦」軸を追加するボタンのアイコンがどちらも「横軸」の絵じゃないかw
0431428
垢版 |
2019/06/13(木) 23:13:58.13
Sub tes()
Dim myMaxRow As Long
Dim myAns As Long
Dim i As Long
myMaxRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To myMaxRow
Cells(i, 3) = Cells(i, 2) * 1
Next i
myAns = WorksheetFunction.SumIf(Range("A1:A4"), "さる", Range("C1:C4"))
MsgBox myAns
End Sub

よくわからんけど、こういうこと?
0432名無しさん@そうだ選挙にいこう
垢版 |
2019/06/13(木) 23:16:25.18
アポストロフィー抜いたらいいんじゃないの
Sub foo()
For Each r In Range("b1:b4")
If r.PrefixCharacter <> "" Then
r.Formula = r.Formula
End If
Next
Debug.Print WorksheetFunction.SumIf(Range("a1:a4"), "さる", Range("b1:b4"))
End Sub
0433名無しさん@そうだ選挙にいこう
垢版 |
2019/06/13(木) 23:45:18.59
>>431
ありがとうございます大体そんな感じです
SumIf(Range("A1:A4"), "さる", Range("C1:C4")) のrange指定をA4やC4ではなく最終行で指定するにはどう書けばいいですか?

>>432
ありがとうございます、アポストロフィは綺麗に消えましたがsumifがどうなっているのかよくわかりません
(Debug.Printをよく理解していないからですが)
B5に合計の数値表示するとかできませんか?
0434431
垢版 |
2019/06/14(金) 00:31:50.81
432さんのようにアポストロフィ削除したほうがいいような気がするけど、
どちらにしても、こうかな。
myAns = WorksheetFunction.SumIf(Range(Cells(1, 1), Cells(myMaxRow, 1)), "さる", Range(Cells(1, 3), Cells(myMaxRow, 3)))
0435名無しさん@そうだ選挙にいこう
垢版 |
2019/06/14(金) 21:08:58.52
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2013
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

1KF0123445600これを1KF-0-1234-456-00このようにハイフンで区切り
たいんだけど【セルの書式設定】の【ユーザー定義】【種類】で何とか変更したい。
全て数字なら可能なんだけどアルファベットが入っているのでどうしていいのか
わからない。

LEFTとMID関数を使えばできるのは確認してるんだけど何とか関数を使わずに
出来ないだろうか?
0438名無しさん@そうだ選挙にいこう
垢版 |
2019/06/15(土) 17:39:17.22
【1 OSの種類         .】 Windows7
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

同じシートにある、セルの数値を行番号にして、別なシートのセルを参照したいのですが
どう記述したらいいでしょうか?

しょっぱい質問ですいません
0441名無しさん@そうだ選挙にいこう
垢版 |
2019/06/16(日) 05:33:26.54
質問です。よろしくお願いいたします。

上級者の作ったファイルを見ると、たいていVBAコードが複数のモジュールに分けて書かれています。
これは、改修時に見やすいとか、機能ごとにわけておくと別の機会に流用しやすいとか、
そういう理由によるものなのでしょうか?

ひとつのモジュールに全部書くのがダメな理由って他にありますか?
行数制限とか。。

どうでしょうか?
0442名無しさん@そうだ選挙にいこう
垢版 |
2019/06/16(日) 08:50:22.00
>>441
見やすいから
といっても10行で全部終わるような物を5行ずつに分けても仕方ない、この辺りは慣れ
個人的にvbaの場合、コメントさえキッチリ書いておけば1000行ぐらいでも全然平気
0445名無しさん@そうだ選挙にいこう
垢版 |
2019/06/16(日) 10:53:54.83
>>441
VBAを使う目的の一つが単純作業を機械的に自動的にやらせるため
単純作業とは同じことを何度も繰り返すことだから、処理が共通な部分はモジュールにまとめた方が、プログラムを作る手間が省ける
0451名無しさん@そうだ選挙にいこう
垢版 |
2019/06/16(日) 17:04:35.20
>>439
ありがとうございます。

惜しかったなー
=INDIRECT("A"&A1)まではたどり着いてたんですが、=INDIRECT(Sheet2!"A"&A1)とかやってた
ほんとしょっぱいな俺
0456名無しさん@そうだ選挙にいこう
垢版 |
2019/06/17(月) 06:27:13.74
プロシージャを分けるのは単体で動きのテストがしやすいからかな
モジュールを分けるのは、機能の整理ができるし、「モジュール名.プロシージャ名」で呼び出せるようになるから
パッケージ代わりというか、クラス代わりというか、そんな感じで書きやすくなるのが便利

例えば「Battle」モジュールに「Attack」「UseItem」の2つのプロシージャを作ってあるとしたら、
「Battle.」まで打つとその2つだけが入力候補に表示される
0462名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 12:53:38.26
Excel関数で中級者レベルの関数って何でしょうか?

どれだけ入れ子できるかとあると思いますが、sumproduct、offset、indirectとかでしょうか?他にありますか??
0464名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 13:14:54.52
入れ子の数自慢する奴はクソだから相手すんな分けろ
0468名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 19:10:35.93
>>466
そもそもExcelはバージョンアップするごとに関数が追加されてってる
例えばExcel2019で追加された関数は、同じWindows版でもExcel2016だと使えない
0469462
垢版 |
2019/06/18(火) 19:33:24.65
ご意見ありがとうございました。

その中であった、作業列は実務では必須であると思います。

Excel初心者を抜け出せずにいますが頑張ります!
0470名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 20:20:43.44
一括でこんな風に分解させるような方法はありますか
りんご,2
みかん,3

りんご,1
りんご,1
りんご,1
みかん,1
みかん,1
0471名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 20:21:28.36
3行目りんごではなくみかんです
0472名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 20:51:25.31
>>470
vbaなら楽勝やね

Sub foo()
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
現在行 = 1
For i = 1 To 最終行
For k = 1 To Cells(i, 2)
Cells(現在行, 3).Value = Cells(i, 1).Value
現在行 = 現在行 + 1
Next
Next
End Sub
0473名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 20:52:18.15
あぁ1がいるのか
こんな感じかね

Sub foo()
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
現在行 = 1
For i = 1 To 最終行
For k = 1 To Cells(i, 2)
Cells(現在行, 3).Value = Cells(i, 1).Value
Cells(現在行, 4).Value = 1
現在行 = 現在行 + 1
Next
Next
End Sub
0474名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 21:12:04.67
ありがとうございます。試してみます。
0475名無しさん@そうだ選挙にいこう
垢版 |
2019/06/18(火) 23:37:53.66
>>441

いろんなブックに使い回ししたいものをモジュールを分けて、サーバー上に
配置、ブックを開いた時のトリガーでブックにインポートするようにしてるわ。
マスターを直せば色んな場所に散らばってるブックまでを修正しなくていいしね。
0476名無しさん@そうだ選挙にいこう
垢版 |
2019/06/19(水) 10:22:54.04
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

様々な商品の仕入れ状況を1枚のシートに入れてます

A列に商品名、1行目に日時を入れて、残りの各対応セルに購入価格を入れ、各々のセルの色で仕入れ先が分かるようにしています。
しかしこのやり方だととても見にくい色のセルが出てきてしまいます
かといって色付けやめて仕入先を別の専用列にすると、シートをまとめてグラフで表示ができなくなってしまいます。

物、日時、価格、仕入先の4情報を分かりやすく表示する方法はないでしょうか?
0478名無しさん@そうだ選挙にいこう
垢版 |
2019/06/19(水) 11:11:07.77
>>476
色で仕入先を分類するのは止めたほうがいい
2,3色で済むなら良いけど、そのうち七色になって間違う

>色付けやめて仕入先を別の専用列にすると、シートをまとめてグラフで表示ができなくなってしまいます。
できる

どうしても無理ならアイコンセットとか使った方がマシかも
http://blog.jmiri.net/?p=52
0479名無しさん@そうだ選挙にいこう
垢版 |
2019/06/19(水) 13:24:31.12
>>478
レスありがとうこざいます
専用列無くてもグラフにできるとのことですがどうやったらできますか?
ぐぐってもラベルを奇数列だけとかはありましたがデータを一つとびにするのは見当たらないでした
vbaで価格列だけ抽出した作業シートを作ってグラフ表示となると元データシートとグラフを行き来することになり視認性が悪いです
0480名無しさん@そうだ選挙にいこう
垢版 |
2019/06/19(水) 13:51:37.25
>>479
元々がかなり変な事をしている
>A列に商品名、1行目に日時を入れて、残りの各対応セルに購入価格を入れ、各々のセルの色で仕入れ先が分かるようにしています。

日時、仕入先、物、価格、で元になる4列のテーブルを作る
そこから今作っているような表はピボットテーブルで作成し、グラフもピボットグラフで作る
そうすれば全てが一瞬で終わる
0481名無しさん@そうだ選挙にいこう
垢版 |
2019/06/19(水) 21:48:00.21
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010・2013
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

30年ぐらいの長期計画表を作ろうとしています。
左から

項目 周期 2019 2020 2021〜〜

周期の所に年を入れて、計画で予定する年度に*をつけて予実の確認。

毎年6月に実施可否を検討するとして、
計画なので延期、周期変更等が有りますので、
「今年度以降、もしくはそれより左(過去)の列から直近の*を検索し
そこから○年周期で右側に*をつけるように更新できるようにしたいです。

どのようなやり方が有りますでしょうか?
0482名無しさん@そうだ選挙にいこう
垢版 |
2019/06/19(水) 22:27:33.98
30年後も会社存続してるのかよwwwww

というのは置いといて・・。
Match関数で※探して、計算式が入ってるセルから何列離れているか調べればいいのでは?
0485名無しさん@そうだ選挙にいこう
垢版 |
2019/06/19(水) 23:01:54.99
予め↓こんなセルを用意しておいて、コピペでもいいのか。

_________
|※|  |  |  |  |※|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0490名無しさん@そうだ選挙にいこう
垢版 |
2019/06/21(金) 07:14:14.70
VBAだと
ActiveSheet.UsedRange.Select
でデータが入っている領域を選択できるじゃない。
それをキーボード操作でやりたいのだが、そんなショートカットキーはあるのかしら?
0492名無しさん@そうだ選挙にいこう
垢版 |
2019/06/21(金) 07:29:39.33
>>491
F5押しても選択出来なかったわよ。
もう少し詳しく教えなさいよ!
■ このスレッドは過去ログ倉庫に格納されています

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