X



Excel総合相談所 141
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@そうだ選挙にいこう
垢版 |
2020/10/06(火) 23:08:30.69
【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総合相談所 140
https://mevius.5ch.net/test/read.cgi/bsoft/1595286043/

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
0003名無しさん@そうだ選挙にいこう
垢版 |
2020/10/07(水) 18:49:27.50
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否

A1,E1,I1,M1・・・と横列に4列おきのセルの文字が指定文字と同一だった場合そのセルの3列横D1,H1,L1,P1・・・の和を出したいです。

横4列使ったグループが横に並んでいてグループの最初の列が一致している文字の場合だけグループ最終列の和を求めたい。縦は日付けで伸ばして行きます。

IFでグループ分足せば出来ますが長すぎるので簡単に引き出せないかと思いまして
0005名無しさん@そうだ選挙にいこう
垢版 |
2020/10/07(水) 19:09:48.97
指定文字の列がグループ終了横に存在し指定文字ごとに和を並べます

例えば2列目のA〜AAの中にAB1,AC1と同じ文字があればその同じ文字の列の3行隣りの数値の和をAB2,AC2に表したいです
0006名無しさん@そうだ選挙にいこう
垢版 |
2020/10/07(水) 19:29:22.75
補足します

2列を1日とした場合にA2から横に4列づつのグループが続いており、グループ終了後に指定文字が1列目に並んでいます。
各指定文字の2列目に和を表示させたいのです。

全グループを横に範囲指定して各グループ最初列を検索対象にして指定文字と一致した場合に一致しているセルの3列横の数値の和を指定文字の1日の列(2列目)にあらわすと言う感じです
0010名無しさん@そうだ選挙にいこう
垢版 |
2020/10/07(水) 20:25:16.17
>>9
因みに毎日入力するのは各グループの名前だけで空白もありえます。
率と定数は基本一定なのですが変わる可能性もあります。

グループはNo.40くらい有ります。
0011名無しさん@そうだ選挙にいこう
垢版 |
2020/10/07(水) 20:36:01.69
簡単にとかいうのは自分でやれって感じだよな
文字数制限で長い関数を断られるレベルならともかく、入るんならそれでいいんだから
困ってもいないのに他人を無料で使って成果だけ得ようとかずうずうしいにもほどがある
0013名無しさん@そうだ選挙にいこう
垢版 |
2020/10/07(水) 21:08:29.03
>>3,9
同じ質問者?
4列でひとつのグループというところ、グループの1列目で一致したら3列横の数値を合計という共通点あり。
>>9の図だとB列からグループが始まってるという違いはありますが。
マクロだめというなら、作業シートを使うのがわかりやすいと思う。
グループが増え(列方向に処理対象が拡大)てもわかりやすいのを考え中です。
0014牧野 ◆Vbs7gX72NY
垢版 |
2020/10/07(水) 21:16:49.98
>>3
sumifかsumifsで条件範囲と合計範囲ずらせば簡単に出来る
https://i.imgur.com/9qeDhjZ.png

>>11
ifを何個も並べるのはアホらしいし保守性も下がる
ここで遠慮なく聞くべき
たまにいる「sumifsはなんか嫌です」ってのはちょっとなぁと思うけど
0017牧野 ◆Vbs7gX72NY
垢版 |
2020/10/07(水) 21:27:08.51
>>15
本人にとって認知負荷が低い表なのだろう
慣れ親しんだデータ形式がこの形

他人のデータが欲しい場合、提出が遅くなるぐらいならさっさとそのままのデータ出してくれた方がよほどありがたい
0022名無しさん@そうだ選挙にいこう
垢版 |
2020/10/08(木) 06:22:22.82
>>21
行は日付なんで毎日のグループの中で同一ネーム事の和を出して表示させます。
グループが多くて名前が毎日入力されて行くので和を集計したいと

>>19で出来ましたので皆さまありがとうございます
0023名無しさん@そうだ選挙にいこう
垢版 |
2020/10/08(木) 15:29:41.68
ご教授宜しくお願い致します。

シリアル値が入力されている日付で
表示形式は m/d(aaaa) なのですが
翌月のd が重複したときにIf文か条件書式にて非表示にしたいです。
4/15〜4/14 のような形
現在の自身の環境だと、どうしても月によって15日が表示されてしまいます。

回答お待ちしております。
0024名無しさん@そうだ選挙にいこう
垢版 |
2020/10/08(木) 17:21:35.07
よろしくお願いいたします。

あるセルの値のなかに ? という文字(チェックボックスにチェックが入っている文字)が
使われているかどうかをVBAで判定したいのですが、
どのように書けばよいのでしょうか?
 ?そのものを条件式に書いても、VBAエディタの段階ですでに文字化けしてます。
0027名無しさん@そうだ選挙にいこう
垢版 |
2020/10/08(木) 19:26:39.01
>>23
ちょっと何いってるのかぜんぜんわかんない

こうしたいのに、こうなるってのを示してほしい
あとm/d〜m/dはひとつのセルで表示させるの?
0029>>23
垢版 |
2020/10/09(金) 11:51:29.64
>>28
ありがとうございます。
0034名無しさん@そうだ選挙にいこう
垢版 |
2020/10/09(金) 13:33:56.41
NOT(B1)の戻り値は、B1が0かFALSEならTRUE , 0以外の数値ならFALSE , 文字列なら #VALUE , 他は省略
TRUE , FALSE を数値に変換すると、 1 , 0
これがCOUNTIFの条件になるだけだから、おそらく動作はしてるぞ
例えば、B1に A A2に=INT("A") とでもすれば、A2はカウントされる

希望する動作にならないだけ
0035名無しさん@そうだ選挙にいこう
垢版 |
2020/10/09(金) 14:44:30.42
Workbooks.Open ThisWorkbook.Path & "\hogehoge.xlsm"
で同ディレクトリのブックを開くときに、同時に
ActiveSheet.Unprotect Password する方法教えてください。
0036>>35
垢版 |
2020/10/09(金) 14:55:37.25
Workbooks.Open ThisWorkbook.Path & "\hogehoge.xlsm",Password:="hogehoge"

自己解決しました
0037名無しさん@そうだ選挙にいこう
垢版 |
2020/10/09(金) 19:52:24.19
【1 OSの種類         .】 Windows8.1
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

EXCELファイルをデスクトップにコピーしたと思ったら、マンインザミラーだったら目が点になるわ!
0038名無しさん@そうだ選挙にいこう
垢版 |
2020/10/09(金) 21:56:31.83
___________
\1 OSの種類          \      
  \2 Excelのバージョン.  \__/ ̄ ̄\_
  /3 VBAが使えるか    ./   \_| ̄\|
/4 VBAでの回答の可否 /
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

新しいテンプレのデザインを考えてみたんだが、
6行も使ってしまい実用的ではないし、
内容を書くスペースもない
0039名無しさん@そうだ選挙にいこう
垢版 |
2020/10/09(金) 22:55:56.10
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2010
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可

マクロ初心者です。
このような形で氏名のは入っている行に新規登録を追加していきたいと考えております。
ここまでは表示することができましたが、.Range("4:4")の次の値をSetする際にどうしてもうまくできません。
ご教授をお願いします。
Sub 検索()
With Worksheets("30年(当月)")
Dim noRng As Range
Dim nameRng As Range
Dim namelRng As Range
Set noRng = .Range("4:4").Find(what:=.Range("番号").Value, lookat:=xlWhole)
Set nameRng = .Range("4:4").Find(what:=.Range("氏名").Value, lookat:=xlWhole)
Set namelRng = Range("i15").End(xlDown)
Cells(namelRng.Row + 1, nameRng.Column) = "新規氏名"
Cells(namelRng.Row + 1, noRng.Column) = "新規番号"
End With
End Sub
0040名無しさん@そうだ選挙にいこう
垢版 |
2020/10/09(金) 22:56:45.10
ここまでは思うように動かすことができました。

Sub 検索()
With Worksheets("30年(当月)")
Dim noRng As Range
Dim nameRng As Range
Dim namelRng As Range
Set nameRng = .Range("4:4").Find(what:=.Range("氏名").Value, lookat:=xlWhole)
Set namelRng = Range("i15").End(xlDown)
Cells(namelRng.Row + 1, nameRng.Column) = "新規氏名"
End With
End Sub
0041牧野 ◆Vbs7gX72NY
垢版 |
2020/10/09(金) 23:08:26.85
>>39
=.Range("番号")
は恐らく
:=.Range(番号)

その下の
"氏名"

氏名
のような気がする
これで動かないならコード全体を見ないと難しい
0043名無しさん@そうだ選挙にいこう
垢版 |
2020/10/09(金) 23:42:48.66
>>42
後半の方のCellsとかRangeに.が付いてないのは原因としてあるかもしれない
それと、エラーの内容を書いてくれ
恐らくSetしたnoRngがNothingだからかと思うが
0045名無しさん@そうだ選挙にいこう
垢版 |
2020/10/09(金) 23:59:57.79
>>43
実行時エラー’1004’
アプリケーション定義またはオブジェクト定義のエラーです。

この行に問題があるようで、ここから先に進めません。
Set noRng = .Range("4:4").Find(what:=.Range("番号").Value, lookat:=xlWhole)
0048名無しさん@そうだ選挙にいこう
垢版 |
2020/10/10(土) 03:36:11.21
エラーで中断したときにイミディエイトウインドウで
? .range("番号").valueを実行して検索する番号が表示されるか試してみて
0050名無しさん@そうだ選挙にいこう
垢版 |
2020/10/10(土) 05:56:42.38
とりあえず>>47のスクショで何がやりたいのかなんとなくわかってきたわ
色々と突っ込みたい所はあるけど、とりあえず元のコードをできるだけ直さない形で動くようにした
ただし、本来は名簿のデータがある程度入ってないと動かないコードなんで、一箇所だ行番号を修正した

Sub 検索()
  Dim noRng As Range
  Dim nameRng As Range
  Dim namelRng As Range
  With Worksheets("30年(当月)")
    Set noRng = .Range("4:4").Find(what:="番号", lookat:=xlWhole)
    Set nameRng = .Range("4:4").Find(what:="氏名", lookat:=xlWhole)
    Set namelRng = .Range("i9999").End(xlUp)  '★この行は動かすためにアレンジ
    Cells(namelRng.Row + 1, noRng.Column) = "新規番号"
    Cells(namelRng.Row + 1, nameRng.Column) = "新規氏名"
  End With
End Sub
0051名無しさん@そうだ選挙にいこう
垢版 |
2020/10/10(土) 06:04:41.33
で、名前の列を検索したのにその結果を使わないのはおかしいので、新規を追加する行を検索する部分も修正

Sub 検索()
  Dim noRng As Range
  Dim nameRng As Range
  Dim namelRng As Range
  With Worksheets("30年(当月)")
    Set noRng = .Range("4:4").Find(what:="番号", lookat:=xlWhole)
    Set nameRng = .Range("4:4").Find(what:="氏名", lookat:=xlWhole)
    Set namelRng = .Cells(9999, nameRng.Column).End(xlUp)
    Cells(namelRng.Row + 1, noRng.Column) = "新規番号"
    Cells(namelRng.Row + 1, nameRng.Column) = "新規氏名"
  End With
End Sub
0052名無しさん@そうだ選挙にいこう
垢版 |
2020/10/10(土) 06:07:37.63
ごめん、Withの存在を忘れてたんで訂正

Sub 検索()
  Dim noRng As Range
  Dim nameRng As Range
  Dim namelRng As Range
  With Worksheets("30年(当月)")
    Set noRng = .Range("4:4").Find(what:="番号", lookat:=xlWhole)
    Set nameRng = .Range("4:4").Find(what:="氏名", lookat:=xlWhole)
    Set namelRng = .Cells(9999, nameRng.Column).End(xlUp)
    .Cells(namelRng.Row + 1, noRng.Column) = "新規番号"
    .Cells(namelRng.Row + 1, nameRng.Column) = "新規氏名"
  End With
End Sub
0053名無しさん@そうだ選挙にいこう
垢版 |
2020/10/10(土) 22:31:35.70
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel for Microsoft 365 MSO(16.0.13231.20348)64bit
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可

仕事で2台のデスクトップPCを使用しています、1台を新しく買い替えたためofficeをダウンロードしてインストールしました。
新PCのエクセルで結合セルを含むソート(並べ変え)ができなくなって困っています

A1〜G30の範囲で各行のE列とF列が結合されています
この状態でソートをかけると「この操作を行うには、すべての結合セルを同じサイズにする必要があります。」とエラーになります

古いPCのエクセル( Excel for Microsoft 365 MSO(16.0.12527.21096)64bit)では問題なくソート(並べ変え)はできます。

これはパソコンが原因なのか、エクセルが原因なのか、分かる方がいらっしゃれば教えてください
また、office365で前のバージョンをインストールする方法があれば、教えていただきたいです

よろしくお願いします。
0056名無しさん@そうだ選挙にいこう
垢版 |
2020/10/10(土) 22:51:39.24
>>53
エクセルのダウングレードを考えるより、vbaの回答が可なら結合解除して並び替え後に再結合するマクロを作ったらいいんじゃね
0057名無しさん@そうだ選挙にいこう
垢版 |
2020/10/10(土) 22:56:16.26
特定のセルをクリップボードにコピーするマクロってどう書く?
0059名無しさん@そうだ選挙にいこう
垢版 |
2020/10/10(土) 23:02:48.96
>>57
Sub Sample1() 'セルA1の内容をクリップボードに入れる
  With CreateObject("Forms.TextBox.1")
    .Text = Cells(1, 1)
    .SelStart = 0
    .SelLength = .TextLength
    .Copy
  End With
End Sub
0060牧野 ◆Vbs7gX72NY
垢版 |
2020/10/11(日) 00:11:45.03
>>53
エクセルが原因です
並べ替えをするならセル結合はやめたほうが良い

セル結合は、送付状みたいに完全に文書としてエクセルを使う時だけにしたほうが良い

>>54
馬鹿じゃなくて初心者。誰だって初心者の頃はあるんだから、そう見下さない方が良いよ
0064名無しさん@そうだ選挙にいこう
垢版 |
2020/10/11(日) 22:47:53.66
【1 OSの種類         .】 Windows10
【2 Excelのバージョン   】 Excel2016
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 可
A1:B5に数字が入ってたり入っていない表があり、
「最低値がA列にあるかB列にあるか」を判定する式として、

=IF(MIN(A1:B5)=MIN(A1:A5),"A列に最小があるよ","B列に最小があるよ")

という式を作りました。
(最小値がA列とB列両方にある時は"A列に最小があるよ"でとりあえず構いません)

しかし、
「A列に数字が一つも入っていない」かつ「B列の最小値が0である」時、
「Aにはデータが入っていないが、数値的には0である」という判定になっているのか、
「A列に最小があるよ」という間違った(?)判定がでてしまいます。


この「A列にデータが入っていないときに数値的に0である」ことを避けることは可能でしょうか。
007064
垢版 |
2020/10/11(日) 23:31:06.04
回答ありがとうございます。
>>66さんで「countで数えたら分岐できるのかー」と思い
=IF(COUNT(A1:A5)=0,"(A列にはデータ入ってなくて)B列に最小があるよ",IF(MIN(A1:B5)=MIN(A1:A5),"A列に最小があるよ","B列に最小があるよ"))
と、なんとかできたぞウヘヘと思っていたのですが、

>>68さんにキレイにまとめて頂いて感謝しております。
ありがとうございました。

こういう関数をキレイにまとめるセンスっていうのは
積み重ねなんでしょうか
努力します。
0071名無しさん@そうだ選挙にいこう
垢版 |
2020/10/12(月) 16:56:20.58
前任者が作ったファイルが、どういう仕組みなのかわからないことがあります。
教えてください。

あるセル(2つのセルをくっつけたもの)なんですが、見た目には「一戸建て 賃貸 寮 実家 未定」とあり、
それぞれにチェックボックスみたいなものがあります。
ユーザーは、チェックボックスにチェックを入れるか外すという操作しかできません(文字列を編集することも
チェックボックス自体を選択することも不可能)
そして、そのセルを選択した状態でも、上にある数式バーには何も表示されていないんです。
シートに保護はかかっていません。
そのセルの書式設定を見ても、表示形式=標準、保護=ロックのみチェック、表示しないはチェックなし
という状態です。

これ、どうやって作成したのでしょうか?考えられる方法ありますでしょうか?
選択項目を追加したり、あるいは、VBAで何が選択されているのか取得したりすることはどうやれば可能なんでしょうか?
0076名無しさん@そうだ選挙にいこう
垢版 |
2020/10/13(火) 13:00:50.34
>>75
>>選択項目を追加したり、あるいは、VBAで何が選択されているのか取得したりすることはどうやれば可能なんでしょうか?

はっきりと書いてあるみたいだけど
それがわからない文盲なら
回答側に回ろうとしないほうがええで
008157
垢版 |
2020/10/13(火) 22:48:09.31
>>59
ありがとうございました。

追加で質問させていただきますが、
クリップボードにコピーしたものをテキスト形式で貼り付けるVBAってどう書くのですか?
例えば、エクセルをセルごとコピーして、他のセルに貼り付けるとき、フォントや罫線まで
コピーせずに貼り付けるVBAです
0083牧野 ◆Vbs7gX72NY
垢版 |
2020/10/14(水) 06:17:41.59
>>81
Sub Macro1()

'A1をB1に値貼り付け
Cells(1, 1).Copy
Cells(1, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'webサイトをコピーして「貼り付け先の書式に合わせる」で貼り付ける場合
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True

End Sub

>>82の通りマクロの記録でこのアタりは記録できる
0085牧野 ◆Vbs7gX72NY
垢版 |
2020/10/14(水) 08:01:21.89
>>84
こうかねー
まぁマクロの記録した後、テキトーに編集するだけでいいよ

Sub Macro1()

'A1をB1に値貼り付け
Cells(1, 1).Copy
Cells(1, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

Sub Macro2()
'webサイトをコピーした後、以下を実行すると「貼り付け先の書式に合わせる」で貼り付けることができる
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True

End Sub
0091牧野 ◆Vbs7gX72NY
垢版 |
2020/10/14(水) 21:54:43.42
>>86
俺の方には出ない
何の警告か知らんけど全文書き込むかスクリーンショットでも貼ってくれ
0092名無しさん@そうだ選挙にいこう
垢版 |
2020/10/15(木) 07:55:11.44
もう相手しなくていいんじゃないか
0095名無しさん@そうだ選挙にいこう
垢版 |
2020/10/15(木) 09:18:47.80
だからこんな態度悪い奴相手すんなよ
0096名無しさん@そうだ選挙にいこう
垢版 |
2020/10/15(木) 10:21:31.06
office365を使っています
Excelからsharepointのリストを編集したいです
具体的にはリストの全アイテムを削除したのち、Excelのテーブル全レコードを登録したいのです
どのようなやり方がありますか?
■ このスレッドは過去ログ倉庫に格納されています

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