Excel総合相談所 156
【1 OSの種類 .】 Windows** 【2 Excelのバージョン 】 Excel** 【3 VBAが使えるか .】 はい・いいえ 【4 VBAでの回答の可否】 可・否 注意事項 ・情報を隠すために別の問題を設定するのはやめましょう。たいていの場合その問題は的外れな設定で、期待していたものからずれた回答が返ってきます。 スレッド作成は>>980 がやります ※前スレ Excel総合相談所 155 http://mevius.2ch.net/test/read.cgi/bsoft/1692436189/ 間違っても人に渡すエクセルでスピルなんて使っちゃダメ Aの数を集計する列 Bの数を集計する列 Aの集計に単価を掛ける列 Bの集計に単価を掛ける列 合計 くらいやっとかないと絶対あとからメンテさせられる 今やExcelの天才中学生もいるくらいだからな。勉強するなら早ければ早いほどいろいろ吸収できる >>202 スピルを使えばメンテはしづらくなるかもしれないが、元々先生が作ったワークセルに数式ふんだんに入力したEXCELなんて決まったセルに入力させる前提で展開してるからスピルを使ったところで作った本人しかメンテできないことには変わりない 逆に早くスピル使った数式入力が普通になって欲しいけどな 行列挿入で数式壊したりしないし計算速度もスピーディだしな テーブルや配列数式ですら作った本人しかメンテできなくなる SUMすら使えずセル一つずつ足し算するおっさんが駆逐されない限り夢のまた夢 事務なんて高卒かFラン文系の仕事だろ 英単語もロクに知らないのに関数を理解できるわけがない チャットgptに頼めば旧関数をスピルに変換やその逆も教えてくれるんじゃね >>207 =B2+B3+B4+B5+B6+B7+B8+B9+B10みたいな式でしょ? 実際にウチの職場で見た信じられない式。頼むからSUM関数位は覚えてくれと言いたくなったw 請求書なんかのレイアウトで横に並んでる商品名や金額の行の高さが、 商品名の長さによって2段以上になってしまつのはよくない? 商品名省略してでも1行な気がしています >>153 です とりあえずCOUNTIFとMIDを使ってやりたいことはできました 他の方法に関しても教えていただいた方々本当にありがとうございます >>212 書類で重要なのは体裁じゃなくて内容 勝手に省略するのはトラブルの元 その表の設計したヤツにクレーム入れたほうが良いぜ。 スピルに慣れると、以下の感じにしたくなる。 賛同する方ってここにおるんかな?と思って、今更感バリバリやが、あげてみた。 スピルに対する考えは、人それぞれで良いと思うが、自分はレガシーには戻れん感じや。 =LET(日給情報,B1:C1,勤務データ,B4:H6, 日給情報整理,TEXTSPLIT(TEXTJOIN("⭐︎",TRUE,日給情報),":","⭐︎",,,""), 日給情報_ランク,INDEX(日給情報整理,,1), 日給情報_日給,INDEX(日給情報整理,,2), 日給,XLOOKUP(勤務データ,日給情報_ランク,日給情報_日給,0)+0, 給与,BYROW(日給,LAMBDA(a,SUM(a))), 給与) ワークシートの構成を治さずに関数書けちゃうのが寧ろ365のデメリットだな ワークシートを治せば明快な式になるのにねー 216も160も煩雑すぎ >>214 とはいえ入らないからなあ 請求書なんかの羅列されてるので等間隔(商品名により欄の太さが変わる)じゃないのは最悪だ、とネットに書いてあったのできになってます。コンビニレシートも省略だし、まあ相手も省略でもわかるだろうし問い合わせられたらすぐ答えられるから省略でいってみます ちなみに、両面印刷はどう思いますか? スマホの明細なんかは両面ですが 一般的には片面でしょうか? ページと請求書番号書いてホチキスはつかわず郵送してます >>220 勝手なことしてないで上司に確認しろ 無駄な仕事を増やそうとするな(聞かれたら答える、の部分) ネットの感想なんか参考にするな、そもそも掲示板なんかで聞くな >>221 上司いないからここできいてるんだよ 全部何もかも一人でやってる超零細の社長やってる どんなご商売なさっていらっしゃるか存じ上げませんが、別途納品書はあるのでしょうか? 納品書兼請求書でまとめていらっしゃるのでしょうか? 納品書があるなら納品書番号併記で省略は可能かと思われます。 納品書兼請求書で送られる場合はなるべく全文のがいいように思います。問い合わせなどの二度手間を省く意味でも。 コンビニレシートやスマホ明細と比較なさっていらっしゃいますが、それらは商売向けとは別物と捉えられた ほうがいいように思われます。個人向けサービスの一環としての請求・領収に過ぎませんので。 とは言え、古い世代のムダな慣習から脱皮して、より効率的よりスマートより便利な手順として確立できるなら 新世代の方々には受け入れられ広まるかも知れませんので、自分なりに考察した方法で提出していくのも ひとつの手立てかも知れません。ネットの情報は、ネットに載った時点ですでに古いものなのですから。 どうやら決定権者のご様子ですので、旧世代との違いを見せ付けて新世代・Zの時代を構築していく先駆者と 成るべく日々邁進されることを陰ながら応援させていただきます。 かしこ 項目が長くて入らないなら、最初から全体の枠を大きくしとくかフォントを小さくすればいいだけだし、後半を切りたきゃ切ればいい てか、社長ならこれぐらいのこと自分で決めろよ 注文によって内容の差が大きく、数行にわたる説明が必要になるなら、無理に省略すると内容がわからなくなって相手方の経理担当者が発注者や212に問い合わせる手間が生まれるし 逆に会社名だけで内容は自明(単発ではなく毎月の取引が中心だったり、◯◯鮮魚みたいなわかりやすい社名)で、何十項目も並ぶような請求書でちょっとはみだすこともあるという程度なら、多少省略したり「縮小して全体を表示する」で文字を小さくしたほうが人間にもOCRにも読みやすいだろうし 会社によるんじゃない? 両面印刷は、相手方の領収書整理のスタイルによっては微妙にスキャンが面倒になるので、あんまりよくない スマホ請求とかは1ページ目の表に合計額があるからそれ以降の明細はオマケだし、しっかり電子帳簿保存してる会社なら最初から紙じゃなくてデータで受け取るからこっちがメイン 【1 OSの種類 .】 Windows 11 【2 Excelのバージョン 】 Excel 365 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 可 行数 A B C 1 日付 担当者 担当地域 2 2024/04/19 山田 東京都 3 4 取引先 取引先担当 住所 5 ○○会社 田中 東京都~ こんな感じで項目行・項目内容・空行の繰り返しの表ですらないブックが取引先の数だけあるんだけど A列=項目名 B列=項目内容 に変換するのに一番効率いいやり方ってなんだろう 地道に別シートでイコールで引っ張っていくのが早いのかな >>226 =WRAPROWS(TOCOL(A1:C5,1,1),2) >>226 いまだにこういった表形式にしてる職場って多いよな web版だと書式で日付にしているところにはカレンダーがでるんですが、365だとでない 昔はカレンダーでてたのになんでweb版だけ残ってるんでしょうか? 便利だから使いたいんですよね >>227 すげぇこんな関数あったんだ 知れてよかった 項目が順番に並んでなかったのでやり直し =LET(a,A1:C5,b,2,r,LAMBDA(x,y,IF(COLUMNS(y)=b,y,VSTACK(TAKE(y,,b),x(x,DROP(y,,b))))),r(r,WRAPCOLS(TOCOL(a,1),COLUMNS(a)))) >>231 ありがとう 家のEXCELはバージョン違うから試せないので月曜日試してみる >>226 取引先の数だけブックがあるんでしょ? 肝心の「1ブックづつ式をコピペする作業」を改善しなきゃ >>234 A1:C5の部分をVSTACK(A1:C5,別ブック@!$A$1:$C$5,別ブックA!$A$1:$C$5…)みたいな感じでVSTACKで繋げていけばよいかと VB組んだ方がラクかもしれないけど専門じゃないから他に良いやり方あったら提案してあげてみては? >>235 どこが間違っているか教えて?見直すから >>232 WEB版EXCELだったら最新の関数使えるから数式試すだけだったらWEB版で見てみるのも良いかも ExcelのVBAマクロを使用して、ご希望の操作を行うことができます。以下のマクロは、複数のブックに対してSheet2を挿入し、Sheet1の指定された範囲の値を転置してSheet2に転記する処理を行います。 Sub 転記マクロ() Dim ws As Worksheet Dim wb As Workbook Dim arrBooks As Variant Dim i As Integer ' ここに処理したいブックのパスを列挙してください arrBooks = Array("C:\Book1.xlsx", "C:\Book2.xlsx", "C:\Book3.xlsx") For i = LBound(arrBooks) To UBound(arrBooks) Set wb = Workbooks.Open(arrBooks(i)) Set ws = wb.Sheets.Add(After:=wb.Sheets(1)) ws.Name = "Sheet2" ' Sheet1のA1:C1の値を転置してSheet2のA1:A3に転記 ws.Range("A1:A3").Value = Application.Transpose(wb.Sheets("Sheet1").Range("A1:C1").Value) ' Sheet1のA2:C2の値を転置してSheet2のB1:B3に転記 ws.Range("B1:B3").Value = Application.Transpose(wb.Sheets("Sheet1").Range("A2:C2").Value) ' Sheet1のA4:C4の値を転置してSheet2のA4:A6に転記 ws.Range("A4:A6").Value = Application.Transpose(wb.Sheets("Sheet1").Range("A4:C4").Value) ' Sheet1のA5:C5の値を転置してSheet2のB4:B6に転記 ws.Range("B4:B6").Value = Application.Transpose(wb.Sheets("Sheet1").Range("A5:C5").Value) wb.Close SaveChanges:=True Next i End Sub このマクロをExcelのVBAエディタに貼り付け、必要なブックのパスを配列に設定して実行してください。各ブックが開かれ、指定された操作が行われた後、自動的に保存されます。マクロを実行する前に、マクロが有効になっていることを確認し、実行する前には必ずバックアップを取ることをお勧めします。また、実際のファイルパスに応じて、arrBooks 配列内のパスを適宜変更してください。 あ、そういう事か。綺麗なコード書くなぁと思ったし。 【1 OSの種類 .】 Windows 11 【2 Excelのバージョン 】 Excel 365 【3 VBAが使えるか .】 はい 【4 VBAでの回答の可否】 関数で可能なら VSTACKやEXPANDなどの新しい関数を自分なりに調べながら試してます。 A1セル:"前月" D1セル:"当月" F 3 前月 4 当月 5 前月 6 当月 7 前月 ・ ・ ・ と任意の回数、交互に繰り返して配列として入力したいとき、F3セルに入れる数式でこれを実現できるでしょうか? 非効率なことをやろうとしてることは承知の上で、関数でどこまでのことができるのか知識として学ぼうとしています。 お知恵をお借りできればと思います。よろしくお願いします。 >>243 ご参考程度に =CHOOSE(MOD(SEQUENCE(任意回数),2)+1,D1,A1) or =MAKEARRAY(任意回数,,LAMBDA(a,b,IF(MOD(a,2),A1,D1))) → 前月、当月をそれぞれ任意回数分繰り返し =LET(a,任意回数,b,VSTACK(A1,D1),r,LAMBDA(x,y,IF(y<=1,b,VSTACK(b,x(x,y-1)))),r(r,a)) → 前月、当月を2つ1セットで任意回数分繰り返し =TOCOL(HSTACK(EXPAND(A1,10,,A1),EXPAND(D1,10,,D1))) 下記条件を満たす式書ける人いる? 関数5つ以上使用不可 繰り返し回数以外の数値や四則演算は使用不可 使用可能な参照はA1、D1を各1回のみ >>247 =IF({TRUE;FALSE;TRUE;FALSE;...任意回数繰り返し...},A1,D1) MS635 最近、起動時に「遅いブックですか?.....」[パフォーマンスの確認]ボタンが出るのですが [すべてを最適化]ボタンを実行してもよいのでしょうか? >>247 =IF(ISODD(SEQUENCE(任意回数)),A1,D1) >>247 =TOCOL(IF(SEQUENCE(任意回数),HSTACK(A1,D1))) >244-245 ありがとうございます。いずれの数式も希望通りの結果が得られました。 シンプルなものから中身を確認していき、今後に活用していきます。 あえて複雑なように、連続してない独立した複数セルの繰り返しのパターンで質問させてもらいましたが、 単純な1列の同じ配列を任意の回数繰り返すパターンも、数式で表そうとすると難しくなるでしょうか・・・? いただいた回答をもとに、B1:B4の範囲に繰り返したい文字列があったとして、 下記の数式で期待どおりの結果は得られたんですが、もしもっとスマートな式があればアドバイスをお願いします。 =CHOOSE(MOD(SEQUENCE(繰返回数)+3,4)+1,B1,B2,B3,B4) MSのCopilotにDax関数の質問をしたら、間違いを数回やってそのたびに謝られた。 3回目かでバッチリ成功したよと伝えたら、喜んでた。 なんかどこかのスレより人間ぽいなと。 別な質問でやっぱり誤答してきて、別に調べたら、どうやらPower BI版でしかできなさそう。 そのことを指摘すると、以後は壊れたレコードのように同じ内容の繰り返し。 これまたどこぞの国会答弁みたいで妙に感心してしまった。 >>252 正解 可読性と汎用性を両立するこの式の考え方が重要 >>251 は繰り返し回数に2を掛ける必要があるのと汎用性が低いので△ >>247 は可読性と実用性×、式の長さ的にも繰り返し回数1000くらいでエラー出るので× >>253 >>252 のHSTACK(範囲)をTRANSPOSE(範囲)に変えるだけ >>256 個人的には範囲の部分はTOROWが好きかな 2列になっても対応できる このスレは質問を装ってレベルの低い奴が試験を出すのか なるほどー =TOCOL(IF(SEQUENCE(任意回数),TOROW((A1,D1),TRUE))) >256-257 ありがとうございます! シンプルな数式がわかってスッキリです。 確かにTOROWの方がより汎用性は高そうですね。検索方向も引数で指定できるので柔軟な対応もできそうです。 見積書の品名項 、例えばAの1から50までの各セル(左右2セル結合)内の文字列を 新たなシート見積書のBの1から50に一括コピペするにはどうすればいいですか? わからなくて1セルづつコピペして疲れましたw 教えてください >>261 マウスでドラッグして緑色の枠で選択してコピペ …という部分が問題なら、あまりにも基本中の基本すぎて解説が見つからない その段階なら、文章での説明を読むよりも、近くの誰かに教えてもらった方が速いかもしれない 数が多くて画面に収まらないときは、端と端をshiftで選択するか、ctrl+shift+↓でまとめて選択 https://www.yrl.com/column/wazaari_pc/excel_select_cells.html セル結合が一緒にコピペされるのが邪魔なときは、形式を選択して貼り付け https://www.pc-koubou.jp/magazine/42412 最近ようやくctrl+shift+Vで値だけ貼り付けられるようになった https://forest.watch.impress.co.jp/docs/news/1527708.html 【1 OSの種類 .】Windows10 【2 Excelのバージョン 】 Excel365 【3 VBAが使えるか .】YES 【4 VBAでの回答の可否】YES 他ブックのシートのA1~H20のセルを転記するマクロが欲しいのですが、 その転記元ブックの場所は常に同じ場所にあるわけじゃないから、マクロを実行した時にコモンダイヤログっていうの? 名前をつけて保存するときに出てくるような小さな窓を出現させてファイルを指定したい 転記が終われば転記元ファイルは閉じて開かれてるExcelブックは転記マクロが入ったものだけ 動作的には転記元ファイル指定したら勝手に転記されてるように見えるのが理想です アドバイスお願いします ありがとうございます 普通にそれが出来なくて??でした。 人の作った見積もりだったのでうまくいかなかったのかもしれません(恥) もう一度やってみます >>261 新シートのB1=(SHEET1,A1:A50) Sub CopyDataFromExcelFile() Dim filePath As String Dim wb As Workbook Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim sourceRange As Range Dim targetRange As Range ' ファイルを選択 filePath = Application.GetOpenFilename("Excel Files (*.xls; *.xlsx), *.xls; *.xlsx") If filePath = "False" Then MsgBox "ファイルが選択されていません。" Exit Sub End If ' ワークブックを開く Set wb = Workbooks.Open(filePath) ' ソースシートとターゲットシートを指定 Set wsSource = wb.Sheets("Sheet1") Set wsTarget = ThisWorkbook.Sheets("Sheet1") ' コピー元の範囲を指定 Set sourceRange = wsSource.Range("A1:H20") ' コピー先の範囲を指定 Set targetRange = wsTarget.Range("A1:H20") ' データをコピー sourceRange.Copy Destination:=targetRange ' ワークブックを閉じる wb.Close SaveChanges:=False End Sub しつもんか回答以外スッ込んでろ >>264 xSHEET=(ySHEET,A1:H1) >>267 >>270 ありがとう やりたいことできました 【1 OSの種類 .】 Windows11 【2 Excelのバージョン 】 Excel2021 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 可 Indexとmatch関数を組み合わせて入力値された値を元に値を見つけて返すようにしているのですが、特定の入力値のみ『#N/A』が出てしまいます 参照先のデータに空白はなく、文字はもじとして、数字は数字として書式設定されていました 校閲タブのエラーチェックも引っかかりなく、入力値がおかしいのかとコピペして直しましたがそれでもNA表示のままです また同じくindex matchで画像も表示するようにしているのですが、特定の入力値(上と同じ)のときは表示を更新してくれません。 そうなると入力値に使用できない文字が含まれているとかそういうことが原因なのでしょうか >>279 特定のセル値のみだったので色々調べてたら『~』(半角チルダ)が含まれているのが原因でした 初歩の初歩で申し訳ないです >>281 漢字変換の設定で漢字のエリアを選べるから 一番狭いやつにしておくのが良い うちの職場ではそうしてる >>281 チルダの役割、知らなかった。ありがとうございました マクロの記録で作ったマクロに追加したい操作あるんですが、たしかコードの画面が出たはずです。これを触らず解決してみましょう 変な質問なんですが、いらすとや以前の2000年代に町内会や学校や病院などのお知らせに使われていた 日本製のダサいクリップアートって今どうしたら入手できるんでしょうか? 何気なく見ていたあのダサいお知らせが懐かしくて再現してみたいんです それで古いノートPCをにOffice2000を入れてもいかにもアメリカ的な日本では使い勝手が悪いクリップアートしか入っていません いらすとやが出てくるまで定番だったサイトやCDROMの素材集があったんだと思いますが古すぎてググっても見つかりません その頃によく使っていたサイトの名前とかCDROM素材集のメーカー名とか覚えていたらお願いします データではなく紙の本として出版されたイラスト素材集が元ネタで、それをスキャンしたりノリで貼って再コピーしてた場合が多いんじゃないか 蔵書が20年ぐらい更新されていなさそうな図書館に行けば見つかりそう 2000年代前半だとワープロ専用機もまだそれなりに現役で、ワープロ専用機の内蔵素材も使われていた 今だと、このあたりが近い雰囲気かな? https://www.seishinsha.co.jp/sozai/ >>285 お前はここは何のスレだと思ってるの?馬鹿なのか? [挿入]-[画像]-[オンライン画像]でBingでの検索に成るが □Creative Commons のみ のチェックを 外してどんどん下の方を手繰ってくと、それっぽいのが出て来る(こともある) >>286 ありがとうございます まさか本からスキャンしてたとは A1セルに日付を含む文章が入ってる これから日付を抽出したい ググると B1=lookup(10^10,left(A1,ROW($1:$20))*1) ってあった 誰かエロい人解説お願いします >>292 それは数字を1つ取り出してるだけだから、年と月の間に文字や記号が入ってたら使えない 20240430 あああ これならOK 2024/04/30 いいい これはNG 2024までしか取り出せない "2024/04/30"*1 これが数値になることを利用している そしてLEFTだから日付を含むじゃなくて日付で始まるだな 【1 OSの種類 .】 Windows10 【2 Excelのバージョン 】 Excel2016 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 数式で、あるセルが参照している別シートのセルから◯◯の位置にあるセル、を参照できますでしょうか。 別のシートへの転記なのですが、並び順が違っています。ブロックごとに全てのセルに参照を手入力するのが大変で、例えばブロックの左上だけ指定すれば、他のセルには参照が入る…ようになればいいのですが 時間が10ミリ秒で入ってる表があって =TEXT(J2/8640000,"mm:ss.00") こんな感じにすると、目的の形式 (例)30:15.05 にできるのですが、 これを10秒後とか15分後とか、スタートをずらした値にしたいです (例)全て15分後 無茶苦茶なんですが、【=TEXT(J2/8640000,"mm:ss.00")】-15:00.00みたいな感じでエラーなくやるにはどうすればよいでしょうか? 【2 Excelのバージョン 】 Excel2013 【3 VBAが使えるか .】 いいえ 【4 VBAでの回答の可否】 否 >>297 エクセルで日時を表す文字列はそのまま数値演算できるらしいよ =J2/8640000 -"15:00.00" 表示形式は[mm]:ss.00など read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる